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.
Files changed (228) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +56 -16
  3. package/dist/agent/commands/build.d.ts +35 -0
  4. package/dist/agent/commands/build.js +334 -0
  5. package/dist/agent/commands/build.js.map +1 -0
  6. package/dist/agent/commands/config.d.ts +6 -0
  7. package/dist/agent/commands/config.js +50 -0
  8. package/dist/agent/commands/config.js.map +1 -0
  9. package/dist/agent/commands/install.d.ts +14 -0
  10. package/dist/agent/commands/install.js +179 -0
  11. package/dist/agent/commands/install.js.map +1 -0
  12. package/dist/agent/commands/pipelex.d.ts +7 -0
  13. package/dist/agent/commands/pipelex.js +56 -0
  14. package/dist/agent/commands/pipelex.js.map +1 -0
  15. package/dist/agent/commands/plxt.d.ts +7 -0
  16. package/dist/agent/commands/plxt.js +27 -0
  17. package/dist/agent/commands/plxt.js.map +1 -0
  18. package/dist/agent/commands/validate.d.ts +15 -0
  19. package/dist/agent/commands/validate.js +118 -0
  20. package/dist/agent/commands/validate.js.map +1 -0
  21. package/dist/agent/output.d.ts +25 -0
  22. package/dist/agent/output.js +53 -0
  23. package/dist/agent/output.js.map +1 -0
  24. package/dist/agent/passthrough.d.ts +5 -0
  25. package/dist/agent/passthrough.js +19 -0
  26. package/dist/agent/passthrough.js.map +1 -0
  27. package/dist/agent-cli.d.ts +8 -0
  28. package/dist/agent-cli.js +237 -0
  29. package/dist/agent-cli.js.map +1 -0
  30. package/dist/cli/commands/build.d.ts +31 -0
  31. package/dist/cli/commands/build.js +305 -0
  32. package/dist/cli/commands/build.js.map +1 -0
  33. package/dist/{commands → cli/commands}/config.js +9 -6
  34. package/dist/cli/commands/config.js.map +1 -0
  35. package/dist/cli/commands/index.js +58 -0
  36. package/dist/cli/commands/index.js.map +1 -0
  37. package/dist/cli/commands/install.js +276 -0
  38. package/dist/cli/commands/install.js.map +1 -0
  39. package/dist/cli/commands/package/init.d.ts +3 -0
  40. package/dist/cli/commands/package/init.js +108 -0
  41. package/dist/cli/commands/package/init.js.map +1 -0
  42. package/dist/cli/commands/package/list.d.ts +3 -0
  43. package/dist/cli/commands/package/list.js +58 -0
  44. package/dist/cli/commands/package/list.js.map +1 -0
  45. package/dist/cli/commands/package/validate.d.ts +3 -0
  46. package/dist/cli/commands/package/validate.js +76 -0
  47. package/dist/cli/commands/package/validate.js.map +1 -0
  48. package/dist/cli/commands/run.d.ts +12 -0
  49. package/dist/cli/commands/run.js +95 -0
  50. package/dist/cli/commands/run.js.map +1 -0
  51. package/dist/cli/commands/setup.d.ts +3 -0
  52. package/dist/cli/commands/setup.js +164 -0
  53. package/dist/cli/commands/setup.js.map +1 -0
  54. package/dist/cli/commands/utils.d.ts +10 -0
  55. package/dist/cli/commands/utils.js +41 -0
  56. package/dist/cli/commands/utils.js.map +1 -0
  57. package/dist/cli/commands/validate.d.ts +10 -0
  58. package/dist/cli/commands/validate.js +93 -0
  59. package/dist/cli/commands/validate.js.map +1 -0
  60. package/dist/cli.js +236 -95
  61. package/dist/cli.js.map +1 -1
  62. package/dist/client/client.js +2 -2
  63. package/dist/client/client.js.map +1 -1
  64. package/dist/config/config.d.ts +5 -20
  65. package/dist/config/config.js +5 -78
  66. package/dist/config/config.js.map +1 -1
  67. package/dist/config/credentials.d.ts +25 -0
  68. package/dist/config/credentials.js +230 -0
  69. package/dist/config/credentials.js.map +1 -0
  70. package/dist/installer/agents/registry.d.ts +12 -0
  71. package/dist/installer/agents/registry.js +78 -0
  72. package/dist/installer/agents/registry.js.map +1 -0
  73. package/dist/installer/agents/types.d.ts +16 -0
  74. package/dist/installer/agents/types.js +6 -0
  75. package/dist/installer/agents/types.js.map +1 -0
  76. package/dist/installer/resolver/address.d.ts +2 -0
  77. package/dist/{resolver → installer/resolver}/address.js +6 -4
  78. package/dist/installer/resolver/address.js.map +1 -0
  79. package/dist/{resolver → installer/resolver}/github.d.ts +1 -1
  80. package/dist/{resolver → installer/resolver}/github.js +44 -27
  81. package/dist/installer/resolver/github.js.map +1 -0
  82. package/dist/installer/resolver/index.d.ts +6 -0
  83. package/dist/{resolver → installer/resolver}/index.js +1 -1
  84. package/dist/installer/resolver/index.js.map +1 -0
  85. package/dist/{resolver → installer/resolver}/local.d.ts +1 -1
  86. package/dist/{resolver → installer/resolver}/local.js +12 -19
  87. package/dist/installer/resolver/local.js.map +1 -0
  88. package/dist/installer/runtime/check.js.map +1 -0
  89. package/dist/installer/runtime/installer.js.map +1 -0
  90. package/dist/installer/runtime/spawn.js.map +1 -0
  91. package/dist/{telemetry → installer/telemetry}/posthog.d.ts +4 -6
  92. package/dist/installer/telemetry/posthog.js +56 -0
  93. package/dist/installer/telemetry/posthog.js.map +1 -0
  94. package/dist/package/bundle-metadata.d.ts +8 -0
  95. package/dist/package/bundle-metadata.js +2 -0
  96. package/dist/package/bundle-metadata.js.map +1 -0
  97. package/dist/package/bundle-scanner.d.ts +18 -0
  98. package/dist/package/bundle-scanner.js +77 -0
  99. package/dist/package/bundle-scanner.js.map +1 -0
  100. package/dist/package/dependency-resolver.d.ts +32 -0
  101. package/dist/package/dependency-resolver.js +298 -0
  102. package/dist/package/dependency-resolver.js.map +1 -0
  103. package/dist/package/discovery.d.ts +9 -0
  104. package/dist/package/discovery.js +32 -0
  105. package/dist/package/discovery.js.map +1 -0
  106. package/dist/package/exceptions.d.ts +36 -0
  107. package/dist/package/exceptions.js +73 -0
  108. package/dist/package/exceptions.js.map +1 -0
  109. package/dist/package/lock-file.d.ts +27 -0
  110. package/dist/package/lock-file.js +137 -0
  111. package/dist/package/lock-file.js.map +1 -0
  112. package/dist/package/manifest/convert.d.ts +14 -0
  113. package/dist/package/manifest/convert.js +83 -0
  114. package/dist/package/manifest/convert.js.map +1 -0
  115. package/dist/package/manifest/parser.d.ts +9 -0
  116. package/dist/package/manifest/parser.js +261 -0
  117. package/dist/package/manifest/parser.js.map +1 -0
  118. package/dist/package/manifest/schema.d.ts +71 -0
  119. package/dist/package/manifest/schema.js +73 -0
  120. package/dist/package/manifest/schema.js.map +1 -0
  121. package/dist/{resolver → package/manifest}/types.d.ts +4 -7
  122. package/dist/{resolver → package/manifest}/types.js.map +1 -1
  123. package/dist/{resolver → package/manifest}/validate.d.ts +0 -5
  124. package/dist/{resolver → package/manifest}/validate.js +25 -38
  125. package/dist/package/manifest/validate.js.map +1 -0
  126. package/dist/package/manifest/validation.d.ts +10 -0
  127. package/dist/package/manifest/validation.js +34 -0
  128. package/dist/package/manifest/validation.js.map +1 -0
  129. package/dist/package/package-cache.d.ts +24 -0
  130. package/dist/package/package-cache.js +92 -0
  131. package/dist/package/package-cache.js.map +1 -0
  132. package/dist/package/qualified-ref.d.ts +41 -0
  133. package/dist/package/qualified-ref.js +105 -0
  134. package/dist/package/qualified-ref.js.map +1 -0
  135. package/dist/package/semver.d.ts +33 -0
  136. package/dist/package/semver.js +77 -0
  137. package/dist/package/semver.js.map +1 -0
  138. package/dist/package/vcs-resolver.d.ts +19 -0
  139. package/dist/package/vcs-resolver.js +115 -0
  140. package/dist/package/vcs-resolver.js.map +1 -0
  141. package/dist/package/visibility.d.ts +25 -0
  142. package/dist/package/visibility.js +132 -0
  143. package/dist/package/visibility.js.map +1 -0
  144. package/dist/runners/api-runner.d.ts +3 -0
  145. package/dist/runners/api-runner.js +9 -1
  146. package/dist/runners/api-runner.js.map +1 -1
  147. package/dist/runners/pipelex-runner.d.ts +16 -2
  148. package/dist/runners/pipelex-runner.js +155 -41
  149. package/dist/runners/pipelex-runner.js.map +1 -1
  150. package/dist/runners/registry.d.ts +1 -1
  151. package/dist/runners/registry.js +5 -4
  152. package/dist/runners/registry.js.map +1 -1
  153. package/dist/runners/types.d.ts +17 -10
  154. package/dist/runners/types.js +6 -1
  155. package/dist/runners/types.js.map +1 -1
  156. package/package.json +7 -4
  157. package/dist/agents/claude-code.d.ts +0 -2
  158. package/dist/agents/claude-code.js +0 -36
  159. package/dist/agents/claude-code.js.map +0 -1
  160. package/dist/agents/cursor.d.ts +0 -2
  161. package/dist/agents/cursor.js +0 -11
  162. package/dist/agents/cursor.js.map +0 -1
  163. package/dist/agents/github-copilot.d.ts +0 -2
  164. package/dist/agents/github-copilot.js +0 -11
  165. package/dist/agents/github-copilot.js.map +0 -1
  166. package/dist/agents/registry.d.ts +0 -4
  167. package/dist/agents/registry.js +0 -24
  168. package/dist/agents/registry.js.map +0 -1
  169. package/dist/agents/types.d.ts +0 -25
  170. package/dist/agents/types.js +0 -11
  171. package/dist/agents/types.js.map +0 -1
  172. package/dist/agents/windsurf.d.ts +0 -2
  173. package/dist/agents/windsurf.js +0 -11
  174. package/dist/agents/windsurf.js.map +0 -1
  175. package/dist/commands/build.d.ts +0 -19
  176. package/dist/commands/build.js +0 -128
  177. package/dist/commands/build.js.map +0 -1
  178. package/dist/commands/config.js.map +0 -1
  179. package/dist/commands/index.js +0 -63
  180. package/dist/commands/index.js.map +0 -1
  181. package/dist/commands/install.js +0 -259
  182. package/dist/commands/install.js.map +0 -1
  183. package/dist/commands/run.d.ts +0 -11
  184. package/dist/commands/run.js +0 -44
  185. package/dist/commands/run.js.map +0 -1
  186. package/dist/commands/runner.d.ts +0 -2
  187. package/dist/commands/runner.js +0 -59
  188. package/dist/commands/runner.js.map +0 -1
  189. package/dist/commands/setup.d.ts +0 -1
  190. package/dist/commands/setup.js +0 -45
  191. package/dist/commands/setup.js.map +0 -1
  192. package/dist/commands/telemetry.d.ts +0 -3
  193. package/dist/commands/telemetry.js +0 -49
  194. package/dist/commands/telemetry.js.map +0 -1
  195. package/dist/commands/validate.d.ts +0 -6
  196. package/dist/commands/validate.js +0 -41
  197. package/dist/commands/validate.js.map +0 -1
  198. package/dist/resolver/address.d.ts +0 -2
  199. package/dist/resolver/address.js.map +0 -1
  200. package/dist/resolver/github.js.map +0 -1
  201. package/dist/resolver/index.d.ts +0 -6
  202. package/dist/resolver/index.js.map +0 -1
  203. package/dist/resolver/local.js.map +0 -1
  204. package/dist/resolver/validate.js.map +0 -1
  205. package/dist/runtime/check.js.map +0 -1
  206. package/dist/runtime/installer.js.map +0 -1
  207. package/dist/runtime/spawn.js.map +0 -1
  208. package/dist/supabase/client.d.ts +0 -4
  209. package/dist/supabase/client.js +0 -5
  210. package/dist/supabase/client.js.map +0 -1
  211. package/dist/supabase/methods.d.ts +0 -2
  212. package/dist/supabase/methods.js +0 -13
  213. package/dist/supabase/methods.js.map +0 -1
  214. package/dist/supabase/types.d.ts +0 -30
  215. package/dist/supabase/types.js +0 -2
  216. package/dist/supabase/types.js.map +0 -1
  217. package/dist/telemetry/posthog.js +0 -117
  218. package/dist/telemetry/posthog.js.map +0 -1
  219. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  220. /package/dist/{commands → cli/commands}/index.d.ts +0 -0
  221. /package/dist/{commands → cli/commands}/install.d.ts +0 -0
  222. /package/dist/{runtime → installer/runtime}/check.d.ts +0 -0
  223. /package/dist/{runtime → installer/runtime}/check.js +0 -0
  224. /package/dist/{runtime → installer/runtime}/installer.d.ts +0 -0
  225. /package/dist/{runtime → installer/runtime}/installer.js +0 -0
  226. /package/dist/{runtime → installer/runtime}/spawn.d.ts +0 -0
  227. /package/dist/{runtime → installer/runtime}/spawn.js +0 -0
  228. /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,6 @@
1
+ export var InstallLocation;
2
+ (function (InstallLocation) {
3
+ InstallLocation["Local"] = "local";
4
+ InstallLocation["Global"] = "global";
5
+ })(InstallLocation || (InstallLocation = {}));
6
+ //# sourceMappingURL=types.js.map
@@ -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"}
@@ -0,0 +1,2 @@
1
+ import type { ParsedAddress } from "../../package/manifest/types.js";
2
+ export declare function parseAddress(input: string): ParsedAddress;
@@ -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 github.com/ prefix with warning
5
- if (raw.startsWith("github.com/")) {
6
- raw = raw.slice("github.com/".length);
7
- console.warn(`Warning: stripped "github.com/" prefix — use "${raw}" directly.`);
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 "./types.js";
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 "./validate.js";
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
- const result = execFileSync("gh", ["api", apiPath], {
21
- encoding: "utf-8",
22
- maxBuffer: 10 * 1024 * 1024,
23
- });
24
- return JSON.parse(result);
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, slug) {
104
- // Validate slug name
105
- const slugResult = validateSlug(slug);
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: { slug, errors: [`No METHODS.toml found at ${tomlPath}.`] } };
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: { slug, errors: result.errors } };
129
+ return { skipped: { dirName, errors: result.errors } };
123
130
  }
124
131
  // Find and download .mthds files
125
- const mthdPaths = await listMthdFiles(auth, org, repo, slugDir);
126
- const files = await downloadFilesParallel(auth, org, repo, mthdPaths, slugDir);
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
- slug,
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
- const repoMeta = (await githubFetch(auth, `repos/${org}/${repo}`));
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 slugDirs = contents.filter((c) => c.type === "dir").map((c) => c.name);
155
- if (slugDirs.length === 0) {
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 < slugDirs.length; i += 5) {
162
- const batch = slugDirs.slice(i, i + 5);
163
- const results = await Promise.all(batch.map((slug) => resolveOneMethod(auth, org, repo, methodsPath, slug)));
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, validateSlug } from "./validate.js";
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 "./types.js";
1
+ import type { ResolvedRepo } from "../../package/manifest/types.js";
2
2
  export declare function resolveFromLocal(dirPath: string): ResolvedRepo;