mthds 0.2.0 → 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/api-commands.d.ts +13 -0
- package/dist/agent/commands/api-commands.js +494 -0
- package/dist/agent/commands/api-commands.js.map +1 -0
- 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/pipelex-commands.d.ts +13 -0
- package/dist/agent/commands/pipelex-commands.js +63 -0
- package/dist/agent/commands/pipelex-commands.js.map +1 -0
- package/dist/agent/commands/pipelex-passthrough.d.ts +15 -0
- package/dist/agent/commands/pipelex-passthrough.js +43 -0
- package/dist/agent/commands/pipelex-passthrough.js.map +1 -0
- 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.d.ts +8 -2
- package/dist/agent-cli.js +132 -124
- 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/dist/runners/api-runner.d.ts +2 -2
- package/dist/runners/api-runner.js +2 -2
- package/dist/runners/api-runner.js.map +1 -1
- package/dist/runners/pipelex-runner.d.ts +2 -2
- package/dist/runners/pipelex-runner.js +11 -37
- package/dist/runners/pipelex-runner.js.map +1 -1
- package/dist/runners/types.d.ts +10 -12
- package/package.json +1 -1
- package/dist/agent/commands/build.d.ts +0 -32
- package/dist/agent/commands/build.js +0 -291
- package/dist/agent/commands/build.js.map +0 -1
- package/dist/agent/commands/runner-commands.d.ts +0 -20
- package/dist/agent/commands/runner-commands.js +0 -800
- package/dist/agent/commands/runner-commands.js.map +0 -1
|
@@ -15,6 +15,8 @@ const ENV_NAMES = {
|
|
|
15
15
|
apiKey: "PIPELEX_API_KEY",
|
|
16
16
|
runner: "MTHDS_RUNNER",
|
|
17
17
|
telemetry: "DISABLE_TELEMETRY",
|
|
18
|
+
autoUpgrade: "MTHDS_AUTO_UPGRADE",
|
|
19
|
+
updateCheck: "MTHDS_UPDATE_CHECK",
|
|
18
20
|
};
|
|
19
21
|
/** Map from credential key to file key (used in ~/.mthds/credentials) */
|
|
20
22
|
const FILE_KEYS = {
|
|
@@ -22,6 +24,8 @@ const FILE_KEYS = {
|
|
|
22
24
|
apiKey: "PIPELEX_API_KEY",
|
|
23
25
|
runner: "MTHDS_RUNNER",
|
|
24
26
|
telemetry: "DISABLE_TELEMETRY",
|
|
27
|
+
autoUpgrade: "MTHDS_AUTO_UPGRADE",
|
|
28
|
+
updateCheck: "MTHDS_UPDATE_CHECK",
|
|
25
29
|
};
|
|
26
30
|
/** Defaults */
|
|
27
31
|
const DEFAULTS = {
|
|
@@ -29,6 +33,8 @@ const DEFAULTS = {
|
|
|
29
33
|
apiUrl: "https://api.pipelex.com",
|
|
30
34
|
apiKey: "",
|
|
31
35
|
telemetry: true,
|
|
36
|
+
autoUpgrade: false,
|
|
37
|
+
updateCheck: true,
|
|
32
38
|
};
|
|
33
39
|
/** Map from CLI flag names (kebab-case) to credential keys */
|
|
34
40
|
const KEY_ALIASES = {
|
|
@@ -36,7 +42,22 @@ const KEY_ALIASES = {
|
|
|
36
42
|
"api-url": "apiUrl",
|
|
37
43
|
"api-key": "apiKey",
|
|
38
44
|
telemetry: "telemetry",
|
|
45
|
+
"auto-upgrade": "autoUpgrade",
|
|
46
|
+
"update-check": "updateCheck",
|
|
39
47
|
};
|
|
48
|
+
// ── Boolean key sets ──────────────────────────────────────────────
|
|
49
|
+
/** Keys that store boolean values (coerced from "0"/"1" in file/env) */
|
|
50
|
+
const BOOLEAN_KEYS = new Set([
|
|
51
|
+
"telemetry",
|
|
52
|
+
"autoUpgrade",
|
|
53
|
+
"updateCheck",
|
|
54
|
+
]);
|
|
55
|
+
/** Boolean keys with inverted file semantics (DISABLE_TELEMETRY=1 → false) */
|
|
56
|
+
const INVERTED_BOOLEAN_KEYS = new Set([
|
|
57
|
+
"telemetry",
|
|
58
|
+
]);
|
|
59
|
+
/** Strings treated as truthy for boolean keys — used in both load and set paths */
|
|
60
|
+
const TRUTHY_STRINGS = new Set(["true", "1", "yes", "on"]);
|
|
40
61
|
export const VALID_KEYS = Object.keys(KEY_ALIASES);
|
|
41
62
|
export function resolveKey(cliKey) {
|
|
42
63
|
return KEY_ALIASES[cliKey];
|
|
@@ -89,7 +110,8 @@ function migrateIfNeeded() {
|
|
|
89
110
|
if (existsSync(CREDENTIALS_PATH))
|
|
90
111
|
return;
|
|
91
112
|
const migrated = {};
|
|
92
|
-
let
|
|
113
|
+
let configJsonMigrated = false;
|
|
114
|
+
let envLocalMigrated = false;
|
|
93
115
|
// Migrate from config.json
|
|
94
116
|
if (existsSync(LEGACY_CONFIG_PATH)) {
|
|
95
117
|
try {
|
|
@@ -107,10 +129,10 @@ function migrateIfNeeded() {
|
|
|
107
129
|
if (typeof config.telemetry === "boolean") {
|
|
108
130
|
migrated["DISABLE_TELEMETRY"] = config.telemetry ? "0" : "1";
|
|
109
131
|
}
|
|
110
|
-
|
|
132
|
+
configJsonMigrated = true;
|
|
111
133
|
}
|
|
112
134
|
catch {
|
|
113
|
-
//
|
|
135
|
+
// Parse failed — preserve the legacy file so the user can fix it
|
|
114
136
|
}
|
|
115
137
|
}
|
|
116
138
|
// Migrate from .env.local (telemetry flag)
|
|
@@ -120,45 +142,46 @@ function migrateIfNeeded() {
|
|
|
120
142
|
if (envEntries["DISABLE_TELEMETRY"]) {
|
|
121
143
|
migrated["DISABLE_TELEMETRY"] = envEntries["DISABLE_TELEMETRY"];
|
|
122
144
|
}
|
|
123
|
-
|
|
145
|
+
envLocalMigrated = Boolean(envEntries["DISABLE_TELEMETRY"]);
|
|
124
146
|
}
|
|
125
147
|
catch {
|
|
126
|
-
//
|
|
148
|
+
// Read failed — preserve the legacy file
|
|
127
149
|
}
|
|
128
150
|
}
|
|
129
|
-
if (
|
|
151
|
+
if (configJsonMigrated || envLocalMigrated) {
|
|
130
152
|
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
131
153
|
writeFileSync(CREDENTIALS_PATH, serializeDotenv(migrated), "utf-8");
|
|
132
|
-
//
|
|
133
|
-
|
|
134
|
-
|
|
154
|
+
// Only delete legacy files that were successfully migrated
|
|
155
|
+
if (configJsonMigrated) {
|
|
156
|
+
try {
|
|
135
157
|
unlinkSync(LEGACY_CONFIG_PATH);
|
|
158
|
+
}
|
|
159
|
+
catch { /* ignore */ }
|
|
136
160
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
try {
|
|
141
|
-
if (existsSync(LEGACY_ENV_LOCAL_PATH))
|
|
161
|
+
if (envLocalMigrated) {
|
|
162
|
+
try {
|
|
142
163
|
unlinkSync(LEGACY_ENV_LOCAL_PATH);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
// ignore
|
|
164
|
+
}
|
|
165
|
+
catch { /* ignore */ }
|
|
146
166
|
}
|
|
147
167
|
}
|
|
148
168
|
}
|
|
149
169
|
// ── Public API ─────────────────────────────────────────────────────
|
|
150
170
|
function coerceValue(key, raw) {
|
|
151
|
-
if (key
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return raw;
|
|
171
|
+
if (!BOOLEAN_KEYS.has(key))
|
|
172
|
+
return raw;
|
|
173
|
+
const truthy = TRUTHY_STRINGS.has(raw.toLowerCase());
|
|
174
|
+
return INVERTED_BOOLEAN_KEYS.has(key) ? !truthy : truthy;
|
|
156
175
|
}
|
|
157
176
|
function toFileValue(key, value) {
|
|
158
|
-
if (key
|
|
159
|
-
return value
|
|
160
|
-
|
|
161
|
-
|
|
177
|
+
if (!BOOLEAN_KEYS.has(key))
|
|
178
|
+
return String(value);
|
|
179
|
+
const boolVal = typeof value === "boolean"
|
|
180
|
+
? value
|
|
181
|
+
: TRUTHY_STRINGS.has(String(value).toLowerCase());
|
|
182
|
+
return INVERTED_BOOLEAN_KEYS.has(key)
|
|
183
|
+
? (boolVal ? "0" : "1")
|
|
184
|
+
: (boolVal ? "1" : "0");
|
|
162
185
|
}
|
|
163
186
|
export function loadCredentials() {
|
|
164
187
|
const file = readCredentialsFile();
|
|
@@ -190,24 +213,32 @@ export function getCredentialValue(key) {
|
|
|
190
213
|
return { value: file[fileKey], source: "file" };
|
|
191
214
|
}
|
|
192
215
|
const defaultVal = DEFAULTS[key];
|
|
193
|
-
if (key
|
|
194
|
-
|
|
216
|
+
if (BOOLEAN_KEYS.has(key)) {
|
|
217
|
+
const boolDefault = defaultVal;
|
|
218
|
+
if (INVERTED_BOOLEAN_KEYS.has(key)) {
|
|
219
|
+
return { value: boolDefault ? "0" : "1", source: "default" };
|
|
220
|
+
}
|
|
221
|
+
return { value: boolDefault ? "1" : "0", source: "default" };
|
|
195
222
|
}
|
|
196
223
|
return { value: String(defaultVal), source: "default" };
|
|
197
224
|
}
|
|
198
225
|
export function setCredentialValue(key, value) {
|
|
199
226
|
const file = readCredentialsFile();
|
|
200
227
|
const fileKey = FILE_KEYS[key];
|
|
201
|
-
|
|
228
|
+
if (BOOLEAN_KEYS.has(key)) {
|
|
229
|
+
file[fileKey] = toFileValue(key, coerceBooleanInput(value));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
file[fileKey] = value;
|
|
233
|
+
}
|
|
202
234
|
writeCredentialsFile(file);
|
|
203
235
|
}
|
|
204
236
|
/**
|
|
205
|
-
* Normalize user-facing
|
|
237
|
+
* Normalize user-facing boolean input.
|
|
206
238
|
* Accepts "true"/"false", "1"/"0", "yes"/"no", "on"/"off".
|
|
207
239
|
*/
|
|
208
|
-
function
|
|
209
|
-
|
|
210
|
-
return ["true", "1", "yes", "on"].includes(lower);
|
|
240
|
+
function coerceBooleanInput(value) {
|
|
241
|
+
return TRUTHY_STRINGS.has(value.toLowerCase());
|
|
211
242
|
}
|
|
212
243
|
export function listCredentials() {
|
|
213
244
|
const result = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure pipelex is installed, using uv tool install with spinner feedback.
|
|
3
|
+
* Used by interactive CLI commands (mthds install, mthds setup, etc.).
|
|
4
|
+
*/
|
|
1
5
|
export declare function ensureRuntime(): Promise<void>;
|
|
2
6
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Throws on failure.
|
|
7
|
+
* Locate the `uv` binary. Throws with install instructions if not found.
|
|
5
8
|
*/
|
|
6
|
-
export declare function
|
|
9
|
+
export declare function requireUv(): string;
|
|
7
10
|
/**
|
|
8
|
-
* Install
|
|
9
|
-
*
|
|
11
|
+
* Install or upgrade a Python tool via `uv tool install`.
|
|
12
|
+
* Uses execFileSync (no shell) for cross-platform safety.
|
|
13
|
+
*
|
|
14
|
+
* @param pkg - PyPI package name (e.g. "pipelex")
|
|
15
|
+
* @param versionConstraint - Optional semver range appended to the package spec (e.g. ">=0.22.0").
|
|
10
16
|
*/
|
|
11
|
-
export declare function
|
|
17
|
+
export declare function uvToolInstallSync(pkg: string, versionConstraint?: string): void;
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
2
|
import ora from "ora";
|
|
3
3
|
import { isPipelexInstalled } from "./check.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
execSync('powershell -Command "irm https://pipelex.com/install.ps1 | iex"', { stdio: "pipe" });
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
execSync("curl -fsSL https://pipelex.com/install.sh | sh", { stdio: "pipe", shell: "/bin/sh" });
|
|
11
|
-
}
|
|
12
|
-
}
|
|
4
|
+
import { BINARY_RECOVERY } from "../../agent/binaries.js";
|
|
5
|
+
// All binary installation goes through uv, which provides version-constraint-aware
|
|
6
|
+
// installs and consistent cross-platform behavior.
|
|
13
7
|
// ── Async install (interactive, with spinner) ────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* Ensure pipelex is installed, using uv tool install with spinner feedback.
|
|
10
|
+
* Used by interactive CLI commands (mthds install, mthds setup, etc.).
|
|
11
|
+
*/
|
|
14
12
|
export async function ensureRuntime() {
|
|
15
13
|
if (!isPipelexInstalled()) {
|
|
16
|
-
await
|
|
14
|
+
await installPipelexViaUv();
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
|
-
async function
|
|
20
|
-
const spinner = ora("Installing pipelex...").start();
|
|
17
|
+
async function installPipelexViaUv() {
|
|
18
|
+
const spinner = ora("Installing pipelex via uv...").start();
|
|
19
|
+
const recovery = BINARY_RECOVERY["pipelex"];
|
|
20
|
+
if (!recovery) {
|
|
21
|
+
spinner.fail("pipelex recovery info is missing — this is a bug.");
|
|
22
|
+
throw new Error("BINARY_RECOVERY is missing the 'pipelex' entry.");
|
|
23
|
+
}
|
|
21
24
|
try {
|
|
22
|
-
|
|
25
|
+
uvToolInstallSync(recovery.uv_package, recovery.version_constraint);
|
|
23
26
|
}
|
|
24
27
|
catch (error) {
|
|
25
28
|
spinner.fail("Failed to install pipelex");
|
|
26
29
|
const msg = error instanceof Error ? error.message : String(error);
|
|
27
30
|
throw new Error(`Could not install pipelex: ${msg}\n` +
|
|
28
|
-
|
|
31
|
+
`Install manually: uv tool install --upgrade "${recovery.uv_package}${recovery.version_constraint}"`);
|
|
29
32
|
}
|
|
30
33
|
if (!isPipelexInstalled()) {
|
|
31
34
|
spinner.fail("pipelex was installed but is not reachable");
|
|
@@ -34,20 +37,41 @@ async function installPipelex() {
|
|
|
34
37
|
}
|
|
35
38
|
spinner.succeed("pipelex installed");
|
|
36
39
|
}
|
|
37
|
-
// ──
|
|
40
|
+
// ── uv helpers ──────────────────────────────────────────────────────
|
|
38
41
|
/**
|
|
39
|
-
*
|
|
40
|
-
* Throws on failure.
|
|
42
|
+
* Locate the `uv` binary. Throws with install instructions if not found.
|
|
41
43
|
*/
|
|
42
|
-
export function
|
|
43
|
-
|
|
44
|
+
export function requireUv() {
|
|
45
|
+
try {
|
|
46
|
+
execFileSync("uv", ["--version"], { stdio: "ignore", timeout: 5000 });
|
|
47
|
+
return "uv";
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const errno = err.code;
|
|
51
|
+
if (errno === "ENOENT") {
|
|
52
|
+
throw new Error("uv is required but not found in PATH. Install it: https://docs.astral.sh/uv/getting-started/installation/");
|
|
53
|
+
}
|
|
54
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
55
|
+
throw new Error(`uv was found but failed to run: ${msg}`);
|
|
56
|
+
}
|
|
44
57
|
}
|
|
45
58
|
/**
|
|
46
|
-
* Install
|
|
47
|
-
*
|
|
59
|
+
* Install or upgrade a Python tool via `uv tool install`.
|
|
60
|
+
* Uses execFileSync (no shell) for cross-platform safety.
|
|
61
|
+
*
|
|
62
|
+
* @param pkg - PyPI package name (e.g. "pipelex")
|
|
63
|
+
* @param versionConstraint - Optional semver range appended to the package spec (e.g. ">=0.22.0").
|
|
48
64
|
*/
|
|
49
|
-
export function
|
|
50
|
-
const
|
|
51
|
-
|
|
65
|
+
export function uvToolInstallSync(pkg, versionConstraint) {
|
|
66
|
+
const uv = requireUv();
|
|
67
|
+
const spec = versionConstraint ? `${pkg}${versionConstraint}` : pkg;
|
|
68
|
+
try {
|
|
69
|
+
execFileSync(uv, ["tool", "install", "--upgrade", spec], { stdio: "pipe", timeout: 60000 });
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
const stderr = err?.stderr?.toString().trim();
|
|
73
|
+
const detail = stderr || (err instanceof Error ? err.message : String(err));
|
|
74
|
+
throw new Error(`uv tool install failed for "${spec}": ${detail}`);
|
|
75
|
+
}
|
|
52
76
|
}
|
|
53
77
|
//# sourceMappingURL=installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/installer/runtime/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/installer/runtime/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version checking for external CLI binaries.
|
|
3
|
+
*
|
|
4
|
+
* Runs `<binary> --version`, extracts the semver, and compares against the
|
|
5
|
+
* declared constraint from BinaryRecoveryInfo.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: The skill preamble (skills/shared/preamble.md) implements a parallel
|
|
8
|
+
* bash version comparison for mthds-agent itself (chicken-and-egg: must check
|
|
9
|
+
* mthds-agent before calling it). That bash comparison is intentionally simpler
|
|
10
|
+
* (major.minor.patch arithmetic only, no prerelease/build metadata). Both
|
|
11
|
+
* implementations must stay in sync for the version gate to behave consistently.
|
|
12
|
+
*/
|
|
13
|
+
import type { BinaryRecoveryInfo } from "../../agent/binaries.js";
|
|
14
|
+
export type VersionStatus = "ok" | "missing" | "outdated" | "unparseable";
|
|
15
|
+
export interface VersionCheckResult {
|
|
16
|
+
status: VersionStatus;
|
|
17
|
+
/** The installed version string, or null if missing/unparseable. */
|
|
18
|
+
installed_version: string | null;
|
|
19
|
+
/** The constraint from BinaryRecoveryInfo. */
|
|
20
|
+
version_constraint: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check whether a binary is installed and satisfies its version constraint.
|
|
24
|
+
*
|
|
25
|
+
* Returns one of four statuses:
|
|
26
|
+
* - `ok` — installed and satisfies the constraint
|
|
27
|
+
* - `missing` — binary not found in PATH
|
|
28
|
+
* - `outdated` — installed but below the required version
|
|
29
|
+
* - `unparseable` — `--version` output could not be parsed (warns, doesn't block)
|
|
30
|
+
*/
|
|
31
|
+
export declare function checkBinaryVersion(recovery: BinaryRecoveryInfo): VersionCheckResult;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version checking for external CLI binaries.
|
|
3
|
+
*
|
|
4
|
+
* Runs `<binary> --version`, extracts the semver, and compares against the
|
|
5
|
+
* declared constraint from BinaryRecoveryInfo.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: The skill preamble (skills/shared/preamble.md) implements a parallel
|
|
8
|
+
* bash version comparison for mthds-agent itself (chicken-and-egg: must check
|
|
9
|
+
* mthds-agent before calling it). That bash comparison is intentionally simpler
|
|
10
|
+
* (major.minor.patch arithmetic only, no prerelease/build metadata). Both
|
|
11
|
+
* implementations must stay in sync for the version gate to behave consistently.
|
|
12
|
+
*/
|
|
13
|
+
import { execFileSync } from "node:child_process";
|
|
14
|
+
import semver from "semver";
|
|
15
|
+
/**
|
|
16
|
+
* Check whether a binary is installed and satisfies its version constraint.
|
|
17
|
+
*
|
|
18
|
+
* Returns one of four statuses:
|
|
19
|
+
* - `ok` — installed and satisfies the constraint
|
|
20
|
+
* - `missing` — binary not found in PATH
|
|
21
|
+
* - `outdated` — installed but below the required version
|
|
22
|
+
* - `unparseable` — `--version` output could not be parsed (warns, doesn't block)
|
|
23
|
+
*/
|
|
24
|
+
export function checkBinaryVersion(recovery) {
|
|
25
|
+
const { version_constraint } = recovery;
|
|
26
|
+
// 1. Try running `<binary> --version`
|
|
27
|
+
let rawOutput;
|
|
28
|
+
try {
|
|
29
|
+
rawOutput = execFileSync(recovery.binary, ["--version"], {
|
|
30
|
+
stdio: "pipe",
|
|
31
|
+
timeout: 5000,
|
|
32
|
+
})
|
|
33
|
+
.toString()
|
|
34
|
+
.trim();
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
// ENOENT means the binary is genuinely not in PATH.
|
|
38
|
+
// Any other error (EACCES, non-zero exit, crash) means the binary exists
|
|
39
|
+
// but is broken — report as unparseable so callers don't blindly reinstall.
|
|
40
|
+
const errno = err.code;
|
|
41
|
+
if (errno === "ENOENT") {
|
|
42
|
+
return { status: "missing", installed_version: null, version_constraint };
|
|
43
|
+
}
|
|
44
|
+
return { status: "unparseable", installed_version: null, version_constraint };
|
|
45
|
+
}
|
|
46
|
+
// 2. Extract version via the recovery's regex
|
|
47
|
+
const match = rawOutput.match(recovery.version_extract);
|
|
48
|
+
if (!match?.[1]) {
|
|
49
|
+
return {
|
|
50
|
+
status: "unparseable",
|
|
51
|
+
installed_version: null,
|
|
52
|
+
version_constraint,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// 3. Coerce to semver (lenient — handles "v" prefix, pre-release tags, etc.)
|
|
56
|
+
const parsed = semver.coerce(match[1]);
|
|
57
|
+
if (!parsed) {
|
|
58
|
+
return {
|
|
59
|
+
status: "unparseable",
|
|
60
|
+
installed_version: match[1],
|
|
61
|
+
version_constraint,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// 4. Check against constraint
|
|
65
|
+
if (semver.satisfies(parsed, version_constraint)) {
|
|
66
|
+
return {
|
|
67
|
+
status: "ok",
|
|
68
|
+
installed_version: parsed.version,
|
|
69
|
+
version_constraint,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
status: "outdated",
|
|
74
|
+
installed_version: parsed.version,
|
|
75
|
+
version_constraint,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../../src/installer/runtime/version-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAa5B;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA4B;IAE5B,MAAM,EAAE,kBAAkB,EAAE,GAAG,QAAQ,CAAC;IAExC,sCAAsC;IACtC,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE;YACvD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,IAAI;SACd,CAAC;aACC,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oDAAoD;QACpD,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,KAAK,GAAI,GAA6B,CAAC,IAAI,CAAC;QAClD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAChF,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3B,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,iBAAiB,EAAE,MAAM,CAAC,OAAO;YACjC,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,iBAAiB,EAAE,MAAM,CAAC,OAAO;QACjC,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse, ConceptRequest, ConceptResponse, PipeSpecRequest, PipeSpecResponse,
|
|
1
|
+
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse, ConceptRequest, ConceptResponse, PipeSpecRequest, PipeSpecResponse, CheckModelRequest, CheckModelResponse, ModelsRequest, ModelsResponse } from "./types.js";
|
|
2
2
|
import type { ExecutePipelineOptions, PipelineExecuteResponse, PipelineStartResponse } from "../client/pipeline.js";
|
|
3
3
|
export declare class ApiRunner implements Runner {
|
|
4
4
|
readonly type: RunnerType;
|
|
@@ -17,7 +17,7 @@ export declare class ApiRunner implements Runner {
|
|
|
17
17
|
validate(request: ValidateRequest): Promise<ValidateResponse>;
|
|
18
18
|
concept(request: ConceptRequest): Promise<ConceptResponse>;
|
|
19
19
|
pipeSpec(request: PipeSpecRequest): Promise<PipeSpecResponse>;
|
|
20
|
-
|
|
20
|
+
checkModel(request: CheckModelRequest): Promise<CheckModelResponse>;
|
|
21
21
|
models(request?: ModelsRequest): Promise<ModelsResponse>;
|
|
22
22
|
executePipeline(options: ExecutePipelineOptions): Promise<PipelineExecuteResponse>;
|
|
23
23
|
startPipeline(options: ExecutePipelineOptions): Promise<PipelineStartResponse>;
|
|
@@ -66,8 +66,8 @@ export class ApiRunner {
|
|
|
66
66
|
async pipeSpec(request) {
|
|
67
67
|
return this.post("/api/v1/build/pipe-spec", request);
|
|
68
68
|
}
|
|
69
|
-
async
|
|
70
|
-
return this.post("/api/v1/
|
|
69
|
+
async checkModel(request) {
|
|
70
|
+
return this.post("/api/v1/check-model", request);
|
|
71
71
|
}
|
|
72
72
|
async models(request) {
|
|
73
73
|
const params = new URLSearchParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-runner.js","sourceRoot":"","sources":["../../src/runners/api-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-runner.js","sourceRoot":"","sources":["../../src/runners/api-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA2BrC,MAAM,OAAO,SAAS;IACX,IAAI,GAAe,OAAO,CAAC,GAAG,CAAC;IAEvB,OAAO,CAAS;IAChB,MAAM,CAAS;IAEhC,YAAY,OAAgB,EAAE,MAAe;QAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,mEAAmE;IAE3D,KAAK,CAAC,OAAO,CACnB,MAAsB,EACtB,IAAY,EACZ,IAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAErC,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,OAAO,MAAM,IAAI,IAAI,YAAY,GAAG,CAAC,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAC1E,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAEO,GAAG,CAAI,IAAY;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEO,IAAI,CAAI,IAAY,EAAE,IAAa;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,mEAAmE;IAEnE,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAuB;QAClC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,qEAAqE;IAErE,KAAK,CAAC,eAAe,CACnB,OAA+B;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAA+B;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse, ConceptRequest, ConceptResponse, PipeSpecRequest, PipeSpecResponse,
|
|
1
|
+
import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse, ConceptRequest, ConceptResponse, PipeSpecRequest, PipeSpecResponse, CheckModelRequest, CheckModelResponse, ModelsRequest, ModelsResponse } from "./types.js";
|
|
2
2
|
import type { ExecutePipelineOptions, PipelineExecuteResponse, PipelineStartResponse } from "../client/pipeline.js";
|
|
3
3
|
export declare class PipelexRunner implements Runner {
|
|
4
4
|
readonly type: RunnerType;
|
|
@@ -21,7 +21,7 @@ export declare class PipelexRunner implements Runner {
|
|
|
21
21
|
buildRunner(request: BuildRunnerRequest): Promise<BuildRunnerResponse>;
|
|
22
22
|
concept(request: ConceptRequest): Promise<ConceptResponse>;
|
|
23
23
|
pipeSpec(request: PipeSpecRequest): Promise<PipeSpecResponse>;
|
|
24
|
-
|
|
24
|
+
checkModel(request: CheckModelRequest): Promise<CheckModelResponse>;
|
|
25
25
|
models(request?: ModelsRequest): Promise<ModelsResponse>;
|
|
26
26
|
execute(request: ExecuteRequest): Promise<PipelineResponse>;
|
|
27
27
|
validate(request: ValidateRequest): Promise<ValidateResponse>;
|
|
@@ -172,45 +172,19 @@ export class PipelexRunner {
|
|
|
172
172
|
], { encoding: "utf-8" });
|
|
173
173
|
return JSON.parse(stdout);
|
|
174
174
|
}
|
|
175
|
-
// pipelex-agent
|
|
176
|
-
async
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
"assemble",
|
|
181
|
-
"--domain",
|
|
182
|
-
request.domain,
|
|
183
|
-
"--main-pipe",
|
|
184
|
-
request.main_pipe,
|
|
185
|
-
];
|
|
186
|
-
if (request.description) {
|
|
187
|
-
args.push("--description", request.description);
|
|
188
|
-
}
|
|
189
|
-
if (request.system_prompt) {
|
|
190
|
-
args.push("--system-prompt", request.system_prompt);
|
|
191
|
-
}
|
|
192
|
-
if (request.concepts) {
|
|
193
|
-
for (let i = 0; i < request.concepts.length; i++) {
|
|
194
|
-
const filePath = join(tmp, `concept_${i}.toml`);
|
|
195
|
-
writeFileSync(filePath, request.concepts[i], "utf-8");
|
|
196
|
-
args.push("--concepts", filePath);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (request.pipes) {
|
|
200
|
-
for (let i = 0; i < request.pipes.length; i++) {
|
|
201
|
-
const filePath = join(tmp, `pipe_${i}.toml`);
|
|
202
|
-
writeFileSync(filePath, request.pipes[i], "utf-8");
|
|
203
|
-
args.push("--pipes", filePath);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
const { stdout } = await execFileAsync("pipelex-agent", args, {
|
|
207
|
-
encoding: "utf-8",
|
|
208
|
-
});
|
|
209
|
-
return JSON.parse(stdout);
|
|
175
|
+
// pipelex-agent check-model <reference> [--type <type>] [--format <format>]
|
|
176
|
+
async checkModel(request) {
|
|
177
|
+
const args = ["check-model", request.reference];
|
|
178
|
+
if (request.type) {
|
|
179
|
+
args.push("--type", request.type);
|
|
210
180
|
}
|
|
211
|
-
|
|
212
|
-
|
|
181
|
+
if (request.format) {
|
|
182
|
+
args.push("--format", request.format);
|
|
213
183
|
}
|
|
184
|
+
const { stdout } = await execFileAsync("pipelex-agent", args, {
|
|
185
|
+
encoding: "utf-8",
|
|
186
|
+
});
|
|
187
|
+
return JSON.parse(stdout);
|
|
214
188
|
}
|
|
215
189
|
// pipelex-agent models [--type <type>...]
|
|
216
190
|
async models(request) {
|