mthds 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/binaries.d.ts +14 -1
  3. package/dist/agent/binaries.js +21 -6
  4. package/dist/agent/binaries.js.map +1 -1
  5. package/dist/agent/commands/bootstrap.d.ts +15 -0
  6. package/dist/agent/commands/bootstrap.js +152 -0
  7. package/dist/agent/commands/bootstrap.js.map +1 -0
  8. package/dist/agent/commands/doctor.js +25 -17
  9. package/dist/agent/commands/doctor.js.map +1 -1
  10. package/dist/agent/commands/install.js +2 -2
  11. package/dist/agent/commands/install.js.map +1 -1
  12. package/dist/agent/commands/update-check.d.ts +16 -0
  13. package/dist/agent/commands/update-check.js +169 -0
  14. package/dist/agent/commands/update-check.js.map +1 -0
  15. package/dist/agent/commands/upgrade.d.ts +17 -0
  16. package/dist/agent/commands/upgrade.js +155 -0
  17. package/dist/agent/commands/upgrade.js.map +1 -0
  18. package/dist/agent/passthrough.d.ts +1 -0
  19. package/dist/agent/passthrough.js +93 -32
  20. package/dist/agent/passthrough.js.map +1 -1
  21. package/dist/agent/snooze.d.ts +32 -0
  22. package/dist/agent/snooze.js +108 -0
  23. package/dist/agent/snooze.js.map +1 -0
  24. package/dist/agent/update-cache.d.ts +43 -0
  25. package/dist/agent/update-cache.js +125 -0
  26. package/dist/agent/update-cache.js.map +1 -0
  27. package/dist/agent-cli.js +56 -11
  28. package/dist/agent-cli.js.map +1 -1
  29. package/dist/cli/commands/install.js +3 -3
  30. package/dist/cli/commands/install.js.map +1 -1
  31. package/dist/config/credentials.d.ts +2 -0
  32. package/dist/config/credentials.js +64 -33
  33. package/dist/config/credentials.js.map +1 -1
  34. package/dist/installer/runtime/installer.d.ts +21 -6
  35. package/dist/installer/runtime/installer.js +90 -22
  36. package/dist/installer/runtime/installer.js.map +1 -1
  37. package/dist/installer/runtime/version-check.d.ts +31 -0
  38. package/dist/installer/runtime/version-check.js +78 -0
  39. package/dist/installer/runtime/version-check.js.map +1 -0
  40. 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
 
@@ -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
- install_command: string;
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>;
@@ -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
- const PIPELEX_INSTALL_COMMAND = process.platform === "win32"
5
- ? 'powershell -Command "irm https://pipelex.com/install.ps1 | iex"'
6
- : "curl -fsSL https://pipelex.com/install.sh | sh";
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
- install_command: PIPELEX_INSTALL_COMMAND,
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
- install_command: PIPELEX_INSTALL_COMMAND,
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
- install_command: `${process.platform === "win32" ? "python" : "python3"} -m pip install pipelex-tools`,
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;AAUH,MAAM,uBAAuB,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1D,CAAC,CAAC,iEAAiE;IACnE,CAAC,CAAC,gDAAgD,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAuC;IACjE,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,uBAAuB;QACxC,WAAW,EAAE,qBAAqB;QAClC,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,uBAAuB;QACxC,WAAW,EAAE,qBAAqB;QAClC,gBAAgB,EAAE,IAAI;KACvB;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,eAAe;QACxB,eAAe,EAAE,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,+BAA+B;QACtG,WAAW,EAAE,yCAAyC;QACtD,gBAAgB,EAAE,IAAI;KACvB;CACF,CAAC"}
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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * mthds-agent bootstrap -- first-run environment setup.
3
+ *
4
+ * Installs uv (if missing), then installs all required Python binaries
5
+ * (plxt, pipelex-agent) so the environment is ready before the first
6
+ * skill invocation. Designed to be called from the copy-paste install
7
+ * instructions right after `npm install -g mthds`.
8
+ *
9
+ * Stdout protocol (plain text, same style as upgrade):
10
+ * - BOOTSTRAP_NOT_NEEDED -- all binaries already ok
11
+ * - BOOTSTRAP_COMPLETE <json> -- all targets installed
12
+ * - BOOTSTRAP_PARTIAL <json> -- some targets installed, some failed
13
+ * - BOOTSTRAP_FAILED <json> -- all targets failed
14
+ */
15
+ export declare function agentBootstrap(): Promise<void>;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * mthds-agent bootstrap -- first-run environment setup.
3
+ *
4
+ * Installs uv (if missing), then installs all required Python binaries
5
+ * (plxt, pipelex-agent) so the environment is ready before the first
6
+ * skill invocation. Designed to be called from the copy-paste install
7
+ * instructions right after `npm install -g mthds`.
8
+ *
9
+ * Stdout protocol (plain text, same style as upgrade):
10
+ * - BOOTSTRAP_NOT_NEEDED -- all binaries already ok
11
+ * - BOOTSTRAP_COMPLETE <json> -- all targets installed
12
+ * - BOOTSTRAP_PARTIAL <json> -- some targets installed, some failed
13
+ * - BOOTSTRAP_FAILED <json> -- all targets failed
14
+ */
15
+ import { writeFileSync } from "node:fs";
16
+ import { join } from "node:path";
17
+ import { isUvInstalled, installUv, uvToolInstallSync } from "../../installer/runtime/installer.js";
18
+ import { checkBinaryVersion } from "../../installer/runtime/version-check.js";
19
+ import { BINARY_RECOVERY } from "../binaries.js";
20
+ import { agentError, AGENT_ERROR_DOMAINS } from "../output.js";
21
+ import { clearCache, ensureStateDir, STATE_DIR } from "../update-cache.js";
22
+ import { clearSnooze } from "../snooze.js";
23
+ import { loadCredentials } from "../../config/credentials.js";
24
+ import { Runners } from "../../runners/types.js";
25
+ function errorMsg(err) {
26
+ return err instanceof Error ? err.message : String(err);
27
+ }
28
+ // ── Main ───────────────────────────────────────────────────────────
29
+ // TODO: Extract shared install-check-report workflow with agentUpgrade() to
30
+ // reduce duplication (~78% overlap). The unique bootstrap logic is the uv
31
+ // auto-install preamble (lines below); everything after that mirrors upgrade.
32
+ export async function agentBootstrap() {
33
+ // 1. Ensure uv is available — auto-install if missing
34
+ if (!isUvInstalled()) {
35
+ try {
36
+ installUv();
37
+ }
38
+ catch (err) {
39
+ agentError(`Could not auto-install uv: ${errorMsg(err)}. Install manually: https://docs.astral.sh/uv/getting-started/installation/`, "InstallError", { error_domain: AGENT_ERROR_DOMAINS.INSTALL });
40
+ return;
41
+ }
42
+ if (!isUvInstalled()) {
43
+ agentError(`uv was installed but is not reachable in PATH. Restart your shell or add the uv bin directory to PATH.`, "InstallError", { error_domain: AGENT_ERROR_DOMAINS.INSTALL });
44
+ return;
45
+ }
46
+ }
47
+ // 2. Determine which binaries to install
48
+ const creds = loadCredentials();
49
+ const binaryKeys = ["plxt"];
50
+ if (creds.runner === Runners.PIPELEX) {
51
+ binaryKeys.push("pipelex-agent");
52
+ }
53
+ // 3. Collect missing/outdated targets
54
+ const targets = [];
55
+ for (const key of binaryKeys) {
56
+ const recovery = BINARY_RECOVERY[key];
57
+ if (!recovery) {
58
+ process.stderr.write(`Warning: no recovery info for binary "${key}" — skipping. This is a bug.\n`);
59
+ continue;
60
+ }
61
+ const check = checkBinaryVersion(recovery);
62
+ if (check.status === "outdated" || check.status === "missing") {
63
+ targets.push({
64
+ binaryKey: key,
65
+ recovery,
66
+ oldVersion: check.installed_version,
67
+ });
68
+ }
69
+ }
70
+ if (targets.length === 0) {
71
+ process.stdout.write("BOOTSTRAP_NOT_NEEDED\n");
72
+ return;
73
+ }
74
+ // 4. De-duplicate by uv_package
75
+ const seen = new Map();
76
+ for (const t of targets) {
77
+ if (!seen.has(t.recovery.uv_package)) {
78
+ seen.set(t.recovery.uv_package, t);
79
+ }
80
+ }
81
+ const uniqueTargets = Array.from(seen.values());
82
+ // 5. Install each package
83
+ const succeeded = new Map();
84
+ const failed = new Map();
85
+ for (const target of uniqueTargets) {
86
+ try {
87
+ uvToolInstallSync(target.recovery.uv_package, target.recovery.version_constraint);
88
+ succeeded.set(target.recovery.uv_package, target);
89
+ }
90
+ catch (err) {
91
+ failed.set(target.recovery.uv_package, errorMsg(err));
92
+ }
93
+ }
94
+ // 6. Post-check and build results
95
+ const installedEntries = {};
96
+ for (const [uvPkg, target] of succeeded) {
97
+ let newVersion = null;
98
+ try {
99
+ const postCheck = checkBinaryVersion(target.recovery);
100
+ if (postCheck.status === "ok" || postCheck.status === "unparseable") {
101
+ newVersion = postCheck.installed_version;
102
+ }
103
+ else if (postCheck.status === "missing") {
104
+ newVersion = null;
105
+ }
106
+ else {
107
+ process.stderr.write(`Warning: ${uvPkg} was installed but version ${postCheck.installed_version} still does not meet ${postCheck.version_constraint}.\n`);
108
+ newVersion = postCheck.installed_version;
109
+ }
110
+ }
111
+ catch (err) {
112
+ process.stderr.write(`Warning: post-install version check failed for ${uvPkg}: ${errorMsg(err)}.\n`);
113
+ newVersion = null;
114
+ }
115
+ const oldV = target.oldVersion ?? "missing";
116
+ const newV = newVersion ?? "unknown";
117
+ installedEntries[uvPkg] = `${oldV}->${newV}`;
118
+ }
119
+ const failedEntries = Object.fromEntries(failed);
120
+ // Build marker for update-check to detect recent install
121
+ const markerData = {};
122
+ for (const target of targets) {
123
+ const markerKey = target.binaryKey.replace(/-/g, "_");
124
+ markerData[markerKey] = target.oldVersion ?? "missing";
125
+ }
126
+ // 7. Emit result
127
+ const allSucceeded = failed.size === 0;
128
+ const allFailed = succeeded.size === 0;
129
+ if (allSucceeded) {
130
+ try {
131
+ ensureStateDir();
132
+ writeFileSync(join(STATE_DIR, "just-upgraded-from"), JSON.stringify(markerData), "utf-8");
133
+ }
134
+ catch (err) {
135
+ process.stderr.write(`Warning: could not write upgrade marker: ${errorMsg(err)}.\n`);
136
+ }
137
+ clearCache();
138
+ clearSnooze();
139
+ process.stdout.write("BOOTSTRAP_COMPLETE " + JSON.stringify({ installed: installedEntries }) + "\n");
140
+ }
141
+ else if (allFailed) {
142
+ process.stdout.write("BOOTSTRAP_FAILED " + JSON.stringify({ failed: failedEntries }) + "\n");
143
+ }
144
+ else {
145
+ clearCache();
146
+ clearSnooze();
147
+ process.stdout.write("BOOTSTRAP_PARTIAL " +
148
+ JSON.stringify({ installed: installedEntries, failed: failedEntries }) +
149
+ "\n");
150
+ }
151
+ }
152
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/agent/commands/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -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 { isBinaryInstalled } from "../../installer/runtime/check.js";
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 installed = isBinaryInstalled(recovery.binary);
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: installed ? getBinaryVersion(recovery.binary) : null,
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.install_command,
53
+ install_command: buildInstallCommand(recovery),
60
54
  install_url: recovery.install_url,
61
55
  });
62
- if (!installed) {
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((d) => d.binary === "pipelex-agent");
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((i) => i.severity === "error");
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":"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"}
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,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA2BpD,uEAAuE;AAEvE,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,OAAO,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,YAAY,GAAsB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,+EAA+E;IAC/E,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,IAAI,WAA+B,CAAC;IACpC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS;YAC7C,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC;YACjB,GAAG,EAAE,KAAK,CAAC,MAAM;YACjB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;YAAE,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QACzD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK;YAAE,gBAAgB,GAAG,IAAI,CAAC;IACzE,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QAE7C,YAAY,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS;YACT,OAAO,EAAE,KAAK,CAAC,iBAAiB;YAChC,UAAU,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;YACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;YAC/C,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACvD,eAAe,EAAE,mBAAmB,CAAC,QAAQ,CAAC;YAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,8DAA8D;YAC9D,mEAAmE;YACnE,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;gBACrE,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,oBAAoB;gBAC/C,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,iBAAiB,KAAK,CAAC,iBAAiB,WAAW,QAAQ,CAAC,kBAAkB,IAAI;gBAC7G,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,+BAA+B,QAAQ,CAAC,MAAM,GAAG;gBAC1D,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,WAAW,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,sDAAsD;SAChE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC;QAC9E,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,gEAAgE;gBACzE,QAAQ,EAAE,eAAe,CAAC,eAAe,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAErE,YAAY,CAAC;QACX,OAAO,EAAE,CAAC,SAAS;QACnB,YAAY;QACZ,MAAM,EAAE,aAAa;QACrB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
@@ -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 SKILLS_REPO = "https://github.com/mthds-ai/skills";
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 ${SKILLS_REPO} --skill '*' --agent ${selectedAgent}${globalFlag} -y`, { cwd: process.cwd() });
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>;