mthds 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent/binaries.d.ts +14 -1
- package/dist/agent/binaries.js +21 -6
- package/dist/agent/binaries.js.map +1 -1
- package/dist/agent/commands/doctor.js +25 -17
- package/dist/agent/commands/doctor.js.map +1 -1
- package/dist/agent/commands/install.js +2 -2
- package/dist/agent/commands/install.js.map +1 -1
- package/dist/agent/commands/update-check.d.ts +16 -0
- package/dist/agent/commands/update-check.js +169 -0
- package/dist/agent/commands/update-check.js.map +1 -0
- package/dist/agent/commands/upgrade.d.ts +17 -0
- package/dist/agent/commands/upgrade.js +155 -0
- package/dist/agent/commands/upgrade.js.map +1 -0
- package/dist/agent/passthrough.d.ts +1 -0
- package/dist/agent/passthrough.js +93 -32
- package/dist/agent/passthrough.js.map +1 -1
- package/dist/agent/snooze.d.ts +32 -0
- package/dist/agent/snooze.js +108 -0
- package/dist/agent/snooze.js.map +1 -0
- package/dist/agent/update-cache.d.ts +43 -0
- package/dist/agent/update-cache.js +125 -0
- package/dist/agent/update-cache.js.map +1 -0
- package/dist/agent-cli.js +47 -11
- package/dist/agent-cli.js.map +1 -1
- package/dist/cli/commands/install.js +3 -3
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/config/credentials.d.ts +2 -0
- package/dist/config/credentials.js +64 -33
- package/dist/config/credentials.js.map +1 -1
- package/dist/installer/runtime/installer.d.ts +12 -6
- package/dist/installer/runtime/installer.js +49 -25
- package/dist/installer/runtime/installer.js.map +1 -1
- package/dist/installer/runtime/version-check.d.ts +31 -0
- package/dist/installer/runtime/version-check.js +78 -0
- package/dist/installer/runtime/version-check.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,39 +4,100 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import { agentError, AGENT_ERROR_DOMAINS } from "./output.js";
|
|
7
|
-
import { BINARY_RECOVERY } from "./binaries.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
const AUTO_INSTALL_FN = {
|
|
11
|
-
pipelex: installPipelexSync,
|
|
12
|
-
"pipelex-agent": installPipelexSync,
|
|
13
|
-
plxt: installPlxtSync,
|
|
14
|
-
};
|
|
7
|
+
import { BINARY_RECOVERY, buildInstallCommand } from "./binaries.js";
|
|
8
|
+
import { checkBinaryVersion } from "../installer/runtime/version-check.js";
|
|
9
|
+
import { uvToolInstallSync } from "../installer/runtime/installer.js";
|
|
15
10
|
export function passthrough(bin, args, options) {
|
|
16
11
|
const recovery = BINARY_RECOVERY[bin];
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
12
|
+
// Version check runs unconditionally when recovery info exists (unless
|
|
13
|
+
// explicitly skipped). autoInstall only controls whether to attempt a fix
|
|
14
|
+
// (install/upgrade). When autoInstall is false and status is missing/outdated,
|
|
15
|
+
// emit a structured error with install/upgrade instructions.
|
|
16
|
+
if (!options?.skipVersionCheck && recovery) {
|
|
17
|
+
const check = checkBinaryVersion(recovery);
|
|
18
|
+
const autoInstall = options?.autoInstall && recovery.auto_installable;
|
|
19
|
+
switch (check.status) {
|
|
20
|
+
case "ok":
|
|
21
|
+
break;
|
|
22
|
+
case "missing":
|
|
23
|
+
if (autoInstall) {
|
|
24
|
+
try {
|
|
25
|
+
uvToolInstallSync(recovery.uv_package, recovery.version_constraint);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
29
|
+
agentError(`Failed to auto-install ${bin}: ${msg}`, "InstallError", {
|
|
30
|
+
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
31
|
+
hint: `Install manually: ${buildInstallCommand(recovery)}`,
|
|
32
|
+
recovery,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
// Verify install succeeded and version constraint is satisfied
|
|
36
|
+
{
|
|
37
|
+
const postCheck = checkBinaryVersion(recovery);
|
|
38
|
+
if (postCheck.status === "missing") {
|
|
39
|
+
agentError(`${bin} was installed but is not reachable in PATH.`, "InstallError", {
|
|
40
|
+
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
41
|
+
hint: "You may need to restart your shell or add the install directory to your PATH.",
|
|
42
|
+
recovery,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else if (postCheck.status !== "ok") {
|
|
46
|
+
process.stderr.write(JSON.stringify({
|
|
47
|
+
warning: true,
|
|
48
|
+
message: `Install of ${bin} may not have taken effect (status: ${postCheck.status}, installed: ${postCheck.installed_version}, needs: ${recovery.version_constraint}).`,
|
|
49
|
+
}) + "\n");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
agentError(`${bin} is not installed. Install it to continue.`, "BinaryNotFoundError", {
|
|
55
|
+
error_domain: AGENT_ERROR_DOMAINS.BINARY,
|
|
56
|
+
hint: `Install: ${buildInstallCommand(recovery)}`,
|
|
57
|
+
recovery,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
case "outdated":
|
|
62
|
+
if (autoInstall) {
|
|
63
|
+
try {
|
|
64
|
+
uvToolInstallSync(recovery.uv_package, recovery.version_constraint);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
68
|
+
agentError(`Failed to upgrade ${bin} (installed ${check.installed_version}, needs ${recovery.version_constraint}): ${msg}`, "InstallError", {
|
|
69
|
+
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
70
|
+
hint: `Upgrade manually: ${buildInstallCommand(recovery)}`,
|
|
71
|
+
recovery,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// Verify upgrade actually satisfied the constraint
|
|
75
|
+
{
|
|
76
|
+
const recheck = checkBinaryVersion(recovery);
|
|
77
|
+
if (recheck.status !== "ok") {
|
|
78
|
+
process.stderr.write(JSON.stringify({
|
|
79
|
+
warning: true,
|
|
80
|
+
message: `Upgrade of ${bin} may not have taken effect (status: ${recheck.status}, installed: ${recheck.installed_version}, needs: ${recovery.version_constraint}).`,
|
|
81
|
+
}) + "\n");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
agentError(`${bin} is outdated (installed ${check.installed_version}, needs ${recovery.version_constraint}). Upgrade to continue.`, "InstallError", {
|
|
87
|
+
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
88
|
+
hint: `Upgrade: ${buildInstallCommand(recovery)}`,
|
|
89
|
+
recovery,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
case "unparseable":
|
|
94
|
+
// Warn to stderr but don't block execution
|
|
95
|
+
process.stderr.write(JSON.stringify({
|
|
96
|
+
warning: true,
|
|
97
|
+
message: `Could not parse version for ${bin}. Proceeding anyway.`,
|
|
98
|
+
version_constraint: check.version_constraint,
|
|
99
|
+
}) + "\n");
|
|
100
|
+
break;
|
|
40
101
|
}
|
|
41
102
|
}
|
|
42
103
|
const result = spawnSync(bin, args, {
|
|
@@ -45,7 +106,7 @@ export function passthrough(bin, args, options) {
|
|
|
45
106
|
if (result.error) {
|
|
46
107
|
if (result.error.code === "ENOENT") {
|
|
47
108
|
const hint = recovery
|
|
48
|
-
? `Install ${recovery.package}: ${recovery
|
|
109
|
+
? `Install ${recovery.package}: ${buildInstallCommand(recovery)}`
|
|
49
110
|
: "Make sure the required CLI binary is installed and in your PATH.";
|
|
50
111
|
agentError(`${bin} not found. Make sure it is installed and in your PATH.`, "BinaryNotFoundError", {
|
|
51
112
|
error_domain: AGENT_ERROR_DOMAINS.BINARY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough.js","sourceRoot":"","sources":["../../src/agent/passthrough.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"passthrough.js","sourceRoot":"","sources":["../../src/agent/passthrough.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snooze state for update-check upgrade prompts.
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.mthds/state/update-snoozed — a single-line file:
|
|
5
|
+
* <versionKey> <level> <epoch>
|
|
6
|
+
*
|
|
7
|
+
* Version key is a plain concatenation of binary statuses (human-readable).
|
|
8
|
+
* Escalating backoff: level 1 = 24h, level 2 = 48h, level 3+ = 7d.
|
|
9
|
+
* Snooze resets when the version key changes (any binary constraint updated).
|
|
10
|
+
*/
|
|
11
|
+
import type { CachePayload } from "./update-cache.js";
|
|
12
|
+
export interface SnoozeState {
|
|
13
|
+
versionKey: string;
|
|
14
|
+
level: number;
|
|
15
|
+
epoch: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Compute a human-readable version key from a cache payload.
|
|
19
|
+
* Format: "status1:status2:status3" with constraints appended for non-ok entries.
|
|
20
|
+
* Changes whenever any binary's status or constraint changes.
|
|
21
|
+
*/
|
|
22
|
+
export declare function computeVersionKey(payload: CachePayload): string;
|
|
23
|
+
/** Read current snooze state. Returns null if missing or corrupt. */
|
|
24
|
+
export declare function readSnooze(): SnoozeState | null;
|
|
25
|
+
/**
|
|
26
|
+
* Write snooze state. Escalates level if same versionKey, resets if different.
|
|
27
|
+
*/
|
|
28
|
+
export declare function writeSnooze(versionKey: string): void;
|
|
29
|
+
/** Check if snooze is active for the given versionKey. */
|
|
30
|
+
export declare function isSnoozed(versionKey: string): boolean;
|
|
31
|
+
/** Clear snooze file. */
|
|
32
|
+
export declare function clearSnooze(): void;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snooze state for update-check upgrade prompts.
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.mthds/state/update-snoozed — a single-line file:
|
|
5
|
+
* <versionKey> <level> <epoch>
|
|
6
|
+
*
|
|
7
|
+
* Version key is a plain concatenation of binary statuses (human-readable).
|
|
8
|
+
* Escalating backoff: level 1 = 24h, level 2 = 48h, level 3+ = 7d.
|
|
9
|
+
* Snooze resets when the version key changes (any binary constraint updated).
|
|
10
|
+
*/
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
import { readFileSync, writeFileSync, unlinkSync } from "node:fs";
|
|
13
|
+
import { STATE_DIR, ensureStateDir } from "./update-cache.js";
|
|
14
|
+
// ── Constants ──────────────────────────────────────────────────────
|
|
15
|
+
const SNOOZE_PATH = join(STATE_DIR, "update-snoozed");
|
|
16
|
+
const SNOOZE_DURATIONS_MS = {
|
|
17
|
+
1: 24 * 60 * 60 * 1000, // 24h
|
|
18
|
+
2: 48 * 60 * 60 * 1000, // 48h
|
|
19
|
+
};
|
|
20
|
+
const SNOOZE_DEFAULT_MS = 7 * 24 * 60 * 60 * 1000; // 7d for level 3+
|
|
21
|
+
// ── Functions ──────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Compute a human-readable version key from a cache payload.
|
|
24
|
+
* Format: "status1:status2:status3" with constraints appended for non-ok entries.
|
|
25
|
+
* Changes whenever any binary's status or constraint changes.
|
|
26
|
+
*/
|
|
27
|
+
export function computeVersionKey(payload) {
|
|
28
|
+
const parts = [
|
|
29
|
+
payload.mthds_agent.s + (payload.mthds_agent.r ?? ""),
|
|
30
|
+
];
|
|
31
|
+
if (payload.pipelex_agent) {
|
|
32
|
+
parts.push(payload.pipelex_agent.s + (payload.pipelex_agent.r ?? ""));
|
|
33
|
+
}
|
|
34
|
+
parts.push(payload.plxt.s + (payload.plxt.r ?? ""));
|
|
35
|
+
return parts.join(":");
|
|
36
|
+
}
|
|
37
|
+
/** Read current snooze state. Returns null if missing or corrupt. */
|
|
38
|
+
export function readSnooze() {
|
|
39
|
+
let content;
|
|
40
|
+
try {
|
|
41
|
+
content = readFileSync(SNOOZE_PATH, "utf-8").trim();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// Format: "<versionKey> <level> <epoch>"
|
|
47
|
+
// The version key may contain colons but not spaces, so split from the right.
|
|
48
|
+
const lastSpace = content.lastIndexOf(" ");
|
|
49
|
+
if (lastSpace === -1)
|
|
50
|
+
return null;
|
|
51
|
+
const epochStr = content.slice(lastSpace + 1);
|
|
52
|
+
const rest = content.slice(0, lastSpace);
|
|
53
|
+
const secondLastSpace = rest.lastIndexOf(" ");
|
|
54
|
+
if (secondLastSpace === -1)
|
|
55
|
+
return null;
|
|
56
|
+
const versionKey = rest.slice(0, secondLastSpace);
|
|
57
|
+
const levelStr = rest.slice(secondLastSpace + 1);
|
|
58
|
+
const level = parseInt(levelStr, 10);
|
|
59
|
+
const epoch = parseInt(epochStr, 10);
|
|
60
|
+
if (isNaN(level) || isNaN(epoch) || level <= 0 || !versionKey)
|
|
61
|
+
return null;
|
|
62
|
+
return { versionKey, level, epoch };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Write snooze state. Escalates level if same versionKey, resets if different.
|
|
66
|
+
*/
|
|
67
|
+
export function writeSnooze(versionKey) {
|
|
68
|
+
ensureStateDir();
|
|
69
|
+
const existing = readSnooze();
|
|
70
|
+
let level;
|
|
71
|
+
if (existing && existing.versionKey === versionKey) {
|
|
72
|
+
level = existing.level + 1;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
level = 1;
|
|
76
|
+
}
|
|
77
|
+
const content = `${versionKey} ${level} ${Date.now()}\n`;
|
|
78
|
+
try {
|
|
79
|
+
writeFileSync(SNOOZE_PATH, content, "utf-8");
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const code = err.code;
|
|
83
|
+
process.stderr.write(`Warning: could not write snooze state (${code ?? String(err)}).\n`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** Check if snooze is active for the given versionKey. */
|
|
87
|
+
export function isSnoozed(versionKey) {
|
|
88
|
+
const state = readSnooze();
|
|
89
|
+
if (!state)
|
|
90
|
+
return false;
|
|
91
|
+
// Different version key means the constraint changed — snooze is invalid
|
|
92
|
+
if (state.versionKey !== versionKey)
|
|
93
|
+
return false;
|
|
94
|
+
const duration = SNOOZE_DURATIONS_MS[state.level] ?? SNOOZE_DEFAULT_MS;
|
|
95
|
+
const elapsed = Date.now() - state.epoch;
|
|
96
|
+
// Negative elapsed beyond 1 minute means clock skew — treat snooze as expired
|
|
97
|
+
return elapsed >= -60_000 && elapsed < duration;
|
|
98
|
+
}
|
|
99
|
+
/** Clear snooze file. */
|
|
100
|
+
export function clearSnooze() {
|
|
101
|
+
try {
|
|
102
|
+
unlinkSync(SNOOZE_PATH);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// File may not exist — that's fine
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=snooze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snooze.js","sourceRoot":"","sources":["../../src/agent/snooze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache for update-check results.
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.mthds/state/last-update-check — a two-line file:
|
|
5
|
+
* Line 1: aggregate status (UP_TO_DATE or UPGRADE_AVAILABLE)
|
|
6
|
+
* Line 2: JSON payload with per-binary check results
|
|
7
|
+
*
|
|
8
|
+
* TTL is based on file mtime (like gstack), not an embedded timestamp.
|
|
9
|
+
* Split TTL: 60 min for UP_TO_DATE, 720 min for UPGRADE_AVAILABLE.
|
|
10
|
+
*/
|
|
11
|
+
import type { VersionStatus } from "../installer/runtime/version-check.js";
|
|
12
|
+
export type AggregateStatus = "UP_TO_DATE" | "UPGRADE_AVAILABLE";
|
|
13
|
+
export interface BinaryCheckEntry {
|
|
14
|
+
/** Version status: "ok", "outdated", "missing", "unparseable" */
|
|
15
|
+
s: VersionStatus;
|
|
16
|
+
/** Installed version, or null */
|
|
17
|
+
v: string | null;
|
|
18
|
+
/** Required constraint (present when s !== "ok") */
|
|
19
|
+
r?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CachePayload {
|
|
22
|
+
mthds_agent: BinaryCheckEntry;
|
|
23
|
+
pipelex_agent?: BinaryCheckEntry;
|
|
24
|
+
plxt: BinaryCheckEntry;
|
|
25
|
+
}
|
|
26
|
+
export interface CacheResult {
|
|
27
|
+
aggregate: AggregateStatus;
|
|
28
|
+
payload: CachePayload;
|
|
29
|
+
}
|
|
30
|
+
export declare const STATE_DIR: string;
|
|
31
|
+
/** Ensure the state directory exists. */
|
|
32
|
+
export declare function ensureStateDir(): void;
|
|
33
|
+
/** Compute aggregate status from a payload. */
|
|
34
|
+
export declare function computeAggregate(payload: CachePayload): AggregateStatus;
|
|
35
|
+
/**
|
|
36
|
+
* Read the update-check cache.
|
|
37
|
+
* Returns null if the file is missing, corrupt, or expired.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readCache(): CacheResult | null;
|
|
40
|
+
/** Write cache. Creates state directory if needed. */
|
|
41
|
+
export declare function writeCache(result: CacheResult): void;
|
|
42
|
+
/** Delete cache file (used by --force and after upgrade). */
|
|
43
|
+
export declare function clearCache(): void;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache for update-check results.
|
|
3
|
+
*
|
|
4
|
+
* Manages ~/.mthds/state/last-update-check — a two-line file:
|
|
5
|
+
* Line 1: aggregate status (UP_TO_DATE or UPGRADE_AVAILABLE)
|
|
6
|
+
* Line 2: JSON payload with per-binary check results
|
|
7
|
+
*
|
|
8
|
+
* TTL is based on file mtime (like gstack), not an embedded timestamp.
|
|
9
|
+
* Split TTL: 60 min for UP_TO_DATE, 720 min for UPGRADE_AVAILABLE.
|
|
10
|
+
*/
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
import { mkdirSync, readFileSync, writeFileSync, unlinkSync, statSync, } from "node:fs";
|
|
14
|
+
// ── Constants ──────────────────────────────────────────────────────
|
|
15
|
+
export const STATE_DIR = join(homedir(), ".mthds", "state");
|
|
16
|
+
const CACHE_PATH = join(STATE_DIR, "last-update-check");
|
|
17
|
+
const TTL_UP_TO_DATE_MS = 60 * 60 * 1000; // 60 min
|
|
18
|
+
const TTL_UPGRADE_AVAILABLE_MS = 720 * 60 * 1000; // 720 min (12 hours)
|
|
19
|
+
const VALID_AGGREGATES = new Set([
|
|
20
|
+
"UP_TO_DATE",
|
|
21
|
+
"UPGRADE_AVAILABLE",
|
|
22
|
+
]);
|
|
23
|
+
// ── Validation ──────────────────────────────────────────────────────
|
|
24
|
+
function isValidPayload(p) {
|
|
25
|
+
if (!p || typeof p !== "object")
|
|
26
|
+
return false;
|
|
27
|
+
const obj = p;
|
|
28
|
+
// mthds_agent and plxt are always required
|
|
29
|
+
for (const key of ["mthds_agent", "plxt"]) {
|
|
30
|
+
const entry = obj[key];
|
|
31
|
+
if (!entry || typeof entry !== "object")
|
|
32
|
+
return false;
|
|
33
|
+
if (typeof entry.s !== "string")
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
// pipelex_agent is optional, but if present must be valid
|
|
37
|
+
if (obj.pipelex_agent !== undefined) {
|
|
38
|
+
const entry = obj.pipelex_agent;
|
|
39
|
+
if (!entry || typeof entry !== "object")
|
|
40
|
+
return false;
|
|
41
|
+
if (typeof entry.s !== "string")
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
// ── Functions ──────────────────────────────────────────────────────
|
|
47
|
+
/** Ensure the state directory exists. */
|
|
48
|
+
export function ensureStateDir() {
|
|
49
|
+
mkdirSync(STATE_DIR, { recursive: true });
|
|
50
|
+
}
|
|
51
|
+
/** Compute aggregate status from a payload. */
|
|
52
|
+
export function computeAggregate(payload) {
|
|
53
|
+
const entries = [payload.mthds_agent, payload.plxt];
|
|
54
|
+
if (payload.pipelex_agent)
|
|
55
|
+
entries.push(payload.pipelex_agent);
|
|
56
|
+
// Treat "unparseable" same as "ok" — the binary exists, we just can't parse
|
|
57
|
+
// its version. Treating it as UPGRADE_AVAILABLE would cause an infinite loop:
|
|
58
|
+
// preamble says upgrade available -> upgrade skips unparseable -> repeat.
|
|
59
|
+
return entries.every((e) => e.s === "ok" || e.s === "unparseable")
|
|
60
|
+
? "UP_TO_DATE"
|
|
61
|
+
: "UPGRADE_AVAILABLE";
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Read the update-check cache.
|
|
65
|
+
* Returns null if the file is missing, corrupt, or expired.
|
|
66
|
+
*/
|
|
67
|
+
export function readCache() {
|
|
68
|
+
// Stat first so worst-case TOCTOU treats fresh data as stale (safe direction)
|
|
69
|
+
let mtimeMs;
|
|
70
|
+
let content;
|
|
71
|
+
try {
|
|
72
|
+
mtimeMs = statSync(CACHE_PATH).mtimeMs;
|
|
73
|
+
content = readFileSync(CACHE_PATH, "utf-8");
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const lines = content.split("\n");
|
|
79
|
+
if (lines.length < 2)
|
|
80
|
+
return null;
|
|
81
|
+
const aggregate = lines[0].trim();
|
|
82
|
+
if (!VALID_AGGREGATES.has(aggregate))
|
|
83
|
+
return null;
|
|
84
|
+
let payload;
|
|
85
|
+
try {
|
|
86
|
+
const parsed = JSON.parse(lines[1]);
|
|
87
|
+
if (!isValidPayload(parsed))
|
|
88
|
+
return null;
|
|
89
|
+
payload = parsed;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
// Check TTL based on file mtime
|
|
95
|
+
const ttl = aggregate === "UP_TO_DATE"
|
|
96
|
+
? TTL_UP_TO_DATE_MS
|
|
97
|
+
: TTL_UPGRADE_AVAILABLE_MS;
|
|
98
|
+
const age = Date.now() - mtimeMs;
|
|
99
|
+
// Negative age beyond 1 minute means clock skew — treat as expired
|
|
100
|
+
if (age < -60_000 || age > ttl)
|
|
101
|
+
return null;
|
|
102
|
+
return { aggregate: aggregate, payload };
|
|
103
|
+
}
|
|
104
|
+
/** Write cache. Creates state directory if needed. */
|
|
105
|
+
export function writeCache(result) {
|
|
106
|
+
try {
|
|
107
|
+
ensureStateDir();
|
|
108
|
+
const content = result.aggregate + "\n" + JSON.stringify(result.payload) + "\n";
|
|
109
|
+
writeFileSync(CACHE_PATH, content, "utf-8");
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
const code = err.code;
|
|
113
|
+
process.stderr.write(`Warning: could not write update-check cache (${code ?? String(err)}). Check will run again next time.\n`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Delete cache file (used by --force and after upgrade). */
|
|
117
|
+
export function clearCache() {
|
|
118
|
+
try {
|
|
119
|
+
unlinkSync(CACHE_PATH);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// File may not exist — that's fine
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=update-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cache.js","sourceRoot":"","sources":["../../src/agent/update-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-cli.js
CHANGED
|
@@ -20,12 +20,15 @@ import { registerPipelexRunnerCommands } from "./agent/commands/pipelex-commands
|
|
|
20
20
|
import { passthroughToPipelexAgent } from "./agent/commands/pipelex-passthrough.js";
|
|
21
21
|
import { registerPlxtCommands } from "./agent/commands/plxt.js";
|
|
22
22
|
import { agentDoctor } from "./agent/commands/doctor.js";
|
|
23
|
+
import { agentUpdateCheck } from "./agent/commands/update-check.js";
|
|
24
|
+
import { agentUpgrade } from "./agent/commands/upgrade.js";
|
|
23
25
|
import { agentConfigGet, agentConfigList, agentConfigSet } from "./agent/commands/config.js";
|
|
24
26
|
import { agentInstall } from "./agent/commands/install.js";
|
|
25
27
|
import { agentPublish } from "./agent/commands/publish.js";
|
|
26
28
|
import { agentShare } from "./agent/commands/share.js";
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
+
import { checkBinaryVersion } from "./installer/runtime/version-check.js";
|
|
30
|
+
import { uvToolInstallSync } from "./installer/runtime/installer.js";
|
|
31
|
+
import { BINARY_RECOVERY, buildInstallCommand } from "./agent/binaries.js";
|
|
29
32
|
import { agentPackageInit, agentPackageList, agentPackageValidate } from "./agent/commands/package.js";
|
|
30
33
|
import { createRunner } from "./runners/registry.js";
|
|
31
34
|
import { Runners, RUNNER_NAMES } from "./runners/types.js";
|
|
@@ -213,27 +216,42 @@ runnerSetup
|
|
|
213
216
|
.description("Install the Pipelex runner")
|
|
214
217
|
.exitOverride()
|
|
215
218
|
.action(() => {
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
const recovery = BINARY_RECOVERY["pipelex"];
|
|
220
|
+
const check = checkBinaryVersion(recovery);
|
|
221
|
+
if (check.status === "ok") {
|
|
222
|
+
agentSuccess({ success: true, already_installed: true, message: "pipelex is already installed and up to date" });
|
|
218
223
|
return;
|
|
219
224
|
}
|
|
225
|
+
const action = check.status === "outdated" ? "upgrade" : "install";
|
|
220
226
|
try {
|
|
221
|
-
|
|
227
|
+
uvToolInstallSync(recovery.uv_package, recovery.version_constraint);
|
|
222
228
|
}
|
|
223
229
|
catch (err) {
|
|
224
230
|
const msg = err instanceof Error ? err.message : String(err);
|
|
225
|
-
agentError(`Failed to
|
|
231
|
+
agentError(`Failed to ${action} pipelex: ${msg}`, "InstallError", {
|
|
226
232
|
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
227
|
-
hint: "Install manually:
|
|
233
|
+
hint: `${action === "upgrade" ? "Upgrade" : "Install"} manually: ${buildInstallCommand(recovery)}`,
|
|
228
234
|
});
|
|
229
235
|
}
|
|
230
|
-
|
|
231
|
-
|
|
236
|
+
const postCheck = checkBinaryVersion(recovery);
|
|
237
|
+
if (postCheck.status !== "ok") {
|
|
238
|
+
const detail = postCheck.status === "missing"
|
|
239
|
+
? "pipelex was installed but is not reachable in PATH."
|
|
240
|
+
: `pipelex was ${action === "upgrade" ? "upgraded" : "installed"} but version check failed (status: ${postCheck.status}, installed: ${postCheck.installed_version}, needs: ${recovery.version_constraint}).`;
|
|
241
|
+
const hint = postCheck.status === "missing"
|
|
242
|
+
? "Restart your shell or add the install directory to your PATH."
|
|
243
|
+
: `${action === "upgrade" ? "Upgrade" : "Install"} manually: ${buildInstallCommand(recovery)}`;
|
|
244
|
+
agentError(detail, "InstallError", {
|
|
232
245
|
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
233
|
-
hint
|
|
246
|
+
hint,
|
|
234
247
|
});
|
|
235
248
|
}
|
|
236
|
-
agentSuccess({
|
|
249
|
+
agentSuccess({
|
|
250
|
+
success: true,
|
|
251
|
+
already_installed: action === "upgrade",
|
|
252
|
+
message: action === "upgrade" ? "pipelex upgraded successfully" : "pipelex installed successfully",
|
|
253
|
+
installed_version: postCheck.installed_version,
|
|
254
|
+
});
|
|
237
255
|
});
|
|
238
256
|
runnerSetup
|
|
239
257
|
.command("api")
|
|
@@ -257,6 +275,24 @@ program
|
|
|
257
275
|
.action(async () => {
|
|
258
276
|
await agentDoctor();
|
|
259
277
|
});
|
|
278
|
+
// ── mthds-agent update-check ──────────────────────────────────────
|
|
279
|
+
program
|
|
280
|
+
.command("update-check")
|
|
281
|
+
.description("Check if binary dependencies need updating")
|
|
282
|
+
.option("--force", "Ignore cache and snooze, re-check all binaries")
|
|
283
|
+
.option("--snooze", "Snooze upgrade reminders for this version set")
|
|
284
|
+
.exitOverride()
|
|
285
|
+
.action(async (opts) => {
|
|
286
|
+
await agentUpdateCheck(opts);
|
|
287
|
+
});
|
|
288
|
+
// ── mthds-agent upgrade ───────────────────────────────────────────
|
|
289
|
+
program
|
|
290
|
+
.command("upgrade")
|
|
291
|
+
.description("Upgrade Python binary dependencies (pipelex, plxt)")
|
|
292
|
+
.exitOverride()
|
|
293
|
+
.action(async () => {
|
|
294
|
+
await agentUpgrade();
|
|
295
|
+
});
|
|
260
296
|
// ── Runner dispatch ──────────────────────────────────────────────────
|
|
261
297
|
// API runner: register per-command handlers with full arg parsing.
|
|
262
298
|
// Pipelex runner: register passthrough stubs that forward to pipelex-agent.
|
package/dist/agent-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
|