mthds 0.0.7 → 0.0.9
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/LICENSE +1 -1
- package/README.md +56 -16
- package/dist/agent/commands/build.d.ts +35 -0
- package/dist/agent/commands/build.js +334 -0
- package/dist/agent/commands/build.js.map +1 -0
- package/dist/agent/commands/config.d.ts +6 -0
- package/dist/agent/commands/config.js +50 -0
- package/dist/agent/commands/config.js.map +1 -0
- package/dist/agent/commands/install.d.ts +14 -0
- package/dist/agent/commands/install.js +179 -0
- package/dist/agent/commands/install.js.map +1 -0
- package/dist/agent/commands/pipelex.d.ts +7 -0
- package/dist/agent/commands/pipelex.js +56 -0
- package/dist/agent/commands/pipelex.js.map +1 -0
- package/dist/agent/commands/plxt.d.ts +7 -0
- package/dist/agent/commands/plxt.js +27 -0
- package/dist/agent/commands/plxt.js.map +1 -0
- package/dist/agent/commands/validate.d.ts +15 -0
- package/dist/agent/commands/validate.js +118 -0
- package/dist/agent/commands/validate.js.map +1 -0
- package/dist/agent/output.d.ts +25 -0
- package/dist/agent/output.js +53 -0
- package/dist/agent/output.js.map +1 -0
- package/dist/agent/passthrough.d.ts +5 -0
- package/dist/agent/passthrough.js +19 -0
- package/dist/agent/passthrough.js.map +1 -0
- package/dist/agent-cli.d.ts +8 -0
- package/dist/agent-cli.js +237 -0
- package/dist/agent-cli.js.map +1 -0
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.js +305 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/{commands → cli/commands}/config.js +9 -6
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/index.js +58 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/install.js +276 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/package/init.d.ts +3 -0
- package/dist/cli/commands/package/init.js +108 -0
- package/dist/cli/commands/package/init.js.map +1 -0
- package/dist/cli/commands/package/list.d.ts +3 -0
- package/dist/cli/commands/package/list.js +58 -0
- package/dist/cli/commands/package/list.js.map +1 -0
- package/dist/cli/commands/package/validate.d.ts +3 -0
- package/dist/cli/commands/package/validate.js +76 -0
- package/dist/cli/commands/package/validate.js.map +1 -0
- package/dist/cli/commands/run.d.ts +12 -0
- package/dist/cli/commands/run.js +95 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.js +164 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/utils.d.ts +10 -0
- package/dist/cli/commands/utils.js +41 -0
- package/dist/cli/commands/utils.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +10 -0
- package/dist/cli/commands/validate.js +93 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli.js +236 -95
- package/dist/cli.js.map +1 -1
- package/dist/client/client.js +2 -2
- package/dist/client/client.js.map +1 -1
- package/dist/config/config.d.ts +5 -20
- package/dist/config/config.js +5 -78
- package/dist/config/config.js.map +1 -1
- package/dist/config/credentials.d.ts +25 -0
- package/dist/config/credentials.js +230 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/installer/agents/registry.d.ts +12 -0
- package/dist/installer/agents/registry.js +78 -0
- package/dist/installer/agents/registry.js.map +1 -0
- package/dist/installer/agents/types.d.ts +16 -0
- package/dist/installer/agents/types.js +6 -0
- package/dist/installer/agents/types.js.map +1 -0
- package/dist/installer/resolver/address.d.ts +2 -0
- package/dist/{resolver → installer/resolver}/address.js +6 -4
- package/dist/installer/resolver/address.js.map +1 -0
- package/dist/{resolver → installer/resolver}/github.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/github.js +44 -27
- package/dist/installer/resolver/github.js.map +1 -0
- package/dist/installer/resolver/index.d.ts +6 -0
- package/dist/{resolver → installer/resolver}/index.js +1 -1
- package/dist/installer/resolver/index.js.map +1 -0
- package/dist/{resolver → installer/resolver}/local.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/local.js +12 -19
- package/dist/installer/resolver/local.js.map +1 -0
- package/dist/installer/runtime/check.js.map +1 -0
- package/dist/installer/runtime/installer.js.map +1 -0
- package/dist/installer/runtime/spawn.js.map +1 -0
- package/dist/{telemetry → installer/telemetry}/posthog.d.ts +4 -6
- package/dist/installer/telemetry/posthog.js +56 -0
- package/dist/installer/telemetry/posthog.js.map +1 -0
- package/dist/package/bundle-metadata.d.ts +8 -0
- package/dist/package/bundle-metadata.js +2 -0
- package/dist/package/bundle-metadata.js.map +1 -0
- package/dist/package/bundle-scanner.d.ts +18 -0
- package/dist/package/bundle-scanner.js +77 -0
- package/dist/package/bundle-scanner.js.map +1 -0
- package/dist/package/dependency-resolver.d.ts +32 -0
- package/dist/package/dependency-resolver.js +298 -0
- package/dist/package/dependency-resolver.js.map +1 -0
- package/dist/package/discovery.d.ts +9 -0
- package/dist/package/discovery.js +32 -0
- package/dist/package/discovery.js.map +1 -0
- package/dist/package/exceptions.d.ts +36 -0
- package/dist/package/exceptions.js +73 -0
- package/dist/package/exceptions.js.map +1 -0
- package/dist/package/lock-file.d.ts +27 -0
- package/dist/package/lock-file.js +137 -0
- package/dist/package/lock-file.js.map +1 -0
- package/dist/package/manifest/convert.d.ts +14 -0
- package/dist/package/manifest/convert.js +83 -0
- package/dist/package/manifest/convert.js.map +1 -0
- package/dist/package/manifest/parser.d.ts +9 -0
- package/dist/package/manifest/parser.js +261 -0
- package/dist/package/manifest/parser.js.map +1 -0
- package/dist/package/manifest/schema.d.ts +71 -0
- package/dist/package/manifest/schema.js +73 -0
- package/dist/package/manifest/schema.js.map +1 -0
- package/dist/{resolver → package/manifest}/types.d.ts +4 -7
- package/dist/{resolver → package/manifest}/types.js.map +1 -1
- package/dist/{resolver → package/manifest}/validate.d.ts +0 -5
- package/dist/{resolver → package/manifest}/validate.js +25 -38
- package/dist/package/manifest/validate.js.map +1 -0
- package/dist/package/manifest/validation.d.ts +10 -0
- package/dist/package/manifest/validation.js +34 -0
- package/dist/package/manifest/validation.js.map +1 -0
- package/dist/package/package-cache.d.ts +24 -0
- package/dist/package/package-cache.js +92 -0
- package/dist/package/package-cache.js.map +1 -0
- package/dist/package/qualified-ref.d.ts +41 -0
- package/dist/package/qualified-ref.js +105 -0
- package/dist/package/qualified-ref.js.map +1 -0
- package/dist/package/semver.d.ts +33 -0
- package/dist/package/semver.js +77 -0
- package/dist/package/semver.js.map +1 -0
- package/dist/package/vcs-resolver.d.ts +19 -0
- package/dist/package/vcs-resolver.js +115 -0
- package/dist/package/vcs-resolver.js.map +1 -0
- package/dist/package/visibility.d.ts +25 -0
- package/dist/package/visibility.js +132 -0
- package/dist/package/visibility.js.map +1 -0
- package/dist/runners/api-runner.d.ts +3 -0
- package/dist/runners/api-runner.js +9 -1
- package/dist/runners/api-runner.js.map +1 -1
- package/dist/runners/pipelex-runner.d.ts +16 -2
- package/dist/runners/pipelex-runner.js +155 -41
- package/dist/runners/pipelex-runner.js.map +1 -1
- package/dist/runners/registry.d.ts +1 -1
- package/dist/runners/registry.js +5 -4
- package/dist/runners/registry.js.map +1 -1
- package/dist/runners/types.d.ts +17 -10
- package/dist/runners/types.js +6 -1
- package/dist/runners/types.js.map +1 -1
- package/package.json +7 -4
- package/dist/agents/claude-code.d.ts +0 -2
- package/dist/agents/claude-code.js +0 -36
- package/dist/agents/claude-code.js.map +0 -1
- package/dist/agents/cursor.d.ts +0 -2
- package/dist/agents/cursor.js +0 -11
- package/dist/agents/cursor.js.map +0 -1
- package/dist/agents/github-copilot.d.ts +0 -2
- package/dist/agents/github-copilot.js +0 -11
- package/dist/agents/github-copilot.js.map +0 -1
- package/dist/agents/registry.d.ts +0 -4
- package/dist/agents/registry.js +0 -24
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/types.d.ts +0 -25
- package/dist/agents/types.js +0 -11
- package/dist/agents/types.js.map +0 -1
- package/dist/agents/windsurf.d.ts +0 -2
- package/dist/agents/windsurf.js +0 -11
- package/dist/agents/windsurf.js.map +0 -1
- package/dist/commands/build.d.ts +0 -19
- package/dist/commands/build.js +0 -128
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/index.js +0 -63
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/install.js +0 -259
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/run.d.ts +0 -11
- package/dist/commands/run.js +0 -44
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/runner.d.ts +0 -2
- package/dist/commands/runner.js +0 -59
- package/dist/commands/runner.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -1
- package/dist/commands/setup.js +0 -45
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/telemetry.d.ts +0 -3
- package/dist/commands/telemetry.js +0 -49
- package/dist/commands/telemetry.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -6
- package/dist/commands/validate.js +0 -41
- package/dist/commands/validate.js.map +0 -1
- package/dist/resolver/address.d.ts +0 -2
- package/dist/resolver/address.js.map +0 -1
- package/dist/resolver/github.js.map +0 -1
- package/dist/resolver/index.d.ts +0 -6
- package/dist/resolver/index.js.map +0 -1
- package/dist/resolver/local.js.map +0 -1
- package/dist/resolver/validate.js.map +0 -1
- package/dist/runtime/check.js.map +0 -1
- package/dist/runtime/installer.js.map +0 -1
- package/dist/runtime/spawn.js.map +0 -1
- package/dist/supabase/client.d.ts +0 -4
- package/dist/supabase/client.js +0 -5
- package/dist/supabase/client.js.map +0 -1
- package/dist/supabase/methods.d.ts +0 -2
- package/dist/supabase/methods.js +0 -13
- package/dist/supabase/methods.js.map +0 -1
- package/dist/supabase/types.d.ts +0 -30
- package/dist/supabase/types.js +0 -2
- package/dist/supabase/types.js.map +0 -1
- package/dist/telemetry/posthog.js +0 -117
- package/dist/telemetry/posthog.js.map +0 -1
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/index.d.ts +0 -0
- /package/dist/{commands → cli/commands}/install.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/check.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/check.js +0 -0
- /package/dist/{runtime → installer/runtime}/installer.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/installer.js +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.js +0 -0
- /package/dist/{resolver → package/manifest}/types.js +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RunnerType } from "../runners/types.js";
|
|
2
|
+
export interface MthdsCredentials {
|
|
3
|
+
runner: RunnerType;
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
apiKey: string;
|
|
6
|
+
telemetry: boolean;
|
|
7
|
+
}
|
|
8
|
+
export type CredentialSource = "env" | "file" | "default";
|
|
9
|
+
export declare const VALID_KEYS: string[];
|
|
10
|
+
export declare function resolveKey(cliKey: string): keyof MthdsCredentials | undefined;
|
|
11
|
+
export declare function loadCredentials(): MthdsCredentials;
|
|
12
|
+
export declare function getCredentialValue(key: keyof MthdsCredentials): {
|
|
13
|
+
value: string;
|
|
14
|
+
source: CredentialSource;
|
|
15
|
+
};
|
|
16
|
+
export declare function setCredentialValue(key: keyof MthdsCredentials, value: string): void;
|
|
17
|
+
export declare function listCredentials(): Array<{
|
|
18
|
+
key: string;
|
|
19
|
+
cliKey: string;
|
|
20
|
+
value: string;
|
|
21
|
+
source: CredentialSource;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function isTelemetryEnabled(): boolean;
|
|
24
|
+
export declare function setTelemetryEnabled(enabled: boolean): void;
|
|
25
|
+
export declare function getTelemetrySource(): CredentialSource;
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, } from "node:fs";
|
|
4
|
+
import { Runners } from "../runners/types.js";
|
|
5
|
+
// ── Paths ──────────────────────────────────────────────────────────
|
|
6
|
+
const CONFIG_DIR = join(homedir(), ".mthds");
|
|
7
|
+
const CREDENTIALS_PATH = join(CONFIG_DIR, "credentials");
|
|
8
|
+
// Legacy paths (for auto-migration)
|
|
9
|
+
const LEGACY_CONFIG_PATH = join(CONFIG_DIR, "config.json");
|
|
10
|
+
const LEGACY_ENV_LOCAL_PATH = join(CONFIG_DIR, ".env.local");
|
|
11
|
+
// ── Credential keys ────────────────────────────────────────────────
|
|
12
|
+
/** Map from credential key to env var name */
|
|
13
|
+
const ENV_NAMES = {
|
|
14
|
+
apiUrl: "PIPELEX_API_URL",
|
|
15
|
+
apiKey: "PIPELEX_API_KEY",
|
|
16
|
+
runner: "MTHDS_RUNNER",
|
|
17
|
+
telemetry: "DISABLE_TELEMETRY",
|
|
18
|
+
};
|
|
19
|
+
/** Map from credential key to file key (used in ~/.mthds/credentials) */
|
|
20
|
+
const FILE_KEYS = {
|
|
21
|
+
apiUrl: "PIPELEX_API_URL",
|
|
22
|
+
apiKey: "PIPELEX_API_KEY",
|
|
23
|
+
runner: "MTHDS_RUNNER",
|
|
24
|
+
telemetry: "DISABLE_TELEMETRY",
|
|
25
|
+
};
|
|
26
|
+
/** Defaults */
|
|
27
|
+
const DEFAULTS = {
|
|
28
|
+
runner: Runners.API,
|
|
29
|
+
apiUrl: "https://api.pipelex.com",
|
|
30
|
+
apiKey: "",
|
|
31
|
+
telemetry: true,
|
|
32
|
+
};
|
|
33
|
+
/** Map from CLI flag names (kebab-case) to credential keys */
|
|
34
|
+
const KEY_ALIASES = {
|
|
35
|
+
runner: "runner",
|
|
36
|
+
"api-url": "apiUrl",
|
|
37
|
+
"api-key": "apiKey",
|
|
38
|
+
telemetry: "telemetry",
|
|
39
|
+
};
|
|
40
|
+
export const VALID_KEYS = Object.keys(KEY_ALIASES);
|
|
41
|
+
export function resolveKey(cliKey) {
|
|
42
|
+
return KEY_ALIASES[cliKey];
|
|
43
|
+
}
|
|
44
|
+
// ── Dotenv parser / serializer ─────────────────────────────────────
|
|
45
|
+
function parseDotenv(content) {
|
|
46
|
+
const result = {};
|
|
47
|
+
for (const line of content.split("\n")) {
|
|
48
|
+
const trimmed = line.trim();
|
|
49
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
50
|
+
continue;
|
|
51
|
+
const eqIndex = trimmed.indexOf("=");
|
|
52
|
+
if (eqIndex === -1)
|
|
53
|
+
continue;
|
|
54
|
+
const key = trimmed.slice(0, eqIndex).trim();
|
|
55
|
+
const value = trimmed.slice(eqIndex + 1).trim();
|
|
56
|
+
result[key] = value;
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
function serializeDotenv(entries) {
|
|
61
|
+
const lines = [];
|
|
62
|
+
for (const [key, value] of Object.entries(entries)) {
|
|
63
|
+
lines.push(`${key}=${value}`);
|
|
64
|
+
}
|
|
65
|
+
return lines.join("\n") + "\n";
|
|
66
|
+
}
|
|
67
|
+
// ── File I/O ───────────────────────────────────────────────────────
|
|
68
|
+
function readCredentialsFile() {
|
|
69
|
+
migrateIfNeeded();
|
|
70
|
+
if (!existsSync(CREDENTIALS_PATH))
|
|
71
|
+
return {};
|
|
72
|
+
try {
|
|
73
|
+
return parseDotenv(readFileSync(CREDENTIALS_PATH, "utf-8"));
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function writeCredentialsFile(entries) {
|
|
80
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
81
|
+
writeFileSync(CREDENTIALS_PATH, serializeDotenv(entries), "utf-8");
|
|
82
|
+
}
|
|
83
|
+
// ── Migration ──────────────────────────────────────────────────────
|
|
84
|
+
let migrationDone = false;
|
|
85
|
+
function migrateIfNeeded() {
|
|
86
|
+
if (migrationDone)
|
|
87
|
+
return;
|
|
88
|
+
migrationDone = true;
|
|
89
|
+
if (existsSync(CREDENTIALS_PATH))
|
|
90
|
+
return;
|
|
91
|
+
const migrated = {};
|
|
92
|
+
let didMigrate = false;
|
|
93
|
+
// Migrate from config.json
|
|
94
|
+
if (existsSync(LEGACY_CONFIG_PATH)) {
|
|
95
|
+
try {
|
|
96
|
+
const raw = readFileSync(LEGACY_CONFIG_PATH, "utf-8");
|
|
97
|
+
const config = JSON.parse(raw);
|
|
98
|
+
if (typeof config.runner === "string") {
|
|
99
|
+
migrated["MTHDS_RUNNER"] = config.runner;
|
|
100
|
+
}
|
|
101
|
+
if (typeof config.apiUrl === "string") {
|
|
102
|
+
migrated["PIPELEX_API_URL"] = config.apiUrl;
|
|
103
|
+
}
|
|
104
|
+
if (typeof config.apiKey === "string") {
|
|
105
|
+
migrated["PIPELEX_API_KEY"] = config.apiKey;
|
|
106
|
+
}
|
|
107
|
+
if (typeof config.telemetry === "boolean") {
|
|
108
|
+
migrated["DISABLE_TELEMETRY"] = config.telemetry ? "0" : "1";
|
|
109
|
+
}
|
|
110
|
+
didMigrate = true;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// ignore parse errors
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Migrate from .env.local (telemetry flag)
|
|
117
|
+
if (existsSync(LEGACY_ENV_LOCAL_PATH)) {
|
|
118
|
+
try {
|
|
119
|
+
const envEntries = parseDotenv(readFileSync(LEGACY_ENV_LOCAL_PATH, "utf-8"));
|
|
120
|
+
if (envEntries["DISABLE_TELEMETRY"]) {
|
|
121
|
+
migrated["DISABLE_TELEMETRY"] = envEntries["DISABLE_TELEMETRY"];
|
|
122
|
+
}
|
|
123
|
+
didMigrate = true;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// ignore parse errors
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (didMigrate) {
|
|
130
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
131
|
+
writeFileSync(CREDENTIALS_PATH, serializeDotenv(migrated), "utf-8");
|
|
132
|
+
// Remove legacy files
|
|
133
|
+
try {
|
|
134
|
+
if (existsSync(LEGACY_CONFIG_PATH))
|
|
135
|
+
unlinkSync(LEGACY_CONFIG_PATH);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// ignore
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
if (existsSync(LEGACY_ENV_LOCAL_PATH))
|
|
142
|
+
unlinkSync(LEGACY_ENV_LOCAL_PATH);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// ignore
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ── Public API ─────────────────────────────────────────────────────
|
|
150
|
+
function coerceValue(key, raw) {
|
|
151
|
+
if (key === "telemetry") {
|
|
152
|
+
// DISABLE_TELEMETRY=1 means telemetry is OFF
|
|
153
|
+
return raw !== "1";
|
|
154
|
+
}
|
|
155
|
+
return raw;
|
|
156
|
+
}
|
|
157
|
+
function toFileValue(key, value) {
|
|
158
|
+
if (key === "telemetry") {
|
|
159
|
+
return value ? "0" : "1";
|
|
160
|
+
}
|
|
161
|
+
return String(value);
|
|
162
|
+
}
|
|
163
|
+
export function loadCredentials() {
|
|
164
|
+
const file = readCredentialsFile();
|
|
165
|
+
const merged = { ...DEFAULTS };
|
|
166
|
+
// Apply file values
|
|
167
|
+
for (const [key, fileKey] of Object.entries(FILE_KEYS)) {
|
|
168
|
+
if (fileKey in file) {
|
|
169
|
+
merged[key] = coerceValue(key, file[fileKey]);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Env vars take precedence
|
|
173
|
+
for (const [key, envName] of Object.entries(ENV_NAMES)) {
|
|
174
|
+
const envVal = process.env[envName];
|
|
175
|
+
if (envVal !== undefined) {
|
|
176
|
+
merged[key] = coerceValue(key, envVal);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return merged;
|
|
180
|
+
}
|
|
181
|
+
export function getCredentialValue(key) {
|
|
182
|
+
const envName = ENV_NAMES[key];
|
|
183
|
+
const envVal = process.env[envName];
|
|
184
|
+
if (envVal !== undefined) {
|
|
185
|
+
return { value: envVal, source: "env" };
|
|
186
|
+
}
|
|
187
|
+
const file = readCredentialsFile();
|
|
188
|
+
const fileKey = FILE_KEYS[key];
|
|
189
|
+
if (fileKey in file) {
|
|
190
|
+
return { value: file[fileKey], source: "file" };
|
|
191
|
+
}
|
|
192
|
+
const defaultVal = DEFAULTS[key];
|
|
193
|
+
if (key === "telemetry") {
|
|
194
|
+
return { value: defaultVal ? "0" : "1", source: "default" };
|
|
195
|
+
}
|
|
196
|
+
return { value: String(defaultVal), source: "default" };
|
|
197
|
+
}
|
|
198
|
+
export function setCredentialValue(key, value) {
|
|
199
|
+
const file = readCredentialsFile();
|
|
200
|
+
const fileKey = FILE_KEYS[key];
|
|
201
|
+
file[fileKey] = toFileValue(key, key === "telemetry" ? coerceTelemetryInput(value) : value);
|
|
202
|
+
writeCredentialsFile(file);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Normalize user-facing telemetry input to a boolean.
|
|
206
|
+
* Accepts "true"/"false", "1"/"0", "yes"/"no", "on"/"off".
|
|
207
|
+
*/
|
|
208
|
+
function coerceTelemetryInput(value) {
|
|
209
|
+
const lower = value.toLowerCase();
|
|
210
|
+
return ["true", "1", "yes", "on"].includes(lower);
|
|
211
|
+
}
|
|
212
|
+
export function listCredentials() {
|
|
213
|
+
const result = [];
|
|
214
|
+
for (const [cliKey, credKey] of Object.entries(KEY_ALIASES)) {
|
|
215
|
+
const { value, source } = getCredentialValue(credKey);
|
|
216
|
+
result.push({ key: credKey, cliKey, value, source });
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
// ── Telemetry helpers (for PostHog module) ─────────────────────────
|
|
221
|
+
export function isTelemetryEnabled() {
|
|
222
|
+
return loadCredentials().telemetry;
|
|
223
|
+
}
|
|
224
|
+
export function setTelemetryEnabled(enabled) {
|
|
225
|
+
setCredentialValue("telemetry", enabled ? "true" : "false");
|
|
226
|
+
}
|
|
227
|
+
export function getTelemetrySource() {
|
|
228
|
+
return getCredentialValue("telemetry").source;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Agent, AgentHandler } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generate an executable CLI shim for a method in ~/.mthds/bin/.
|
|
4
|
+
*
|
|
5
|
+
* The shim allows invoking a method directly by name, e.g.:
|
|
6
|
+
* extract-contract-terms --inputs '{"text": "..."}'
|
|
7
|
+
*
|
|
8
|
+
* On Windows, a .cmd shim is also generated.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateShim(name: string, installDir: string): void;
|
|
11
|
+
export declare function getAllAgents(): AgentHandler[];
|
|
12
|
+
export declare function getAgentHandler(agent: Agent): AgentHandler;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { join, resolve, dirname, sep } from "node:path";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
4
|
+
/**
|
|
5
|
+
* Generate an executable CLI shim for a method in ~/.mthds/bin/.
|
|
6
|
+
*
|
|
7
|
+
* The shim allows invoking a method directly by name, e.g.:
|
|
8
|
+
* extract-contract-terms --inputs '{"text": "..."}'
|
|
9
|
+
*
|
|
10
|
+
* On Windows, a .cmd shim is also generated.
|
|
11
|
+
*/
|
|
12
|
+
export function generateShim(name, installDir) {
|
|
13
|
+
const binDir = join(homedir(), ".mthds", "bin");
|
|
14
|
+
mkdirSync(binDir, { recursive: true });
|
|
15
|
+
const shimPath = join(binDir, name);
|
|
16
|
+
const escapedDir = installDir.replace(/'/g, "'\\''");
|
|
17
|
+
const shimContent = [
|
|
18
|
+
"#!/bin/sh",
|
|
19
|
+
`exec pipelex-agent run pipe "$@" -L '${escapedDir}'`,
|
|
20
|
+
"",
|
|
21
|
+
].join("\n");
|
|
22
|
+
writeFileSync(shimPath, shimContent, { mode: 0o755 });
|
|
23
|
+
// On Windows, also generate a .cmd shim
|
|
24
|
+
if (process.platform === "win32") {
|
|
25
|
+
const cmdPath = join(binDir, `${name}.cmd`);
|
|
26
|
+
const cmdEscapedDir = installDir.replace(/%/g, "%%").replace(/"/g, '""');
|
|
27
|
+
const cmdContent = [
|
|
28
|
+
"@echo off",
|
|
29
|
+
`pipelex-agent run pipe %* -L "${cmdEscapedDir}"`,
|
|
30
|
+
"",
|
|
31
|
+
].join("\r\n");
|
|
32
|
+
writeFileSync(cmdPath, cmdContent, "utf-8");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function writeMethodFiles(options) {
|
|
36
|
+
const { repo } = options;
|
|
37
|
+
const targetDir = resolve(options.targetDir);
|
|
38
|
+
mkdirSync(targetDir, { recursive: true });
|
|
39
|
+
for (const method of repo.methods) {
|
|
40
|
+
const installDir = resolve(join(targetDir, method.name));
|
|
41
|
+
if (!installDir.startsWith(targetDir + sep)) {
|
|
42
|
+
throw new Error(`Path traversal detected: name "${method.name}" escapes target directory.`);
|
|
43
|
+
}
|
|
44
|
+
mkdirSync(installDir, { recursive: true });
|
|
45
|
+
writeFileSync(join(installDir, "METHODS.toml"), method.rawManifest, "utf-8");
|
|
46
|
+
for (const file of method.files) {
|
|
47
|
+
const filePath = resolve(join(installDir, file.relativePath));
|
|
48
|
+
if (!filePath.startsWith(installDir + sep)) {
|
|
49
|
+
throw new Error(`Path traversal detected: "${file.relativePath}" escapes install directory.`);
|
|
50
|
+
}
|
|
51
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
52
|
+
writeFileSync(filePath, file.content, "utf-8");
|
|
53
|
+
}
|
|
54
|
+
generateShim(method.name, installDir);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const defaultHandler = (id) => ({
|
|
58
|
+
id,
|
|
59
|
+
async installMethod(options) {
|
|
60
|
+
writeMethodFiles(options);
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
const handlers = {
|
|
64
|
+
"claude-code": defaultHandler("claude-code"),
|
|
65
|
+
cursor: defaultHandler("cursor"),
|
|
66
|
+
codex: defaultHandler("codex"),
|
|
67
|
+
};
|
|
68
|
+
export function getAllAgents() {
|
|
69
|
+
return Object.values(handlers);
|
|
70
|
+
}
|
|
71
|
+
export function getAgentHandler(agent) {
|
|
72
|
+
const handler = handlers[agent];
|
|
73
|
+
if (!handler) {
|
|
74
|
+
throw new Error(`Unknown agent: ${agent}`);
|
|
75
|
+
}
|
|
76
|
+
return handler;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ResolvedRepo } from "../../package/manifest/types.js";
|
|
2
|
+
export type Agent = "claude-code" | "cursor" | "codex";
|
|
3
|
+
export declare enum InstallLocation {
|
|
4
|
+
Local = "local",
|
|
5
|
+
Global = "global"
|
|
6
|
+
}
|
|
7
|
+
export interface InstallMethodOptions {
|
|
8
|
+
readonly repo: ResolvedRepo;
|
|
9
|
+
readonly agent: Agent;
|
|
10
|
+
readonly location: InstallLocation;
|
|
11
|
+
readonly targetDir: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AgentHandler {
|
|
14
|
+
readonly id: Agent;
|
|
15
|
+
installMethod(options: InstallMethodOptions): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/installer/agents/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
const VALID_SEGMENT = /^[a-zA-Z0-9._-]+$/;
|
|
2
2
|
export function parseAddress(input) {
|
|
3
3
|
let raw = input.trim();
|
|
4
|
-
// Strip
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
// Strip full GitHub URL prefixes
|
|
5
|
+
for (const prefix of ["https://github.com/", "http://github.com/", "github.com/"]) {
|
|
6
|
+
if (raw.startsWith(prefix)) {
|
|
7
|
+
raw = raw.slice(prefix.length);
|
|
8
|
+
break;
|
|
9
|
+
}
|
|
8
10
|
}
|
|
9
11
|
// Strip trailing slash
|
|
10
12
|
if (raw.endsWith("/")) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/installer/resolver/address.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAEvB,iCAAiC;IACjC,KAAK,MAAM,MAAM,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,CAAC;QAClF,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM;QACR,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,wDAAwD,CAClF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,8DAA8D,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ParsedAddress, ResolvedRepo } from "
|
|
1
|
+
import type { ParsedAddress, ResolvedRepo } from "../../package/manifest/types.js";
|
|
2
2
|
export declare function resolveFromGitHub(parsed: ParsedAddress): Promise<ResolvedRepo>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { validateManifest } from "
|
|
3
|
-
import { validateSlug } from "./validate.js";
|
|
2
|
+
import { validateManifest } from "../../package/manifest/validate.js";
|
|
4
3
|
function detectAuth() {
|
|
5
4
|
const token = process.env["GITHUB_TOKEN"];
|
|
6
5
|
if (token) {
|
|
@@ -17,11 +16,24 @@ function detectAuth() {
|
|
|
17
16
|
}
|
|
18
17
|
async function githubFetch(auth, apiPath) {
|
|
19
18
|
if (auth.type === "gh") {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
try {
|
|
20
|
+
const result = execFileSync("gh", ["api", apiPath], {
|
|
21
|
+
encoding: "utf-8",
|
|
22
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
23
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
24
|
+
});
|
|
25
|
+
return JSON.parse(result);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const stderr = err?.stderr?.toString() ?? "";
|
|
29
|
+
if (stderr.includes("404") || stderr.includes("Not Found")) {
|
|
30
|
+
throw new Error(`Not found: ${apiPath}.`);
|
|
31
|
+
}
|
|
32
|
+
if (stderr.includes("403") || stderr.includes("rate limit")) {
|
|
33
|
+
throw new Error(`GitHub API rate limit or permission error for ${apiPath}. Try setting GITHUB_TOKEN.`);
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`GitHub API error for ${apiPath}: ${stderr.trim() || err.message}`);
|
|
36
|
+
}
|
|
25
37
|
}
|
|
26
38
|
const url = `https://api.github.com/${apiPath}`;
|
|
27
39
|
const headers = {
|
|
@@ -100,33 +112,28 @@ async function downloadFilesParallel(auth, org, repo, filePaths, basePath, concu
|
|
|
100
112
|
}
|
|
101
113
|
return results;
|
|
102
114
|
}
|
|
103
|
-
async function resolveOneMethod(auth, org, repo, methodsPath,
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
if (!slugResult.valid) {
|
|
107
|
-
return { skipped: { slug, errors: [slugResult.error] } };
|
|
108
|
-
}
|
|
109
|
-
const slugDir = `${methodsPath}/${slug}`;
|
|
110
|
-
const tomlPath = `${slugDir}/METHODS.toml`;
|
|
115
|
+
async function resolveOneMethod(auth, org, repo, methodsPath, dirName) {
|
|
116
|
+
const dirPath = `${methodsPath}/${dirName}`;
|
|
117
|
+
const tomlPath = `${dirPath}/METHODS.toml`;
|
|
111
118
|
// Fetch METHODS.toml
|
|
112
119
|
let rawToml;
|
|
113
120
|
try {
|
|
114
121
|
rawToml = await fetchFileContent(auth, org, repo, tomlPath);
|
|
115
122
|
}
|
|
116
123
|
catch {
|
|
117
|
-
return { skipped: {
|
|
124
|
+
return { skipped: { dirName, errors: [`No METHODS.toml found at ${tomlPath}.`] } };
|
|
118
125
|
}
|
|
119
126
|
// Validate manifest
|
|
120
127
|
const result = validateManifest(rawToml);
|
|
121
128
|
if (!result.valid || !result.manifest) {
|
|
122
|
-
return { skipped: {
|
|
129
|
+
return { skipped: { dirName, errors: result.errors } };
|
|
123
130
|
}
|
|
124
131
|
// Find and download .mthds files
|
|
125
|
-
const mthdPaths = await listMthdFiles(auth, org, repo,
|
|
126
|
-
const files = await downloadFilesParallel(auth, org, repo, mthdPaths,
|
|
132
|
+
const mthdPaths = await listMthdFiles(auth, org, repo, dirPath);
|
|
133
|
+
const files = await downloadFilesParallel(auth, org, repo, mthdPaths, dirPath);
|
|
127
134
|
return {
|
|
128
135
|
method: {
|
|
129
|
-
|
|
136
|
+
name: result.manifest.package.name,
|
|
130
137
|
manifest: result.manifest,
|
|
131
138
|
rawManifest: rawToml,
|
|
132
139
|
files,
|
|
@@ -137,8 +144,18 @@ export async function resolveFromGitHub(parsed) {
|
|
|
137
144
|
const auth = detectAuth();
|
|
138
145
|
const { org, repo, subpath } = parsed;
|
|
139
146
|
const methodsPath = subpath ? `${subpath}/methods` : "methods";
|
|
140
|
-
// Check if repo is public
|
|
141
|
-
|
|
147
|
+
// Check if repo exists and is public
|
|
148
|
+
let repoMeta;
|
|
149
|
+
try {
|
|
150
|
+
repoMeta = (await githubFetch(auth, `repos/${org}/${repo}`));
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const msg = err.message;
|
|
154
|
+
if (msg.includes("Not found")) {
|
|
155
|
+
throw new Error(`Repository "${org}/${repo}" not found on GitHub. Check the address and make sure the repository exists.`);
|
|
156
|
+
}
|
|
157
|
+
throw new Error(`Could not connect to GitHub for "${org}/${repo}": ${msg}`);
|
|
158
|
+
}
|
|
142
159
|
const isPublic = !repoMeta.private;
|
|
143
160
|
// List directories inside methods/
|
|
144
161
|
let contents;
|
|
@@ -151,16 +168,16 @@ export async function resolveFromGitHub(parsed) {
|
|
|
151
168
|
if (!Array.isArray(contents)) {
|
|
152
169
|
throw new Error(`No methods/ folder found in ${org}/${repo}${subpath ? `/${subpath}` : ""}. Expected a "methods/" directory.`);
|
|
153
170
|
}
|
|
154
|
-
const
|
|
155
|
-
if (
|
|
171
|
+
const methodDirs = contents.filter((c) => c.type === "dir").map((c) => c.name);
|
|
172
|
+
if (methodDirs.length === 0) {
|
|
156
173
|
throw new Error(`No methods found in methods/ of ${org}/${repo}${subpath ? `/${subpath}` : ""}.`);
|
|
157
174
|
}
|
|
158
175
|
// Resolve each method (parallel, max 5 concurrent)
|
|
159
176
|
const methods = [];
|
|
160
177
|
const skipped = [];
|
|
161
|
-
for (let i = 0; i <
|
|
162
|
-
const batch =
|
|
163
|
-
const results = await Promise.all(batch.map((
|
|
178
|
+
for (let i = 0; i < methodDirs.length; i += 5) {
|
|
179
|
+
const batch = methodDirs.slice(i, i + 5);
|
|
180
|
+
const results = await Promise.all(batch.map((dirName) => resolveOneMethod(auth, org, repo, methodsPath, dirName)));
|
|
164
181
|
for (const r of results) {
|
|
165
182
|
if (r.method)
|
|
166
183
|
methods.push(r.method);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/installer/resolver/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { ParsedAddress, PackageSection, ExportNode, Exports, MethodsManifest, MethodsFile, PackageSource, ResolvedMethod, SkippedMethod, ResolvedRepo, } from "../../package/manifest/types.js";
|
|
2
|
+
export { parseAddress } from "./address.js";
|
|
3
|
+
export { validateManifest } from "../../package/manifest/validate.js";
|
|
4
|
+
export type { ValidationResult } from "../../package/manifest/validate.js";
|
|
5
|
+
export { resolveFromGitHub } from "./github.js";
|
|
6
|
+
export { resolveFromLocal } from "./local.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { parseAddress } from "./address.js";
|
|
2
|
-
export { validateManifest
|
|
2
|
+
export { validateManifest } from "../../package/manifest/validate.js";
|
|
3
3
|
export { resolveFromGitHub } from "./github.js";
|
|
4
4
|
export { resolveFromLocal } from "./local.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/installer/resolver/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ResolvedRepo } from "
|
|
1
|
+
import type { ResolvedRepo } from "../../package/manifest/types.js";
|
|
2
2
|
export declare function resolveFromLocal(dirPath: string): ResolvedRepo;
|