quantex-cli 1.3.0 → 1.4.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 +5 -5
- package/README.zh-CN.md +5 -5
- package/dist/{agent-installation-BJZMra9R.mjs → agent-installation-CC7b92Lg.mjs} +1 -1
- package/dist/agent-observation-CRB402ql.mjs +1 -0
- package/dist/{agents-By5JY7Ag.mjs → agents-D_evv3iI.mjs} +1 -1
- package/dist/{agents-BI24Key0.mjs → agents-T-kpsmCW.mjs} +1 -1
- package/dist/{capabilities-BlqBiPop.mjs → capabilities-grYk5oHD.mjs} +1 -1
- package/dist/capabilities-wSW7O9K9.mjs +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/{commands-DKzuPw63.mjs → commands-BuUDcQrt.mjs} +1 -1
- package/dist/commands-sYTYFFCw.mjs +1 -0
- package/dist/{config-CXeBOFPx.mjs → config-BxpAHhRY.mjs} +1 -1
- package/dist/{core-installation-cli-CIT1j1OX.mjs → core-installation-cli-C9ej33OW.mjs} +1 -1
- package/dist/{core-read-observations-ay6fH_jo.mjs → core-read-observations-BQLHb148.mjs} +1 -1
- package/dist/{doctor-DRTbrTkG.mjs → doctor-CuljlwNn.mjs} +1 -1
- package/dist/ensure-ChKutOVG.mjs +1 -0
- package/dist/ensure-CrY2orgM.mjs +1 -0
- package/dist/errors-BE_UKvvM.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-Cn78O6q-.mjs → info-Btit6nFi.mjs} +1 -1
- package/dist/{inspect-BBFC6wE8.mjs → inspect-C0MzsPU2.mjs} +1 -1
- package/dist/inspect-kPreC_XR.mjs +1 -0
- package/dist/install-oVJ4PYF7.mjs +1 -0
- package/dist/{installation-compatibility-C9t_3UJd.mjs → installation-compatibility-BUIdD4fg.mjs} +1 -1
- package/dist/installation-executor-DvXaa9X4.mjs +1 -0
- package/dist/{installation-production-DjMHDYgw.mjs → installation-production-BXWTdqW5.mjs} +1 -1
- package/dist/{installation-provider-registry-CDXCr6z9.mjs → installation-provider-registry-Cs3gM0wK.mjs} +1 -1
- package/dist/installation-routing-BV8ZnVFY.mjs +1 -0
- package/dist/installation-routing-Cyn08Qdm.mjs +1 -0
- package/dist/{lifecycle-observations-D1BlIZpI.mjs → lifecycle-observations-DuXTdiJE.mjs} +1 -1
- package/dist/{lifecycle-policy-C55MZFH-.mjs → lifecycle-policy-BwXMvFde.mjs} +1 -1
- package/dist/{list-CzXrCt7G.mjs → list-B9P46aKI.mjs} +1 -1
- package/dist/{output-CDT7Z3i4.mjs → output-Bf3N0Tjs.mjs} +1 -1
- package/dist/{production-observation-BI5nkqSV.mjs → production-observation-CU1HQ10p.mjs} +1 -1
- package/dist/{provider-evidence-CF-G5vyd.mjs → provider-evidence-BnvMbSP7.mjs} +1 -1
- package/dist/provider-observation-registry-l4duFenx.mjs +3 -0
- package/dist/{provider-observations-DVnT0_AA.mjs → provider-observations-CYYOshQ4.mjs} +1 -1
- package/dist/{providers-CLE8qdcG.mjs → providers-gOIzOEnz.mjs} +1 -1
- package/dist/resolve-9iHuKOrC.mjs +1 -0
- package/dist/{resolve-yZwFJmTd.mjs → resolve-DqExBCue.mjs} +1 -1
- package/dist/schema-BZLalYTL.mjs +1 -0
- package/dist/{schema-BwNDotNa.mjs → schema-D9JJUXYr.mjs} +1 -1
- package/dist/{uninstall-BcjU7c2O.mjs → uninstall-DPlb_f05.mjs} +1 -1
- package/dist/unmanaged-install-compatibility-BGcxxHZb.mjs +1 -0
- package/dist/{update-BuX-23-J.mjs → update-C8mg46ew.mjs} +1 -1
- package/dist/{upgrade-_1P0IdSo.mjs → upgrade-lmvEjYEd.mjs} +1 -1
- package/package.json +2 -2
- package/dist/agent-observation-Dz5Kg6wp.mjs +0 -1
- package/dist/capabilities-qyUtok9v.mjs +0 -1
- package/dist/commands-C3fUf2YS.mjs +0 -1
- package/dist/ensure-BU0EBpDm.mjs +0 -1
- package/dist/ensure-D44Eh4au.mjs +0 -1
- package/dist/errors-BPUDjG_X.mjs +0 -1
- package/dist/inspect-CkNhGY9b.mjs +0 -1
- package/dist/install-CwxLFFhS.mjs +0 -1
- package/dist/installation-executor-CEJOF0yv.mjs +0 -1
- package/dist/installation-routing-B8x9uR8E.mjs +0 -1
- package/dist/installation-routing-CTnk2lRW.mjs +0 -1
- package/dist/provider-observation-registry-1U2y28GT.mjs +0 -3
- package/dist/resolve-Cb9rNGbg.mjs +0 -1
- package/dist/schema-Cn5CfEai.mjs +0 -1
- /package/dist/{errors-INAZXcDR.mjs → errors-D-W3vO4v.mjs} +0 -0
- /package/dist/{invocation-BAq2_Yd5.mjs → invocation-hZT7H6Sx.mjs} +0 -0
- /package/dist/{mutation-recipe-catalog-CDgpiu0Q.mjs → mutation-recipe-catalog-Cr-4qobK.mjs} +0 -0
- /package/dist/{version-cache-sKuW8Zs1.mjs → version-cache-BdkaOTM-.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
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-Bf3N0Tjs.mjs";import{a as r,o as i}from"./providers-gOIzOEnz.mjs";import{t as a}from"./color-BAlKATeY.mjs";import{n as o,r as s}from"./core-read-observations-BQLHb148.mjs";async function c(a){let c=await o(a);if(!c)return e(n({action:`resolve`,error:{code:`AGENT_NOT_FOUND`,details:{input:a},message:`Unknown agent: ${a}`},target:{kind:`agent`,name:a}}),l);let{agent:u}=c,d=s(c);if(!d.inPath||!d.binaryPath){let t=d.methods.map(e=>({command:r(u,e),label:i(e),type:e.type})).filter(e=>e.command);return e(n({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:``,installGuidance:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},installed:!1,installSource:`not-installed`,lifecycle:`unmanaged`,sourceLabel:`not installed`,suggestedLaunchCommand:[]}},error:{code:`AGENT_NOT_INSTALLED`,details:{docsRef:`skills/quantex-cli/references/command-recipes.md`,installMethods:t,suggestedAction:`ensure-agent-installed`,suggestedEnsureCommand:`quantex ensure ${u.name}`},message:`${u.displayName} is not installed.`},target:{kind:`agent`,name:u.name}}),l)}return e(t({action:`resolve`,data:{agent:{binaryName:u.binaryName,displayName:u.displayName,name:u.name},resolution:{binaryPath:d.binaryPath,installed:!0,installSource:d.installedState?.installType??`detected-in-path`,installedVersion:d.installedVersion,lifecycle:d.lifecycle,sourceLabel:d.sourceLabel,suggestedLaunchCommand:[d.binaryPath]}},target:{kind:`agent`,name:u.name}}),l)}function l(e){if(e.error){console.log(a.red(e.error.message));let t=e.data?.resolution.installGuidance;if(t){console.log(a.dim(`Try: ${t.suggestedEnsureCommand}`));for(let e of t.installMethods)console.log(a.dim(`Install: [${e.label}] ${e.command}`))}return}e.data&&(console.log(a.bold(`\n${e.data.agent.displayName}\n`)),console.log(` Name: ${e.data.agent.name}`),console.log(` Binary: ${e.data.agent.binaryName}`),console.log(` Path: ${e.data.resolution.binaryPath}`),console.log(` Source: ${e.data.resolution.sourceLabel}`),console.log(` Lifecycle: ${e.data.resolution.lifecycle}`),console.log(` Install Type: ${e.data.resolution.installSource}`),e.data.resolution.installedVersion&&console.log(` Version: ${e.data.resolution.installedVersion}`),console.log(` Launch: ${e.data.resolution.suggestedLaunchCommand.join(` `)}`),console.log())}export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./schema-D9JJUXYr.mjs";export{e as schemaCommand};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{R as e,i as t,n,t as r}from"./output-
|
|
1
|
+
import{R as e,i as t,n,t as r}from"./output-Bf3N0Tjs.mjs";import{t as i}from"./color-BAlKATeY.mjs";async function a(e){let i=s(),a=e?i.filter(t=>t.name===e):i;return e&&a.length===0?t(r({action:`schema`,error:{code:`INVALID_ARGUMENT`,details:{command:e},message:`Unknown schema target: ${e}`},target:{kind:`system`,name:`schema`}}),o):t(n({action:`schema`,data:{commands:a},target:{kind:`system`,name:`schema`}}),o)}function o(e){if(e.error){console.log(i.red(e.error.message));return}if(e.data){console.log(i.bold(`
|
|
2
2
|
Quantex Schemas
|
|
3
3
|
`));for(let t of e.data.commands)console.log(` ${i.cyan(t.name)}`),console.log(` ${t.description}`);console.log()}}function s(){return e().map(e=>e.schema)}export{a as n,s as t};
|
|
@@ -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-Bf3N0Tjs.mjs";import{p as f}from"./providers-gOIzOEnz.mjs";import{t as p}from"./color-BAlKATeY.mjs";import{g as m,n as h,p as g}from"./agents-T-kpsmCW.mjs";import{a as _,i as v}from"./provider-binding-DMLQQGPh.mjs";import{t as y}from"./provider-evidence-BnvMbSP7.mjs";import{t as b}from"./lifecycle-errors-DGA1j4MM.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-C4bJjtc-.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./detect-BdnZzKbm.mjs";import{l as t}from"./providers-gOIzOEnz.mjs";import{n}from"./agents-T-kpsmCW.mjs";import{n as r}from"./lifecycle-observations-DuXTdiJE.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-BMnWqkaW.mjs";import{I as i,r as a}from"./agents-By5JY7Ag.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-CDT7Z3i4.mjs";import{r as m}from"./providers-CLE8qdcG.mjs";import{t as h}from"./cli-operation-context-QEqKxWgM.mjs";import{t as g}from"./color-BAlKATeY.mjs";import{g as _,n as v}from"./agents-BI24Key0.mjs";import{t as y}from"./update-planner-D1_UjTb8.mjs";import{t as b}from"./lifecycle-observations-D1BlIZpI.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-C4bJjtc-.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-C55MZFH-.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-BMnWqkaW.mjs";import{I as i,r as a}from"./agents-D_evv3iI.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-Bf3N0Tjs.mjs";import{r as m}from"./providers-gOIzOEnz.mjs";import{t as h}from"./cli-operation-context-QEqKxWgM.mjs";import{t as g}from"./color-BAlKATeY.mjs";import{g as _,n as v}from"./agents-T-kpsmCW.mjs";import{t as y}from"./update-planner-D1_UjTb8.mjs";import{t as b}from"./lifecycle-observations-DuXTdiJE.mjs";import{a as x,i as S,n as C,r as w}from"./user-output-C4bJjtc-.mjs";import{a as T,c as E,l as D,r as O,s as k,u as A}from"./lifecycle-policy-BwXMvFde.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-Bf3N0Tjs.mjs";import{t as h}from"./color-BAlKATeY.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-C4bJjtc-.mjs";import{n as b,t as x}from"./version-cache-BdkaOTM-.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,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,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.
|
|
3
|
+
"version": "1.4.0",
|
|
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",
|
|
@@ -102,7 +102,6 @@
|
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
|
104
104
|
"@fission-ai/openspec": "1.3.1",
|
|
105
|
-
"@quantex/core": "1.3.0",
|
|
106
105
|
"@types/bun": "^1.3.11",
|
|
107
106
|
"@types/cross-spawn": "^6.0.6",
|
|
108
107
|
"@types/node": "^25.0.1",
|
|
@@ -111,6 +110,7 @@
|
|
|
111
110
|
"lint-staged": "^16.2.7",
|
|
112
111
|
"oxfmt": "0.47.0",
|
|
113
112
|
"oxlint": "^1.62.0",
|
|
113
|
+
"quantex-core": "0.1.0",
|
|
114
114
|
"simple-git-hooks": "^2.13.1",
|
|
115
115
|
"tsdown": "^0.21.7",
|
|
116
116
|
"typescript": "^5.9.3",
|
|
@@ -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-DMLQQGPh.mjs";async function a(e,a){let[g,_,v]=await Promise.all([a.inspectExecutable(e),a.readInstalledState(e.name),a.readReceipt(e.name)]),y=a.clock(),b=r(e,a.platform),x=b.bindings,S=_?t(e,_):void 0,C=v?n(v):void 0,w=C??S,T={catalogMethods:x,executable:g,installedState:_,pathExecutable:g,persistedBinding:w,receipt:v};if(_&&!S||v&&!C)return{...T,capabilities:[],observation:c(e,y,`Persisted provider binding cannot be resolved.`)};if(S&&C&&!i(S,C,e.binaryName))return{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`conflicting-source`,observedProviderId:S.providerId,recordedProviderId:C.providerId}):{drift:{kind:`conflicting-source`,observedProviderId:S.providerId,recordedProviderId:C.providerId},kind:`absent`,observedAt:y,targetId:e.name}};let E=w;if(E){let t=await o(E,a),n=a.providerRegistry.getCapabilities(E.providerId);if(t.kind!==`success`)return{...T,binding:E,capabilities:n,observation:c(e,y,m(t)),providerOutcome:t};let r=t.value;if(!f(E,r))return{...T,binding:E,capabilities:n,observation:p(e,g,y),providerOutcome:t};if(r.kind===`absent`&&!g.present)return{...T,binding:E,capabilities:n,observation:{drift:{kind:`recorded-absent`},kind:`absent`,observedAt:y,targetId:e.name},providerOutcome:t};let i=r.kind!==(g.present?`present`:`absent`)||r.kind===`present`&&g.present&&r.executablePath!==void 0&&g.path!==void 0&&r.executablePath!==g.path||r.kind===`present`&&u(r.version,g.version)||v?.executablePath!==void 0&&g.path!==void 0&&v.executablePath!==g.path||d(e,_,v,E),h=l(g,r);return{...T,binding:E,capabilities:n,executable:h,observation:s(e,h,y,i?{kind:`conflicting-source`,observedProviderId:r.kind===`present`?E.providerId:void 0,recordedProviderId:E.providerId}:{kind:`none`},r.kind===`present`?E:void 0),providerOutcome:t}}let D=await Promise.all(x.map(async e=>({binding:e,outcome:await o(e,a)}))),O=D.find(e=>e.outcome.kind===`success`&&!f(e.binding,e.outcome.value));if(O)return{...T,capabilities:[],observation:p(e,g,y),providerOutcome:O.outcome};let k=D.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),A=D.filter(e=>e.binding.providerId!==`binary`&&e.binding.providerId!==`script`),j=A.filter(e=>e.outcome.kind===`success`&&e.outcome.value.kind===`present`),M=A.some(e=>e.outcome.kind!==`success`),N=j.length>0?j:M?[]:k;if(N.length>1)return{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`conflicting-source`}):{drift:{kind:`conflicting-source`},kind:`indeterminate`,observedAt:y,reason:`Multiple catalog providers report the agent as present.`,targetId:e.name}};if(b.unresolvedCandidates.length>0)return{...T,capabilities:[],observation:c(e,y,`A catalog provider binding cannot be resolved.`)};let P=D.map(e=>e.outcome).find(h),F=D.map(e=>e.outcome).find(e=>e.kind===`cancelled`||e.kind===`timed-out`);if(F)return{...T,capabilities:[],observation:c(e,y,m(F)),providerOutcome:F};let I=N[0];if(I){let t=I.binding,n=I.outcome.value,r=l(g,n),i=!g.present||n.executablePath!==void 0&&g.path!==void 0&&n.executablePath!==g.path||u(n.version,g.version);return{...T,binding:t,capabilities:a.providerRegistry.getCapabilities(t.providerId),executable:r,observation:s(e,r,y,i?{kind:`conflicting-source`,observedProviderId:t.providerId}:{kind:`untracked`},t),providerOutcome:I.outcome}}let L=a.preferredCatalogBinding,R=L?D.find(t=>i(t.binding,L,e.binaryName)&&t.outcome.kind===`success`&&t.outcome.value.kind===`absent`):void 0;return!g.present&&k.length===0&&P&&R?{...T,capabilities:[],observation:{drift:{kind:`none`},kind:`absent`,observedAt:y,targetId:e.name},providerOutcome:R.outcome}:P?{...T,capabilities:[],observation:c(e,y,m(P)),providerOutcome:P}:{...T,capabilities:[],observation:g.present?s(e,g,y,{kind:`untracked`}):{drift:{kind:`none`},kind:`absent`,observedAt:y,targetId:e.name}}}async function o(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:g(e),retryable:!1}}}function s(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 c(e,t,n){return{drift:{kind:`indeterminate`,reason:n},kind:`indeterminate`,observedAt:t,reason:n,targetId:e.name}}function l(e,t){return t.kind===`absent`?e:{path:e.path??t.executablePath,present:!0,version:e.version??t.version}}function u(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 d(e,t,n,r){let i=[e.binaryName,t?.binaryName,n?.executableName,r.target.binaryName].filter(e=>e!==void 0);return new Set(i).size>1}function f(e,t){return e.target.id===t.target.id&&e.target.kind===t.target.kind}function p(e,t,n){return t.present?s(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 m(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 h(e){return e.kind!==`success`}function g(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-BlqBiPop.mjs";export{e as capabilitiesCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-DKzuPw63.mjs";export{e as commandsCommand};
|
package/dist/ensure-BU0EBpDm.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./ensure-D44Eh4au.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
package/dist/ensure-D44Eh4au.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./file-store-Caz7fnAB.mjs";import{i as t,n,r,t as i}from"./output-CDT7Z3i4.mjs";import{l as a}from"./providers-CLE8qdcG.mjs";import{t as o}from"./color-BAlKATeY.mjs";import{g as s,n as c}from"./agents-BI24Key0.mjs";import{t as l}from"./agent-installation-BJZMra9R.mjs";import{n as u}from"./lifecycle-observations-D1BlIZpI.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-B8x9uR8E.mjs";async function v(e){return await y(e,_(`ensure`))}async function y(n,r){if(g(`ensure`,r),r.engine===`core`){let{createCoreInstallationCliSession:e}=await import(`./core-installation-cli-CIT1j1OX.mjs`),r=e(`ensure`);try{return t(await r.execute(n,{emitStartedEvent:!0}),E)}finally{r.dispose()}}if(!c(n)||m())return b(n);try{return await s(()=>b(n))}catch(r){if(e(r))return t(i({action:`ensure`,...d(r,{kind:`agent`,name:n}),target:{kind:`agent`,name:n}}),E);throw r}}async function b(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}}),E);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(w(o),E);let p=c&&s?`satisfied`:f?`adopt`:`install`;if(m())return t(p===`satisfied`?C(o):S(o,p===`adopt`,!!c),E);p!==`satisfied`&&x(o);try{return t(T(o,p,await l({adoptableMethod:f,agent:o,observation:{inPath:s,installedState:c,lifecycle:r.observation,methods:r.methods},operation:`ensure`,route:p})),E)}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})}),E);throw n}}function x(e){r({action:`ensure`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function S(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 C(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 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:`UNTRACKED_EXISTING_INSTALL`,message:`${e.displayName} is already installed but not tracked by Quantex. Quantex could not safely determine the supported install source, so the existing install remains unmanaged.`}]})}function T(e,t,r){if(r.kind===`success`){if(t===`satisfied`)return C(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 E(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{y as n,v as t};
|
package/dist/errors-BPUDjG_X.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./errors-INAZXcDR.mjs";export{e as getExitCodeForResult};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-BBFC6wE8.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
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-CDT7Z3i4.mjs";import{l as o}from"./providers-CLE8qdcG.mjs";import{t as s}from"./color-BAlKATeY.mjs";import{g as c,n as l}from"./agents-BI24Key0.mjs";import{t as u}from"./agent-installation-BJZMra9R.mjs";import{n as d}from"./lifecycle-observations-D1BlIZpI.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-B8x9uR8E.mjs";import{o as y}from"./lifecycle-policy-C55MZFH-.mjs";async function b(e){return await x(e,v(`install`))}async function x(e,t){_(`install`,t);let n=t.engine===`core`?(await import(`./core-installation-cli-CIT1j1OX.mjs`)).createCoreInstallationCliSession(`install`):void 0;try{return await S(e,n)}finally{n?.dispose()}}async function S(t,o){let s=y(Array.isArray(t)?t:[t]);if(s.length<=1)return n(await C(s[0],{emitStartedEvent:!0},o),P);i({action:`install`,data:{scope:`batch`},target:{kind:`agent`},type:`started`});let c=[];for(let t of s){if(e().cancelled)break;let n=A(t,await C(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:M(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`}}),F):n(c.some(e=>!e.ok)?a({action:`install`,data:l,error:N(c),target:{kind:`agent`}}):r({action:`install`,data:l,target:{kind:`agent`}}),F)}async function C(n,r={},i){if(i)return await i.execute(n,r);if(e().cancelled||!l(n)||h())return w(n,r);try{return await c(()=>w(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 w(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 O(s);let m=l&&c?`satisfied`:p?`adopt`:`install`;if(h())return m===`satisfied`?E(s):D(s,m===`adopt`,!!l);m!==`satisfied`&&k(s,r.emitStartedEvent);try{return T(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 T(e,t,n){if(n.kind===`success`){if(t===`satisfied`)return E(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 E(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 D(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 O(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 k(e,t=!1){t&&i({action:`install`,data:{agent:{displayName:e.displayName,name:e.name}},target:{kind:`agent`,name:e.name},type:`started`})}function A(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:j(t),warnings:r}}function j(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 M(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 N(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 P(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 F(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(I(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`already-installed`:case`untracked-existing-install`:p(s.yellow(I(t.warnings,`${t.agent.displayName} is already installed.`)));break;case`planned`:p(s.cyan(I(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}L(e.data.summary)}function I(e,t){return e[0]?.message??t}function L(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{b as installCommand,x as installCommandWithRoute};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,i as t,t as n}from"./provider-binding-DMLQQGPh.mjs";function r(e){let t=e.providerOutcome;if(t?.kind===`cancelled`||t?.kind===`timed-out`)return{kind:`interrupted`,outcome:t};let n=e.observation;if(n.drift.kind===`conflicting-source`)return{code:`conflict`,kind:`blocked`,reason:`Live and recorded installation evidence conflict.`};if(n.kind===`indeterminate`||n.drift.kind===`indeterminate`)return{code:`indeterminate`,kind:`blocked`,reason:n.kind===`indeterminate`?n.reason:n.drift.kind===`indeterminate`?n.drift.reason:`Provider evidence is indeterminate.`};if(n.kind===`present`){if(n.drift.kind===`untracked`)return{...e.binding?{binding:e.binding}:{},changed:!1,decision:`external-preserved`,kind:`ready`};let t=e.persistedBinding??e.binding;return t?{binding:t,changed:!1,decision:`already-satisfied`,kind:`ready`}:{code:`indeterminate`,kind:`blocked`,reason:`A present managed installation has no resolvable source evidence.`}}return n.drift.kind===`recorded-absent`?e.persistedBinding?{decision:`reinstall`,kind:`ready`,requiredBinding:e.persistedBinding,wouldChange:!0}:{code:`indeterminate`,kind:`blocked`,reason:`Recorded installation evidence cannot be resolved to a supported source.`}:{decision:`install`,kind:`ready`,wouldChange:!0}}var i=class{active=!0;cleanupPromise;commitStarted=!1;record;recordWrite;unregister;constructor(e,t,n){this.recipe=e,this.context=t,this.ports=n}register(){this.unregister=this.context.registerCleanup(this)}attachRecord(e){this.record=e}async applyRecord(){if(!this.record)throw Error(`Installation record was not prepared.`);this.recordWrite=Promise.resolve().then(()=>this.record.apply()),await this.recordWrite}async commitRecord(){if(!this.record)throw Error(`Installation record was not prepared.`);this.commitStarted=!0,await this.record.commit()}cleanup(){return this.recover().then(()=>void 0)}force(){return this.cleanup()}recover(){return this.cleanupPromise||=this.runRecovery(),this.cleanupPromise}close(){this.active=!1,this.unregister?.()}async runRecovery(){if(!this.active)return{sideEffect:`none`};if(this.commitStarted)return c(this.context,`compensate`,`may-remain`),{reason:`State commit crossed its irreversible boundary; resources were preserved.`,remediation:p(),sideEffect:`may-remain`};let e=await this.rollbackState();if(e)return c(this.context,`compensate`,`may-remain`),{reason:e,remediation:p(),sideEffect:`may-remain`};if(this.recipe.ownership===`pre-existing`)return c(this.context,`compensate`,`compensated`),{sideEffect:`compensated`};if(this.recipe.compensation===`manual`)return c(this.context,`compensate`,`may-remain`),{sideEffect:`may-remain`};let t;try{t=await this.ports.compensate(this.recipe,u(this.context.timeoutMs))}catch(e){return c(this.context,`compensate`,`may-remain`),{reason:`Compensation failed: ${f(e)}`,sideEffect:`may-remain`}}return t.kind===`success`?(c(this.context,`compensate`,`compensated`),{sideEffect:`compensated`}):(c(this.context,`compensate`,`may-remain`),{reason:d(t),sideEffect:`may-remain`})}async rollbackState(){if(this.record)try{await this.recordWrite?.catch(()=>void 0),await this.record.rollback();return}catch(e){return`State rollback failed: ${f(e)}`}}},a=class extends Error{details;kind;reason;timeoutMs;constructor(e,t,n){super(e.kind===`timed-out`?`Core mutation timed out.`:`Core mutation was cancelled.`),this.name=`CoreMutationInterruption`,this.kind=e.kind,this.details={phase:t,sideEffect:n},e.kind===`timed-out`?this.timeoutMs=e.timeoutMs:this.reason=e.reason}};function o(e,t,n){return new a(e,t,n)}function s(e,t,n){return o({kind:`cancelled`,...e.reason===void 0?{}:{reason:f(e.reason)}},t,n)}function c(e,t,n){e.setInterruptionDetails({phase:t,sideEffect:n})}function l(e){let t,n=new Promise(e=>{t=e}),r=e.registerCleanup({cleanup:()=>n,force:()=>n});return{release(){r(),t()}}}function u(e){return{signal:new AbortController().signal,timeoutMs:e===void 0?5e3:Math.max(10,Math.min(e,5e3))}}function d(e){return`reason`in e&&e.reason?e.reason:e.kind===`unsupported`?`Provider does not support ${e.operation}.`:`Provider ${e.kind} during compensation.`}function f(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core lifecycle operation failed.`}function p(){return`Keep the installed resource in place. Inspect Quantex state and lock files, then run inspect or ensure again.`}async function m(e,t,n,r={}){let i=l(t);c(t,`decide`,`none`);let o;try{return e.mode===`preview`?await h(e,t,n,r):(V(t,`decide`,`none`),await n.withMutationLock(e.name,t,async()=>(o=await g(e,t,n,r),o)))}catch(e){if(e instanceof a)throw e;let n=I(o);if(t.signal.aborted)throw s(t.signal,n===`none`?`decide`:`record`,n);return O(`execution-failed`,n===`none`?`decide`:`record`,n,`Lifecycle mutation lock failed: ${q(e)}`,!1,void 0,e)}finally{i.release()}}async function h(e,t,n,r){let i=await b(e.name,t,n);if(i.kind!==`ready`)return i.outcome;let{before:a,directive:o}=i;if(!z(o)){if(o.decision!==`external-preserved`)return E(a,o);let e=await _(a,t,r);return e.kind===`terminal`?e.outcome:e.kind===`none`?E(a,o):{kind:`success`,value:{before:a,binding:e.value.binding,compatibility:{kind:`adopt`},decision:o.decision,kind:`preview`,wouldChange:!0}}}let s=await x(e,a,o,t,n);return s.kind===`ready`?{kind:`success`,value:{before:a,binding:s.value.binding,decision:o.decision,kind:`preview`,wouldChange:!0}}:s.outcome}async function g(e,t,n,r){let a=await b(e.name,t,n);if(a.kind!==`ready`)return a.outcome;let{before:l,directive:u}=a;if(!z(u)){if(u.decision!==`external-preserved`)return await S(e.name,l,u,t,n);let i=await _(l,t,r);return i.kind===`terminal`?i.outcome:i.kind===`ready`?await y(e.name,l,i.value,t,n,r):await S(e.name,l,u,t,n)}let d=await x(e,l,u,t,n);if(d.kind!==`ready`)return d.outcome;let f=d.value;r.onMutationStart?.({before:l,binding:f.binding,decision:u.decision}),c(t,`execute`,`may-remain`);let p;try{p=await n.install(f,H(t))}catch(e){if(t.signal.aborted)throw s(t.signal,`execute`,`may-remain`);return O(`execution-failed`,`execute`,`may-remain`,q(e),!1,K())}if(B(p))throw o(p,`execute`,`may-remain`);if(p.kind!==`success`)return D(`execution-failed`,`execute`,p);let m=new i(f,t,n);if(m.register(),t.signal.aborted)return await w(t.signal,`execute`,m);c(t,`verify`,`may-remain`);let h;try{h=await n.verify(f,H(t))}catch(e){return await C(m,`verification-failed`,`verify`,q(e),!1,e)}if(B(h))return await T(h,`verify`,m);if(h.kind!==`success`)return await C(m,`verification-failed`,`verify`,U(h),W(h));if(h.value.kind===`unsatisfied`)return await C(m,`verification-failed`,`verify`,h.value.reason,!1);let g;try{g=await n.observe(e.name,t)}catch(e){return await C(m,`verification-failed`,`verify`,q(e),!1,e)}if(t.signal.aborted)return await w(t.signal,`verify`,m);let v=F(g);if(v)return await T(v,`verify`,m);if(!g||!k(g,f))return await C(m,`verification-failed`,`verify`,`Fresh post-mutation observation did not confirm the selected provider source.`,!1);try{if(c(t,`record`,`may-remain`),m.attachRecord(await n.prepareRecord({before:l,context:t,recipe:f,verified:g})),t.signal.aborted)return await w(t.signal,`record`,m);await m.applyRecord()}catch(e){return await C(m,`recording-failed`,`record`,q(e),!1,e)}if(t.signal.aborted)return await w(t.signal,`record`,m);c(t,`verify`,`may-remain`);let E;try{E=await n.observe(e.name,t)}catch(e){return await C(m,`verification-failed`,`verify`,q(e),!1,e)}if(t.signal.aborted)return await w(t.signal,`verify`,m);let A=F(E);if(A)return await T(A,`verify`,m);if(!E||!j(E,f))return await C(m,`verification-failed`,`verify`,`Fresh post-mutation observation did not confirm the recorded provider source.`,!1);try{if(c(t,`record`,`may-remain`),t.signal.aborted)return await w(t.signal,`record`,m);await m.commitRecord()}catch(e){return await C(m,`recording-failed`,`record`,q(e),!1,e)}return t.signal.aborted?await w(t.signal,`record`,m):(m.close(),{kind:`success`,value:{after:E,before:l,binding:f.binding,changed:!0,decision:u.decision,kind:`apply`}})}async function _(e,t,n){if(!n.resolveAdoption)return{kind:`none`};let r;try{r=await n.resolveAdoption(e,t)}catch(e){if(t.signal.aborted)throw s(t.signal,`decide`,`none`);return{kind:`terminal`,outcome:O(`decision-indeterminate`,`decide`,`none`,q(e),!1,void 0,e)}}if(V(t,`decide`,`none`),!r)return{kind:`none`};let i=v(e,r);return i?{kind:`terminal`,outcome:O(`decision-indeterminate`,`decide`,`none`,i,!1)}:{kind:`ready`,value:r}}function v(t,n){if(t.observation.kind!==`present`||t.observation.drift.kind!==`untracked`)return`Compatibility adoption requires a fresh untracked present observation.`;if(n.installedState.agentName!==t.agent.name)return`Compatibility adoption state does not target the observed agent.`;if(t.binding&&!N(t.binding,n.binding,t.agent.binaryName))return`Compatibility adoption does not preserve the observed provider source.`;let r=e(t.agent,n.installedState);if(!r||!N(r,n.binding,t.agent.binaryName))return`Compatibility adoption state does not resolve to the selected provider source.`}async function y(e,t,n,r,a,l){let u={binding:n.binding,compensation:`manual`,installedState:n.installedState,ownership:`pre-existing`};c(r,`verify`,`none`);let d;try{d=await a.verify(u,H(r))}catch(e){if(r.signal.aborted)throw s(r.signal,`verify`,`none`);return O(`verification-failed`,`verify`,`none`,q(e),!1,void 0,e)}if(B(d))throw o(d,`verify`,`none`);if(d.kind!==`success`)return O(`verification-failed`,`verify`,`none`,U(d),W(d),G(d));if(d.value.kind===`unsatisfied`)return O(`verification-failed`,`verify`,`none`,d.value.reason,!1);let f;try{f=await a.observe(e,r)}catch(e){if(r.signal.aborted)throw s(r.signal,`verify`,`none`);return O(`verification-failed`,`verify`,`none`,q(e),!1,void 0,e)}V(r,`verify`,`none`);let p=F(f);if(p)throw o(p,`verify`,`none`);if(!f||!A(f,u))return O(`verification-failed`,`verify`,`none`,`Fresh observation did not confirm the compatibility adoption source.`,!1);l.onMutationStart?.({before:t,binding:u.binding,decision:`external-preserved`});let m;try{c(r,`record`,`none`),m=await a.prepareRecord({before:t,context:r,recipe:u,verified:f})}catch(e){if(r.signal.aborted)throw s(r.signal,`record`,`none`);return O(`recording-failed`,`record`,`none`,q(e),!1,void 0,e)}let h=new i(u,r,a);if(h.attachRecord(m),h.register(),r.signal.aborted)return await w(r.signal,`record`,h);try{c(r,`record`,`may-remain`),await h.applyRecord()}catch(e){return await C(h,`recording-failed`,`record`,q(e),!1,e)}if(r.signal.aborted)return await w(r.signal,`record`,h);c(r,`verify`,`may-remain`);let g;try{g=await a.observe(e,r)}catch(e){return await C(h,`verification-failed`,`verify`,q(e),!1,e)}if(r.signal.aborted)return await w(r.signal,`verify`,h);let _=F(g);if(_)return await T(_,`verify`,h);if(!g||!j(g,u))return await C(h,`verification-failed`,`verify`,`Fresh observation did not confirm the recorded compatibility adoption source.`,!1);try{c(r,`record`,`may-remain`),await h.commitRecord()}catch(e){return await C(h,`recording-failed`,`record`,q(e),!1,e)}return r.signal.aborted?await w(r.signal,`record`,h):(h.close(),{kind:`success`,value:{after:g,before:t,binding:u.binding,changed:!0,compatibility:{kind:`adopt`},decision:`external-preserved`,kind:`apply`}})}async function b(e,t,n){V(t,`decide`,`none`);let i;try{i=await n.observe(e,t)}catch(e){if(t.signal.aborted)throw s(t.signal,`decide`,`none`);return{kind:`terminal`,outcome:O(`decision-indeterminate`,`decide`,`none`,q(e),!1,void 0,e)}}if(V(t,`decide`,`none`),!i)return{kind:`terminal`,outcome:{kind:`agent-not-found`,name:e}};let a=r(i);if(a.kind===`interrupted`)throw o(a.outcome,`decide`,`none`);return a.kind===`blocked`?{kind:`terminal`,outcome:O(a.code===`conflict`?`decision-conflict`:`decision-indeterminate`,`decide`,`none`,a.reason,!1)}:{before:i,directive:a,kind:`ready`}}async function x(e,t,n,r,i){let a;try{a=await i.resolveRecipe({context:H(r),directive:n,observed:t,operation:e.operation})}catch(e){if(r.signal.aborted)throw s(r.signal,`decide`,`none`);return{kind:`terminal`,outcome:O(`recipe-unavailable`,`decide`,`none`,q(e),!1)}}if(V(r,`decide`,`none`),a.kind===`interrupted`)throw o(a.outcome,`decide`,`none`);if(a.kind===`ready`){let e=M(t,a.recipe);return e?{kind:`terminal`,outcome:O(`recipe-unavailable`,`decide`,`none`,e,!1)}:{kind:`ready`,value:a.recipe}}return{kind:`terminal`,outcome:O(`recipe-unavailable`,`decide`,`none`,a.reason,a.retryable,a.remediation)}}async function S(e,t,n,i,a){c(i,`verify`,`none`);let l;try{l=await a.observe(e,i)}catch(e){if(i.signal.aborted)throw s(i.signal,`verify`,`none`);return O(`verification-failed`,`verify`,`none`,q(e),!1,void 0,e)}if(V(i,`verify`,`none`),!l)return O(`verification-failed`,`verify`,`none`,`The agent disappeared.`,!0);let u=r(l);if(u.kind!==`ready`||!(`changed`in u)||u.decision!==n.decision||!L(u.binding,n.binding,t.agent.binaryName)||!R(t,l)){if(u.kind===`interrupted`)throw o(u.outcome,`verify`,`none`);return O(`verification-failed`,`verify`,`none`,`Fresh observation changed the no-op decision.`,!0)}return{kind:`success`,value:{after:l,before:t,...n.binding?{binding:n.binding}:{},changed:!1,decision:n.decision,kind:`apply`}}}async function C(e,t,n,r,i,a){let o=await e.recover();return e.close(),o.reason?O(`compensation-failed`,`compensate`,o.sideEffect,`${r} ${o.reason}`,!1,o.remediation??K(),a,t===`compensation-failed`?void 0:t):O(t,n,o.sideEffect,r,i,o.sideEffect===`may-remain`?K():void 0,a)}async function w(e,t,n){let r=await n.recover();throw n.close(),s(e,t,r.sideEffect)}async function T(e,t,n){let r=await n.recover();throw n.close(),o(e,t,r.sideEffect)}function E(e,t){return{kind:`success`,value:{before:e,...t.binding?{binding:t.binding}:{},decision:t.decision,kind:`preview`,wouldChange:!1}}}function D(e,t,n){return O(e,t,`may-remain`,U(n),W(n),G(n))}function O(e,t,n,r,i,a,o,s){return{error:{...o===void 0?{}:{cause:o},code:e,...s?{originCode:s}:{},phase:t,reason:r,...a?{remediation:a}:{},retryable:i,sideEffect:n},kind:`failed`}}function k(e,t){return e.observation.kind===`present`&&e.executable.present&&e.binding!==void 0&&N(e.binding,t.binding,e.agent.binaryName)}function A(e,t){return k(e,t)&&e.observation.drift.kind===`untracked`&&e.installedState===void 0&&e.persistedBinding===void 0&&e.receipt===void 0}function j(i,a){let o=r(i),s=i.installedState?e(i.agent,i.installedState):void 0,c=i.receipt?t(i.receipt):void 0;return o.kind===`ready`&&`changed`in o&&o.decision===`already-satisfied`&&s!==void 0&&c!==void 0&&N(s,a.binding,i.agent.binaryName)&&n(c,a.binding,i.agent.binaryName)}function M(t,n){if(n.ownership!==`created-on-success`)return`Resolved installation recipes must prove created-on-success ownership.`;if(n.installedState.agentName!==t.agent.name)return`Resolved recipe state does not target the observed agent.`;let r=e(t.agent,n.installedState);if(!r||!N(r,n.binding,t.agent.binaryName))return`Resolved recipe does not preserve the schema-v2 provider source identity.`}function N(e,t,r){return n(e,t,r)&&P(e.target.arguments,t.target.arguments)}function P(e,t){return!e||!t?e===t:e.length===t.length&&e.every((e,n)=>e===t[n])}function F(e){let t=e?.providerOutcome;return t&&B(t)?t:void 0}function I(e){return e?e.kind===`failed`?e.error.sideEffect:e.kind===`success`&&e.value.kind===`apply`&&e.value.changed?`may-remain`:`none`:`none`}function L(e,t,n){return!e||!t?e===t:N(e,t,n)}function R(n,r){return L(n.installedState?e(n.agent,n.installedState):void 0,r.installedState?e(r.agent,r.installedState):void 0,n.agent.binaryName)?L(n.receipt?t(n.receipt):void 0,r.receipt?t(r.receipt):void 0,n.agent.binaryName):!1}function z(e){return`wouldChange`in e}function B(e){return e.kind===`cancelled`||e.kind===`timed-out`}function V(e,t,n){if(e.signal.aborted)throw s(e.signal,t,n)}function H(e){return{registerCleanup:e.registerCleanup,signal:e.signal,timeoutMs:e.timeoutMs}}function U(e){return`reason`in e&&e.reason?e.reason:e.kind===`unsupported`?`Provider does not support ${e.operation}.`:`Provider ${e.kind} during the lifecycle mutation.`}function W(e){return e.kind===`failed`?e.retryable:e.kind===`unavailable`?e.retryable??!0:!1}function G(e){return e.kind===`failed`?e.remediation:void 0}function K(){return`Inspect the selected provider target and remove any partial installation manually before retrying.`}function q(e){return e instanceof Error&&e.message.trim()?e.message:typeof e==`string`&&e.trim()?e:`Core lifecycle operation failed.`}export{a as CoreMutationInterruption,m as executeCoreInstallation};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./cli-context-xudTdmO7.mjs";import t from"node:process";const n=Object.freeze({engine:`legacy`,source:`stable-default`});function r(e){return n}function i(){return Object.freeze({adoption:`v1-safe`,engine:`core`,source:`test`})}function a(n,r){e().logLevel===`debug`&&t.stderr.write(`[quantex:debug] ${n} engine=${r.engine} source=${r.source}\n`)}export{a as n,r,i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./installation-routing-B8x9uR8E.mjs";export{n as createCoreInstallationTestRoute,e as reportInstallationEngineRoute,t as selectInstallationEngineRoute};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import e from"cross-spawn";import{spawn as t}from"node:child_process";import{join as n}from"node:path";import r from"node:process";import{access as i,readFile as a}from"node:fs/promises";import{homedir as o}from"node:os";import{once as s}from"node:events";var c=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function l(t,n){if(n.signal.aborted)throw new c(h(n.signal));let[i,...a]=t;if(!i)throw Error(`A read-only command requires a non-empty argv array.`);let o=e(i,a,{detached:r.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],l=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>l.push(Buffer.from(e)));let f=!1,p,m,g=()=>p??=u(o),_=n.registerCleanup?.({cleanup:g,force:()=>m??=d(o)}),v,y=new Promise((e,t)=>{v=()=>{f||(f=!0,g().then(()=>t(new c(h(n.signal)))))},n.signal.addEventListener(`abort`,v,{once:!0}),n.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>f?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(l).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{n.signal.removeEventListener(`abort`,v),_?.()}}async function u(e){r.platform===`win32`&&e.pid!==void 0&&await p(e.pid,t,100),f(e,`SIGTERM`),!await m(e,100)&&(f(e,`SIGKILL`),await m(e,250))}async function d(e){r.platform===`win32`&&e.pid!==void 0&&await p(e.pid,t,100),f(e,`SIGKILL`),await m(e,250)}function f(e,t){if(r.platform!==`win32`&&e.pid!==void 0)try{r.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function p(e,n=t,r=100){let i=n(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=s(i,`close`).then(()=>!0,()=>!1),c=new Promise(e=>{a=setTimeout(()=>e(!1),r)}),l=await Promise.race([o,c]);if(a&&clearTimeout(a),l)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function m(e,t){if(e.exitCode!==null||e.signalCode!==null)return!0;let n;try{return await Promise.race([new Promise(t=>e.once(`close`,()=>t(!0))),new Promise(e=>{n=setTimeout(()=>e(!1),t)})])}finally{n&&clearTimeout(n)}}function h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const g={access:e=>i(e),env:r.env,homeDir:o,platform:r.platform,readFile:e=>a(e,`utf8`),runCommand:l};function _(e=g){return v([y(`bun`,`bun`,e,(t,n)=>S(t.id,n,e)),y(`npm`,`npm`,e,(t,n)=>C(t.id,n,e)),y(`brew`,`brew`,e,(t,n)=>w(t,n,e)),y(`cargo`,`cargo`,e,(t,n)=>T(t.id,n,e)),y(`deno`,`deno`,e,(t,n)=>E(t,n,e)),y(`mise`,`mise`,e,(t,n)=>D(t.id,n,e)),y(`pip`,`pip`,e,(t,n)=>O(t.id,n,e)),y(`uv`,`uv`,e,(t,n)=>k(t.id,n,e)),y(`winget`,`winget`,e,(t,n)=>A(t.id,n,e)),b(`script`,e),b(`binary`,e)])}function v(e){let t=Object.freeze([...e]),n=new Map(t.map(e=>[e.id,e]));if(n.size!==t.length)throw Error(`Duplicate Core provider observation adapter id.`);let r=Object.freeze([`availability`,`observe`]),i=Object.freeze([]);return Object.freeze({get:e=>n.get(e),getCapabilities:e=>n.has(e)?r:i,list:()=>t})}function y(e,t,n,r){return{availability:e=>x(t,e,n),id:e,async observe(t){let n=await r(t.target,t.context);return n.presence===`unknown`?{evidence:[{kind:`provider`,value:`${e}:${t.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} could not determine whether ${t.target.id} is installed`}:P({evidence:[{kind:`package`,value:n.presence===`absent`?`${e}:${t.target.id}:absent`:n.version?`${e}:${t.target.id}@${n.version}`:`${e}:${t.target.id}:present`}],kind:n.presence,target:t.target,...n.version?{version:n.version}:{}})}}}function b(e,t){return{availability:async e=>e.signal.aborted?F(e.signal):P({executable:t.platform===`win32`?`powershell.exe`:`sh`}),id:e,async observe(n){let r=n.target.binaryName;if(!r)return{evidence:[{kind:`provider`,value:`${e}:${n.target.id}:presence-unknown`}],kind:`indeterminate`,reason:`${e} candidate does not declare an executable presence probe`};let i=await j([t.platform===`win32`?`where`:`which`,r],n.context,t);return i?P({evidence:[{kind:`executable`,value:r}],kind:i.exitCode===0?`present`:`absent`,target:n.target}):{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0}}}}async function x(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?P({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof c)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function S(e,t,r){let i=await j([`bun`,`pm`,`-g`,`ls`],t,r);if(!i)return{presence:`unknown`};if(!i.stdout.trim()){if(i.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!i.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=r.env.BUN_INSTALL_GLOBAL_DIR??n(r.homeDir(),`.bun`,`install`,`global`);return{presence:N(await r.readFile(n(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let a=M(i.stdout,e);return a?{presence:`present`,version:a}:i.stdout.split(`
|
|
2
|
-
`).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:{presence:`absent`}}async function C(e,t,n){let r=await j([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!L(t)||Object.hasOwn(t,`error`))return{presence:`unknown`};let n=t.dependencies?.[e];return n?typeof n.version==`string`?{presence:`present`,version:n.version}:{presence:`present`}:{presence:`absent`}}catch{return{presence:`unknown`}}}async function w(e,t,n){let r=await j([`brew`,`list`,e.kind===`cask`?`--cask`:`--formula`,`--versions`,e.id],t,n);if(!r)return{presence:`unknown`};let i=r.stdout.trim().split(/\s+/u).at(-1);if(r.exitCode===0)return i&&/^\d/u.test(i)?{presence:`present`,version:i}:{presence:`present`};let a=r.stderr.toLowerCase();return a.includes(`no such keg`)||a.includes(`is not installed`)?{presence:`absent`}:{presence:`unknown`}}async function T(e,t,n){let r=await j([`cargo`,`install`,`--list`],t,n);if(!r||r.exitCode!==0)return{presence:`unknown`};let i=e.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`),a=r.stdout.match(RegExp(`^${i}\\s+v([^:\\s]+):\\s*$`,`mu`))?.[1];return a?{presence:`present`,version:a}:{presence:`absent`}}async function E(e,t,r){if(t.signal.aborted)throw new c(z(t.signal));let i=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!i)return{presence:`unknown`};let a=r.env.DENO_INSTALL_ROOT?.trim()||n(r.homeDir(),`.deno`);try{if(await r.access(n(a,`bin`,i)),t.signal.aborted)throw new c(z(t.signal));return{presence:`present`}}catch(e){if(e instanceof c)throw e;return R(e)?{presence:`absent`}:{presence:`unknown`}}}async function D(e,t,n){let r=await j([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!L(t))return{presence:`unknown`};let n=e.split(`:`).pop()?.split(`/`).pop(),i=Array.isArray(t[e])?e:n&&Array.isArray(t[n])?n:void 0,a=i?t[i]:void 0;if(!Array.isArray(a)||a.length===0)return{presence:`absent`};let o=a.find(e=>L(e)&&typeof e.version==`string`);return L(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function O(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await j([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await j([...r,`show`,e],t,n);if(!a)return{presence:`unknown`};if(a.exitCode===0){let e=a.stdout.split(/\r?\n/u).map(e=>/^Version:\s*(.+)\s*$/iu.exec(e.trim())?.[1]?.trim()).find(Boolean);return e?{presence:`present`,version:e}:{presence:`present`}}let o=a.stderr.toLowerCase();return o.includes(`package(s) not found`)||o.includes(`not found`)?{presence:`absent`}:{presence:`unknown`}}return{presence:`unknown`}}async function k(e,t,n){let r=await j([`uv`,`tool`,`list`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};let i=I(e),a=!1;for(let e of r.stdout.split(/\r?\n/u)){let t=/^(\S+)\s+v([^\s]+)/u.exec(e.trim());if(t&&(a=!0,I(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}async function A(e,t,n){let r=await j([`winget`,`list`,`--id`,e,`-e`],t,n);if(!r)return{presence:`unknown`};if(r.exitCode===0){let t=e.toLowerCase();for(let e of r.stdout.split(/\r?\n/u)){let n=e.trim().split(/\s{2,}|\t+/u).map(e=>e.trim()).filter(Boolean),r=n.findIndex(e=>e.toLowerCase()===t);if(r>=0)return n[r+1]?{presence:`present`,version:n[r+1]}:{presence:`present`}}return r.stdout.toLowerCase().includes(t)?{presence:`present`}:{presence:`unknown`}}let i=`${r.stdout}\n${r.stderr}`.toLowerCase();return[`no installed package found`,`no package found matching input criteria`,`no installed package matched`].some(e=>i.includes(e))?{presence:`absent`}:{presence:`unknown`}}async function j(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof c)throw e;return}}function M(e,t){let n=`${t}@`;for(let t of e.split(`
|
|
3
|
-
`)){let e=t.trim().split(/\s+/u).at(-1);if(e?.startsWith(n)&&e.length>n.length)return e.slice(n.length)}}function N(e,t){try{let n=JSON.parse(e);if(!L(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!L(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function P(e){return{kind:`success`,value:e}}function F(e){let t=z(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function I(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function z(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}export{c as n,l as r,_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-yZwFJmTd.mjs";export{e as resolveCommand};
|
package/dist/schema-Cn5CfEai.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-BwNDotNa.mjs";export{e as schemaCommand};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|