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
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CLI and SDK for **methods** — reusable workflows for AI coding agents.
|
|
4
4
|
|
|
5
|
-
The MTHDS open standard is defined at [mthds.ai](https://mthds.ai). Browse and discover public methods on the hub at [mthds.sh](https://mthds.sh).
|
|
5
|
+
The MTHDS open standard is defined at [mthds.ai](https://mthds.ai/latest/). Browse and discover public methods on the hub at [mthds.sh](https://mthds.sh).
|
|
6
6
|
|
|
7
7
|
## What is a method?
|
|
8
8
|
|
package/dist/agent/binaries.d.ts
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared binary metadata for passthrough, auto-install, and doctor commands.
|
|
3
|
+
*
|
|
4
|
+
* version_constraint is a semver range (e.g. ">=0.22.0") checked against the
|
|
5
|
+
* output of `<binary> --version`. Use buildInstallCommand() to get the
|
|
6
|
+
* canonical install command — single source of truth.
|
|
3
7
|
*/
|
|
4
8
|
export interface BinaryRecoveryInfo {
|
|
5
9
|
binary: string;
|
|
6
10
|
package: string;
|
|
7
|
-
|
|
11
|
+
/** PyPI package name for `uv tool install` (may differ from `package`). */
|
|
12
|
+
uv_package: string;
|
|
13
|
+
/** Semver range constraint, e.g. ">=0.22.0". */
|
|
14
|
+
version_constraint: string;
|
|
15
|
+
/** RegExp with one capture group that extracts the semver from `--version` output. */
|
|
16
|
+
version_extract: RegExp;
|
|
8
17
|
install_url: string;
|
|
9
18
|
auto_installable: boolean;
|
|
10
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Build the canonical install/upgrade command string for a binary.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildInstallCommand(recovery: BinaryRecoveryInfo): string;
|
|
11
24
|
export declare const BINARY_RECOVERY: Record<string, BinaryRecoveryInfo>;
|
package/dist/agent/binaries.js
CHANGED
|
@@ -1,28 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared binary metadata for passthrough, auto-install, and doctor commands.
|
|
3
|
+
*
|
|
4
|
+
* version_constraint is a semver range (e.g. ">=0.22.0") checked against the
|
|
5
|
+
* output of `<binary> --version`. Use buildInstallCommand() to get the
|
|
6
|
+
* canonical install command — single source of truth.
|
|
3
7
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Build the canonical install/upgrade command string for a binary.
|
|
10
|
+
*/
|
|
11
|
+
export function buildInstallCommand(recovery) {
|
|
12
|
+
return `uv tool install --upgrade "${recovery.uv_package}${recovery.version_constraint}"`;
|
|
13
|
+
}
|
|
14
|
+
/** Shared version-extract regex: `<name> <semver>` */
|
|
15
|
+
const VERSION_RE = /^[\w-]+\s+(\d+\.\d+\.\d+)/;
|
|
7
16
|
export const BINARY_RECOVERY = {
|
|
8
17
|
pipelex: {
|
|
9
18
|
binary: "pipelex",
|
|
10
19
|
package: "pipelex",
|
|
11
|
-
|
|
20
|
+
uv_package: "pipelex",
|
|
21
|
+
version_constraint: ">=0.22.0",
|
|
22
|
+
version_extract: VERSION_RE,
|
|
12
23
|
install_url: "https://pipelex.com",
|
|
13
24
|
auto_installable: true,
|
|
14
25
|
},
|
|
15
26
|
"pipelex-agent": {
|
|
16
27
|
binary: "pipelex-agent",
|
|
17
28
|
package: "pipelex",
|
|
18
|
-
|
|
29
|
+
uv_package: "pipelex",
|
|
30
|
+
version_constraint: ">=0.22.0",
|
|
31
|
+
version_extract: VERSION_RE,
|
|
19
32
|
install_url: "https://pipelex.com",
|
|
20
33
|
auto_installable: true,
|
|
21
34
|
},
|
|
22
35
|
plxt: {
|
|
23
36
|
binary: "plxt",
|
|
24
37
|
package: "pipelex-tools",
|
|
25
|
-
|
|
38
|
+
uv_package: "pipelex-tools",
|
|
39
|
+
version_constraint: ">=0.3.2",
|
|
40
|
+
version_extract: VERSION_RE,
|
|
26
41
|
install_url: "https://pypi.org/project/pipelex-tools/",
|
|
27
42
|
auto_installable: true,
|
|
28
43
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../src/agent/binaries.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"binaries.js","sourceRoot":"","sources":["../../src/agent/binaries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA4B;IAC9D,OAAO,8BAA8B,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,kBAAkB,GAAG,CAAC;AAC5F,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,2BAA2B,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAuC;IACjE,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,kBAAkB,EAAE,UAAU;QAC9B,eAAe,EAAE,UAAU;QAC3B,WAAW,EAAE,qBAAqB;QAClC,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,kBAAkB,EAAE,UAAU;QAC9B,eAAe,EAAE,UAAU;QAC3B,WAAW,EAAE,qBAAqB;QAClC,gBAAgB,EAAE,IAAI;KACvB;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,eAAe;QAC3B,kBAAkB,EAAE,SAAS;QAC7B,eAAe,EAAE,UAAU;QAC3B,WAAW,EAAE,yCAAyC;QACtD,gBAAgB,EAAE,IAAI;KACvB;CACF,CAAC"}
|
|
@@ -3,19 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { execFileSync } from "node:child_process";
|
|
5
5
|
import { agentSuccess } from "../output.js";
|
|
6
|
-
import { BINARY_RECOVERY } from "../binaries.js";
|
|
7
|
-
import {
|
|
6
|
+
import { BINARY_RECOVERY, buildInstallCommand } from "../binaries.js";
|
|
7
|
+
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
8
8
|
import { listConfig } from "../../config/config.js";
|
|
9
9
|
// ── Helpers ─────────────────────────────────────────────────────────
|
|
10
|
-
function getBinaryVersion(bin) {
|
|
11
|
-
try {
|
|
12
|
-
const output = execFileSync(bin, ["--version"], { stdio: "pipe" }).toString().trim();
|
|
13
|
-
return output;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
10
|
function getBinaryPath(bin) {
|
|
20
11
|
try {
|
|
21
12
|
const cmd = process.platform === "win32" ? "where" : "which";
|
|
@@ -50,16 +41,19 @@ export async function agentDoctor() {
|
|
|
50
41
|
}
|
|
51
42
|
// Check each known binary
|
|
52
43
|
for (const recovery of Object.values(BINARY_RECOVERY)) {
|
|
53
|
-
const
|
|
44
|
+
const check = checkBinaryVersion(recovery);
|
|
45
|
+
const installed = check.status !== "missing";
|
|
54
46
|
dependencies.push({
|
|
55
47
|
binary: recovery.binary,
|
|
56
48
|
installed,
|
|
57
|
-
version:
|
|
49
|
+
version: check.installed_version,
|
|
50
|
+
version_ok: check.status === "ok",
|
|
51
|
+
version_constraint: recovery.version_constraint,
|
|
58
52
|
path: installed ? getBinaryPath(recovery.binary) : null,
|
|
59
|
-
install_command: recovery
|
|
53
|
+
install_command: buildInstallCommand(recovery),
|
|
60
54
|
install_url: recovery.install_url,
|
|
61
55
|
});
|
|
62
|
-
if (
|
|
56
|
+
if (check.status === "missing") {
|
|
63
57
|
// Skip generic warning for pipelex-agent when runner=pipelex;
|
|
64
58
|
// the runner-specific block below will emit a more specific error.
|
|
65
59
|
if (runnerValue === "pipelex" && recovery.binary === "pipelex-agent") {
|
|
@@ -71,6 +65,20 @@ export async function agentDoctor() {
|
|
|
71
65
|
recovery,
|
|
72
66
|
});
|
|
73
67
|
}
|
|
68
|
+
else if (check.status === "outdated") {
|
|
69
|
+
issues.push({
|
|
70
|
+
severity: "warning",
|
|
71
|
+
message: `${recovery.binary} is outdated (${check.installed_version}, needs ${recovery.version_constraint}).`,
|
|
72
|
+
recovery,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else if (check.status === "unparseable") {
|
|
76
|
+
issues.push({
|
|
77
|
+
severity: "warning",
|
|
78
|
+
message: `Could not parse version for ${recovery.binary}.`,
|
|
79
|
+
recovery,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
74
82
|
}
|
|
75
83
|
// Runner-specific warnings
|
|
76
84
|
if (runnerValue === "api" && !apiKeyConfigured) {
|
|
@@ -80,7 +88,7 @@ export async function agentDoctor() {
|
|
|
80
88
|
});
|
|
81
89
|
}
|
|
82
90
|
if (runnerValue === "pipelex") {
|
|
83
|
-
const pipelexDep = dependencies.find((
|
|
91
|
+
const pipelexDep = dependencies.find((dep) => dep.binary === "pipelex-agent");
|
|
84
92
|
if (pipelexDep && !pipelexDep.installed) {
|
|
85
93
|
issues.push({
|
|
86
94
|
severity: "error",
|
|
@@ -89,7 +97,7 @@ export async function agentDoctor() {
|
|
|
89
97
|
});
|
|
90
98
|
}
|
|
91
99
|
}
|
|
92
|
-
const hasErrors = issues.some((
|
|
100
|
+
const hasErrors = issues.some((issue) => issue.severity === "error");
|
|
93
101
|
agentSuccess({
|
|
94
102
|
healthy: !hasErrors,
|
|
95
103
|
dependencies,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/agent/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,10 +151,10 @@ export async function agentInstall(address, options) {
|
|
|
151
151
|
// Optional skills install
|
|
152
152
|
const installedSkills = [];
|
|
153
153
|
if (options.skills) {
|
|
154
|
-
const
|
|
154
|
+
const PLUGINS_REPO = "https://github.com/mthds-ai/mthds-plugins";
|
|
155
155
|
const globalFlag = selectedLocation === Loc.Global ? " -g" : "";
|
|
156
156
|
try {
|
|
157
|
-
await execAsync(`npx --yes skills add ${
|
|
157
|
+
await execAsync(`npx --yes skills add ${PLUGINS_REPO} --skill '*' --agent ${selectedAgent}${globalFlag} -y`, { cwd: process.cwd() });
|
|
158
158
|
installedSkills.push("*");
|
|
159
159
|
}
|
|
160
160
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/agent/commands/install.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/agent/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mthds-agent update-check — check if binary dependencies need updating.
|
|
3
|
+
*
|
|
4
|
+
* Stdout protocol (consumed by skill preamble bash block):
|
|
5
|
+
* - No output → proceed (UP_TO_DATE, disabled, or snoozed)
|
|
6
|
+
* - UPGRADE_AVAILABLE <json> → trigger upgrade flow (read shared/upgrade-flow.md)
|
|
7
|
+
* - JUST_UPGRADED <json> → announce what was upgraded, then continue
|
|
8
|
+
*
|
|
9
|
+
* The preamble captures stdout via: mthds-agent update-check 2>/dev/null || true
|
|
10
|
+
* and checks for the presence of these keywords. Plain text, not agentSuccess JSON.
|
|
11
|
+
*/
|
|
12
|
+
export interface UpdateCheckOptions {
|
|
13
|
+
force?: boolean;
|
|
14
|
+
snooze?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function agentUpdateCheck(options: UpdateCheckOptions): Promise<void>;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mthds-agent update-check — check if binary dependencies need updating.
|
|
3
|
+
*
|
|
4
|
+
* Stdout protocol (consumed by skill preamble bash block):
|
|
5
|
+
* - No output → proceed (UP_TO_DATE, disabled, or snoozed)
|
|
6
|
+
* - UPGRADE_AVAILABLE <json> → trigger upgrade flow (read shared/upgrade-flow.md)
|
|
7
|
+
* - JUST_UPGRADED <json> → announce what was upgraded, then continue
|
|
8
|
+
*
|
|
9
|
+
* The preamble captures stdout via: mthds-agent update-check 2>/dev/null || true
|
|
10
|
+
* and checks for the presence of these keywords. Plain text, not agentSuccess JSON.
|
|
11
|
+
*/
|
|
12
|
+
import { readFileSync, unlinkSync } from "node:fs";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { createRequire } from "node:module";
|
|
15
|
+
import { agentSuccess } from "../output.js";
|
|
16
|
+
import { BINARY_RECOVERY } from "../binaries.js";
|
|
17
|
+
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
18
|
+
import { loadCredentials } from "../../config/credentials.js";
|
|
19
|
+
import { Runners } from "../../runners/types.js";
|
|
20
|
+
import { readCache, writeCache, clearCache, computeAggregate, STATE_DIR, } from "../update-cache.js";
|
|
21
|
+
import { isSnoozed, writeSnooze, clearSnooze, computeVersionKey, } from "../snooze.js";
|
|
22
|
+
const require = createRequire(import.meta.url);
|
|
23
|
+
const pkg = require("../../../package.json");
|
|
24
|
+
const JUST_UPGRADED_PATH = join(STATE_DIR, "just-upgraded-from");
|
|
25
|
+
// ── Main ───────────────────────────────────────────────────────────
|
|
26
|
+
export async function agentUpdateCheck(options) {
|
|
27
|
+
// Let errors propagate to non-zero exit so the preamble's
|
|
28
|
+
// MTHDS_UPDATE_CHECK_FAILED branch can detect real failures.
|
|
29
|
+
// The preamble handles non-zero exit gracefully (warns + proceeds).
|
|
30
|
+
await agentUpdateCheckInner(options);
|
|
31
|
+
}
|
|
32
|
+
async function agentUpdateCheckInner(options) {
|
|
33
|
+
// 1. Check if update-check is disabled
|
|
34
|
+
const creds = loadCredentials();
|
|
35
|
+
if (!creds.updateCheck)
|
|
36
|
+
return;
|
|
37
|
+
// 2. Check for just-upgraded-from marker
|
|
38
|
+
const upgradeMarker = readAndClearUpgradeMarker();
|
|
39
|
+
if (upgradeMarker) {
|
|
40
|
+
clearCache();
|
|
41
|
+
const payload = runFreshChecks(creds.runner);
|
|
42
|
+
writeCache({ aggregate: computeAggregate(payload), payload });
|
|
43
|
+
const output = { previous: upgradeMarker, current: payloadVersions(payload) };
|
|
44
|
+
process.stdout.write("JUST_UPGRADED " + JSON.stringify(output) + "\n");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// 3. Handle --force
|
|
48
|
+
if (options.force) {
|
|
49
|
+
clearCache();
|
|
50
|
+
clearSnooze();
|
|
51
|
+
}
|
|
52
|
+
// 4. Handle --snooze
|
|
53
|
+
if (options.snooze) {
|
|
54
|
+
const payload = getOrRefreshPayload(creds.runner);
|
|
55
|
+
const versionKey = computeVersionKey(payload);
|
|
56
|
+
writeSnooze(versionKey);
|
|
57
|
+
agentSuccess({ snoozed: true, version_key: versionKey });
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// 5. Try cache
|
|
61
|
+
const cached = readCache();
|
|
62
|
+
if (cached) {
|
|
63
|
+
if (cached.aggregate === "UP_TO_DATE")
|
|
64
|
+
return;
|
|
65
|
+
// UPGRADE_AVAILABLE — check snooze first to avoid unnecessary subprocess spawns
|
|
66
|
+
const cachedKey = computeVersionKey(cached.payload);
|
|
67
|
+
if (isSnoozed(cachedKey))
|
|
68
|
+
return;
|
|
69
|
+
// Re-verify to catch manual upgrades (e.g. uv tool install --upgrade)
|
|
70
|
+
const freshPayload = runFreshChecks(creds.runner);
|
|
71
|
+
const freshAggregate = computeAggregate(freshPayload);
|
|
72
|
+
writeCache({ aggregate: freshAggregate, payload: freshPayload });
|
|
73
|
+
if (freshAggregate === "UP_TO_DATE")
|
|
74
|
+
return;
|
|
75
|
+
const freshKey = computeVersionKey(freshPayload);
|
|
76
|
+
if (isSnoozed(freshKey))
|
|
77
|
+
return;
|
|
78
|
+
process.stdout.write("UPGRADE_AVAILABLE " + JSON.stringify(freshPayload) + "\n");
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// 6. Cache miss — run fresh checks
|
|
82
|
+
const payload = runFreshChecks(creds.runner);
|
|
83
|
+
const aggregate = computeAggregate(payload);
|
|
84
|
+
// 7. Emit result BEFORE writing cache — if writeCache throws (e.g. state dir
|
|
85
|
+
// not creatable), the preamble still gets the signal.
|
|
86
|
+
if (aggregate !== "UP_TO_DATE") {
|
|
87
|
+
const versionKey = computeVersionKey(payload);
|
|
88
|
+
if (!isSnoozed(versionKey)) {
|
|
89
|
+
process.stdout.write("UPGRADE_AVAILABLE " + JSON.stringify(payload) + "\n");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
writeCache({ aggregate, payload });
|
|
93
|
+
}
|
|
94
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
95
|
+
function runFreshChecks(runner) {
|
|
96
|
+
const plxtRecovery = BINARY_RECOVERY["plxt"];
|
|
97
|
+
if (!plxtRecovery) {
|
|
98
|
+
throw new Error("Missing binary recovery info for plxt");
|
|
99
|
+
}
|
|
100
|
+
const payload = {
|
|
101
|
+
mthds_agent: { s: "ok", v: pkg.version },
|
|
102
|
+
plxt: toBinaryEntry(checkBinaryVersion(plxtRecovery)),
|
|
103
|
+
};
|
|
104
|
+
// Only check pipelex-agent when runner requires it
|
|
105
|
+
if (runner === Runners.PIPELEX) {
|
|
106
|
+
const pipelexRecovery = BINARY_RECOVERY["pipelex-agent"];
|
|
107
|
+
if (!pipelexRecovery) {
|
|
108
|
+
throw new Error("Missing binary recovery info for pipelex-agent");
|
|
109
|
+
}
|
|
110
|
+
payload.pipelex_agent = toBinaryEntry(checkBinaryVersion(pipelexRecovery));
|
|
111
|
+
}
|
|
112
|
+
return payload;
|
|
113
|
+
}
|
|
114
|
+
function toBinaryEntry(check) {
|
|
115
|
+
const entry = {
|
|
116
|
+
s: check.status,
|
|
117
|
+
v: check.installed_version,
|
|
118
|
+
};
|
|
119
|
+
if (check.status !== "ok") {
|
|
120
|
+
entry.r = check.version_constraint;
|
|
121
|
+
}
|
|
122
|
+
return entry;
|
|
123
|
+
}
|
|
124
|
+
function getOrRefreshPayload(runner) {
|
|
125
|
+
const cached = readCache();
|
|
126
|
+
if (cached)
|
|
127
|
+
return cached.payload;
|
|
128
|
+
const payload = runFreshChecks(runner);
|
|
129
|
+
const aggregate = computeAggregate(payload);
|
|
130
|
+
writeCache({ aggregate, payload });
|
|
131
|
+
return payload;
|
|
132
|
+
}
|
|
133
|
+
function readAndClearUpgradeMarker() {
|
|
134
|
+
let content;
|
|
135
|
+
try {
|
|
136
|
+
content = readFileSync(JUST_UPGRADED_PATH, "utf-8");
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return null; // File doesn't exist or unreadable
|
|
140
|
+
}
|
|
141
|
+
// Delete marker before parsing — even corrupt markers should be consumed
|
|
142
|
+
try {
|
|
143
|
+
unlinkSync(JUST_UPGRADED_PATH);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// ignore
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const parsed = JSON.parse(content);
|
|
150
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
return parsed;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function payloadVersions(payload) {
|
|
160
|
+
const result = {
|
|
161
|
+
mthds_agent: payload.mthds_agent.v,
|
|
162
|
+
plxt: payload.plxt.v,
|
|
163
|
+
};
|
|
164
|
+
if (payload.pipelex_agent) {
|
|
165
|
+
result.pipelex_agent = payload.pipelex_agent.v;
|
|
166
|
+
}
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/agent/commands/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mthds-agent upgrade -- upgrade outdated/missing Python binary dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Stdout protocol (plain text, consumed by skill upgrade-flow):
|
|
5
|
+
* - UPGRADE_NOT_NEEDED -- all binaries ok
|
|
6
|
+
* - UPGRADE_COMPLETE <json> -- all targets succeeded
|
|
7
|
+
* - UPGRADE_PARTIAL <json> -- some targets succeeded, some failed
|
|
8
|
+
* - UPGRADE_FAILED <json> -- all targets failed
|
|
9
|
+
*
|
|
10
|
+
* Architecture: De-duplicates by uv_package to guard against multiple binaries
|
|
11
|
+
* sharing a PyPI package. Currently pipelex-agent uses "pipelex" and plxt uses
|
|
12
|
+
* "pipelex-tools", so de-duplication does not trigger — but the guard prevents
|
|
13
|
+
* double-installs if future binaries share a package. The binary check list
|
|
14
|
+
* depends on the configured runner: always plxt; add pipelex-agent when
|
|
15
|
+
* runner === "pipelex".
|
|
16
|
+
*/
|
|
17
|
+
export declare function agentUpgrade(): Promise<void>;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mthds-agent upgrade -- upgrade outdated/missing Python binary dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Stdout protocol (plain text, consumed by skill upgrade-flow):
|
|
5
|
+
* - UPGRADE_NOT_NEEDED -- all binaries ok
|
|
6
|
+
* - UPGRADE_COMPLETE <json> -- all targets succeeded
|
|
7
|
+
* - UPGRADE_PARTIAL <json> -- some targets succeeded, some failed
|
|
8
|
+
* - UPGRADE_FAILED <json> -- all targets failed
|
|
9
|
+
*
|
|
10
|
+
* Architecture: De-duplicates by uv_package to guard against multiple binaries
|
|
11
|
+
* sharing a PyPI package. Currently pipelex-agent uses "pipelex" and plxt uses
|
|
12
|
+
* "pipelex-tools", so de-duplication does not trigger — but the guard prevents
|
|
13
|
+
* double-installs if future binaries share a package. The binary check list
|
|
14
|
+
* depends on the configured runner: always plxt; add pipelex-agent when
|
|
15
|
+
* runner === "pipelex".
|
|
16
|
+
*/
|
|
17
|
+
import { writeFileSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
import { requireUv, uvToolInstallSync } from "../../installer/runtime/installer.js";
|
|
20
|
+
import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
|
|
21
|
+
import { BINARY_RECOVERY } from "../binaries.js";
|
|
22
|
+
import { agentError, AGENT_ERROR_DOMAINS } from "../output.js";
|
|
23
|
+
import { clearCache, ensureStateDir, STATE_DIR } from "../update-cache.js";
|
|
24
|
+
import { clearSnooze } from "../snooze.js";
|
|
25
|
+
import { loadCredentials } from "../../config/credentials.js";
|
|
26
|
+
import { Runners } from "../../runners/types.js";
|
|
27
|
+
function errorMsg(err) {
|
|
28
|
+
return err instanceof Error ? err.message : String(err);
|
|
29
|
+
}
|
|
30
|
+
// ── Main ───────────────────────────────────────────────────────────
|
|
31
|
+
export async function agentUpgrade() {
|
|
32
|
+
// requireUv() — fatal if missing
|
|
33
|
+
try {
|
|
34
|
+
requireUv();
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
agentError(errorMsg(err), "InstallError", {
|
|
38
|
+
error_domain: AGENT_ERROR_DOMAINS.INSTALL,
|
|
39
|
+
});
|
|
40
|
+
return; // unreachable — agentError calls process.exit, but explicit for TypeScript
|
|
41
|
+
}
|
|
42
|
+
const creds = loadCredentials();
|
|
43
|
+
const binaryKeys = ["plxt"];
|
|
44
|
+
if (creds.runner === Runners.PIPELEX) {
|
|
45
|
+
binaryKeys.push("pipelex-agent");
|
|
46
|
+
}
|
|
47
|
+
// Collect outdated/missing as targets, skip unparseable
|
|
48
|
+
const targets = [];
|
|
49
|
+
for (const key of binaryKeys) {
|
|
50
|
+
const recovery = BINARY_RECOVERY[key];
|
|
51
|
+
if (!recovery) {
|
|
52
|
+
process.stderr.write(`Warning: no recovery info for binary "${key}" — skipping upgrade check. This is a bug.\n`);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const check = checkBinaryVersion(recovery);
|
|
56
|
+
if (check.status === "outdated" || check.status === "missing") {
|
|
57
|
+
targets.push({
|
|
58
|
+
binaryKey: key,
|
|
59
|
+
recovery,
|
|
60
|
+
oldVersion: check.installed_version,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// "ok" and "unparseable" are both skipped — unparseable means the binary
|
|
64
|
+
// exists but we can't parse its version, so don't blindly reinstall.
|
|
65
|
+
}
|
|
66
|
+
if (targets.length === 0) {
|
|
67
|
+
process.stdout.write("UPGRADE_NOT_NEEDED\n");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// De-duplicate by uv_package to avoid double-installing shared packages
|
|
71
|
+
const seen = new Map();
|
|
72
|
+
for (const t of targets) {
|
|
73
|
+
if (!seen.has(t.recovery.uv_package)) {
|
|
74
|
+
seen.set(t.recovery.uv_package, t);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const uniqueTargets = Array.from(seen.values());
|
|
78
|
+
// Install each unique uv_package, catching errors per-target
|
|
79
|
+
const succeeded = new Map();
|
|
80
|
+
const failed = new Map();
|
|
81
|
+
for (const target of uniqueTargets) {
|
|
82
|
+
try {
|
|
83
|
+
uvToolInstallSync(target.recovery.uv_package, target.recovery.version_constraint);
|
|
84
|
+
succeeded.set(target.recovery.uv_package, target);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
failed.set(target.recovery.uv_package, errorMsg(err));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Post-check successful targets to get new version
|
|
91
|
+
const upgradedEntries = {};
|
|
92
|
+
for (const [uvPkg, target] of succeeded) {
|
|
93
|
+
let newVersion = null;
|
|
94
|
+
try {
|
|
95
|
+
const postCheck = checkBinaryVersion(target.recovery);
|
|
96
|
+
if (postCheck.status === "ok" || postCheck.status === "unparseable") {
|
|
97
|
+
newVersion = postCheck.installed_version;
|
|
98
|
+
}
|
|
99
|
+
else if (postCheck.status === "missing") {
|
|
100
|
+
// PATH issue — binary was installed but not yet visible.
|
|
101
|
+
// Treat as successful since uvToolInstallSync didn't throw.
|
|
102
|
+
newVersion = null;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// "outdated" — install ran but didn't satisfy the constraint
|
|
106
|
+
process.stderr.write(`Warning: ${uvPkg} was installed but version ${postCheck.installed_version} still does not meet ${postCheck.version_constraint}.\n`);
|
|
107
|
+
newVersion = postCheck.installed_version;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
process.stderr.write(`Warning: post-upgrade version check failed for ${uvPkg}: ${errorMsg(err)}.\n`);
|
|
112
|
+
newVersion = null;
|
|
113
|
+
}
|
|
114
|
+
const oldV = target.oldVersion ?? "missing";
|
|
115
|
+
const newV = newVersion ?? "unknown";
|
|
116
|
+
upgradedEntries[uvPkg] = `${oldV}->${newV}`;
|
|
117
|
+
}
|
|
118
|
+
const failedEntries = Object.fromEntries(failed);
|
|
119
|
+
// Build marker with old versions keyed by binary name.
|
|
120
|
+
// The update-check preamble reads and clears this marker to detect a recent upgrade.
|
|
121
|
+
const markerData = {};
|
|
122
|
+
for (const target of targets) {
|
|
123
|
+
// Use binary key as marker key (e.g. "pipelex_agent", "plxt")
|
|
124
|
+
const markerKey = target.binaryKey.replace(/-/g, "_");
|
|
125
|
+
markerData[markerKey] = target.oldVersion ?? "missing";
|
|
126
|
+
}
|
|
127
|
+
// Determine outcome and emit result
|
|
128
|
+
const allSucceeded = failed.size === 0;
|
|
129
|
+
const allFailed = succeeded.size === 0;
|
|
130
|
+
if (allSucceeded) {
|
|
131
|
+
// Write marker, clear cache + snooze
|
|
132
|
+
try {
|
|
133
|
+
ensureStateDir();
|
|
134
|
+
writeFileSync(join(STATE_DIR, "just-upgraded-from"), JSON.stringify(markerData), "utf-8");
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
// Marker write failure should not prevent reporting success
|
|
138
|
+
process.stderr.write(`Warning: could not write upgrade marker: ${errorMsg(err)}.\n`);
|
|
139
|
+
}
|
|
140
|
+
clearCache();
|
|
141
|
+
clearSnooze();
|
|
142
|
+
process.stdout.write("UPGRADE_COMPLETE " + JSON.stringify({ upgraded: upgradedEntries }) + "\n");
|
|
143
|
+
}
|
|
144
|
+
else if (allFailed) {
|
|
145
|
+
// Do NOT clear cache/snooze, do NOT write marker
|
|
146
|
+
process.stdout.write("UPGRADE_FAILED " + JSON.stringify({ failed: failedEntries }) + "\n");
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Partial — do NOT clear cache/snooze, do NOT write marker
|
|
150
|
+
process.stdout.write("UPGRADE_PARTIAL " +
|
|
151
|
+
JSON.stringify({ upgraded: upgradedEntries, failed: failedEntries }) +
|
|
152
|
+
"\n");
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/agent/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAWjD,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,sEAAsE;AAEtE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,iCAAiC;IACjC,IAAI,CAAC;QACH,SAAS,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE;YACxC,YAAY,EAAE,mBAAmB,CAAC,OAAO;SAC1C,CAAC,CAAC;QACH,OAAO,CAAC,2EAA2E;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,MAAM,UAAU,GAAa,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yCAAyC,GAAG,8CAA8C,CAC3F,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAuB,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,GAAG;gBACd,QAAQ;gBACR,UAAU,EAAE,KAAK,CAAC,iBAAiB;aACpC,CAAC,CAAC;QACL,CAAC;QACD,yEAAyE;QACzE,qEAAqE;IACvE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhD,6DAA6D;IAC7D,MAAM,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,MAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAClF,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,eAAe,GAA2B,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACxC,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACpE,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC;YAC3C,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1C,yDAAyD;gBACzD,4DAA4D;gBAC5D,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY,KAAK,8BAA8B,SAAS,CAAC,iBAAiB,wBAAwB,SAAS,CAAC,kBAAkB,KAAK,CACpI,CAAC;gBACF,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,KAAK,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,CAC/E,CAAC;YACF,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC;QAC5C,MAAM,IAAI,GAAG,UAAU,IAAI,SAAS,CAAC;QACrC,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEjD,uDAAuD;IACvD,qFAAqF;IACrF,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC;IACzD,CAAC;IAED,oCAAoC;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;IAEvC,IAAI,YAAY,EAAE,CAAC;QACjB,qCAAqC;QACrC,IAAI,CAAC;YACH,cAAc,EAAE,CAAC;YACjB,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAC1B,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,4DAA4D;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAC/D,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,GAAG,IAAI,CAC3E,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,iDAAiD;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,CACrE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,2DAA2D;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB;YAChB,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACpE,IAAI,CACP,CAAC;IACJ,CAAC;AACH,CAAC"}
|