mthds 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/agent/commands/bootstrap.d.ts +15 -0
- package/dist/agent/commands/bootstrap.js +152 -0
- package/dist/agent/commands/bootstrap.js.map +1 -0
- package/dist/agent/commands/update-check.js +7 -7
- package/dist/agent/commands/update-check.js.map +1 -1
- package/dist/agent/commands/upgrade.js +3 -3
- package/dist/agent/commands/upgrade.js.map +1 -1
- package/dist/agent-cli.js +9 -0
- package/dist/agent-cli.js.map +1 -1
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts +27 -5
- package/dist/config/config.js +277 -3
- package/dist/config/config.js.map +1 -1
- package/dist/installer/runtime/installer.d.ts +9 -0
- package/dist/installer/runtime/installer.js +45 -1
- package/dist/installer/runtime/installer.js.map +1 -1
- package/dist/installer/telemetry/posthog.d.ts +2 -2
- package/dist/installer/telemetry/posthog.js +1 -1
- package/dist/installer/telemetry/posthog.js.map +1 -1
- package/package.json +2 -2
- package/dist/config/credentials.d.ts +0 -27
- package/dist/config/credentials.js +0 -261
- package/dist/config/credentials.js.map +0 -1
package/dist/config/config.js
CHANGED
|
@@ -1,6 +1,280 @@
|
|
|
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 CONFIG_PATH = join(CONFIG_DIR, "config");
|
|
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
|
+
const LEGACY_CREDENTIALS_PATH = join(CONFIG_DIR, "credentials");
|
|
12
|
+
// ── Config keys ───────────────────────────────────────────────────
|
|
13
|
+
/** Map from config key to env var name */
|
|
14
|
+
const ENV_NAMES = {
|
|
15
|
+
apiUrl: "PIPELEX_API_URL",
|
|
16
|
+
apiKey: "PIPELEX_API_KEY",
|
|
17
|
+
runner: "MTHDS_RUNNER",
|
|
18
|
+
telemetry: "DISABLE_TELEMETRY",
|
|
19
|
+
autoUpgrade: "MTHDS_AUTO_UPGRADE",
|
|
20
|
+
updateCheck: "MTHDS_UPDATE_CHECK",
|
|
21
|
+
};
|
|
22
|
+
/** Map from config key to file key (used in ~/.mthds/config) */
|
|
23
|
+
const FILE_KEYS = {
|
|
24
|
+
apiUrl: "PIPELEX_API_URL",
|
|
25
|
+
apiKey: "PIPELEX_API_KEY",
|
|
26
|
+
runner: "MTHDS_RUNNER",
|
|
27
|
+
telemetry: "DISABLE_TELEMETRY",
|
|
28
|
+
autoUpgrade: "MTHDS_AUTO_UPGRADE",
|
|
29
|
+
updateCheck: "MTHDS_UPDATE_CHECK",
|
|
30
|
+
};
|
|
31
|
+
/** Defaults */
|
|
32
|
+
const DEFAULTS = {
|
|
33
|
+
runner: Runners.PIPELEX,
|
|
34
|
+
apiUrl: "https://api.pipelex.com",
|
|
35
|
+
apiKey: "",
|
|
36
|
+
telemetry: true,
|
|
37
|
+
autoUpgrade: false,
|
|
38
|
+
updateCheck: true,
|
|
39
|
+
};
|
|
40
|
+
/** Map from CLI flag names (kebab-case) to config keys */
|
|
41
|
+
const KEY_ALIASES = {
|
|
42
|
+
runner: "runner",
|
|
43
|
+
"api-url": "apiUrl",
|
|
44
|
+
"api-key": "apiKey",
|
|
45
|
+
telemetry: "telemetry",
|
|
46
|
+
"auto-upgrade": "autoUpgrade",
|
|
47
|
+
"update-check": "updateCheck",
|
|
48
|
+
};
|
|
49
|
+
// ── Boolean key sets ──────────────────────────────────────────────
|
|
50
|
+
/** Keys that store boolean values (coerced from "0"/"1" in file/env) */
|
|
51
|
+
const BOOLEAN_KEYS = new Set([
|
|
52
|
+
"telemetry",
|
|
53
|
+
"autoUpgrade",
|
|
54
|
+
"updateCheck",
|
|
55
|
+
]);
|
|
56
|
+
/** Boolean keys with inverted file semantics (DISABLE_TELEMETRY=1 → false) */
|
|
57
|
+
const INVERTED_BOOLEAN_KEYS = new Set([
|
|
58
|
+
"telemetry",
|
|
59
|
+
]);
|
|
60
|
+
/** Strings treated as truthy for boolean keys — used in both load and set paths */
|
|
61
|
+
const TRUTHY_STRINGS = new Set(["true", "1", "yes", "on"]);
|
|
62
|
+
export const VALID_KEYS = Object.keys(KEY_ALIASES);
|
|
63
|
+
export function resolveKey(cliKey) {
|
|
64
|
+
return KEY_ALIASES[cliKey];
|
|
65
|
+
}
|
|
66
|
+
// ── Dotenv parser / serializer ─────────────────────────────────────
|
|
67
|
+
function parseDotenv(content) {
|
|
68
|
+
const result = {};
|
|
69
|
+
for (const line of content.split("\n")) {
|
|
70
|
+
const trimmed = line.trim();
|
|
71
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
72
|
+
continue;
|
|
73
|
+
const eqIndex = trimmed.indexOf("=");
|
|
74
|
+
if (eqIndex === -1)
|
|
75
|
+
continue;
|
|
76
|
+
const key = trimmed.slice(0, eqIndex).trim();
|
|
77
|
+
const value = trimmed.slice(eqIndex + 1).trim();
|
|
78
|
+
result[key] = value;
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
function serializeDotenv(entries) {
|
|
83
|
+
const lines = [];
|
|
84
|
+
for (const [key, value] of Object.entries(entries)) {
|
|
85
|
+
lines.push(`${key}=${value}`);
|
|
86
|
+
}
|
|
87
|
+
return lines.join("\n") + "\n";
|
|
88
|
+
}
|
|
89
|
+
// ── File I/O ───────────────────────────────────────────────────────
|
|
90
|
+
function readConfigFile() {
|
|
91
|
+
migrateIfNeeded();
|
|
92
|
+
if (!existsSync(CONFIG_PATH))
|
|
93
|
+
return {};
|
|
94
|
+
try {
|
|
95
|
+
return parseDotenv(readFileSync(CONFIG_PATH, "utf-8"));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return {};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function writeConfigFile(entries) {
|
|
102
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
103
|
+
writeFileSync(CONFIG_PATH, serializeDotenv(entries), "utf-8");
|
|
104
|
+
}
|
|
105
|
+
// ── Migration ──────────────────────────────────────────────────────
|
|
106
|
+
let migrationDone = false;
|
|
107
|
+
function migrateIfNeeded() {
|
|
108
|
+
if (migrationDone)
|
|
109
|
+
return;
|
|
110
|
+
migrationDone = true;
|
|
111
|
+
if (existsSync(CONFIG_PATH))
|
|
112
|
+
return;
|
|
113
|
+
const migrated = {};
|
|
114
|
+
let configJsonMigrated = false;
|
|
115
|
+
let envLocalMigrated = false;
|
|
116
|
+
let credentialsMigrated = false;
|
|
117
|
+
// Migrate from ~/.mthds/credentials (previous config file name)
|
|
118
|
+
if (existsSync(LEGACY_CREDENTIALS_PATH)) {
|
|
119
|
+
try {
|
|
120
|
+
const entries = parseDotenv(readFileSync(LEGACY_CREDENTIALS_PATH, "utf-8"));
|
|
121
|
+
Object.assign(migrated, entries);
|
|
122
|
+
credentialsMigrated = true;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Read failed — preserve the legacy file
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Migrate from config.json
|
|
129
|
+
if (existsSync(LEGACY_CONFIG_PATH)) {
|
|
130
|
+
try {
|
|
131
|
+
const raw = readFileSync(LEGACY_CONFIG_PATH, "utf-8");
|
|
132
|
+
const config = JSON.parse(raw);
|
|
133
|
+
if (typeof config.runner === "string") {
|
|
134
|
+
migrated["MTHDS_RUNNER"] = config.runner;
|
|
135
|
+
}
|
|
136
|
+
if (typeof config.apiUrl === "string") {
|
|
137
|
+
migrated["PIPELEX_API_URL"] = config.apiUrl;
|
|
138
|
+
}
|
|
139
|
+
if (typeof config.apiKey === "string") {
|
|
140
|
+
migrated["PIPELEX_API_KEY"] = config.apiKey;
|
|
141
|
+
}
|
|
142
|
+
if (typeof config.telemetry === "boolean") {
|
|
143
|
+
migrated["DISABLE_TELEMETRY"] = config.telemetry ? "0" : "1";
|
|
144
|
+
}
|
|
145
|
+
configJsonMigrated = true;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Parse failed — preserve the legacy file so the user can fix it
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Migrate from .env.local (telemetry flag)
|
|
152
|
+
if (existsSync(LEGACY_ENV_LOCAL_PATH)) {
|
|
153
|
+
try {
|
|
154
|
+
const envEntries = parseDotenv(readFileSync(LEGACY_ENV_LOCAL_PATH, "utf-8"));
|
|
155
|
+
if (envEntries["DISABLE_TELEMETRY"]) {
|
|
156
|
+
migrated["DISABLE_TELEMETRY"] = envEntries["DISABLE_TELEMETRY"];
|
|
157
|
+
}
|
|
158
|
+
envLocalMigrated = Boolean(envEntries["DISABLE_TELEMETRY"]);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// Read failed — preserve the legacy file
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (credentialsMigrated || configJsonMigrated || envLocalMigrated) {
|
|
165
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
166
|
+
writeFileSync(CONFIG_PATH, serializeDotenv(migrated), "utf-8");
|
|
167
|
+
// Only delete legacy files that were successfully migrated
|
|
168
|
+
if (credentialsMigrated) {
|
|
169
|
+
try {
|
|
170
|
+
unlinkSync(LEGACY_CREDENTIALS_PATH);
|
|
171
|
+
}
|
|
172
|
+
catch { /* ignore */ }
|
|
173
|
+
}
|
|
174
|
+
if (configJsonMigrated) {
|
|
175
|
+
try {
|
|
176
|
+
unlinkSync(LEGACY_CONFIG_PATH);
|
|
177
|
+
}
|
|
178
|
+
catch { /* ignore */ }
|
|
179
|
+
}
|
|
180
|
+
if (envLocalMigrated) {
|
|
181
|
+
try {
|
|
182
|
+
unlinkSync(LEGACY_ENV_LOCAL_PATH);
|
|
183
|
+
}
|
|
184
|
+
catch { /* ignore */ }
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// ── Public API ─────────────────────────────────────────────────────
|
|
189
|
+
function coerceValue(key, raw) {
|
|
190
|
+
if (!BOOLEAN_KEYS.has(key))
|
|
191
|
+
return raw;
|
|
192
|
+
const truthy = TRUTHY_STRINGS.has(raw.toLowerCase());
|
|
193
|
+
return INVERTED_BOOLEAN_KEYS.has(key) ? !truthy : truthy;
|
|
194
|
+
}
|
|
195
|
+
function toFileValue(key, value) {
|
|
196
|
+
if (!BOOLEAN_KEYS.has(key))
|
|
197
|
+
return String(value);
|
|
198
|
+
const boolVal = typeof value === "boolean"
|
|
199
|
+
? value
|
|
200
|
+
: TRUTHY_STRINGS.has(String(value).toLowerCase());
|
|
201
|
+
return INVERTED_BOOLEAN_KEYS.has(key)
|
|
202
|
+
? (boolVal ? "0" : "1")
|
|
203
|
+
: (boolVal ? "1" : "0");
|
|
204
|
+
}
|
|
205
|
+
export function loadConfig() {
|
|
206
|
+
const file = readConfigFile();
|
|
207
|
+
const merged = { ...DEFAULTS };
|
|
208
|
+
// Apply file values
|
|
209
|
+
for (const [key, fileKey] of Object.entries(FILE_KEYS)) {
|
|
210
|
+
if (fileKey in file) {
|
|
211
|
+
merged[key] = coerceValue(key, file[fileKey]);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Env vars take precedence
|
|
215
|
+
for (const [key, envName] of Object.entries(ENV_NAMES)) {
|
|
216
|
+
const envVal = process.env[envName];
|
|
217
|
+
if (envVal !== undefined) {
|
|
218
|
+
merged[key] = coerceValue(key, envVal);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return merged;
|
|
222
|
+
}
|
|
223
|
+
export function getConfigValue(key) {
|
|
224
|
+
const envName = ENV_NAMES[key];
|
|
225
|
+
const envVal = process.env[envName];
|
|
226
|
+
if (envVal !== undefined) {
|
|
227
|
+
return { value: envVal, source: "env" };
|
|
228
|
+
}
|
|
229
|
+
const file = readConfigFile();
|
|
230
|
+
const fileKey = FILE_KEYS[key];
|
|
231
|
+
if (fileKey in file) {
|
|
232
|
+
return { value: file[fileKey], source: "file" };
|
|
233
|
+
}
|
|
234
|
+
const defaultVal = DEFAULTS[key];
|
|
235
|
+
if (BOOLEAN_KEYS.has(key)) {
|
|
236
|
+
const boolDefault = defaultVal;
|
|
237
|
+
if (INVERTED_BOOLEAN_KEYS.has(key)) {
|
|
238
|
+
return { value: boolDefault ? "0" : "1", source: "default" };
|
|
239
|
+
}
|
|
240
|
+
return { value: boolDefault ? "1" : "0", source: "default" };
|
|
241
|
+
}
|
|
242
|
+
return { value: String(defaultVal), source: "default" };
|
|
243
|
+
}
|
|
244
|
+
export function setConfigValue(key, value) {
|
|
245
|
+
const file = readConfigFile();
|
|
246
|
+
const fileKey = FILE_KEYS[key];
|
|
247
|
+
if (BOOLEAN_KEYS.has(key)) {
|
|
248
|
+
file[fileKey] = toFileValue(key, coerceBooleanInput(value));
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
file[fileKey] = value;
|
|
252
|
+
}
|
|
253
|
+
writeConfigFile(file);
|
|
254
|
+
}
|
|
1
255
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
256
|
+
* Normalize user-facing boolean input.
|
|
257
|
+
* Accepts "true"/"false", "1"/"0", "yes"/"no", "on"/"off".
|
|
4
258
|
*/
|
|
5
|
-
|
|
259
|
+
function coerceBooleanInput(value) {
|
|
260
|
+
return TRUTHY_STRINGS.has(value.toLowerCase());
|
|
261
|
+
}
|
|
262
|
+
export function listConfig() {
|
|
263
|
+
const result = [];
|
|
264
|
+
for (const [cliKey, credKey] of Object.entries(KEY_ALIASES)) {
|
|
265
|
+
const { value, source } = getConfigValue(credKey);
|
|
266
|
+
result.push({ key: credKey, cliKey, value, source });
|
|
267
|
+
}
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
// ── Telemetry helpers (for PostHog module) ─────────────────────────
|
|
271
|
+
export function isTelemetryEnabled() {
|
|
272
|
+
return loadConfig().telemetry;
|
|
273
|
+
}
|
|
274
|
+
export function setTelemetryEnabled(enabled) {
|
|
275
|
+
setConfigValue("telemetry", enabled ? "true" : "false");
|
|
276
|
+
}
|
|
277
|
+
export function getTelemetrySource() {
|
|
278
|
+
return getConfigValue("telemetry").source;
|
|
279
|
+
}
|
|
6
280
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether `uv` is on PATH without throwing.
|
|
3
|
+
*/
|
|
4
|
+
export declare function isUvInstalled(): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Install uv via the official install script and add its bin dir to PATH
|
|
7
|
+
* for the current process. Throws on failure.
|
|
8
|
+
*/
|
|
9
|
+
export declare function installUv(): void;
|
|
1
10
|
/**
|
|
2
11
|
* Ensure pipelex is installed, using uv tool install with spinner feedback.
|
|
3
12
|
* Used by interactive CLI commands (mthds install, mthds setup, etc.).
|
|
@@ -1,9 +1,53 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
1
|
+
import { execFileSync, execSync } from "node:child_process";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
2
4
|
import ora from "ora";
|
|
3
5
|
import { isPipelexInstalled } from "./check.js";
|
|
4
6
|
import { BINARY_RECOVERY } from "../../agent/binaries.js";
|
|
5
7
|
// All binary installation goes through uv, which provides version-constraint-aware
|
|
6
8
|
// installs and consistent cross-platform behavior.
|
|
9
|
+
// ── uv presence / auto-install ─────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Check whether `uv` is on PATH without throwing.
|
|
12
|
+
*/
|
|
13
|
+
export function isUvInstalled() {
|
|
14
|
+
try {
|
|
15
|
+
execFileSync("uv", ["--version"], { stdio: "ignore", timeout: 5000 });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Install uv via the official install script and add its bin dir to PATH
|
|
24
|
+
* for the current process. Throws on failure.
|
|
25
|
+
*/
|
|
26
|
+
export function installUv() {
|
|
27
|
+
const isWindows = process.platform === "win32";
|
|
28
|
+
const uvBinDir = isWindows
|
|
29
|
+
? join(process.env.APPDATA ?? join(homedir(), "AppData", "Roaming"), "uv", "bin")
|
|
30
|
+
: join(homedir(), ".local", "bin");
|
|
31
|
+
// Official uv install scripts (https://docs.astral.sh/uv/getting-started/installation/).
|
|
32
|
+
// These execute a remote script without checksum verification — accepted tradeoff for the
|
|
33
|
+
// standard install path. The scripts are served over HTTPS from astral.sh's CDN.
|
|
34
|
+
const cmd = isWindows
|
|
35
|
+
? 'powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"'
|
|
36
|
+
: "curl -LsSf https://astral.sh/uv/install.sh | sh";
|
|
37
|
+
try {
|
|
38
|
+
execSync(cmd, { stdio: "pipe", timeout: 30_000 });
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const stderr = err?.stderr?.toString().trim();
|
|
42
|
+
const detail = stderr || (err instanceof Error ? err.message : String(err));
|
|
43
|
+
throw new Error(`Failed to install uv: ${detail}`);
|
|
44
|
+
}
|
|
45
|
+
// Make uv available in the current process
|
|
46
|
+
const sep = isWindows ? ";" : ":";
|
|
47
|
+
if (!process.env.PATH?.includes(uvBinDir)) {
|
|
48
|
+
process.env.PATH = `${uvBinDir}${sep}${process.env.PATH}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
7
51
|
// ── Async install (interactive, with spinner) ────────────────────────
|
|
8
52
|
/**
|
|
9
53
|
* Ensure pipelex is installed, using uv tool install with spinner feedback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/installer/runtime/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/installer/runtime/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type TelemetrySource =
|
|
1
|
+
import type { ConfigSource } from "../../config/config.js";
|
|
2
|
+
export type TelemetrySource = ConfigSource;
|
|
3
3
|
export declare function getTelemetryStatus(): {
|
|
4
4
|
enabled: boolean;
|
|
5
5
|
source: TelemetrySource;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PostHog } from "posthog-node";
|
|
2
|
-
import { isTelemetryEnabled, setTelemetryEnabled as setTelemetryFlag, getTelemetrySource, } from "../../config/
|
|
2
|
+
import { isTelemetryEnabled, setTelemetryEnabled as setTelemetryFlag, getTelemetrySource, } from "../../config/config.js";
|
|
3
3
|
const POSTHOG_API_KEY = "phc_LRwe2lybfPTNCzAT1ScpnsWznrxAvmc1pmCaXEr1hwJ";
|
|
4
4
|
const POSTHOG_HOST = "https://eu.i.posthog.com";
|
|
5
5
|
let client = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/installer/telemetry/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,IAAI,gBAAgB,EACvC,kBAAkB,GACnB,MAAM,
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/installer/telemetry/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,IAAI,gBAAgB,EACvC,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,eAAe,GAAG,iDAAiD,CAAC;AAC1E,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,IAAI,MAAM,GAAmB,IAAI,CAAC;AAIlC,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAgBD,SAAS,UAAU,CAAC,SAAiB,EAAE,IAAkB;IACvD,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,OAAO,CAAC,OAAO,CAAC;QACd,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mthds",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "CLI and SDK for MTHDS — the open standard for
|
|
3
|
+
"version": "0.3.2",
|
|
4
|
+
"description": "CLI and SDK for MTHDS — the open standard for executable AI methods. Install, execute, and manage methods.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
-
autoUpgrade: boolean;
|
|
8
|
-
updateCheck: boolean;
|
|
9
|
-
}
|
|
10
|
-
export type CredentialSource = "env" | "file" | "default";
|
|
11
|
-
export declare const VALID_KEYS: string[];
|
|
12
|
-
export declare function resolveKey(cliKey: string): keyof MthdsCredentials | undefined;
|
|
13
|
-
export declare function loadCredentials(): MthdsCredentials;
|
|
14
|
-
export declare function getCredentialValue(key: keyof MthdsCredentials): {
|
|
15
|
-
value: string;
|
|
16
|
-
source: CredentialSource;
|
|
17
|
-
};
|
|
18
|
-
export declare function setCredentialValue(key: keyof MthdsCredentials, value: string): void;
|
|
19
|
-
export declare function listCredentials(): Array<{
|
|
20
|
-
key: string;
|
|
21
|
-
cliKey: string;
|
|
22
|
-
value: string;
|
|
23
|
-
source: CredentialSource;
|
|
24
|
-
}>;
|
|
25
|
-
export declare function isTelemetryEnabled(): boolean;
|
|
26
|
-
export declare function setTelemetryEnabled(enabled: boolean): void;
|
|
27
|
-
export declare function getTelemetrySource(): CredentialSource;
|