mthds 0.0.2 → 0.0.4

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 (65) hide show
  1. package/README.md +80 -3
  2. package/dist/cli.js +106 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/client.d.ts +15 -0
  5. package/dist/client/client.js +64 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/exceptions.d.ts +6 -0
  8. package/dist/client/exceptions.js +13 -0
  9. package/dist/client/exceptions.js.map +1 -0
  10. package/dist/client/index.d.ts +5 -0
  11. package/dist/client/index.js +3 -0
  12. package/dist/client/index.js.map +1 -0
  13. package/dist/client/models/index.d.ts +4 -0
  14. package/dist/client/models/index.js +2 -0
  15. package/dist/client/models/index.js.map +1 -0
  16. package/dist/client/models/pipe_output.d.ts +2 -0
  17. package/dist/client/models/pipe_output.js +2 -0
  18. package/dist/client/models/pipe_output.js.map +1 -0
  19. package/dist/client/models/pipeline_inputs.d.ts +3 -0
  20. package/dist/client/models/pipeline_inputs.js +2 -0
  21. package/dist/client/models/pipeline_inputs.js.map +1 -0
  22. package/dist/client/models/stuff.d.ts +1 -0
  23. package/dist/client/models/stuff.js +2 -0
  24. package/dist/client/models/stuff.js.map +1 -0
  25. package/dist/client/models/working_memory.d.ts +1 -0
  26. package/dist/client/models/working_memory.js +2 -0
  27. package/dist/client/models/working_memory.js.map +1 -0
  28. package/dist/client/pipeline.d.ts +36 -0
  29. package/dist/client/pipeline.js +2 -0
  30. package/dist/client/pipeline.js.map +1 -0
  31. package/dist/client/protocol.d.ts +5 -0
  32. package/dist/client/protocol.js +2 -0
  33. package/dist/client/protocol.js.map +1 -0
  34. package/dist/commands/build.d.ts +19 -0
  35. package/dist/commands/build.js +128 -0
  36. package/dist/commands/build.js.map +1 -0
  37. package/dist/commands/index.js +21 -10
  38. package/dist/commands/index.js.map +1 -1
  39. package/dist/commands/run.d.ts +11 -0
  40. package/dist/commands/run.js +44 -0
  41. package/dist/commands/run.js.map +1 -0
  42. package/dist/commands/runner.d.ts +2 -0
  43. package/dist/commands/runner.js +59 -0
  44. package/dist/commands/runner.js.map +1 -0
  45. package/dist/commands/setup.js +27 -8
  46. package/dist/commands/setup.js.map +1 -1
  47. package/dist/commands/validate.d.ts +6 -0
  48. package/dist/commands/validate.js +41 -0
  49. package/dist/commands/validate.js.map +1 -0
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/runners/api-runner.d.ts +18 -0
  54. package/dist/runners/api-runner.js +66 -0
  55. package/dist/runners/api-runner.js.map +1 -0
  56. package/dist/runners/pipelex-runner.d.ts +13 -0
  57. package/dist/runners/pipelex-runner.js +159 -0
  58. package/dist/runners/pipelex-runner.js.map +1 -0
  59. package/dist/runners/registry.d.ts +2 -0
  60. package/dist/runners/registry.js +15 -0
  61. package/dist/runners/registry.js.map +1 -0
  62. package/dist/runners/types.d.ts +81 -5
  63. package/dist/telemetry/posthog.js +0 -1
  64. package/dist/telemetry/posthog.js.map +1 -1
  65. package/package.json +13 -3
@@ -0,0 +1,128 @@
1
+ import { readFileSync, writeFileSync } from "node:fs";
2
+ import * as p from "@clack/prompts";
3
+ import { printLogo } from "./index.js";
4
+ import { createRunner } from "../runners/registry.js";
5
+ // ── mthds build pipe "PROMPT" [-o file] ─────────────────────────────
6
+ export async function buildPipe(brief, options) {
7
+ printLogo();
8
+ p.intro("mthds build pipe");
9
+ const runner = createRunner(options.runner);
10
+ const s = p.spinner();
11
+ s.start("Building pipeline...");
12
+ try {
13
+ const result = await runner.buildPipe({ brief });
14
+ s.stop(result.message);
15
+ if (options.output) {
16
+ writeFileSync(options.output, result.plx_content, "utf-8");
17
+ p.log.success(`PLX written to ${options.output}`);
18
+ }
19
+ else {
20
+ p.log.info(result.plx_content);
21
+ }
22
+ p.outro("Done");
23
+ }
24
+ catch (err) {
25
+ s.stop("Build failed.");
26
+ p.log.error(err.message);
27
+ p.outro("");
28
+ process.exit(1);
29
+ }
30
+ }
31
+ // ── mthds build runner <target> [--pipe code] [-o file] ─────────────
32
+ export async function buildRunner(target, options) {
33
+ printLogo();
34
+ p.intro("mthds build runner");
35
+ const runner = createRunner(options.runner);
36
+ const isBundle = target.endsWith(".plx");
37
+ let plxContent;
38
+ let pipeCode;
39
+ if (isBundle) {
40
+ plxContent = readFileSync(target, "utf-8");
41
+ if (!options.pipe) {
42
+ p.log.error("--pipe is required when passing a .plx bundle.");
43
+ p.outro("");
44
+ process.exit(1);
45
+ }
46
+ pipeCode = options.pipe;
47
+ }
48
+ else {
49
+ // target is a pipe code — we still need plx content
50
+ p.log.error("build runner requires a .plx bundle file. Pass the bundle path as the target.");
51
+ p.outro("");
52
+ process.exit(1);
53
+ return; // unreachable, keeps TS happy
54
+ }
55
+ const s = p.spinner();
56
+ s.start("Generating runner code...");
57
+ try {
58
+ const result = await runner.buildRunner({
59
+ plx_content: plxContent,
60
+ pipe_code: pipeCode,
61
+ });
62
+ s.stop(result.message);
63
+ if (options.output) {
64
+ writeFileSync(options.output, result.python_code, "utf-8");
65
+ p.log.success(`Runner written to ${options.output}`);
66
+ }
67
+ else {
68
+ p.log.info(result.python_code);
69
+ }
70
+ p.outro("Done");
71
+ }
72
+ catch (err) {
73
+ s.stop("Build failed.");
74
+ p.log.error(err.message);
75
+ p.outro("");
76
+ process.exit(1);
77
+ }
78
+ }
79
+ // ── mthds build inputs <bundle.plx> --pipe <code> ───────────────────
80
+ export async function buildInputs(target, options) {
81
+ printLogo();
82
+ p.intro("mthds build inputs");
83
+ const runner = createRunner(options.runner);
84
+ const plxContent = readFileSync(target, "utf-8");
85
+ const s = p.spinner();
86
+ s.start("Generating example inputs...");
87
+ try {
88
+ const result = await runner.buildInputs({
89
+ plx_content: plxContent,
90
+ pipe_code: options.pipe,
91
+ });
92
+ s.stop("Inputs generated.");
93
+ p.log.info(JSON.stringify(result, null, 2));
94
+ p.outro("Done");
95
+ }
96
+ catch (err) {
97
+ s.stop("Build failed.");
98
+ p.log.error(err.message);
99
+ p.outro("");
100
+ process.exit(1);
101
+ }
102
+ }
103
+ // ── mthds build output <bundle.plx> --pipe <code> [--format] ────────
104
+ export async function buildOutput(target, options) {
105
+ printLogo();
106
+ p.intro("mthds build output");
107
+ const runner = createRunner(options.runner);
108
+ const plxContent = readFileSync(target, "utf-8");
109
+ const s = p.spinner();
110
+ s.start("Generating output schema...");
111
+ try {
112
+ const result = await runner.buildOutput({
113
+ plx_content: plxContent,
114
+ pipe_code: options.pipe,
115
+ format: options.format ?? "schema",
116
+ });
117
+ s.stop("Output generated.");
118
+ p.log.info(JSON.stringify(result, null, 2));
119
+ p.outro("Done");
120
+ }
121
+ catch (err) {
122
+ s.stop("Build failed.");
123
+ p.log.error(err.message);
124
+ p.outro("");
125
+ process.exit(1);
126
+ }
127
+ }
128
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -30,17 +30,28 @@ export function showBanner() {
30
30
  console.log(chalk.dim(` v${version}\n`));
31
31
  console.log(chalk.bold(" Usage:"));
32
32
  console.log(` ${chalk.green("mthds")} ${chalk.yellow("<command>")} [options]\n`);
33
- console.log(chalk.bold(" Commands:"));
34
- console.log(` ${chalk.yellow("install <slug>")} Install a method`);
35
- console.log(` ${chalk.yellow("setup runner <name>")} Install a runner`);
36
- console.log(` ${chalk.yellow("config set <key> <val>")} Set a config value`);
37
- console.log(` ${chalk.yellow("config get <key>")} Get a config value`);
38
- console.log(` ${chalk.yellow("config list")} List all config values`);
39
- console.log(` ${chalk.yellow("--help")} Show this help message`);
40
- console.log(` ${chalk.yellow("--version")} Show version\n`);
33
+ console.log(chalk.bold(" Pipeline:"));
34
+ console.log(` ${chalk.yellow("run <target>")} Execute a pipeline`);
35
+ console.log(` ${chalk.yellow("build pipe <brief>")} Build a pipeline from a prompt`);
36
+ console.log(` ${chalk.yellow("build runner <bundle>")} Generate Python runner code`);
37
+ console.log(` ${chalk.yellow("build inputs <bundle>")} Generate example input JSON`);
38
+ console.log(` ${chalk.yellow("build output <bundle>")} Generate output schema`);
39
+ console.log(` ${chalk.yellow("validate <target>")} Validate PLX content\n`);
40
+ console.log(chalk.bold(" Runners:"));
41
+ console.log(` ${chalk.yellow("setup runner <name>")} Install a runner`);
42
+ console.log(` ${chalk.yellow("runner set-default <name>")} Set the default runner`);
43
+ console.log(` ${chalk.yellow("runner list")} List available runners\n`);
44
+ console.log(chalk.bold(" Setup:"));
45
+ console.log(` ${chalk.yellow("install <slug>")} Install a method`);
46
+ console.log(` ${chalk.yellow("config set <key> <val>")} Set a config value`);
47
+ console.log(` ${chalk.yellow("config get <key>")} Get a config value`);
48
+ console.log(` ${chalk.yellow("config list")} List all config values\n`);
41
49
  console.log(chalk.bold(" Examples:"));
42
- console.log(` ${chalk.dim("$")} mthds install my-method-slug`);
43
- console.log(` ${chalk.dim("$")} mthds setup runner pipelex\n`);
50
+ console.log(` ${chalk.dim("$")} mthds run hello_world`);
51
+ console.log(` ${chalk.dim("$")} mthds run my_bundle.plx --inputs data.json`);
52
+ console.log(` ${chalk.dim("$")} mthds build pipe "Analyze a CV against a job offer"`);
53
+ console.log(` ${chalk.dim("$")} mthds validate my_bundle.plx`);
54
+ console.log(` ${chalk.dim("$")} mthds install my-method-slug\n`);
44
55
  console.log(chalk.dim(" Docs: https://pipelex.dev/docs\n"));
45
56
  console.log(chalk.bold(" Telemetry:"));
46
57
  console.log(chalk.dim(" Anonymous usage data (method slug + timestamp) is collected\n to help rank methods. No personal info is collected.\n Opt out: DISABLE_TELEMETRY=1\n"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { RunnerType } from "../runners/types.js";
2
+ interface RunOptions {
3
+ pipe?: string;
4
+ inputs?: string;
5
+ output?: string;
6
+ noOutput?: boolean;
7
+ noPrettyPrint?: boolean;
8
+ runner?: RunnerType;
9
+ }
10
+ export declare function runPipeline(target: string, options: RunOptions): Promise<void>;
11
+ export {};
@@ -0,0 +1,44 @@
1
+ import { readFileSync, writeFileSync } from "node:fs";
2
+ import * as p from "@clack/prompts";
3
+ import { printLogo } from "./index.js";
4
+ import { createRunner } from "../runners/registry.js";
5
+ export async function runPipeline(target, options) {
6
+ printLogo();
7
+ p.intro("mthds run");
8
+ const runner = createRunner(options.runner);
9
+ const isBundle = target.endsWith(".plx");
10
+ const request = {};
11
+ if (isBundle) {
12
+ request.plx_content = readFileSync(target, "utf-8");
13
+ if (options.pipe) {
14
+ request.pipe_code = options.pipe;
15
+ }
16
+ }
17
+ else {
18
+ request.pipe_code = target;
19
+ }
20
+ if (options.inputs) {
21
+ request.inputs = JSON.parse(readFileSync(options.inputs, "utf-8"));
22
+ }
23
+ const s = p.spinner();
24
+ s.start("Executing pipeline...");
25
+ try {
26
+ const result = await runner.execute(request);
27
+ s.stop(`Pipeline ${result.pipeline_state.toLowerCase()}.`);
28
+ if (!options.noOutput && options.output) {
29
+ writeFileSync(options.output, JSON.stringify(result, null, 2) + "\n", "utf-8");
30
+ p.log.success(`Output written to ${options.output}`);
31
+ }
32
+ if (!options.noPrettyPrint && result.pipe_output) {
33
+ p.log.info(JSON.stringify(result.pipe_output, null, 2));
34
+ }
35
+ p.outro("Done");
36
+ }
37
+ catch (err) {
38
+ s.stop("Pipeline execution failed.");
39
+ p.log.error(err.message);
40
+ p.outro("");
41
+ process.exit(1);
42
+ }
43
+ }
44
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAYtD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,OAAmB;IAEnB,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAErB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,aAAa,CACX,OAAO,CAAC,MAAM,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACtC,OAAO,CACR,CAAC;YACF,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACjD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runnerSetDefault(name: string): Promise<void>;
2
+ export declare function runnerList(): Promise<void>;
@@ -0,0 +1,59 @@
1
+ import * as p from "@clack/prompts";
2
+ import chalk from "chalk";
3
+ import { printLogo } from "./index.js";
4
+ import { getConfigValue, setConfigValue } from "../config/config.js";
5
+ import { isPipelexInstalled } from "../runtime/check.js";
6
+ const KNOWN_RUNNERS = [
7
+ { type: "api", label: "Pipelex API", builtin: true },
8
+ { type: "pipelex", label: "Pipelex CLI (local)", builtin: false },
9
+ ];
10
+ function isRunnerAvailable(type) {
11
+ switch (type) {
12
+ case "api":
13
+ return true;
14
+ case "pipelex":
15
+ return isPipelexInstalled();
16
+ default:
17
+ return false;
18
+ }
19
+ }
20
+ export async function runnerSetDefault(name) {
21
+ printLogo();
22
+ p.intro("mthds runner set-default");
23
+ const known = KNOWN_RUNNERS.find((r) => r.type === name);
24
+ if (!known) {
25
+ p.log.error(`Unknown runner: ${name}`);
26
+ p.log.info(`Available runners: ${KNOWN_RUNNERS.map((r) => r.type).join(", ")}`);
27
+ p.outro("");
28
+ process.exit(1);
29
+ }
30
+ if (!known.builtin && !isRunnerAvailable(known.type)) {
31
+ p.log.error(`Runner "${name}" is not installed.`);
32
+ p.log.info(`Install it first: mthds setup runner ${name}`);
33
+ p.outro("");
34
+ process.exit(1);
35
+ }
36
+ setConfigValue("runner", name);
37
+ p.log.success(`Default runner set to ${name}.`);
38
+ p.outro("Done");
39
+ }
40
+ export async function runnerList() {
41
+ printLogo();
42
+ p.intro("mthds runner list");
43
+ const { value: currentDefault, source } = getConfigValue("runner");
44
+ const sourceLabel = source === "env" ? " (from env)" : source === "default" ? " (default)" : "";
45
+ p.log.info(`Default runner: ${chalk.bold(currentDefault)}${sourceLabel}\n`);
46
+ for (const r of KNOWN_RUNNERS) {
47
+ const available = isRunnerAvailable(r.type);
48
+ const isDefault = r.type === currentDefault;
49
+ const status = available
50
+ ? chalk.green("installed")
51
+ : r.builtin
52
+ ? chalk.green("built-in")
53
+ : chalk.dim("not installed");
54
+ const defaultMark = isDefault ? chalk.yellow(" (default)") : "";
55
+ p.log.info(` ${chalk.bold(r.type)} — ${r.label} ${status}${defaultMark}`);
56
+ }
57
+ p.outro("Done");
58
+ }
59
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/commands/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,aAAa,GAA4D;IAC7E,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;CAClE,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAgB;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,kBAAkB,EAAE,CAAC;QAC9B;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,sBAAsB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;QACF,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QAClD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAE7B,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,WAAW,GACf,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;IAE5E,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS;YACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1B,CAAC,CAAC,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;gBACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACjC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
@@ -3,23 +3,42 @@ import { isPipelexInstalled } from "../runtime/check.js";
3
3
  import { ensureRuntime } from "../runtime/installer.js";
4
4
  import { shutdown } from "../telemetry/posthog.js";
5
5
  import { printLogo } from "./index.js";
6
+ import { getConfigValue, setConfigValue } from "../config/config.js";
6
7
  export async function installRunner(name) {
7
8
  printLogo();
8
- p.intro("mthds setup");
9
+ p.intro("mthds setup runner");
9
10
  if (name !== "pipelex") {
10
11
  p.log.error(`Unknown runner: ${name}`);
11
- p.log.info("Available runners: pipelex");
12
- p.outro("Done");
12
+ p.log.info("Available runners: api (built-in), pipelex");
13
+ p.outro("");
13
14
  process.exit(1);
14
15
  }
15
16
  if (isPipelexInstalled()) {
16
17
  p.log.success("pipelex is already installed.");
17
- p.outro("Done");
18
- await shutdown();
19
- return;
20
18
  }
21
- await ensureRuntime();
22
- p.log.success("pipelex installed successfully.");
19
+ else {
20
+ await ensureRuntime();
21
+ p.log.success("pipelex installed successfully.");
22
+ }
23
+ // Ask to set as default
24
+ const { value: currentDefault } = getConfigValue("runner");
25
+ if (currentDefault === name) {
26
+ p.log.info(`${name} is already the default runner.`);
27
+ }
28
+ else {
29
+ const makeDefault = await p.confirm({
30
+ message: `Set ${name} as the default runner? (current default: ${currentDefault})`,
31
+ initialValue: false,
32
+ });
33
+ if (p.isCancel(makeDefault)) {
34
+ p.cancel("Cancelled.");
35
+ process.exit(0);
36
+ }
37
+ if (makeDefault) {
38
+ setConfigValue("runner", name);
39
+ p.log.success(`Default runner set to ${name}.`);
40
+ }
41
+ }
23
42
  p.outro("Done");
24
43
  await shutdown();
25
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,kBAAkB,EAAE,EAAE,CAAC;QACzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChB,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,aAAa,EAAE,CAAC;IACtB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAE9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,kBAAkB,EAAE,EAAE,CAAC;QACzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,EAAE,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;IAED,wBAAwB;IACxB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE3D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YAClC,OAAO,EAAE,OAAO,IAAI,6CAA6C,cAAc,GAAG;YAClF,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { RunnerType } from "../runners/types.js";
2
+ export declare function validatePlx(target: string, options: {
3
+ pipe?: string;
4
+ bundle?: string;
5
+ runner?: RunnerType;
6
+ }): Promise<void>;
@@ -0,0 +1,41 @@
1
+ import { readFileSync } from "node:fs";
2
+ import * as p from "@clack/prompts";
3
+ import { printLogo } from "./index.js";
4
+ import { createRunner } from "../runners/registry.js";
5
+ export async function validatePlx(target, options) {
6
+ printLogo();
7
+ p.intro("mthds validate");
8
+ const runner = createRunner(options.runner);
9
+ // Resolve the PLX content from either the positional target or --bundle
10
+ const bundlePath = options.bundle ?? (target.endsWith(".plx") ? target : undefined);
11
+ if (!bundlePath) {
12
+ p.log.error("Provide a .plx bundle file to validate (positional or --bundle).");
13
+ p.outro("");
14
+ process.exit(1);
15
+ }
16
+ const plxContent = readFileSync(bundlePath, "utf-8");
17
+ const s = p.spinner();
18
+ s.start("Validating...");
19
+ try {
20
+ const result = await runner.validate({ plx_content: plxContent });
21
+ if (result.success) {
22
+ s.stop("Validation passed.");
23
+ p.log.success(result.message);
24
+ }
25
+ else {
26
+ s.stop("Validation failed.");
27
+ p.log.error(result.message);
28
+ }
29
+ p.outro("Done");
30
+ if (!result.success) {
31
+ process.exit(1);
32
+ }
33
+ }
34
+ catch (err) {
35
+ s.stop("Validation failed.");
36
+ p.log.error(err.message);
37
+ p.outro("");
38
+ process.exit(1);
39
+ }
40
+ }
41
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,OAAgE;IAEhE,SAAS,EAAE,CAAC;IACZ,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C,wEAAwE;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEpF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,CAAC,CAAC,GAAG,CAAC,KAAK,CACT,kEAAkE,CACnE,CAAC;QACF,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QAElE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./client/index.js";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./client/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildPipeRequest, BuildPipeResponse, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse } from "./types.js";
2
+ export declare class ApiRunner implements Runner {
3
+ readonly type: RunnerType;
4
+ private readonly baseUrl;
5
+ private readonly apiKey;
6
+ constructor(baseUrl?: string, apiKey?: string);
7
+ private request;
8
+ private get;
9
+ private post;
10
+ health(): Promise<Record<string, unknown>>;
11
+ version(): Promise<Record<string, string>>;
12
+ buildInputs(request: BuildInputsRequest): Promise<unknown>;
13
+ buildOutput(request: BuildOutputRequest): Promise<unknown>;
14
+ buildPipe(request: BuildPipeRequest): Promise<BuildPipeResponse>;
15
+ buildRunner(request: BuildRunnerRequest): Promise<BuildRunnerResponse>;
16
+ execute(request: ExecuteRequest): Promise<PipelineResponse>;
17
+ validate(request: ValidateRequest): Promise<ValidateResponse>;
18
+ }
@@ -0,0 +1,66 @@
1
+ import { loadConfig } from "../config/config.js";
2
+ export class ApiRunner {
3
+ type = "api";
4
+ baseUrl;
5
+ apiKey;
6
+ constructor(baseUrl, apiKey) {
7
+ const config = loadConfig();
8
+ this.baseUrl = (baseUrl ?? config.apiUrl).replace(/\/+$/, "");
9
+ this.apiKey = apiKey ?? config.apiKey;
10
+ }
11
+ // ── HTTP helpers ────────────────────────────────────────────────
12
+ async request(method, path, body) {
13
+ const url = `${this.baseUrl}${path}`;
14
+ const headers = {
15
+ Accept: "application/json",
16
+ };
17
+ if (this.apiKey) {
18
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
19
+ }
20
+ if (body !== undefined) {
21
+ headers["Content-Type"] = "application/json";
22
+ }
23
+ const res = await fetch(url, {
24
+ method,
25
+ headers,
26
+ body: body !== undefined ? JSON.stringify(body) : undefined,
27
+ });
28
+ if (!res.ok) {
29
+ const text = await res.text().catch(() => "");
30
+ throw new Error(`API ${method} ${path} failed (${res.status}): ${text || res.statusText}`);
31
+ }
32
+ return res.json();
33
+ }
34
+ get(path) {
35
+ return this.request("GET", path);
36
+ }
37
+ post(path, body) {
38
+ return this.request("POST", path, body);
39
+ }
40
+ // ── Runner implementation ───────────────────────────────────────
41
+ async health() {
42
+ return this.get("/health");
43
+ }
44
+ async version() {
45
+ return this.get("/api/v1/pipelex_version");
46
+ }
47
+ async buildInputs(request) {
48
+ return this.post("/api/v1/build/inputs", request);
49
+ }
50
+ async buildOutput(request) {
51
+ return this.post("/api/v1/build/output", request);
52
+ }
53
+ async buildPipe(request) {
54
+ return this.post("/api/v1/build/pipe", request);
55
+ }
56
+ async buildRunner(request) {
57
+ return this.post("/api/v1/build/runner", request);
58
+ }
59
+ async execute(request) {
60
+ return this.post("/api/v1/pipeline/execute", request);
61
+ }
62
+ async validate(request) {
63
+ return this.post("/api/v1/validate", request);
64
+ }
65
+ }
66
+ //# sourceMappingURL=api-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-runner.js","sourceRoot":"","sources":["../../src/runners/api-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Runner, RunnerType, BuildInputsRequest, BuildOutputRequest, BuildPipeRequest, BuildPipeResponse, BuildRunnerRequest, BuildRunnerResponse, ExecuteRequest, PipelineResponse, ValidateRequest, ValidateResponse } from "./types.js";
2
+ export declare class PipelexRunner implements Runner {
3
+ readonly type: RunnerType;
4
+ private exec;
5
+ health(): Promise<Record<string, unknown>>;
6
+ version(): Promise<Record<string, string>>;
7
+ buildInputs(_request: BuildInputsRequest): Promise<unknown>;
8
+ buildOutput(_request: BuildOutputRequest): Promise<unknown>;
9
+ buildPipe(request: BuildPipeRequest): Promise<BuildPipeResponse>;
10
+ buildRunner(request: BuildRunnerRequest): Promise<BuildRunnerResponse>;
11
+ execute(request: ExecuteRequest): Promise<PipelineResponse>;
12
+ validate(request: ValidateRequest): Promise<ValidateResponse>;
13
+ }