quantex-cli 1.11.2 → 1.12.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.
Files changed (97) hide show
  1. package/README.md +3 -3
  2. package/README.zh-CN.md +3 -3
  3. package/dist/agent-inspection-2y2K-DCH.mjs +1 -0
  4. package/dist/{agent-observation-CmpP7VL_.mjs → agent-observation-CmB6ofFL.mjs} +1 -1
  5. package/dist/agents-CESJI54l.mjs +1 -0
  6. package/dist/{agents-Caewjqrg.mjs → agents-iJvqIhMa.mjs} +1 -1
  7. package/dist/capabilities-CMnop3RC.mjs +1 -0
  8. package/dist/{capabilities-CThAG1Si.mjs → capabilities-DIRMPhTg.mjs} +1 -1
  9. package/dist/cli-operation-context-9ndzC1zq.mjs +1 -0
  10. package/dist/cli-read-projection-Cj1sCG7X.mjs +1 -0
  11. package/dist/cli.mjs +1 -1
  12. package/dist/commands-BPpo5qw8.mjs +1 -0
  13. package/dist/commands-BQuwJ1s0.mjs +3 -0
  14. package/dist/config-CW3EEuhm.mjs +3 -0
  15. package/dist/config-DzIZHWeq.mjs +1 -0
  16. package/dist/config-jsaRCEWF.mjs +1 -0
  17. package/dist/core-installation-cli-B-UNzCXn.mjs +1 -0
  18. package/dist/{detect-BUVMt8jZ.mjs → detect-Dou6fit1.mjs} +1 -1
  19. package/dist/doctor-CFLfa3z8.mjs +4 -0
  20. package/dist/ensure-BfY3mjy5.mjs +1 -0
  21. package/dist/ensure-CsRGwJHS.mjs +1 -0
  22. package/dist/errors-euUlFXri.mjs +1 -0
  23. package/dist/file-store-oHCTTnLn.mjs +2 -0
  24. package/dist/index.mjs +1 -1
  25. package/dist/info-DP2wtQYw.mjs +3 -0
  26. package/dist/inspect-DVgAp7qL.mjs +1 -0
  27. package/dist/inspect-OQUNwZEP.mjs +5 -0
  28. package/dist/install-D5IP8S3z.mjs +1 -0
  29. package/dist/{installation-compatibility-BnanRlky.mjs → installation-compatibility-BBIt-_Gy.mjs} +1 -1
  30. package/dist/installation-compatibility-CBA7XDvH.mjs +1 -0
  31. package/dist/{installation-executor-BHtW4ZTn.mjs → installation-executor-BS0GowyT.mjs} +1 -1
  32. package/dist/{installation-production-BBJukMkB.mjs → installation-production-Dy8XTuRy.mjs} +1 -1
  33. package/dist/{installation-provider-registry-Ca45gNu5.mjs → installation-provider-registry-CpJjzAO7.mjs} +1 -1
  34. package/dist/installation-routing-BhB6puwg.mjs +1 -0
  35. package/dist/installation-routing-D_8D3v0X.mjs +1 -0
  36. package/dist/lifecycle-observations-DIBfXLT1.mjs +1 -0
  37. package/dist/{lifecycle-policy-B5rqTthw.mjs → lifecycle-policy-0Wodv3-H.mjs} +1 -1
  38. package/dist/{list-Bb7xNAel.mjs → list-aak6ch3E.mjs} +1 -1
  39. package/dist/{npm-DUDR-Khz.mjs → npm-PO9Nwgt_.mjs} +1 -1
  40. package/dist/output-CLgmLN2q.mjs +5 -0
  41. package/dist/package-manager-uPteT1B0.mjs +1 -0
  42. package/dist/{production-observation-BOalSjcd.mjs → production-observation-CLYtqs1E.mjs} +1 -1
  43. package/dist/{provider-binding-BmBPz4YE.mjs → provider-binding-DB7IXxJp.mjs} +1 -1
  44. package/dist/{provider-evidence-ByRBnbzW.mjs → provider-evidence-AfeylhA4.mjs} +1 -1
  45. package/dist/{provider-observations-DASRzaj3.mjs → provider-observations-CY8vphIo.mjs} +1 -1
  46. package/dist/{providers-CMuU0Elu.mjs → providers-CjFAR4Vt.mjs} +1 -1
  47. package/dist/resolve-BihHZ39p.mjs +1 -0
  48. package/dist/resolve-Cf5ZZLZM.mjs +1 -0
  49. package/dist/schema-DxgWH0za.mjs +1 -0
  50. package/dist/{schema-BhMOO-QU.mjs → schema-rHlg-voJ.mjs} +1 -1
  51. package/dist/uninstall-USu8oluL.mjs +1 -0
  52. package/dist/unmanaged-install-compatibility-KGtKiyzS.mjs +1 -0
  53. package/dist/update-aRYrYbRj.mjs +1 -0
  54. package/dist/{upgrade-Bfnj72Gp.mjs → upgrade-CI-MZFjs.mjs} +1 -1
  55. package/dist/version-cache-BPRXYft0.mjs +1 -0
  56. package/dist/{winget-C8yBIi3u.mjs → winget-BA9H6Ve-.mjs} +1 -1
  57. package/package.json +1 -1
  58. package/dist/agent-installation-sRbwS1dk.mjs +0 -1
  59. package/dist/agents-aJwt-ODK.mjs +0 -1
  60. package/dist/capabilities-DJWAHfR0.mjs +0 -1
  61. package/dist/cli-operation-context-yd4c0OQH.mjs +0 -1
  62. package/dist/commands-BJjmzz_A.mjs +0 -3
  63. package/dist/commands-CL5a3fZy.mjs +0 -1
  64. package/dist/config-BNZPEYqW.mjs +0 -3
  65. package/dist/core-installation-cli-COYAy55w.mjs +0 -1
  66. package/dist/core-read-observations-BHbMkcGV.mjs +0 -1
  67. package/dist/doctor-D5PV1TbG.mjs +0 -4
  68. package/dist/ensure-BNQhG8iC.mjs +0 -1
  69. package/dist/ensure-D1TP3y6h.mjs +0 -1
  70. package/dist/errors-BsSS_i9A.mjs +0 -1
  71. package/dist/file-store-XNyirRRY.mjs +0 -2
  72. package/dist/info-JhNNgM-i.mjs +0 -3
  73. package/dist/inspect-CD-3DSkb.mjs +0 -1
  74. package/dist/inspect-DhGE_G13.mjs +0 -5
  75. package/dist/install-DiyyJCgV.mjs +0 -1
  76. package/dist/installation-routing-B1snz7YR.mjs +0 -1
  77. package/dist/installation-routing-n62Du1fV.mjs +0 -1
  78. package/dist/lifecycle-observations-CqYFJfMT.mjs +0 -1
  79. package/dist/output-BRIAY0Oa.mjs +0 -5
  80. package/dist/resolve-NvqD19LV.mjs +0 -1
  81. package/dist/resolve-kcE_XhB3.mjs +0 -1
  82. package/dist/schema-31zl9J9y.mjs +0 -1
  83. package/dist/uninstall-Df2Y_ygk.mjs +0 -1
  84. package/dist/unmanaged-install-compatibility-BJBsLVDL.mjs +0 -1
  85. package/dist/update-RJNar2D3.mjs +0 -1
  86. package/dist/version-cache-jjIoeyWQ.mjs +0 -1
  87. /package/dist/{cli-operation-context-BS5a069W.mjs → cli-operation-context-CzjG_eom.mjs} +0 -0
  88. /package/dist/{color-iQl4CJwm.mjs → color-CLDVRyIs.mjs} +0 -0
  89. /package/dist/{errors-fT9JApTf.mjs → errors-CISYuFuT.mjs} +0 -0
  90. /package/dist/{human-BL2-F6cA.mjs → human-BbO37wBs.mjs} +0 -0
  91. /package/dist/{installation-failure-diagnostics-BJnxrzTa.mjs → installation-failure-diagnostics-DjaKNCw3.mjs} +0 -0
  92. /package/dist/{invocation-DXH0mQUH.mjs → invocation-DDozaggZ.mjs} +0 -0
  93. /package/dist/{lifecycle-errors-BtlAp_sz.mjs → lifecycle-errors-Elpn7QSu.mjs} +0 -0
  94. /package/dist/{mutation-recipe-catalog-DfkeFj0q.mjs → mutation-recipe-catalog-COCTDfME.mjs} +0 -0
  95. /package/dist/{provider-observation-registry-DRRQKxkl.mjs → provider-observation-registry-CgFXbZHd.mjs} +0 -0
  96. /package/dist/{types-D0YMPN5w.mjs → types-DAYz9yrG.mjs} +0 -0
  97. /package/dist/{user-output-DLbKXqDm.mjs → user-output-c8fjdhfk.mjs} +0 -0
@@ -1 +0,0 @@
1
- import{t as e}from"./resolve-NvqD19LV.mjs";export{e as resolveCommand};
@@ -1 +0,0 @@
1
- import{n as e}from"./schema-BhMOO-QU.mjs";export{e as schemaCommand};
@@ -1 +0,0 @@
1
- import{a as e}from"./file-store-XNyirRRY.mjs";import{n as t}from"./detect-BUVMt8jZ.mjs";import{n}from"./cli-context-DI43ouBg.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-BRIAY0Oa.mjs";import{m as f}from"./providers-CMuU0Elu.mjs";import{t as p}from"./color-iQl4CJwm.mjs";import{g as m,n as h,p as g}from"./agents-aJwt-ODK.mjs";import{a as _,o as v,t as y}from"./provider-binding-BmBPz4YE.mjs";import{t as b}from"./provider-evidence-ByRBnbzW.mjs";import{t as x}from"./lifecycle-errors-BtlAp_sz.mjs";import{a as S,i as C,n as w,r as T}from"./user-output-DLbKXqDm.mjs";const E=e=>new Promise(t=>setTimeout(t,e));async function D(e,t={}){let n=Math.max(1,t.attempts??6),r=t.delay??E,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 O(p){let b=h(p);if(!b)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[e,u]=await Promise.all([d(b.name),o(b.name)]);if(!e&&!u)return s(N(p,b),P);let m=await t(b.binaryName),h=e?v(b,e):void 0,x=u?_(u):void 0;if(e&&!h||u&&!x)return s(A(b,`indeterminate-source`,`Cannot resolve provider evidence for ${b.displayName}.`),P);if(h&&x&&!y(h,x,b.binaryName))return s(A(b,`conflicting-source`,`Recorded sources disagree for ${b.displayName}.`),P);let S=h??x,C=await k(S);if(C.kind!==`success`)return s(A(b,`indeterminate-source`,`Cannot verify provider state for ${b.displayName}.`),P);if(C.value.kind===`absent`)return m?s(A(b,`conflicting-source`,`${b.displayName} is on PATH but its recorded provider target is absent.`),P):w()?s(j(b,`would reconcile stale lifecycle evidence`),P):(e&&await r(b.name),u&&await a(b.name),s(M(b),P));if(!e)return s(A(b,`indeterminate-source`,`Cannot safely reconstruct ${b.displayName}'s uninstall source.`),P);if(w())return s(j(b,`would uninstall ${b.displayName}`),P);if(!f(e.installType))return(await g(b,e)).kind===`success`?(await a(b.name),s(l({action:`uninstall`,data:{agent:{displayName:b.displayName,name:b.name},changed:!0},target:{kind:`agent`,name:b.name}}),P)):s(A(b,`provider-failure`,`Failed to uninstall ${b.displayName}.`),P);if(u||await i({...S.target.binaryName?{executableName:S.target.binaryName}:{},kind:`lifecycle-receipt`,providerId:S.providerId,providerTargetId:S.target.id,providerTargetKind:S.target.kind,schemaVersion:1,targetId:b.name,verifiedAt:new Date().toISOString(),...C.value.executablePath?{executablePath:C.value.executablePath}:{},...C.value.version?{version:C.value.version}:{}}),(await g(b,e)).kind===`success`){if(!await D(async()=>{let e=await k(S);return e.kind!==`success`||e.value.kind!==`absent`?!1:!await t(b.binaryName)},{isCancelled:()=>!!n().cancelled})){let t=await k(S);return t.kind===`success`&&t.value.kind===`absent`?(await a(b.name),s(A(b,`conflicting-source`,`${b.displayName}'s managed package was removed, but another copy remains on PATH.`),P)):(await c(e),s(A(b,`verification-failed`,`${b.displayName} is still present after provider removal.`),P))}return await a(b.name),s(l({action:`uninstall`,data:{agent:{displayName:b.displayName,name:b.name},changed:!0},target:{kind:`agent`,name:b.name}}),P)}return s(A(b,`provider-failure`,`Failed to uninstall ${b.displayName}.`),P)})}catch(t){if(e(t))return s(u({action:`uninstall`,data:{agent:{displayName:b.displayName,name:b.name},changed:!1},...x(t,{kind:`agent`,name:b.name})}),P);throw t}}async function k(e){let t=n(),r=new AbortController;return t.cancelled&&r.abort(`cli-cancelled`),b(e,{signal:r.signal,timeoutMs:t.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){T(p.red(e.error.message));return}if(e.data){if(e.warnings&&e.warnings.length>0){for(let t of e.warnings)S(p.yellow(t.message));return}C(p.cyan(`Uninstalling ${e.data.agent.displayName}...`)),C(p.green(`${e.data.agent.displayName} uninstalled successfully!`))}}export{O as uninstallCommand};
@@ -1 +0,0 @@
1
- import{n as e}from"./detect-BUVMt8jZ.mjs";import{l as t}from"./providers-CMuU0Elu.mjs";import{n}from"./agents-aJwt-ODK.mjs";import{n as r}from"./lifecycle-observations-CqYFJfMT.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 +0,0 @@
1
- import{a as e,n as t,r as n,t as r}from"./messages-D6r2o7w-.mjs";import{g as i}from"./npm-DUDR-Khz.mjs";import{a,d as o}from"./file-store-XNyirRRY.mjs";import{R as s,r as c}from"./agents-Caewjqrg.mjs";import{n as l}from"./cli-context-DI43ouBg.mjs";import{E as u,T as d,i as f,n as p,r as m,t as h}from"./output-BRIAY0Oa.mjs";import{f as g,r as _}from"./providers-CMuU0Elu.mjs";import{t as v}from"./cli-operation-context-BS5a069W.mjs";import{t as y}from"./color-iQl4CJwm.mjs";import{g as b,n as x}from"./agents-aJwt-ODK.mjs";import{t as S}from"./update-planner-Cr9XVW1l.mjs";import{t as C}from"./lifecycle-observations-CqYFJfMT.mjs";import{a as w,i as T,n as E,r as D}from"./user-output-DLbKXqDm.mjs";import{n as O}from"./installation-failure-diagnostics-BJnxrzTa.mjs";import{a as k,c as ee,l as te,r as ne,s as re,u as A}from"./lifecycle-policy-B5rqTthw.mjs";async function j(e){let t;for(let n of e.commands){let r=await i(n,e.context,`agent self-update failed`);if(r.kind===`success`)return{kind:`success`,value:{evidence:[{kind:`command`,value:n.join(` `)}],target:e.target}};if(r.kind===`cancelled`||r.kind===`timed-out`)return r;t=r}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(){return P(()=>c().map(e=>e.name))}function ie(){return P(async()=>Object.keys((await u()).installedAgents))}function P(e){let t=v(),n=0,r=!1,i=!1,c,l,u,f,p=()=>{!r||i||n>0||(i=!0,t.dispose())},m=async e=>{if(r)throw Error(`Lifecycle update batch invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,p()}},h=()=>(u??=o().then(n=>{let r=C(t.context);return{classifyMutationLockError:e=>a(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:E(),executeSelfUpdate:j,listRegisteredAgentNames:e,observe:r.resolveAgentObservation,planLifecycleUpdate:S,providerRegistry:s,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:n.npmBunUpdateStrategy},withMutationLock:b,writeReceipt:d.write}}),u),g=()=>r?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(l??=m(async()=>te(await h())),l);return{dispose(){r||(r=!0,p())},getOutcome:()=>c,async observe(e){return m(async()=>(await h()).observe(e))},prepare:g,run(){return r?Promise.reject(Error(`Lifecycle update batch invocation has been disposed.`)):(f??=(async()=>{let e=await g();return c=await m(async()=>re(e,await h())),c})(),f)}}}async function F(e){let t=I(e);try{return await t.run()}finally{t.dispose()}}function I(e){let t=v(),n=0,r=!1,i=!1,a,c,l,u,f=()=>{!r||i||n>0||(i=!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=()=>(l??=o().then(e=>{let n=C(t.context);return{clock:()=>new Date().toISOString(),dryRun:E(),executeSelfUpdate:j,observe:n.resolveAgentObservation,planLifecycleUpdate:S,providerRegistry:s,registerCleanup:t.context.registerCleanup,signal:t.context.signal,timeoutMs:t.context.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:b,writeReceipt:d.write}}),l),h=()=>r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(c??=p(async()=>A(e,await m())),c);return{dispose(){r||(r=!0,f())},getOutcome:()=>a,async observe(e){return p(async()=>(await m()).observe(e))},prepare:h,run(){return r?Promise.reject(Error(`Single-agent update invocation has been disposed.`)):(u??=(async()=>{let e=await h();return a=e.kind===`planned`?await p(async()=>ee(e.planned,await m())):e,a})(),u)}}}async function L(e,t,n={runBatch:M,runManagedBatch:M,runSingle:F},r=!1){if(r&&!t)return f(h({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`The --managed option requires --all.`},target:{kind:`agent`}}),Q);if(t)return z(n,r?`managed`:`all`);if(!e)return f(h({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Q);let i=x(e);return i?B(i,n):f(h({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Q)}function R(e,t,n=!1){if(t){let t=n?ie():N();return{dispose:t.dispose,idempotencyPolicy:()=>ne(t),run:()=>L(e,!0,{runBatch:()=>t.run(),runManagedBatch:()=>t.run(),runSingle:F},n)}}if(!e)return{dispose(){},run:()=>L(e,t,void 0,n)};let r=I(e);return{dispose:r.dispose,idempotencyPolicy:()=>k(e,r),run:()=>L(e,!1,{runBatch:M,runManagedBatch:M,runSingle:()=>r.run()},n)}}async function z(e,t){m({action:`update`,data:{scope:t},target:{kind:`agent`},type:`started`});let n=await(t===`managed`?(e.runManagedBatch??e.runBatch)():e.runBatch()),r=W(n),i=q(n);return ae(n)?f(h({action:`update`,data:{results:r,scope:t},error:{code:`CANCELLED`,message:`Update was cancelled before all agents could be updated.`},target:{kind:`agent`},warnings:i}),Q):r.some(e=>e.status===`failed`||e.status===`locked`)?f(h({action:`update`,data:{results:r,scope:t},error:{code:`UPDATE_FAILED`,message:`One or more agents failed to update.`},target:{kind:`agent`},warnings:i}),Q):f(p({action:`update`,data:{results:r,scope:t},target:{kind:`agent`},warnings:i}),Q)}async function B(e,t){m({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(!a(t))throw t;return f(h({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}}),Q)}let r=U(n);if(n.kind===`unknown-agent`)return f(h({action:`update`,error:{code:`AGENT_NOT_FOUND`,message:`Unknown agent: ${e.name}`},target:{kind:`agent`,name:e.name}}),Q);if(r?.observation.kind===`absent`){let t=r.observation.drift.kind===`recorded-absent`?[J(e)]:[];return f(h({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Q)}let i=H(e,n);return Z([],i),n.kind===`cancelled`?f(h({action:`update`,data:{results:[i],scope:`single`},error:{code:`CANCELLED`,message:`Update of ${e.displayName} was cancelled.`},target:{kind:`agent`,name:e.name}}),Q):i.status===`failed`||i.status===`locked`?f(h({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Q):f(p({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name},warnings:V(e,n)}),Q)}function V(e,t){if(t.kind!==`blocked`||t.category!==`superseded-package`)return[];let n=g(e,t.before.installedState);return n?[r(e,n)]:[]}function H(t,r){let i=U(r),a=`plan`in r?r.plan:void 0,o=i?.observation.kind===`present`?i.observation.version:void 0,s=Y(a),c=X(a)??i?.binding?.providerId;switch(r.kind){case`updated`:return{displayName:t.displayName,installedVersion:o,latestVersion:r.receipt.version??s,name:t.name,status:`updated`,strategy:c};case`up-to-date`:return{displayName:t.displayName,installedVersion:r.receipt.version??o,name:t.name,status:`up-to-date`,strategy:c};case`dry-run`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:`Dry run: would update ${t.displayName}.`,name:t.name,status:`planned`,strategy:c};case`not-executed`:return r.plan.planning.decision===`up-to-date`?{displayName:t.displayName,installedVersion:o,latestVersion:s,name:t.name,status:`up-to-date`}:{displayName:t.displayName,installedVersion:o,latestVersion:s,message:n(t),name:t.name,status:`manual-required`};case`blocked`:return r.category===`untracked`?{displayName:t.displayName,installedVersion:o,message:e(t),name:t.name,status:`manual-required`}:r.category===`manual-required`?{displayName:t.displayName,installedVersion:o,message:n(t),name:t.name,status:`manual-required`}:r.category===`superseded-package`?{displayName:t.displayName,installedVersion:o,message:r.reason,name:t.name,status:`manual-required`}:{displayName:t.displayName,installedVersion:o,message:r.reason,name:t.name,status:`failed`};case`cancelled`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:r.reason??`Update was cancelled before it could complete.`,name:t.name,status:`failed`,strategy:c};case`timed-out`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:`Update timed out after ${r.timeoutMs}ms.`,name:t.name,status:`failed`,strategy:c};case`provider-failed`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,name:t.name,status:`failed`,strategy:c};case`verification-failed`:case`receipt-failed`:return{displayName:t.displayName,installedVersion:o,latestVersion:s,message:r.kind===`receipt-failed`?r.reason:r.verification.reason,name:t.name,status:`failed`,strategy:c};case`unknown-agent`:return{displayName:t.displayName,name:t.name,status:`failed`}}}function U(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function W(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=G(e);t&&Z(r,t)}else a&&Z(r,K(a))}return r}function G(e){let n=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=x(e.agentName);if(!r)return{displayName:n?.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:Y(i.plan),message:i.reason,name:r.name,resource:i.resource,status:`locked`,strategy:X(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:Y(i.plan),message:i.reason,name:r.name,status:`failed`,strategy:X(i.plan)};let a=i??(e.planning.kind===`planned`?{kind:`not-executed`,plan:e.planning.planned}:e.planning),o=H(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=t(r,_({agent:r,installedState:n?.installedState,methods:[...n?.methods??[]]}))),o}function K(e){let t=x(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:Y(e.planning.planned),message:e.reason??`Update was cancelled before it could start.`,name:t?.name??e.agentName,status:`failed`,strategy:X(e.planning.planned)}}function q(e){return e.plan.targets.flatMap(e=>{if(e.outcome.kind!==`blocked`)return[];let t=x(e.agentName)??e.outcome.before.agent;if(e.outcome.category===`stale-state`)return[J(t)];if(e.outcome.category===`superseded-package`){let n=g(t,e.outcome.before.installedState);return n?[r(t,n)]:[]}return[]})}function J(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 Y(e){return e?.strategy===`managed-provider`?e.plannedTargetVersion:void 0}function X(e){if(e)return e.strategy===`self-update`?`self-update`:`managed/${e.binding.providerId}`}function ae(e){return l().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function Z(e,t){e.push(t),m({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Q(e){if(!e.data){e.error&&D(y.red(e.error.message));return}for(let t of e.warnings)w(y.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:T(y.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:w(y.yellow(`${t.displayName}: manual action required.`)),t.message&&w(y.cyan(`Next step: ${t.message}`));break;case`planned`:w(y.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${$(t.installedVersion,t.latestVersion)}`));break;case`updated`:T(y.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),T(y.green(`${t.displayName} updated successfully!`));break;case`failed`:T(y.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),D(y.red(O(`Failed to update ${t.displayName}.`,t.message))),t.hint&&w(y.cyan(`Next step: ${t.hint}`));break;case`locked`:w(y.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&oe(e.data.results),!e.data.results.length&&e.error&&D(y.red(e.error.message))}function $(e,t){return e?` (${e} -> ${t??`latest`})`:``}function oe(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&&T(y.bold(`Summary: ${n.join(`, `)}`))}export{R as createUpdateCommandInvocation};
@@ -1 +0,0 @@
1
- import{c as e,o as t,r as n}from"./child-process-DzIdysOm.mjs";import{s as r}from"./file-store-XNyirRRY.mjs";import{n as i}from"./cli-context-DI43ouBg.mjs";import{dirname as a,join as o}from"node:path";import{mkdir as s,readFile as c,writeFile as l}from"node:fs/promises";const u={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 d(e=u){return{async run(t){if(t.signal.aborted)return p(t.signal);let r;try{r=e.spawn(t.argv,{...t.cwd?{cwd:t.cwd}:{},detached:e.platform!==`win32`,...t.env?{env:{...process.env,...t.env}}:{},stdio:t.stdio})}catch(e){return m(`failed`,g(e,`Failed to launch agent process.`))}let i=n(r),a,o,s=new Promise(e=>{o=()=>e({kind:`cancelled`}),t.signal.addEventListener(`abort`,o,{once:!0}),t.signal.aborted&&o()}),c=i.then(e=>({kind:`completed`,result:e})),l=t.timeoutMs===void 0?void 0:new Promise(e=>{a=setTimeout(()=>e({kind:`timed-out`}),t.timeoutMs)});try{let n=await Promise.race(l?[c,s,l]:[c,s]);if(n.kind===`completed`)return f(n.result,t,e);if(n.kind===`cancelled`)return await e.terminate(r),await i.catch(()=>void 0),p(t.signal);let a=await v(c,_(t.timeoutMs));return a?f(a.result,t,e):(await e.terminate(r),await i.catch(()=>void 0),m(`timed-out`,`Agent process timed out after ${t.timeoutMs}ms.`))}finally{a&&clearTimeout(a),t.signal.removeEventListener(`abort`,o)}}}}function f(e,t,n){t.forwardPipedOutput!==!1&&(t.stdio?.[1]===`pipe`&&e.stdout&&n.writeStderr?.(e.stdout),t.stdio?.[2]===`pipe`&&e.stderr&&n.writeStderr?.(e.stderr));let r=new TextEncoder;return{kind:`success`,value:{exitCode:e.exitCode,...e.stderr?{stderr:r.encode(e.stderr)}:{},...e.stdout?{stdout:r.encode(e.stdout)}:{}}}}function p(e){return m(`cancelled`,h(e)??`Agent process was cancelled.`)}function m(e,t){return{error:{kind:e,message:t},kind:`failure`}}function h(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function g(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function _(e){return Math.max(1,Math.min(e,250))}async function v(e,t){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{n&&clearTimeout(n)}}function y(e={}){let t=e.filePath??o(r(),`cache`,`versions.json`),n=e.getCacheMode??(()=>i().cacheMode??`default`),a=e.now??Date.now;return{async read(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C({kind:`miss`});try{let n=await b(t),r=T(e.signal);if(r)return r;let i=n.entries[e.key];if(!i||i.expiresAt<=a())return C({kind:`miss`});try{return C({expiresAtMs:i.expiresAt,kind:`hit`,value:JSON.parse(i.body)})}catch{return w(`invalid-data`,`Cached value for ${e.key} is not valid JSON.`)}}catch(e){return E(e,`Failed to read the version cache.`)}},async remove(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C(void 0);try{let n=await b(t);return T(e.signal)||(Object.hasOwn(n.entries,e.key)?(delete n.entries[e.key],await x(t,n),T(e.signal)??C(void 0)):C(void 0))}catch(e){return E(e,`Failed to remove a version cache entry.`)}},async write(e){let r=T(e.signal);if(r)return r;if(n()===`no-cache`)return C(void 0);try{let n=await b(t),r=T(e.signal);if(r)return r;let i=a(),o=JSON.stringify(e.value);return o===void 0?w(`invalid-data`,`Cached value for ${e.key} is not JSON serializable.`):(n.entries[e.key]={body:o,expiresAt:e.expiresAtMs??2**53-1,fetchedAt:i},await x(t,n),T(e.signal)??C(void 0))}catch(e){return E(e,`Failed to write the version cache.`)}}}}async function b(e){try{return S(JSON.parse(await c(e,`utf8`)))}catch(e){if(D(e)||e instanceof SyntaxError)return{entries:{}};throw e}}async function x(e,t){await s(a(e),{recursive:!0}),await l(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}function S(e){if(!O(e)||!O(e.entries))return{entries:{}};let t={};for(let[n,r]of Object.entries(e.entries))!O(r)||typeof r.body!=`string`||!k(r.expiresAt)||(t[n]={body:r.body,etag:typeof r.etag==`string`?r.etag:void 0,expiresAt:r.expiresAt,fetchedAt:k(r.fetchedAt)?r.fetchedAt:void 0});return{entries:t}}function C(e){return{kind:`success`,value:e}}function w(e,t,n){return{error:{code:n,kind:e,message:t},kind:`failure`}}function T(e){return e.aborted?w(`cancelled`,`Cache operation was cancelled.`):void 0}function E(e,t){return w(`failed`,t,O(e)&&typeof e.code==`string`?e.code:void 0)}function D(e){return O(e)&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function O(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function k(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}export{d as n,y as t};
File without changes
File without changes
File without changes