quantex-cli 1.13.1 → 1.13.2
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 +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{agent-inspection-D8YF0G7l.mjs → agent-inspection-BGC8hn92.mjs} +1 -1
- package/dist/agents-BPG1DaPt.mjs +1 -0
- package/dist/{agents-1xVrcX2T.mjs → agents-M0IK-EAw.mjs} +1 -1
- package/dist/capabilities-DdzOucOL.mjs +1 -0
- package/dist/{capabilities-B9akfoAg.mjs → capabilities-w7Fbc-bE.mjs} +1 -1
- package/dist/{cli-read-projection-DBrxiinB.mjs → cli-read-projection-3NGMRhuS.mjs} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/{commands-DdO5wqaC.mjs → commands-D3-X-CL4.mjs} +1 -1
- package/dist/commands-DSjvy4Bk.mjs +1 -0
- package/dist/{config-Dp5vWO4u.mjs → config-DiKH7R9Y.mjs} +1 -1
- package/dist/{core-installation-cli-BU30R3W7.mjs → core-installation-cli-BAkFQTw8.mjs} +1 -1
- package/dist/{detect-Dou6fit1.mjs → detect-CbD8V1su.mjs} +1 -1
- package/dist/{doctor-2AK-8DXd.mjs → doctor-CmTohDAe.mjs} +1 -1
- package/dist/{ensure-CHQo_W-B.mjs → ensure-k2txyX68.mjs} +1 -1
- package/dist/ensure-tfMV3Ohr.mjs +1 -0
- package/dist/{executable-search-paths-Do0aoA1z.mjs → executable-search-paths-CfJ3prUX.mjs} +1 -1
- package/dist/file-store-C7Ak4t_P.mjs +2 -0
- package/dist/index.mjs +1 -1
- package/dist/{info-1VdVWaZU.mjs → info-MZu-jL3s.mjs} +1 -1
- package/dist/inspect-Bwwy2d7a.mjs +1 -0
- package/dist/{inspect-Cmh8P2cH.mjs → inspect-evUWakYc.mjs} +1 -1
- package/dist/{install-CllMI5Vl.mjs → install-D6HUqnaB.mjs} +1 -1
- package/dist/{installation-compatibility-vSytV42c.mjs → installation-compatibility--84wtWNO.mjs} +1 -1
- package/dist/installation-compatibility-D4ZJoPCT.mjs +1 -0
- package/dist/{installation-production-DxkcDNwa.mjs → installation-production-CQgjlxZO.mjs} +1 -1
- package/dist/{installation-provider-registry-CpJjzAO7.mjs → installation-provider-registry-WhPZzmCo.mjs} +1 -1
- package/dist/lifecycle-observations-xZ--ogpK.mjs +1 -0
- package/dist/{lifecycle-policy-CPJ-uQku.mjs → lifecycle-policy-BMJz8c77.mjs} +1 -1
- package/dist/{list-CmbDbwzJ.mjs → list-C0ELcSkZ.mjs} +1 -1
- package/dist/{output-C0TF6WTW.mjs → output-PUVIMxAA.mjs} +3 -3
- package/dist/{package-manager-BdBKbZci.mjs → package-manager-NlPhhpQl.mjs} +1 -1
- package/dist/production-observation-9e2raBHv.mjs +1 -0
- package/dist/{provider-evidence-C_k-kzoO.mjs → provider-evidence-D9Y79LD5.mjs} +1 -1
- package/dist/provider-observation-registry-KrH9TMtQ.mjs +3 -0
- package/dist/{provider-observations-2EeSQRbX.mjs → provider-observations-CIGwqiZL.mjs} +1 -1
- package/dist/{providers-BrKmtcci.mjs → providers-GfRcOIdh.mjs} +1 -1
- package/dist/resolve-DLdjUMyk.mjs +1 -0
- package/dist/{resolve-BVga-Ro4.mjs → resolve-S-TdJhLk.mjs} +1 -1
- package/dist/{schema-ShDMW_sj.mjs → schema-B4yk5NPn.mjs} +1 -1
- package/dist/schema-urQvQbNJ.mjs +1 -0
- package/dist/{uninstall-SDNnTH6W.mjs → uninstall-C04YMfwl.mjs} +1 -1
- package/dist/unmanaged-install-compatibility-D3hnfPRi.mjs +1 -0
- package/dist/update-CMjaldgI.mjs +1 -0
- package/dist/{upgrade-CykBo6ap.mjs → upgrade-BrOGjSft.mjs} +1 -1
- package/package.json +1 -1
- package/dist/agents-BdSn7xtP.mjs +0 -1
- package/dist/capabilities-CNRjwfBz.mjs +0 -1
- package/dist/commands-BdWPLakC.mjs +0 -1
- package/dist/ensure-CgQQCiv-.mjs +0 -1
- package/dist/file-store-oHCTTnLn.mjs +0 -2
- package/dist/inspect-DvcoLIJ6.mjs +0 -1
- package/dist/installation-compatibility-X6JPRI5_.mjs +0 -1
- package/dist/lifecycle-observations-D78ZkqEX.mjs +0 -1
- package/dist/production-observation-v7S1oqsN.mjs +0 -1
- package/dist/provider-observation-registry-CgFXbZHd.mjs +0 -3
- package/dist/resolve-BvxcLaLm.mjs +0 -1
- package/dist/schema-Dg3sXQ1u.mjs +0 -1
- package/dist/unmanaged-install-compatibility-gE_Y2JWk.mjs +0 -1
- package/dist/update-B966hXRX.mjs +0 -1
- /package/dist/{lifecycle-errors-Elpn7QSu.mjs → lifecycle-errors-D9MEtJ8Y.mjs} +0 -0
- /package/dist/{version-cache-BPRXYft0.mjs → version-cache-BbKTS491.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,o as t,t as n}from"./child-process-DzIdysOm.mjs";import{s as r}from"./schema-BBnWVY6R.mjs";import{i,n as a}from"./cli-context-DI43ouBg.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-DzIdysOm.mjs";import{s as r}from"./schema-BBnWVY6R.mjs";import{i,n as a}from"./cli-context-DI43ouBg.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-PUVIMxAA.mjs";import{t as h}from"./color-CLDVRyIs.mjs";import{a as g,i as _,n as v,r as y}from"./user-output-CF4UAX0c.mjs";import{n as b,t as x}from"./version-cache-BbKTS491.mjs";const S={platform:process.platform,spawn:(e,n)=>t(e,{...n,stdio:n.stdio?[...n.stdio]:void 0}),terminate:e,writeStderr:e=>{process.stderr.write(e)}};function C(e=S){let t=b(e);return{run:e=>t.run({...e,forwardPipedOutput:e.forwardPipedOutput??!1})}}const w={fetch:globalThis.fetch.bind(globalThis)};function T(e=w){return{async request(t){if(t.signal.aborted)return E(t.signal);let n=new AbortController,r,i,a=!1,o=new Promise(e=>i=e),s=e=>{a||(a=!0,n.abort(),i(e))},c=()=>s(E(t.signal));t.signal.addEventListener(`abort`,c,{once:!0}),t.signal.aborted&&c(),t.timeoutMs!==void 0&&(r=setTimeout(()=>s(D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`)),t.timeoutMs));let l=Promise.resolve().then(async()=>{let r=await e.fetch(t.url,{body:t.body,headers:t.headers,method:t.method,signal:n.signal}),i={};return r.headers.forEach((e,t)=>i[t.toLowerCase()]=e),{kind:`success`,value:{body:new Uint8Array(await r.arrayBuffer()),headers:i,status:r.status}}}).catch(e=>t.signal.aborted?E(t.signal):n.signal.aborted&&t.timeoutMs!==void 0?D(`timed-out`,`Network request timed out after ${t.timeoutMs}ms.`):D(`failed`,e instanceof Error?e.message:`Network request failed.`));try{return await Promise.race([l,o])}finally{a=!0,r&&clearTimeout(r),t.signal.removeEventListener(`abort`,c)}}}}function E(e){return D(`cancelled`,e.reason instanceof Error?e.reason.message:String(e.reason??`Network request was cancelled.`))}function D(e,t){return{error:{kind:e,message:t},kind:`failure`}}function O(e){let t=new AbortController,n=new Set,r=Object.freeze({cacheMode:e.cacheMode??`default`,dryRun:e.dryRun??!1,outputMode:e.outputMode??`human`,quiet:e.quiet??!1,timeoutMs:e.timeoutMs}),i=Object.freeze({...e.ports}),a;return{options:r,ports:i,signal:t.signal,cancel(e){if(a)return a;let r;a=new Promise(e=>{r=e}),t.abort(e);let i=[...n];return n.clear(),Promise.allSettled(i.map(t=>Promise.resolve().then(()=>t(e)))).then(()=>r()),a},onCancel(e){return t.signal.aborted?()=>void 0:(n.add(e),()=>{n.delete(e)})}}}async function k(e,t,n){if(t.signal.aborted)return A();let r=await n.plan({context:{signal:t.signal,timeoutMs:t.options.timeoutMs},metadataCache:t.ports.cache,metadataCacheMode:t.options.cacheMode===`no-cache`?`no-cache`:`refresh`,networkPort:t.ports.network,persistencePort:t.ports.persistence,updateChannel:e.updateChannel});return t.signal.aborted?A(r):e.check||e.dryRun||r.status!==`update-available`?{kind:`planned`,plan:r}:{kind:`executed`,plan:r,result:await n.upgrade(r,{lockPort:t.ports.locks,networkPort:t.ports.network,processPort:t.ports.process,signal:t.signal,stdio:t.options.outputMode===`human`?[`inherit`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`],timeoutMs:t.options.timeoutMs})}}function A(e){return{error:{kind:`cancelled`,message:`Self-upgrade invocation was cancelled.`},kind:`interrupted`,...e?{plan:e}:{}}}function j(){let e=a(),t=O({cacheMode:e.cacheMode,dryRun:e.dryRun,outputMode:e.outputMode,ports:M(),quiet:e.quiet,timeoutMs:e.timeoutMs});e.cancelled&&t.cancel(`cancelled`);let n=i(()=>t.cancel(`cancelled`)),r=!1,s={plan:e=>c({context:e.context,metadataCache:e.metadataCache,metadataCacheMode:e.metadataCacheMode,networkPort:e.networkPort,persistencePort:e.persistencePort,updateChannel:e.updateChannel}),upgrade:(e,t)=>o(e,t)};return{dispose(){r||(r=!0,n())},run:e=>k(e,t,s)}}function M(){return{cache:x(),clock:{now:Date.now,sleep:N},fileSystem:{makeDirectory:N,readFile:N,remove:N,rename:N,writeFile:N},locks:u(),network:T(),persistence:m(),process:C()}}async function N(){return{error:{kind:`unavailable`,message:`Runtime port is not bound for this self-upgrade operation.`},kind:`failure`}}function P(e){if(e===`stable`||e===`beta`)return e}async function F(e={}){let t=v(),r=j(),i=await r.run({check:e.check??!1,dryRun:t,updateChannel:e.channel}).finally(()=>r.dispose());if(i.kind===`interrupted`)throw new n({kind:`cancelled`,reason:i.error.message});let a=i.plan,o=s(a),c=L(o),u=z(o);if(a.status===`up-to-date`)return l(d({action:`upgrade`,data:{canAutoUpdate:o.canAutoUpdate,channel:o.updateChannel,currentVersion:o.currentVersion,installSource:o.installSource,latestVersion:o.latestVersion,status:`up-to-date`},target:{kind:`self`,name:`quantex`},warnings:[...c,...u?[u]:[]]}),I);if(a.status===`check-unavailable`)return 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(e.check||t)return 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);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.13.
|
|
3
|
+
"version": "1.13.2",
|
|
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",
|
package/dist/agents-BdSn7xtP.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./file-store-oHCTTnLn.mjs";import{n as t,r as n}from"./agents-1xVrcX2T.mjs";import{Q as r,Z as i,et as a,x as o}from"./output-C0TF6WTW.mjs";import{c as s,g as c,s as l,u,y as d}from"./providers-BrKmtcci.mjs";import{n as f,r as p}from"./package-manager-BdBKbZci.mjs";async function m(t){let[n,i,a]=await Promise.all([p(t),o(t.name),e(t.binaryName)]),u=a!==void 0,[d,f]=await Promise.all([u?g(t,i,a):Promise.resolve(void 0),_(t,i,n)]);return{agent:t,methods:n,installedState:i,inPath:u,installedVersion:d,latestVersion:f,binaryPath:a,resolvedBinaryPath:await r(a),sourceLabel:l(i),updateLabel:s(t,i),lifecycle:i?c(i.installType):`unmanaged`}}async function h(e){return Promise.all(e.map(m))}async function g(e,t,n){if(t&&d(t.installType)&&t.packageName){let e=await f(t.installType,t.packageName,t.packageTargetKind);if(e)return e}return a(e.binaryName,e.versionProbe,void 0,n)}async function _(e,t,n){let r=u(e,t,n);if(r)return i(r)}function v(e){return t(e)}async function y(e){let t=v(e);if(t)return{agent:t,inspection:await m(t)}}async function b(){return h(n())}export{h as a,m as i,v as n,y as r,b as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./capabilities-B9akfoAg.mjs";export{e as capabilitiesCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./commands-DdO5wqaC.mjs";export{e as commandsCommand};
|
package/dist/ensure-CgQQCiv-.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./ensure-CHQo_W-B.mjs";export{t as ensureCommand,e as ensureCommandWithRoute};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e,n as t,o as n,r}from"./child-process-DzIdysOm.mjs";import{n as i,t as a}from"./executable-search-paths-Do0aoA1z.mjs";import{a as o,i as s,n as c,o as l,r as u}from"./schema-BBnWVY6R.mjs";import{t as d}from"./config-jsaRCEWF.mjs";import{constants as f,mkdirSync as p,writeFileSync as m}from"node:fs";import{dirname as h,join as g}from"node:path";import _ from"node:process";import{access as v,mkdir as y,readFile as b,rename as x,rm as S,writeFile as C}from"node:fs/promises";import{homedir as w}from"node:os";function T(){return{env:_.env,homeDir:w(),platform:_.platform}}async function E(i,a){try{let t=n([_.platform===`win32`?`where`:`which`,i],{detached:a!==void 0&&_.platform!==`win32`}),{exitCode:o,stdout:s}=a?await e(t,a):await r(t);return o===0&&s.trim().split(`
|
|
2
|
-
`)[0]?.trim()||void 0}catch(e){if(t(e))throw e;return}}async function D(e,t){let n=a(e,t);for(let e of i(t))for(let t of n){let n=g(e,t);try{return await v(n,f.X_OK),n}catch{}}}async function O(e,t){let n=await E(e,t);if(n)return n;if(!t?.signal.aborted)return D(e,T())}async function k(e,t){return await O(e,t)!==void 0}var A=class extends Error{lockPath;resource;constructor(e,t){super(`Another quantex process is already using the ${e} lock.`),this.name=`ResourceLockError`,this.lockPath=t,this.resource=e}};function j(e){return e instanceof A}function M(e,t){let n=t.map(e=>e.trim().replaceAll(/[^\w.-]+/g,`-`).replaceAll(/-+/g,`-`).replaceAll(/^-|-$/g,``)).filter(Boolean),r=n.length>0?n:[`default`],i=r.slice(0,-1),a=`${r.at(-1)}.lock`;return g(e,`locks`,...i,a)}async function N(e,t){let n=M(e,t.scope);return await y(h(n),{recursive:!0}),await F(t.resource,n),async()=>{await S(n,{force:!0,recursive:!0})}}async function P(e){return await N(d(),e)}async function F(e,t){try{p(t,{recursive:!1}),I(t);return}catch(e){if(!V(e))throw e}if(!await L(t))throw new A(e,t);try{p(t,{recursive:!1}),I(t)}catch(n){throw V(n)?new A(e,t):n}}function I(e){m(g(e,`owner.json`),`${JSON.stringify({pid:_.pid,createdAt:new Date().toISOString()})}\n`,`utf8`)}async function L(e){let t;try{t=await R(e)}catch{return!1}return t&&B(t.pid)?!1:(await S(e,{force:!0,recursive:!0}),!0)}async function R(e){let t=Date.now()+100;for(;Date.now()<t;){let t=await z(e);if(t)return t;await new Promise(e=>setTimeout(e,2))}return await z(e)}async function z(e){try{let t=await b(g(e,`owner.json`),`utf8`),n=JSON.parse(t);return typeof n.pid==`number`&&Number.isInteger(n.pid)&&n.pid>0?{pid:n.pid}:void 0}catch(e){if(H(e))return;throw e}}function B(e){try{return _.kill(e,0),!0}catch(e){return(typeof e==`object`&&e&&`code`in e?e.code:void 0)===`EPERM`}}function V(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`EEXIST`}function H(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}async function U(e,t,n){let r=await N(e,t);try{return await n()}finally{await r()}}async function W(e,t){return await U(d(),e,t)}var G=class extends Error{backupFilePath;primaryError;recoveryError;constructor(e){super(`Failed to restore the original Quantex state after a persistence failure.`,{cause:e.recoveryError}),this.name=`StateRecoveryError`,this.backupFilePath=e.backupFilePath,this.primaryError=e.primaryError,this.recoveryError=e.recoveryError}},K=class{constructor(e){this.options=e}async load(){let e=await this.readOptional(this.options.stateFilePath);return e===void 0?void 0:J(e)}async save(e){let t=s(e);if(t.source!==`current`)throw Error(`Refusing to persist an unversioned state document.`);let{backupFilePath:n,directoryPath:r,stateFilePath:i,tempFileSuffix:a}=this.options,o=`${n}.tmp-${a}`,c=`${i}.tmp-${a}`,l=`${i}.restore-${a}`,u=await this.readOptional(i),d=u===void 0?void 0:s(J(u)),f=`${JSON.stringify(t.document,null,2)}\n`,p=!1;await this.options.fileSystem.makeDirectory(r);try{u!==void 0&&d?.source===`legacy`&&(await this.options.fileSystem.writeText(o,u),await this.validateBackup(o,u),await this.options.fileSystem.rename(o,n),await this.validateBackup(n,u)),await this.options.fileSystem.writeText(c,f),Y(await this.options.fileSystem.readText(c)),await this.options.fileSystem.rename(c,i),p=!0,Y(await this.options.fileSystem.readText(i))}catch(e){let t;try{p&&await this.restoreOriginal(u,l,i)}catch(e){t=e}finally{await this.removeTemporaryFiles(o,c,l)}throw t===void 0?e:new G({backupFilePath:n,primaryError:e,recoveryError:t})}await this.removeTemporaryFiles(o,c,l)}async readOptional(e){try{return await this.options.fileSystem.readText(e)}catch(e){if(X(e))return;throw e}}async validateBackup(e,t){let n=await this.options.fileSystem.readText(e);if(n!==t)throw Error(`State migration backup does not match the original state.`);s(J(n))}async restoreOriginal(e,t,n){if(e===void 0){if(await this.options.fileSystem.remove(n),await this.readOptional(n)!==void 0)throw Error(`New state remained after rollback removal.`);return}await this.options.fileSystem.writeText(t,e),await this.options.fileSystem.rename(t,n);let r=await this.options.fileSystem.readText(n);if(r!==e)throw Error(`Restored state does not match the original state.`);s(J(r))}async removeTemporaryFiles(...e){await Promise.all(e.map(e=>this.options.fileSystem.remove(e).catch(()=>void 0)))}},q=class{constructor(e){this.persistence=e}async loadDocument(){let e=await this.persistence.load();return e===void 0?c():s(e).document}async loadProjection(){return o(await this.loadDocument())}async saveDocument(e){let t=s(e);if(t.source!==`current`)throw Error(`State documents must use the current state schema.`);await this.persistence.save(t.document)}async saveProjection(e){let t=l(await this.loadDocument(),e);await this.saveDocument(t)}async getReceipt(e){return(await this.loadDocument()).lifecycleReceipts[e]}async setReceipt(e){let t=u(e.targetId,e),n=await this.loadDocument(),r=s({...n,lifecycleReceipts:{...n.lifecycleReceipts,[t.targetId]:t}});if(r.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(r.document)}async setAgentLifecycleEvidence(e,t){let n=u(t.targetId,t);if(e.agentName!==n.targetId)throw Error(`Installed agent state and lifecycle receipt must target the same agent.`);let r=await this.loadDocument(),i=s({...r,installedAgents:{...r.installedAgents,[e.agentName]:e},lifecycleReceipts:{...r.lifecycleReceipts,[n.targetId]:n}});if(i.source!==`current`)throw Error(`Verified lifecycle evidence must use the current state schema.`);await this.saveDocument(i.document)}async removeReceipt(e){let t=await this.loadDocument(),n={...t.lifecycleReceipts};delete n[e],await this.saveDocument({...t,lifecycleReceipts:n})}};function J(e){return JSON.parse(e)}function Y(e){if(s(J(e)).source!==`current`)throw Error(`Persisted state validation did not produce a current document.`)}function X(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;return t===`ENOENT`||t===`ENOTDIR`}const Z={async makeDirectory(e){await y(e,{recursive:!0})},async readText(e){return b(e,`utf8`)},async remove(e){await S(e,{force:!0})},async rename(e,t){await x(e,t)},async writeText(e,t){await C(e,t,`utf8`)}};function Q(e){return g(e,`state.json`)}function $(e,t=String(_.pid)){let n=Q(e);return new q(new K({backupFilePath:`${n}.v1.bak`,directoryPath:e,fileSystem:Z,stateFilePath:n,tempFileSuffix:t}))}export{j as a,O as c,N as i,Q as n,W as o,P as r,k as s,$ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./inspect-Cmh8P2cH.mjs";export{e as inspectCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./installation-compatibility-vSytV42c.mjs";export{e as createCoreInstallationCompatibilityExecutor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./file-store-oHCTTnLn.mjs";import{t}from"./detect-Dou6fit1.mjs";import{R as n,n as r,r as i}from"./agents-1xVrcX2T.mjs";import{Q as a,S as o,Z as s,et as c,x as l}from"./output-C0TF6WTW.mjs";import{u}from"./providers-BrKmtcci.mjs";import{t as d}from"./cli-operation-context-CzjG_eom.mjs";import{r as f}from"./package-manager-BdBKbZci.mjs";import{r as p}from"./provider-binding-DW-oviNl.mjs";import{t as m}from"./agent-observation-CcBKTAZT.mjs";function h(e,t={}){async function n(n){let r,i=()=>(r??=e.readInstalledState(n.name),r),a=await e.getOrderedInstallMethods(n),o=await e.observeAgentLifecycle(n,{clock:e.clock,inspectExecutable:async()=>e.inspectExecutable(n,await i()),platform:e.getPlatform(),preferredCatalogBinding:a[0]?p(n,a[0]):void 0,providerRegistry:e.providerRegistry,readInstalledState:i,readReceipt:e.readReceipt,resolveExecutablePath:t=>e.getResolvedBinaryPath(t),signal:e.signal,timeoutMs:e.timeoutMs}),[s,c]=await Promise.all([t.resolveLatestVersion===!1?Promise.resolve(void 0):e.getLatestVersion(n,o.installedState,a),e.getResolvedBinaryPath(o.pathExecutable.path)]);return{agent:n,...o,latestVersion:s,methods:a,resolvedBinaryPath:c}}return{observeRegisteredAgents(){return Promise.all(e.getAllAgents().map(n))},async resolveAgentObservation(t){let r=e.getAgentByNameOrAlias(t);return r?n(r):void 0}}}function g(e,t){return t?_(t).resolveAgentObservation(e):v(t=>t.resolveAgentObservation(e))}function _(e,s={}){return h({clock:()=>new Date().toISOString(),getAllAgents:i,getAgentByNameOrAlias:r,getLatestVersion:(t,n,r)=>x(t,n,r,e),getOrderedInstallMethods:f,getPlatform:t,getResolvedBinaryPath:t=>a(t,e),inspectExecutable:(t,n)=>y(t,n,e),observeAgentLifecycle:m,providerRegistry:n,readInstalledState:l,readReceipt:o,signal:e.signal,timeoutMs:e.timeoutMs},s)}async function v(e){let t=d(),n=_(t.context);try{return await t.run(()=>e(n))}finally{t.dispose()}}async function y(t,n,r){let i=await e(t.binaryName,r);if(!i)return{present:!1};let o=await b(t,n,r,i);return{path:await a(i,r)??i,present:!0,version:o}}async function b(e,t,n,r){return c(e.binaryName,e.versionProbe,n,r)}async function x(e,t,n,r){let i=u(e,t,n);return i?s(i,`latest`,{context:r}):void 0}export{g as n,_ as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./executable-search-paths-Do0aoA1z.mjs";import{i as n,n as r,t as i}from"./schema-BBnWVY6R.mjs";import{r as a}from"./provider-binding-DW-oviNl.mjs";import{t as o}from"./agent-observation-CcBKTAZT.mjs";import{n as s,r as c,t as l}from"./provider-observation-registry-CgFXbZHd.mjs";import{constants as u}from"node:fs";import{isAbsolute as d,join as f,resolve as p}from"node:path";import m from"node:process";import{access as h,readFile as g,realpath as _}from"node:fs/promises";import{homedir as v}from"node:os";const y=[{binaryName:`amp`,displayName:`Amp`,homepage:`https://ampcode.com/`,name:`amp`,packages:{npm:`@sourcegraph/amp`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`amp`,`version`]}},{binaryName:`agy`,displayName:`Antigravity CLI`,homepage:`https://antigravity.google/product/antigravity-cli`,lookupAliases:[`agy`,`antigravity-cli`],name:`antigravity`,platforms:{linux:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://antigravity.google/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://antigravity.google/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`agy`,`--version`]}},{binaryName:`auggie`,displayName:`Auggie CLI`,homepage:`https://docs.augmentcode.com/cli/overview`,name:`auggie`,packages:{npm:`@augmentcode/auggie`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}]},versionProbe:{command:[`auggie`,`--version`]}},{binaryName:`autohand`,displayName:`Autohand Code CLI`,homepage:`https://autohand.ai/cli/`,lookupAliases:[`autohand-cli`],name:`autohand`,packages:{npm:`autohand-cli`},platforms:{linux:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://autohand.ai/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`iwr -useb https://autohand.ai/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`autohand`,`--version`]}},{binaryName:`claude`,displayName:`Claude Code`,homepage:`https://code.claude.com/docs`,name:`claude`,packages:{npm:`@anthropic-ai/claude-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://claude.ai/install.sh | bash`,type:`script`},{packageName:`claude-code`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://claude.ai/install.ps1 | iex`,type:`script`},{packageName:`Anthropic.ClaudeCode`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`codebuddy`,displayName:`CodeBuddy Code`,homepage:`https://www.codebuddy.cn/docs/cli/installation`,lookupAliases:[`codebuddy-code`],name:`codebuddy`,packages:{npm:`@tencent-ai/codebuddy-code`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://www.codebuddy.cn/cli/install.sh | bash`,type:`script`},{packageName:`Tencent-CodeBuddy/tap/codebuddy-code`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://www.codebuddy.cn/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`codebuddy`,`--version`]}},{binaryName:`codewhale`,displayName:`CodeWhale`,homepage:`https://github.com/Hmbown/CodeWhale`,name:`codewhale`,packages:{npm:`codewhale`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`codewhale`,`--version`]}},{binaryName:`codex`,displayName:`Codex CLI`,homepage:`https://developers.openai.com/codex/cli`,name:`codex`,packages:{npm:`@openai/codex`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`codex`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`codex`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`command-code`,displayName:`Command Code`,homepage:`https://commandcode.ai/docs/quickstart`,lookupAliases:[`command-code`,`cmd`,`cmdc`],name:`commandcode`,packages:{npm:`command-code`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`command-code`,`--version`]}},{binaryName:`copilot`,displayName:`GitHub Copilot CLI`,homepage:`https://github.com/features/copilot/cli`,name:`copilot`,packages:{npm:`@github/copilot`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://gh.io/copilot-install | bash`,type:`script`},{packageName:`copilot-cli`,type:`brew`}],windows:[{packageName:`GitHub.Copilot`,packageTargetKind:`id`,type:`winget`}]}},{binaryName:`crush`,displayName:`Crush`,homepage:`https://github.com/charmbracelet/crush`,name:`crush`,packages:{npm:`@charmland/crush`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet/tap/crush`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{packageName:`charmbracelet.crush`,packageTargetKind:`id`,type:`winget`}]},versionProbe:{command:[`crush`,`--version`]}},{binaryName:`agent`,displayName:`Cursor CLI`,homepage:`https://cursor.com/docs/cli`,lookupAliases:[`agent`],name:`cursor`,platforms:{linux:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],macos:[{command:`curl https://cursor.com/install -fsS | bash`,type:`script`}],windows:[{command:`irm 'https://cursor.com/install?win32=true' | iex`,type:`script`}]},versionProbe:{command:[`agent`,`--version`]}},{binaryName:`devin`,displayName:`Devin for Terminal`,homepage:`https://cli.devin.ai/`,name:`devin`,platforms:{linux:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.devin.ai/install.sh | bash`,type:`script`}],windows:[{command:`irm https://static.devin.ai/cli/setup.ps1 | iex`,type:`script`}]},versionProbe:{command:[`devin`,`version`]}},{binaryName:`droid`,displayName:`Droid`,homepage:`https://docs.factory.ai/cli/getting-started/overview`,name:`droid`,packages:{npm:`droid`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://app.factory.ai/cli | sh`,type:`script`},{packageName:`droid`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`},{command:`irm https://app.factory.ai/cli/windows | iex`,type:`script`}]}},{binaryName:`dsh`,displayName:`DeepSeek Harness`,homepage:`https://github.com/deepseek-ai/deepseek-harness`,lookupAliases:[`deepseek-harness`],name:`dsh`,packages:{npm:`@deepseek-ai/dsh`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`dsh`,`--version`]}},{binaryName:`gemini`,displayName:`Gemini CLI`,homepage:`https://google-gemini.github.io/gemini-cli/docs/`,name:`gemini`,packages:{npm:`@google/gemini-cli`},platforms:{linux:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{packageName:`gemini-cli`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`goose`,displayName:`Goose`,homepage:`https://github.com/aaif-goose/goose`,name:`goose`,platforms:{linux:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],macos:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{packageName:`block-goose-cli`,type:`brew`}],windows:[{command:`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`,type:`script`},{command:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1"; ./download_cli.ps1`,type:`script`}]},versionProbe:{command:[`goose`,`--version`]}},{binaryName:`grok`,displayName:`Grok Build`,homepage:`https://docs.x.ai/build/overview`,lookupAliases:[`grok-build`],name:`grok`,platforms:{linux:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://x.ai/cli/install.sh | bash`,type:`script`}],windows:[{command:`irm https://x.ai/cli/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`grok`,`--version`]}},{binaryName:`hermes`,displayName:`Hermes Agent`,homepage:`https://github.com/NousResearch/hermes-agent`,lookupAliases:[`hermes-agent`],name:`hermes`,platforms:{linux:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],macos:[{command:`curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash`,type:`script`}],windows:[{command:`iex (irm https://hermes-agent.nousresearch.com/install.ps1)`,type:`script`}]},versionProbe:{command:[`hermes`,`--version`]}},{binaryName:`junie`,displayName:`Junie CLI`,homepage:`https://junie.jetbrains.com/docs/junie-cli.html`,name:`junie`,platforms:{linux:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],macos:[{command:`curl -fsSL https://junie.jetbrains.com/install.sh | bash`,type:`script`},{packageName:`jetbrains-junie/junie/junie`,type:`brew`}],windows:[{command:`iex (irm 'https://junie.jetbrains.com/install.ps1')`,type:`script`}]},versionProbe:{command:[`junie`,`--version`]}},{binaryName:`kilo`,displayName:`Kilo CLI`,homepage:`https://kilo.ai/docs/cli`,name:`kilo`,packages:{npm:`@kilocode/cli`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`kimi`,displayName:`Kimi Code`,homepage:`https://moonshotai.github.io/kimi-code/`,lookupAliases:[`kimi-code`,`kimi-cli`],name:`kimi`,packages:{npm:`@moonshot-ai/kimi-code`},platforms:{linux:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash`,type:`script`},{type:`npm`}],windows:[{command:`irm https://code.kimi.com/kimi-code/install.ps1 | iex`,type:`script`},{type:`npm`}]},versionProbe:{command:[`kimi`,`--version`]}},{binaryName:`kiro-cli`,displayName:`Kiro CLI`,homepage:`https://kiro.dev/cli/`,lookupAliases:[`kiro-cli`],name:`kiro`,platforms:{linux:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],macos:[{command:`curl -fsSL https://cli.kiro.dev/install | bash`,type:`script`}],windows:[{command:`irm 'https://cli.kiro.dev/install.ps1' | iex`,type:`script`}]},versionProbe:{command:[`kiro-cli`,`--version`]}},{binaryName:`mimo`,displayName:`MiMoCode`,homepage:`https://github.com/XiaomiMiMo/MiMo-Code`,lookupAliases:[`mimocode`,`mimo-code`],name:`mimo`,packages:{npm:`@mimo-ai/cli`},platforms:{linux:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],macos:[{command:`curl -fsSL https://mimo.xiaomi.com/install | bash`,type:`script`},{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`mimo`,`--version`]}},{binaryName:`omp`,displayName:`oh-my-pi (OMP)`,homepage:`https://github.com/can1357/oh-my-pi`,name:`omp`,packages:{npm:`@oh-my-pi/pi-coding-agent`},platforms:{linux:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],macos:[{type:`bun`},{command:`curl -fsSL https://omp.sh/install | sh`,type:`script`}],windows:[{type:`bun`},{command:`irm https://omp.sh/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`omp`,`--version`]}},{binaryName:`openclaw`,displayName:`OpenClaw`,homepage:`https://github.com/openclaw/openclaw`,name:`openclaw`,packages:{npm:`openclaw`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://openclaw.ai/install.sh | bash`,type:`script`}],windows:[{type:`bun`},{type:`npm`},{command:`iwr -useb https://openclaw.ai/install.ps1 | iex`,type:`script`}]},versionProbe:{command:[`openclaw`,`--version`]}},{binaryName:`opencode`,displayName:`OpenCode`,homepage:`https://opencode.ai`,name:`opencode`,packages:{npm:`opencode-ai`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://opencode.ai/install | bash`,type:`script`},{packageName:`anomalyco/tap/opencode`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`openhands`,displayName:`OpenHands CLI`,homepage:`https://docs.openhands.dev/openhands/usage/cli/installation`,name:`openhands`,platforms:{linux:[{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}],macos:[{command:`curl -fsSL https://install.openhands.dev/install.sh | sh`,type:`script`}]},versionProbe:{command:[`openhands`,`--version`]}},{binaryName:`pi`,displayName:`Pi`,homepage:`https://pi.dev`,name:`pi`,packages:{npm:`@earendil-works/pi-coding-agent`},platforms:{linux:[{type:`bun`},{type:`npm`}],macos:[{type:`bun`},{type:`npm`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qodercli`,displayName:`Qoder CLI`,homepage:`https://docs.qoder.com/cli/quick-start`,lookupAliases:[`qodercli`],name:`qoder`,packages:{npm:`@qoder-ai/qodercli`},platforms:{linux:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],macos:[{type:`bun`},{type:`npm`},{command:`curl -fsSL https://qoder.com/install | bash`,type:`script`},{packageName:`qoderai/qoder/qodercli`,packageTargetKind:`cask`,type:`brew`}],windows:[{type:`bun`},{type:`npm`}]}},{binaryName:`qwen`,displayName:`Qwen Code`,homepage:`https://qwenlm.github.io/qwen-code-docs/`,name:`qwen`,packages:{npm:`@qwen-code/qwen-code`},platforms:{linux:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],macos:[{command:`curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash`,type:`script`},{type:`bun`},{type:`npm`},{packageName:`qwen-code`,type:`brew`}],windows:[{command:`curl -fsSL -o %TEMP%\\install-qwen.bat https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat && %TEMP%\\install-qwen.bat`,type:`script`},{type:`bun`},{type:`npm`}]}},{binaryName:`reasonix`,displayName:`Reasonix`,homepage:`https://github.com/esengine/DeepSeek-Reasonix`,lookupAliases:[`deepseek-reasonix`],name:`reasonix`,packages:{npm:`reasonix`},platforms:{linux:[{type:`npm`}],macos:[{type:`npm`}],windows:[{type:`npm`}]},versionProbe:{command:[`reasonix`,`--version`]}},{binaryName:`vibe`,displayName:`Mistral Vibe`,homepage:`https://docs.mistral.ai/mistral-vibe/terminal/install`,lookupAliases:[`mistral-vibe`],name:`vibe`,platforms:{linux:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`}],macos:[{command:`curl -LsSf https://mistral.ai/vibe/install.sh | bash`,type:`script`}]},versionProbe:{command:[`vibe`,`--version`]}}];function b(){return y}function x(e){let t=y.find(t=>t.name===e||t.lookupAliases?.includes(e));if(t)return t;let n=S(e);return y.find(e=>S(e.displayName)===n)}function S(e){return e.trim().toLowerCase()}function C(e){return e===void 0?f(m.env.HOME||m.env.USERPROFILE||v(),`.quantex`):d(e)?e:p(e)}function w(e={}){let t=e.providerRegistry??l();return{async inspectAgent(e,n,r){let i=x(e);if(i)return E(i,n,t,r?.observationBinding)},async listAgents(e){return z(e.signal),b()}}}async function T(e){let t=f(e,`state.json`),a;try{a=await g(t,`utf8`)}catch(e){if(R(e))return r();throw e}let o;try{o=JSON.parse(a)}catch(e){throw new i(`state.json contains invalid JSON: ${V(e)}`)}return n(o).document}async function E(e,t,n,r){let[i,s]=await Promise.all([T(t.configDir),M(e,t.configDir,t.signal)]),c={registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs},l=await o(e,{clock:()=>new Date().toISOString(),inspectExecutable:()=>D(e,c),...r?{observationBinding:r}:{},platform:F(),preferredCatalogBinding:s[0]?a(e,s[0]):void 0,providerRegistry:n,readInstalledState:async e=>i.installedAgents[e],readReceipt:async e=>i.lifecycleReceipts[e],resolveExecutablePath:e=>j(e,t.signal),signal:t.signal,timeoutMs:t.timeoutMs,observeProvider:async e=>{let t=n.get(e.providerId);return t?t.observe({context:c,target:e.target}):{kind:`unavailable`,reason:`Provider ${e.providerId} is not registered.`,retryable:!1}}}),u=await j(l.pathExecutable.path,t.signal);return{agent:e,...l,methods:s,...u?{resolvedBinaryPath:u}:{}}}async function D(e,t){let n=await O(e.binaryName,t);if(!n)return{present:!1};let r=await j(n,t.signal)??n,i=await A(e,r,t);return{path:r,present:!0,...i?{version:i}:{}}}async function O(e,t){try{let n=await c([m.platform===`win32`?`where`:`which`,e],t);if(n.exitCode===0){let e=n.stdout.trim().split(/\r?\n/u)[0];if(e)return e}}catch(e){if(e instanceof s)throw e}return k(e)}async function k(n){let r={env:m.env,homeDir:v(),platform:m.platform},i=t(n,r);for(let t of e(r))for(let e of i){let n=f(t,e);try{return await h(n,u.X_OK),n}catch{}}}async function A(e,t,n){let r=e.versionProbe?.command??[e.binaryName,`--version`],i=r[0]===e.binaryName?[t,...r.slice(1)]:r;try{let t=await c(i,n);return t.exitCode===0?P(t.stdout,e.versionProbe?.parser)??P(t.stderr,e.versionProbe?.parser):void 0}catch(e){if(e instanceof s)throw e;return}}async function j(e,t){if(e){z(t);try{let n=await _(e);return z(t),n}catch{if(t.aborted)throw new s(B(t));return e}}}async function M(e,t,n){let r=e.platforms[F()]??[],i=await N(t,n);return[...r.filter(e=>e.type===i),...r.filter(e=>e.type!==i)]}async function N(e,t){z(t);try{let n=await g(f(e,`config.json`),`utf8`);z(t);let r=JSON.parse(n);if(L(r)&&I(r.defaultPackageManager))return r.defaultPackageManager}catch(e){if(t.aborted)throw new s(B(t));if(e instanceof s)throw e}return`bun`}function P(e,t){if(typeof t==`function`)return t(e);let n=e.trim().split(/\r?\n/u)[0];if(n)return n.match(/v?(\d+\.\d+\.\d+(?:-[a-z0-9.]+)?)/iu)?.[1]??n}function F(){return m.platform===`win32`?`windows`:m.platform===`darwin`?`macos`:`linux`}function I(e){return e===`bun`||e===`mise`||e===`npm`||e===`uv`}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return!e||typeof e!=`object`||!(`code`in e)?!1:e.code===`ENOENT`||e.code===`ENOTDIR`}function z(e){if(e.aborted)throw new s(B(e))}function B(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}function V(e){return e instanceof Error&&e.message?e.message:String(e)}export{b as i,C as n,x as r,w as t};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./executable-search-paths-Do0aoA1z.mjs";import n from"cross-spawn";import{spawn as r}from"node:child_process";import{join as i}from"node:path";import a from"node:process";import{access as o,readFile as s}from"node:fs/promises";import{homedir as c}from"node:os";import{once as l}from"node:events";var u=class extends Error{kind=`cancelled`;constructor(e){super(`Core read-only process was cancelled.`),this.reason=e,this.name=`CoreProcessInterruptionError`}};async function d(e,t){if(t.signal.aborted)throw new u(_(t.signal));let[r,...i]=e;if(!r)throw Error(`A read-only command requires a non-empty argv array.`);let o=n(r,i,{detached:a.platform!==`win32`,stdio:[`ignore`,`pipe`,`pipe`],windowsHide:!0}),s=[],c=[];o.stdout?.on(`data`,e=>s.push(Buffer.from(e))),o.stderr?.on(`data`,e=>c.push(Buffer.from(e)));let l=!1,d,m,h=()=>d??=f(o),g=t.registerCleanup?.({cleanup:h,force:()=>m??=p(o)}),v,y=new Promise((e,n)=>{v=()=>{l||(l=!0,h().then(()=>n(new u(_(t.signal)))))},t.signal.addEventListener(`abort`,v,{once:!0}),t.signal.aborted&&v()}),b=new Promise((e,t)=>{o.once(`error`,t),o.once(`close`,t=>e(typeof t==`number`?t:1))}).then(e=>l?y:e);try{return{exitCode:await Promise.race([b,y]),stderr:Buffer.concat(c).toString(`utf8`),stdout:Buffer.concat(s).toString(`utf8`)}}finally{t.signal.removeEventListener(`abort`,v),g?.()}}async function f(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGTERM`),!await g(e,100)&&(m(e,`SIGKILL`),await g(e,250))}async function p(e){a.platform===`win32`&&e.pid!==void 0&&await h(e.pid,r,100),m(e,`SIGKILL`),await g(e,250)}function m(e,t){if(a.platform!==`win32`&&e.pid!==void 0)try{a.kill(-e.pid,t);return}catch{}try{e.kill(t)}catch{}}async function h(e,t=r,n=100){let i=t(`taskkill.exe`,[`/PID`,String(e),`/T`,`/F`],{stdio:[`ignore`,`ignore`,`ignore`],windowsHide:!0}),a,o=l(i,`close`).then(()=>!0,()=>!1),s=new Promise(e=>{a=setTimeout(()=>e(!1),n)}),c=await Promise.race([o,s]);if(a&&clearTimeout(a),c)return!0;try{i.kill(`SIGKILL`)}catch{}return!1}async function g(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 _(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}const v={access:e=>o(e),env:a.env,homeDir:c,platform:a.platform,readFile:e=>s(e,`utf8`),runCommand:d};function y(e=v){return b([x(`bun`,`bun`,e,(t,n)=>T(t.id,n,e)),x(`npm`,`npm`,e,(t,n)=>D(t.id,n,e)),x(`brew`,`brew`,e,(t,n)=>O(t,n,e)),x(`cargo`,`cargo`,e,(t,n)=>k(t.id,n,e)),x(`deno`,`deno`,e,(t,n)=>A(t,n,e)),x(`mise`,`mise`,e,(t,n)=>j(t.id,n,e)),x(`pip`,`pip`,e,(t,n)=>M(t.id,n,e)),x(`uv`,`uv`,e,(t,n)=>N(t.id,n,e)),x(`winget`,`winget`,e,(t,n)=>F(t.id,n,e)),S(`script`,e),S(`binary`,e)])}function b(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 x(e,t,n,r){return{availability:e=>w(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`}:z({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 S(e,t){return{availability:async e=>e.signal.aborted?B(e.signal):z({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 I([t.platform===`win32`?`where`:`which`,r],n.context,t);if(!i)return{kind:`failed`,reason:`${e} executable probe failed for ${n.target.id}`,retryable:!0};let a=i.exitCode===0||await C(r,t);return z({evidence:[{kind:`executable`,value:r}],kind:a?`present`:`absent`,target:n.target})}}}async function C(n,r){let a={env:r.env,homeDir:r.homeDir(),platform:r.platform},o=t(n,a);for(let t of e(a))for(let e of o)try{return await r.access(i(t,e)),!0}catch{}return!1}async function w(e,t,n){try{return(await n.runCommand([e,`--version`],t)).exitCode===0?z({executable:e}):{kind:`unavailable`,reason:`${e} executable is unavailable`}}catch(t){if(t instanceof u)throw t;return{kind:`unavailable`,reason:`${e} executable is unavailable`}}}async function T(e,t,n){let r=await I([`bun`,`pm`,`-g`,`ls`],t,n);if(!r)return{presence:`unknown`};if(!r.stdout.trim()){if(r.stderr.includes(`No package.json was found for directory`))return{presence:`absent`};if(!r.stderr.includes(`Lockfile not found`))return{presence:`unknown`};try{let t=n.env.BUN_INSTALL_GLOBAL_DIR??i(n.homeDir(),`.bun`,`install`,`global`);return{presence:R(await n.readFile(i(t,`package.json`)),e)}}catch{return{presence:`unknown`}}}let a=L(r.stdout,e);return a?{presence:`present`,version:a}:r.stdout.split(`
|
|
2
|
-
`).some(t=>t.trim().split(/\s+/u).at(-1)?.startsWith(`${e}@`))?{presence:`present`}:await E(e,n,`absent`)}async function E(e,t,n){try{let n=t.env.BUN_INSTALL_GLOBAL_DIR??i(t.homeDir(),`.bun`,`install`,`global`);return{presence:R(await t.readFile(i(n,`package.json`)),e)}}catch{return{presence:n}}}async function D(e,t,n){let r=await I([`npm`,`list`,`-g`,e,`--depth=0`,`--json`],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(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 O(e,t,n){let r=await I([`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 k(e,t,n){let r=await I([`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 A(e,t,n){if(t.signal.aborted)throw new u(W(t.signal));let r=e.binaryName?.trim()||e.id.trim().split(`/`).pop()?.replace(/@.*$/u,``);if(!r)return{presence:`unknown`};let a=n.env.DENO_INSTALL_ROOT?.trim()||i(n.homeDir(),`.deno`);try{if(await n.access(i(a,`bin`,r)),t.signal.aborted)throw new u(W(t.signal));return{presence:`present`}}catch(e){if(e instanceof u)throw e;return U(e)?{presence:`absent`}:{presence:`unknown`}}}async function j(e,t,n){let r=await I([`mise`,`ls`,`--installed`,`--json`,e],t,n);if(!r?.stdout.trim())return{presence:`unknown`};try{let t=JSON.parse(r.stdout);if(!H(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=>H(e)&&typeof e.version==`string`);return H(o)&&typeof o.version==`string`?{presence:`present`,version:o.version}:{presence:`present`}}catch{return{presence:`unknown`}}}async function M(e,t,n){for(let r of[[`pip`],[`pip3`],[`python`,`-m`,`pip`],[`python3`,`-m`,`pip`]]){let i=await I([...r,`--version`],t,n);if(!i||i.exitCode!==0)continue;let a=await I([...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 N(e,t,n){let r=await I([`uv`,`tool`,`list`],t,n);if(r&&P(r))return{presence:`absent`};if(!r?.stdout.trim())return{presence:`unknown`};let i=V(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,V(t[1])===i))return{presence:`present`,version:t[2]}}return a?{presence:`absent`}:{presence:`unknown`}}function P(e){if(e.exitCode!==0)return!1;let t=`${e.stdout}\n${e.stderr}`.split(/\r?\n/u).map(e=>e.trim()).filter(Boolean);return t.length===1&&/^no tools installed\.?$/iu.test(t[0])}async function F(e,t,n){let r=await I([`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 I(e,t,n){try{return await n.runCommand(e,t)}catch(e){if(e instanceof u)throw e;return}}function L(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 R(e,t){try{let n=JSON.parse(e);if(!H(n))return`unknown`;for(let e of[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`]){if(!Object.hasOwn(n,e))continue;let r=n[e];if(!H(r))return`unknown`;if(Object.hasOwn(r,t))return`present`}return`absent`}catch{return`unknown`}}function z(e){return{kind:`success`,value:e}}function B(e){let t=W(e);return{kind:`cancelled`,...t?{reason:t}:{}}}function V(e){return e.toLowerCase().replaceAll(/[-_.]+/gu,`-`)}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function U(e){return e instanceof Error&&`code`in e&&(e.code===`ENOENT`||e.code===`ENOTDIR`)}function W(e){if(e.reason!==void 0)return e.reason instanceof Error?e.reason.message:String(e.reason)}export{u as n,d as r,y as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./resolve-BVga-Ro4.mjs";export{e as resolveCommand};
|
package/dist/schema-Dg3sXQ1u.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./schema-ShDMW_sj.mjs";export{e as schemaCommand};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./detect-Dou6fit1.mjs";import{l as t}from"./providers-BrKmtcci.mjs";import{n}from"./agents-BdSn7xtP.mjs";import{n as r}from"./lifecycle-observations-D78ZkqEX.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};
|
package/dist/update-B966hXRX.mjs
DELETED
|
@@ -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-PO9Nwgt_.mjs";import{a,c as o}from"./file-store-oHCTTnLn.mjs";import{t as s}from"./detect-Dou6fit1.mjs";import{R as c,r as l}from"./agents-1xVrcX2T.mjs";import{n as ee}from"./cli-context-DI43ouBg.mjs";import{a as u}from"./config-jsaRCEWF.mjs";import{E as d,Q as f,S as te,T as p,et as ne,i as m,n as h,r as g,t as _,x as v}from"./output-C0TF6WTW.mjs";import{f as y,r as re}from"./providers-BrKmtcci.mjs";import{t as b}from"./cli-operation-context-CzjG_eom.mjs";import{t as x}from"./color-CLDVRyIs.mjs";import{a as S,i as C,n as w,r as T}from"./user-output-CF4UAX0c.mjs";import{n as ie,r as ae}from"./installation-routing-CuPHXckO.mjs";import{l as E,r as oe}from"./package-manager-BdBKbZci.mjs";import{n as D}from"./agents-BdSn7xtP.mjs";import{t as O}from"./update-planner-Bnlt3KKP.mjs";import{r as se}from"./provider-binding-DW-oviNl.mjs";import{t as ce}from"./agent-observation-CcBKTAZT.mjs";import{t as le}from"./lifecycle-observations-D78ZkqEX.mjs";import{i as ue,n as de,r as fe}from"./production-observation-v7S1oqsN.mjs";import{a as pe,c as me,l as he,r as ge,s as _e,u as k}from"./lifecycle-policy-CPJ-uQku.mjs";import{n as A}from"./installation-failure-diagnostics-DjaKNCw3.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(e={}){let t=e.npmBunUpdateStrategy??(await import(`./config-DzIZHWeq.mjs`)).loadConfig().then(e=>e.npmBunUpdateStrategy);return N({...e,configDir:de(e.configDir),npmBunUpdateStrategy:typeof t==`string`?t:await t})}function N(e){let t=e.providerRegistry??c,n=e.signal??new AbortController().signal;return{clock:()=>new Date().toISOString(),dryRun:e.dryRun??!1,executeSelfUpdate:j,observe:r=>F(r,{providerRegistry:t,signal:n,timeoutMs:e.timeoutMs}),planLifecycleUpdate:O,providerRegistry:t,registerCleanup:e.registerCleanup,signal:n,timeoutMs:e.timeoutMs,updateOptions:{updateStrategy:e.npmBunUpdateStrategy},withMutationLock:E,writeReceipt:p.write,classifyMutationLockError:e=>a(e)?{reason:e.message,resource:e.resource}:void 0,listRegisteredAgentNames:e.listRegisteredAgentNames??(()=>ue().map(e=>e.name))}}function P(){return async()=>Object.keys((await d()).installedAgents)}async function F(e,t){let n=fe(e);if(!n)return;let r={signal:t.signal,...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}},i,a=()=>(i??=v(n.name),i),o=await oe(n);return I(n,o,await ce(n,{clock:()=>new Date().toISOString(),inspectExecutable:async()=>ve(n,r),platform:s(),preferredCatalogBinding:o[0]?se(n,o[0]):void 0,providerRegistry:t.providerRegistry,readInstalledState:a,readReceipt:()=>te(n.name),resolveExecutablePath:e=>f(e,r),signal:t.signal,timeoutMs:t.timeoutMs}))}function I(e,t,n){return{agent:{binaryName:e.binaryName,displayName:e.displayName,name:e.name,...e.packages?{packages:e.packages}:{},...e.selfUpdate?{selfUpdate:e.selfUpdate}:{}},...n.binding?{binding:n.binding}:{},capabilities:n.capabilities,executable:n.executable,...n.installedState?{installedState:n.installedState}:{},methods:[...t],observation:n.observation,...n.persistedBinding?{persistedBinding:n.persistedBinding}:{},...n.receipt?{receipt:n.receipt}:{}}}async function ve(e,t){let n=await o(e.binaryName,t);if(!n)return{present:!1};let r=await ne(e.binaryName,e.versionProbe,t,n);return{path:await f(n,t)??n,present:!0,version:r}}function ye(e,t={}){let n=!1,r,i,a,o,s=()=>(a??=t.loadPorts?.()??M({configDir:t.configDir,dryRun:t.dryRun,registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs}),a);return{dispose(){n=!0},getOutcome:()=>r,async observe(e){if(n)throw Error(`Core update invocation has been disposed.`);return(await s()).observe(e)},prepare(){return n?Promise.reject(Error(`Core update invocation has been disposed.`)):(i??=s().then(t=>k(e,t)),i)},run(){return n?Promise.reject(Error(`Core update invocation has been disposed.`)):(o??=(async()=>{let e=await this.prepare();if(n)throw Error(`Core update invocation has been disposed.`);return r=e.kind===`planned`?await me(e.planned,await s()):e,r})(),o)}}}function be(e,t={}){let n=!1,r,i,a,o,s=()=>(a??=t.loadPorts?.()??M({configDir:t.configDir,dryRun:t.dryRun,listRegisteredAgentNames:e===`managed`?P():void 0,registerCleanup:t.registerCleanup,signal:t.signal,timeoutMs:t.timeoutMs}),a);return{dispose(){n=!0},getOutcome:()=>r,async observe(e){if(n)throw Error(`Core update batch invocation has been disposed.`);return(await s()).observe(e)},prepare(){return n?Promise.reject(Error(`Core update batch invocation has been disposed.`)):(i??=s().then(e=>he(e)),i)},run(){return n?Promise.reject(Error(`Core update batch invocation has been disposed.`)):(o??=(async()=>{let e=await this.prepare();if(n)throw Error(`Core update batch invocation has been disposed.`);return r=await _e(e,await s()),r})(),o)}}}async function L(){let e=R();try{return await e.run()}finally{e.dispose()}}function R(){return V(`all`,()=>l().map(e=>e.name))}function xe(){return V(`managed`,async()=>Object.keys((await d()).installedAgents))}async function z(e){let t=B(e);try{return await t.run()}finally{t.dispose()}}function B(e){return Se(e)}function Se(e){let t=b(),n=0,r=!1,i=!1,a=ye(e,H(t)),o=()=>{!r||i||n>0||(i=!0,t.dispose())},s=async e=>{if(r)throw Error(`Single-agent update invocation has been disposed.`);n+=1;try{return await t.run(e)}finally{--n,o()}};return{dispose(){r||(r=!0,a.dispose(),o())},getOutcome:()=>a.getOutcome(),observe(e){return s(()=>a.observe(e))},prepare(){return s(()=>a.prepare())},run(){return s(()=>a.run())}}}function V(e,t){let n=b(),r=0,i=!1,o=!1,s=be(e,{...H(n),loadPorts:async()=>({...await U(n),classifyMutationLockError:e=>a(e)?{reason:e.message,resource:e.resource}:void 0,listRegisteredAgentNames:t})}),c=()=>{!i||o||r>0||(o=!0,n.dispose())},l=async e=>{if(i)throw Error(`Lifecycle update batch invocation has been disposed.`);r+=1;try{return await n.run(e)}finally{--r,c()}};return{dispose(){i||(i=!0,s.dispose(),c())},getOutcome:()=>s.getOutcome(),observe(e){return l(()=>s.observe(e))},prepare(){return l(()=>s.prepare())},run(){return l(()=>s.run())}}}function H(e){return{dryRun:w(),loadPorts:()=>U(e),registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs}}async function U(e){let t=await u(),n=le(e.context);return{classifyMutationLockError:e=>a(e)?{reason:e.message,resource:e.resource}:void 0,clock:()=>new Date().toISOString(),dryRun:w(),executeSelfUpdate:j,listRegisteredAgentNames:()=>l().map(e=>e.name),observe:n.resolveAgentObservation,planLifecycleUpdate:O,providerRegistry:c,registerCleanup:e.context.registerCleanup,signal:e.context.signal,timeoutMs:e.context.timeoutMs,updateOptions:{updateStrategy:t.npmBunUpdateStrategy},withMutationLock:E,writeReceipt:p.write}}async function W(e,t,n={runBatch:L,runManagedBatch:L,runSingle:z},r=!1){if(ie(`update`,ae(`update`)),r&&!t)return m(_({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`The --managed option requires --all.`},target:{kind:`agent`}}),Q);if(t)return we(n,r?`managed`:`all`);if(!e)return m(_({action:`update`,error:{code:`INVALID_ARGUMENT`,message:`Please specify an agent name or use --all flag`},target:{kind:`agent`}}),Q);let i=D(e);return i?Te(i,n):m(_({action:`update`,error:{code:`AGENT_NOT_FOUND`,details:{input:e},message:`Unknown agent: ${e}`},target:{kind:`agent`,name:e}}),Q)}function Ce(e,t,n=!1){if(t){let t=n?xe():R();return{dispose:t.dispose,idempotencyPolicy:()=>ge(t),run:()=>W(e,!0,{runBatch:()=>t.run(),runManagedBatch:()=>t.run(),runSingle:z},n)}}if(!e)return{dispose(){},run:()=>W(e,t,void 0,n)};let r=B(e);return{dispose:r.dispose,idempotencyPolicy:()=>pe(e,r),run:()=>W(e,!1,{runBatch:L,runManagedBatch:L,runSingle:()=>r.run()},n)}}async function we(e,t){g({action:`update`,data:{scope:t},target:{kind:`agent`},type:`started`});let n=await(t===`managed`?(e.runManagedBatch??e.runBatch)():e.runBatch()),r=q(n),i=ke(n);return Ae(n)?m(_({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`)?m(_({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):m(h({action:`update`,data:{results:r,scope:t},target:{kind:`agent`},warnings:i}),Q)}async function Te(e,t){g({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 m(_({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=K(n);if(n.kind===`unknown-agent`)return m(_({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 m(_({action:`update`,error:{code:`AGENT_NOT_INSTALLED`,message:`${e.displayName} is not installed.`},target:{kind:`agent`,name:e.name},warnings:t}),Q)}let i=G(e,n);return Z([],i),n.kind===`cancelled`?m(_({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`?m(_({action:`update`,data:{results:[i],scope:`single`},error:{code:`UPDATE_FAILED`,message:`Failed to update ${e.displayName}.`},target:{kind:`agent`,name:e.name}}),Q):m(h({action:`update`,data:{results:[i],scope:`single`},target:{kind:`agent`,name:e.name},warnings:Ee(e,n)}),Q)}function Ee(e,t){if(t.kind!==`blocked`||t.category!==`superseded-package`)return[];let n=y(e,t.before.installedState);return n?[r(e,n)]:[]}function G(t,r){let i=K(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 K(e){if(`plan`in e)return e.plan.before;if(`before`in e)return e.before}function q(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=De(e);t&&Z(r,t)}else a&&Z(r,Oe(a))}return r}function De(e){let n=e.planning.kind===`unknown-agent`?void 0:e.planning.kind===`planned`?e.planning.planned.before:e.planning.before,r=D(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=G(r,a);return o.status===`failed`&&a.kind===`provider-failed`&&(o.hint=t(r,re({agent:r,installedState:n?.installedState,methods:[...n?.methods??[]]}))),o}function Oe(e){let t=D(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 ke(e){return e.plan.targets.flatMap(e=>{if(e.outcome.kind!==`blocked`)return[];let t=D(e.agentName)??e.outcome.before.agent;if(e.outcome.category===`stale-state`)return[J(t)];if(e.outcome.category===`superseded-package`){let n=y(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 ee().cancelled||e.cancellationRemainder.length>0||e.results.some(e=>e.planning.kind===`cancelled`||e.execution?.kind===`cancelled`)}function Z(e,t){e.push(t),g({action:`update`,data:t,target:{kind:`agent`,name:t.name},type:`progress`})}function Q(e){if(!e.data){e.error&&T(x.red(e.error.message));return}for(let t of e.warnings)S(x.yellow(t.message));for(let t of e.data.results)switch(t.status){case`up-to-date`:C(x.green(`${t.displayName} is up to date (${t.installedVersion??`unknown`})`));break;case`manual-required`:S(x.yellow(`${t.displayName}: manual action required.`)),t.message&&S(x.cyan(`Next step: ${t.message}`));break;case`planned`:S(x.cyan(`Would update ${t.displayName}${t.strategy?` via ${t.strategy}`:``}${$(t.installedVersion,t.latestVersion)}`));break;case`updated`:C(x.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),C(x.green(`${t.displayName} updated successfully!`));break;case`failed`:C(x.cyan(`Updating ${t.displayName}${t.strategy?` via ${t.strategy}`:``}...${$(t.installedVersion,t.latestVersion)}`)),T(x.red(A(`Failed to update ${t.displayName}.`,t.message))),t.hint&&S(x.cyan(`Next step: ${t.hint}`));break;case`locked`:S(x.yellow(t.message??`Another quantex process is already updating ${t.displayName}.`));break}e.data.results.length>1&&je(e.data.results),!e.data.results.length&&e.error&&T(x.red(e.error.message))}function $(e,t){return e?` (${e} -> ${t??`latest`})`:``}function je(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&&C(x.bold(`Summary: ${n.join(`, `)}`))}export{Ce as createUpdateCommandInvocation};
|
|
File without changes
|
|
File without changes
|