@nimblebrain/mpak 0.1.0 → 0.2.0

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 (151) hide show
  1. package/LICENSE +10 -198
  2. package/README.md +50 -383
  3. package/dist/index.d.ts +0 -2
  4. package/dist/index.js +2113 -4
  5. package/dist/index.js.map +1 -1
  6. package/package.json +32 -29
  7. package/.claude/settings.local.json +0 -19
  8. package/.env.example +0 -13
  9. package/.github/workflows/ci.yml +0 -27
  10. package/CLAUDE.md +0 -283
  11. package/dist/commands/config.d.ts +0 -31
  12. package/dist/commands/config.d.ts.map +0 -1
  13. package/dist/commands/config.js +0 -129
  14. package/dist/commands/config.js.map +0 -1
  15. package/dist/commands/packages/pull.d.ts +0 -11
  16. package/dist/commands/packages/pull.d.ts.map +0 -1
  17. package/dist/commands/packages/pull.js +0 -72
  18. package/dist/commands/packages/pull.js.map +0 -1
  19. package/dist/commands/packages/run.d.ts +0 -47
  20. package/dist/commands/packages/run.d.ts.map +0 -1
  21. package/dist/commands/packages/run.js +0 -419
  22. package/dist/commands/packages/run.js.map +0 -1
  23. package/dist/commands/packages/search.d.ts +0 -12
  24. package/dist/commands/packages/search.d.ts.map +0 -1
  25. package/dist/commands/packages/search.js +0 -63
  26. package/dist/commands/packages/search.js.map +0 -1
  27. package/dist/commands/packages/show.d.ts +0 -8
  28. package/dist/commands/packages/show.d.ts.map +0 -1
  29. package/dist/commands/packages/show.js +0 -109
  30. package/dist/commands/packages/show.js.map +0 -1
  31. package/dist/commands/search.d.ts +0 -12
  32. package/dist/commands/search.d.ts.map +0 -1
  33. package/dist/commands/search.js +0 -144
  34. package/dist/commands/search.js.map +0 -1
  35. package/dist/commands/skills/index.d.ts +0 -8
  36. package/dist/commands/skills/index.d.ts.map +0 -1
  37. package/dist/commands/skills/index.js +0 -8
  38. package/dist/commands/skills/index.js.map +0 -1
  39. package/dist/commands/skills/install.d.ts +0 -9
  40. package/dist/commands/skills/install.d.ts.map +0 -1
  41. package/dist/commands/skills/install.js +0 -110
  42. package/dist/commands/skills/install.js.map +0 -1
  43. package/dist/commands/skills/list.d.ts +0 -8
  44. package/dist/commands/skills/list.d.ts.map +0 -1
  45. package/dist/commands/skills/list.js +0 -89
  46. package/dist/commands/skills/list.js.map +0 -1
  47. package/dist/commands/skills/pack.d.ts +0 -22
  48. package/dist/commands/skills/pack.d.ts.map +0 -1
  49. package/dist/commands/skills/pack.js +0 -116
  50. package/dist/commands/skills/pack.js.map +0 -1
  51. package/dist/commands/skills/pull.d.ts +0 -9
  52. package/dist/commands/skills/pull.d.ts.map +0 -1
  53. package/dist/commands/skills/pull.js +0 -68
  54. package/dist/commands/skills/pull.js.map +0 -1
  55. package/dist/commands/skills/search.d.ts +0 -14
  56. package/dist/commands/skills/search.d.ts.map +0 -1
  57. package/dist/commands/skills/search.js +0 -53
  58. package/dist/commands/skills/search.js.map +0 -1
  59. package/dist/commands/skills/show.d.ts +0 -8
  60. package/dist/commands/skills/show.d.ts.map +0 -1
  61. package/dist/commands/skills/show.js +0 -64
  62. package/dist/commands/skills/show.js.map +0 -1
  63. package/dist/commands/skills/validate.d.ts +0 -25
  64. package/dist/commands/skills/validate.d.ts.map +0 -1
  65. package/dist/commands/skills/validate.js +0 -191
  66. package/dist/commands/skills/validate.js.map +0 -1
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/lib/api/registry-client.d.ts +0 -63
  69. package/dist/lib/api/registry-client.d.ts.map +0 -1
  70. package/dist/lib/api/registry-client.js +0 -167
  71. package/dist/lib/api/registry-client.js.map +0 -1
  72. package/dist/lib/api/skills-client.d.ts +0 -30
  73. package/dist/lib/api/skills-client.d.ts.map +0 -1
  74. package/dist/lib/api/skills-client.js +0 -110
  75. package/dist/lib/api/skills-client.js.map +0 -1
  76. package/dist/program.d.ts +0 -12
  77. package/dist/program.d.ts.map +0 -1
  78. package/dist/program.js +0 -186
  79. package/dist/program.js.map +0 -1
  80. package/dist/schemas/generated/api-responses.d.ts +0 -541
  81. package/dist/schemas/generated/api-responses.d.ts.map +0 -1
  82. package/dist/schemas/generated/api-responses.js +0 -313
  83. package/dist/schemas/generated/api-responses.js.map +0 -1
  84. package/dist/schemas/generated/auth.d.ts +0 -18
  85. package/dist/schemas/generated/auth.d.ts.map +0 -1
  86. package/dist/schemas/generated/auth.js +0 -18
  87. package/dist/schemas/generated/auth.js.map +0 -1
  88. package/dist/schemas/generated/index.d.ts +0 -5
  89. package/dist/schemas/generated/index.d.ts.map +0 -1
  90. package/dist/schemas/generated/index.js +0 -6
  91. package/dist/schemas/generated/index.js.map +0 -1
  92. package/dist/schemas/generated/package.d.ts +0 -43
  93. package/dist/schemas/generated/package.d.ts.map +0 -1
  94. package/dist/schemas/generated/package.js +0 -20
  95. package/dist/schemas/generated/package.js.map +0 -1
  96. package/dist/schemas/generated/skill.d.ts +0 -381
  97. package/dist/schemas/generated/skill.d.ts.map +0 -1
  98. package/dist/schemas/generated/skill.js +0 -216
  99. package/dist/schemas/generated/skill.js.map +0 -1
  100. package/dist/utils/config-manager.d.ts +0 -66
  101. package/dist/utils/config-manager.d.ts.map +0 -1
  102. package/dist/utils/config-manager.js +0 -193
  103. package/dist/utils/config-manager.js.map +0 -1
  104. package/dist/utils/errors.d.ts +0 -12
  105. package/dist/utils/errors.d.ts.map +0 -1
  106. package/dist/utils/errors.js +0 -27
  107. package/dist/utils/errors.js.map +0 -1
  108. package/dist/utils/version.d.ts +0 -5
  109. package/dist/utils/version.d.ts.map +0 -1
  110. package/dist/utils/version.js +0 -19
  111. package/dist/utils/version.js.map +0 -1
  112. package/eslint.config.js +0 -63
  113. package/src/commands/config.ts +0 -162
  114. package/src/commands/packages/pull.ts +0 -96
  115. package/src/commands/packages/run.test.ts +0 -261
  116. package/src/commands/packages/run.ts +0 -536
  117. package/src/commands/packages/search.ts +0 -83
  118. package/src/commands/packages/show.ts +0 -128
  119. package/src/commands/search.ts +0 -191
  120. package/src/commands/skills/index.ts +0 -7
  121. package/src/commands/skills/install.ts +0 -129
  122. package/src/commands/skills/list.ts +0 -116
  123. package/src/commands/skills/pack.test.ts +0 -260
  124. package/src/commands/skills/pack.ts +0 -145
  125. package/src/commands/skills/pull.ts +0 -88
  126. package/src/commands/skills/search.ts +0 -73
  127. package/src/commands/skills/show.ts +0 -72
  128. package/src/commands/skills/validate.test.ts +0 -466
  129. package/src/commands/skills/validate.ts +0 -227
  130. package/src/index.ts +0 -11
  131. package/src/lib/api/registry-client.ts +0 -223
  132. package/src/lib/api/schema.d.ts +0 -520
  133. package/src/lib/api/skills-client.ts +0 -148
  134. package/src/program.test.ts +0 -22
  135. package/src/program.ts +0 -226
  136. package/src/schemas/config.v1.schema.json +0 -37
  137. package/src/schemas/generated/api-responses.ts +0 -386
  138. package/src/schemas/generated/auth.ts +0 -21
  139. package/src/schemas/generated/index.ts +0 -5
  140. package/src/schemas/generated/package.ts +0 -29
  141. package/src/schemas/generated/skill.ts +0 -271
  142. package/src/utils/config-manager.test.ts +0 -330
  143. package/src/utils/config-manager.ts +0 -272
  144. package/src/utils/errors.test.ts +0 -25
  145. package/src/utils/errors.ts +0 -33
  146. package/src/utils/version.test.ts +0 -16
  147. package/src/utils/version.ts +0 -18
  148. package/test/integration/registry-client.test.ts +0 -180
  149. package/tsconfig.check.json +0 -9
  150. package/tsconfig.json +0 -25
  151. package/vitest.config.ts +0 -14
@@ -1,419 +0,0 @@
1
- import { spawn, spawnSync } from 'child_process';
2
- import { createInterface } from 'readline';
3
- import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync, rmSync, statSync } from 'fs';
4
- import { createHash } from 'crypto';
5
- import { homedir } from 'os';
6
- import { join, dirname, resolve, basename } from 'path';
7
- import { RegistryClient } from '../../lib/api/registry-client.js';
8
- import { ConfigManager } from '../../utils/config-manager.js';
9
- /**
10
- * Parse package specification into name and version
11
- * @example parsePackageSpec('@scope/name') => { name: '@scope/name' }
12
- * @example parsePackageSpec('@scope/name@1.0.0') => { name: '@scope/name', version: '1.0.0' }
13
- */
14
- export function parsePackageSpec(spec) {
15
- const lastAtIndex = spec.lastIndexOf('@');
16
- if (lastAtIndex <= 0) {
17
- return { name: spec };
18
- }
19
- const name = spec.substring(0, lastAtIndex);
20
- const version = spec.substring(lastAtIndex + 1);
21
- if (!name.startsWith('@')) {
22
- return { name: spec };
23
- }
24
- return { name, version };
25
- }
26
- /**
27
- * Get cache directory for a package
28
- * @example getCacheDir('@scope/name') => '~/.mpak/cache/scope-name'
29
- */
30
- export function getCacheDir(packageName) {
31
- const cacheBase = join(homedir(), '.mpak', 'cache');
32
- // @scope/name -> scope/name
33
- const safeName = packageName.replace('@', '').replace('/', '-');
34
- return join(cacheBase, safeName);
35
- }
36
- /**
37
- * Read cache metadata
38
- */
39
- function getCacheMetadata(cacheDir) {
40
- const metaPath = join(cacheDir, '.mpak-meta.json');
41
- if (!existsSync(metaPath)) {
42
- return null;
43
- }
44
- try {
45
- return JSON.parse(readFileSync(metaPath, 'utf8'));
46
- }
47
- catch {
48
- return null;
49
- }
50
- }
51
- /**
52
- * Write cache metadata
53
- */
54
- function writeCacheMetadata(cacheDir, metadata) {
55
- const metaPath = join(cacheDir, '.mpak-meta.json');
56
- writeFileSync(metaPath, JSON.stringify(metadata, null, 2));
57
- }
58
- /**
59
- * Extract ZIP file to directory (simple implementation without external deps)
60
- */
61
- async function extractZip(zipPath, destDir) {
62
- // Use native unzip command (available on macOS, Linux, and Windows with WSL)
63
- const { execSync } = await import('child_process');
64
- // Ensure destination exists
65
- mkdirSync(destDir, { recursive: true });
66
- try {
67
- execSync(`unzip -o -q "${zipPath}" -d "${destDir}"`, { stdio: 'pipe' });
68
- }
69
- catch (error) {
70
- throw new Error(`Failed to extract bundle: ${error.message}`);
71
- }
72
- }
73
- /**
74
- * Read manifest from extracted bundle
75
- */
76
- function readManifest(cacheDir) {
77
- const manifestPath = join(cacheDir, 'manifest.json');
78
- if (!existsSync(manifestPath)) {
79
- throw new Error(`Manifest not found in bundle: ${manifestPath}`);
80
- }
81
- return JSON.parse(readFileSync(manifestPath, 'utf8'));
82
- }
83
- /**
84
- * Resolve placeholders in args (e.g., ${__dirname})
85
- * @example resolveArgs(['${__dirname}/index.js'], '/cache') => ['/cache/index.js']
86
- */
87
- export function resolveArgs(args, cacheDir) {
88
- return args.map(arg => arg.replace(/\$\{__dirname\}/g, cacheDir));
89
- }
90
- /**
91
- * Substitute ${user_config.*} placeholders in a string
92
- * @example substituteUserConfig('${user_config.api_key}', { api_key: 'secret' }) => 'secret'
93
- */
94
- export function substituteUserConfig(value, userConfigValues) {
95
- return value.replace(/\$\{user_config\.([^}]+)\}/g, (match, key) => {
96
- return userConfigValues[key] ?? match;
97
- });
98
- }
99
- /**
100
- * Substitute ${user_config.*} placeholders in env vars
101
- */
102
- export function substituteEnvVars(env, userConfigValues) {
103
- if (!env)
104
- return {};
105
- const result = {};
106
- for (const [key, value] of Object.entries(env)) {
107
- result[key] = substituteUserConfig(value, userConfigValues);
108
- }
109
- return result;
110
- }
111
- /**
112
- * Get cache directory for a local bundle.
113
- * Uses hash of absolute path to avoid collisions.
114
- */
115
- export function getLocalCacheDir(bundlePath) {
116
- const absolutePath = resolve(bundlePath);
117
- const hash = createHash('md5').update(absolutePath).digest('hex').slice(0, 12);
118
- return join(homedir(), '.mpak', 'cache', '_local', hash);
119
- }
120
- /**
121
- * Check if local bundle needs re-extraction.
122
- * Returns true if cache doesn't exist or bundle was modified after extraction.
123
- */
124
- export function localBundleNeedsExtract(bundlePath, cacheDir) {
125
- const metaPath = join(cacheDir, '.mpak-meta.json');
126
- if (!existsSync(metaPath))
127
- return true;
128
- try {
129
- const meta = JSON.parse(readFileSync(metaPath, 'utf8'));
130
- const bundleStat = statSync(bundlePath);
131
- return bundleStat.mtimeMs > new Date(meta.extractedAt).getTime();
132
- }
133
- catch {
134
- return true;
135
- }
136
- }
137
- /**
138
- * Prompt user for a config value (interactive terminal input)
139
- */
140
- async function promptForValue(field, key) {
141
- return new Promise((resolve) => {
142
- const rl = createInterface({
143
- input: process.stdin,
144
- output: process.stderr,
145
- terminal: true,
146
- });
147
- const label = field.title || key;
148
- const hint = field.description ? ` (${field.description})` : '';
149
- const defaultHint = field.default !== undefined ? ` [${field.default}]` : '';
150
- const prompt = `=> ${label}${hint}${defaultHint}: `;
151
- // For sensitive fields, we'd ideally hide input, but Node's readline
152
- // doesn't support this natively. We'll just note it's sensitive.
153
- if (field.sensitive) {
154
- process.stderr.write(`=> (sensitive input)\n`);
155
- }
156
- rl.question(prompt, (answer) => {
157
- rl.close();
158
- // Use default if empty and default exists
159
- if (!answer && field.default !== undefined) {
160
- resolve(String(field.default));
161
- }
162
- else {
163
- resolve(answer);
164
- }
165
- });
166
- });
167
- }
168
- /**
169
- * Check if we're in an interactive terminal
170
- */
171
- function isInteractive() {
172
- return process.stdin.isTTY === true;
173
- }
174
- /**
175
- * Gather user config values from stored config
176
- * Prompts for missing required values if interactive
177
- */
178
- async function gatherUserConfigValues(packageName, userConfig, configManager) {
179
- const result = {};
180
- const storedConfig = configManager.getPackageConfig(packageName) || {};
181
- const missingRequired = [];
182
- for (const [key, field] of Object.entries(userConfig)) {
183
- // Priority: 1) stored config, 2) default value
184
- const storedValue = storedConfig[key];
185
- if (storedValue !== undefined) {
186
- result[key] = storedValue;
187
- }
188
- else if (field.default !== undefined) {
189
- result[key] = String(field.default);
190
- }
191
- else if (field.required) {
192
- missingRequired.push({ key, field });
193
- }
194
- }
195
- // Prompt for missing required values if interactive
196
- if (missingRequired.length > 0) {
197
- if (!isInteractive()) {
198
- const missingKeys = missingRequired.map(m => m.key).join(', ');
199
- process.stderr.write(`=> Error: Missing required config: ${missingKeys}\n`);
200
- process.stderr.write(`=> Run 'mpak config set ${packageName} <key>=<value>' to set values\n`);
201
- process.exit(1);
202
- }
203
- process.stderr.write(`=> Package requires configuration:\n`);
204
- for (const { key, field } of missingRequired) {
205
- const value = await promptForValue(field, key);
206
- if (!value && field.required) {
207
- process.stderr.write(`=> Error: ${field.title || key} is required\n`);
208
- process.exit(1);
209
- }
210
- result[key] = value;
211
- // Offer to save the value
212
- if (value) {
213
- const rl = createInterface({
214
- input: process.stdin,
215
- output: process.stderr,
216
- terminal: true,
217
- });
218
- await new Promise((resolve) => {
219
- rl.question(`=> Save ${field.title || key} for future runs? [Y/n]: `, (answer) => {
220
- rl.close();
221
- if (answer.toLowerCase() !== 'n') {
222
- configManager.setPackageConfigValue(packageName, key, value);
223
- process.stderr.write(`=> Saved to ~/.mpak/config.json\n`);
224
- }
225
- resolve();
226
- });
227
- });
228
- }
229
- }
230
- }
231
- return result;
232
- }
233
- /**
234
- * Find Python executable (tries python3 first, then python)
235
- */
236
- function findPythonCommand() {
237
- // Try python3 first (preferred on macOS/Linux)
238
- const result = spawnSync('python3', ['--version'], { stdio: 'pipe' });
239
- if (result.status === 0) {
240
- return 'python3';
241
- }
242
- // Fall back to python
243
- return 'python';
244
- }
245
- /**
246
- * Run a package from the registry or a local bundle file
247
- */
248
- export async function handleRun(packageSpec, options = {}) {
249
- // Validate that either --local or package spec is provided
250
- if (!options.local && !packageSpec) {
251
- process.stderr.write(`=> Error: Either provide a package name or use --local <path>\n`);
252
- process.exit(1);
253
- }
254
- let cacheDir;
255
- let packageName;
256
- if (options.local) {
257
- // === LOCAL BUNDLE MODE ===
258
- const bundlePath = resolve(options.local);
259
- // Validate bundle exists
260
- if (!existsSync(bundlePath)) {
261
- process.stderr.write(`=> Error: Bundle not found: ${bundlePath}\n`);
262
- process.exit(1);
263
- }
264
- // Validate .mcpb extension
265
- if (!bundlePath.endsWith('.mcpb')) {
266
- process.stderr.write(`=> Error: Not an MCPB bundle: ${bundlePath}\n`);
267
- process.exit(1);
268
- }
269
- cacheDir = getLocalCacheDir(bundlePath);
270
- const needsExtract = options.update || localBundleNeedsExtract(bundlePath, cacheDir);
271
- if (needsExtract) {
272
- // Clear old extraction
273
- if (existsSync(cacheDir)) {
274
- rmSync(cacheDir, { recursive: true, force: true });
275
- }
276
- mkdirSync(cacheDir, { recursive: true });
277
- process.stderr.write(`=> Extracting ${basename(bundlePath)}...\n`);
278
- await extractZip(bundlePath, cacheDir);
279
- // Write local metadata
280
- writeFileSync(join(cacheDir, '.mpak-meta.json'), JSON.stringify({
281
- localPath: bundlePath,
282
- extractedAt: new Date().toISOString(),
283
- }));
284
- }
285
- // Read manifest to get package name for config lookup
286
- const manifest = readManifest(cacheDir);
287
- packageName = manifest.name;
288
- process.stderr.write(`=> Running ${packageName} (local)\n`);
289
- }
290
- else {
291
- // === REGISTRY MODE ===
292
- const { name, version: requestedVersion } = parsePackageSpec(packageSpec);
293
- packageName = name;
294
- const client = new RegistryClient();
295
- const platform = RegistryClient.detectPlatform();
296
- cacheDir = getCacheDir(name);
297
- let needsPull = true;
298
- let cachedMeta = getCacheMetadata(cacheDir);
299
- // Check if we have a cached version
300
- if (cachedMeta && !options.update) {
301
- if (requestedVersion) {
302
- // Specific version requested - check if cached version matches
303
- needsPull = cachedMeta.version !== requestedVersion;
304
- }
305
- else {
306
- // Latest requested - use cache (user can --update to refresh)
307
- needsPull = false;
308
- }
309
- }
310
- if (needsPull) {
311
- // Fetch download info
312
- const downloadInfo = await client.getDownloadInfo(name, requestedVersion, platform);
313
- const bundle = downloadInfo.bundle;
314
- // Check if cached version is already the latest
315
- if (cachedMeta && cachedMeta.version === bundle.version && !options.update) {
316
- needsPull = false;
317
- }
318
- if (needsPull) {
319
- // Download to temp file
320
- const tempPath = join(homedir(), '.mpak', 'tmp', `${Date.now()}.mcpb`);
321
- mkdirSync(dirname(tempPath), { recursive: true });
322
- process.stderr.write(`=> Pulling ${name}@${bundle.version}...\n`);
323
- await client.downloadBundle(downloadInfo.url, tempPath);
324
- // Clear old cache and extract
325
- if (existsSync(cacheDir)) {
326
- rmSync(cacheDir, { recursive: true, force: true });
327
- }
328
- mkdirSync(cacheDir, { recursive: true });
329
- await extractZip(tempPath, cacheDir);
330
- // Write metadata
331
- writeCacheMetadata(cacheDir, {
332
- version: bundle.version,
333
- pulledAt: new Date().toISOString(),
334
- platform: bundle.platform,
335
- });
336
- // Cleanup temp file
337
- rmSync(tempPath, { force: true });
338
- process.stderr.write(`=> Cached ${name}@${bundle.version}\n`);
339
- }
340
- }
341
- }
342
- // Read manifest and execute
343
- const manifest = readManifest(cacheDir);
344
- const { type, entry_point, mcp_config } = manifest.server;
345
- // Handle user_config substitution
346
- let userConfigValues = {};
347
- if (manifest.user_config && Object.keys(manifest.user_config).length > 0) {
348
- const configManager = new ConfigManager();
349
- userConfigValues = await gatherUserConfigValues(packageName, manifest.user_config, configManager);
350
- }
351
- // Substitute user_config placeholders in env vars
352
- // Priority: process.env (from parent like Claude Desktop) > substituted values (from mpak config)
353
- const substitutedEnv = substituteEnvVars(mcp_config.env, userConfigValues);
354
- let command;
355
- let args;
356
- let env = { ...substitutedEnv, ...process.env };
357
- switch (type) {
358
- case 'binary': {
359
- // For binary, the entry_point is the executable path relative to bundle
360
- command = join(cacheDir, entry_point);
361
- args = resolveArgs(mcp_config.args || [], cacheDir);
362
- // Ensure binary is executable
363
- try {
364
- chmodSync(command, 0o755);
365
- }
366
- catch {
367
- // Ignore chmod errors on Windows
368
- }
369
- break;
370
- }
371
- case 'node': {
372
- command = mcp_config.command || 'node';
373
- // Use mcp_config.args directly if provided, otherwise fall back to entry_point
374
- if (mcp_config.args && mcp_config.args.length > 0) {
375
- args = resolveArgs(mcp_config.args, cacheDir);
376
- }
377
- else {
378
- args = [join(cacheDir, entry_point)];
379
- }
380
- break;
381
- }
382
- case 'python': {
383
- // Use manifest command if specified, otherwise auto-detect python
384
- command = mcp_config.command === 'python' ? findPythonCommand() : (mcp_config.command || findPythonCommand());
385
- // Use mcp_config.args directly if provided, otherwise fall back to entry_point
386
- if (mcp_config.args && mcp_config.args.length > 0) {
387
- args = resolveArgs(mcp_config.args, cacheDir);
388
- }
389
- else {
390
- args = [join(cacheDir, entry_point)];
391
- }
392
- // Set PYTHONPATH to deps/ directory for dependency resolution
393
- const depsDir = join(cacheDir, 'deps');
394
- const existingPythonPath = process.env.PYTHONPATH;
395
- env.PYTHONPATH = existingPythonPath ? `${depsDir}:${existingPythonPath}` : depsDir;
396
- break;
397
- }
398
- default:
399
- throw new Error(`Unsupported server type: ${type}`);
400
- }
401
- // Spawn with stdio passthrough for MCP
402
- const child = spawn(command, args, {
403
- stdio: ['inherit', 'inherit', 'inherit'],
404
- env,
405
- cwd: cacheDir,
406
- });
407
- // Forward signals
408
- process.on('SIGINT', () => child.kill('SIGINT'));
409
- process.on('SIGTERM', () => child.kill('SIGTERM'));
410
- // Wait for exit
411
- child.on('exit', (code) => {
412
- process.exit(code ?? 0);
413
- });
414
- child.on('error', (error) => {
415
- process.stderr.write(`=> Failed to start server: ${error.message}\n`);
416
- process.exit(1);
417
- });
418
- }
419
- //# sourceMappingURL=run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/packages/run.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export interface SearchOptions {
2
- type?: string;
3
- sort?: 'downloads' | 'recent' | 'name';
4
- limit?: number;
5
- offset?: number;
6
- json?: boolean;
7
- }
8
- /**
9
- * Search bundles (v1 API)
10
- */
11
- export declare function handleSearch(query: string, options?: SearchOptions): Promise<void>;
12
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/search.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -1,63 +0,0 @@
1
- import { RegistryClient } from '../../lib/api/registry-client.js';
2
- /**
3
- * Search bundles (v1 API)
4
- */
5
- export async function handleSearch(query, options = {}) {
6
- try {
7
- const client = new RegistryClient();
8
- const result = await client.searchBundles(query, {
9
- type: options.type,
10
- sort: options.sort,
11
- limit: options.limit,
12
- offset: options.offset,
13
- });
14
- if (options.json) {
15
- console.log(JSON.stringify(result, null, 2));
16
- return;
17
- }
18
- if (result.bundles.length === 0) {
19
- console.log(`\nNo bundles found for "${query}"`);
20
- return;
21
- }
22
- console.log(`\nFound ${result.total} bundle(s) for "${query}":\n`);
23
- for (const bundle of result.bundles) {
24
- const verified = bundle.verified ? '✓' : ' ';
25
- const provenance = bundle.provenance ? '🔒' : '';
26
- console.log(`${verified} ${bundle.name} v${bundle.latest_version} ${provenance}`);
27
- if (bundle.description) {
28
- console.log(` ${bundle.description}`);
29
- }
30
- const details = [];
31
- if (bundle.downloads)
32
- details.push(`${bundle.downloads} downloads`);
33
- if (bundle.server_type)
34
- details.push(bundle.server_type);
35
- if (bundle.author?.name)
36
- details.push(`by ${bundle.author.name}`);
37
- if (details.length > 0) {
38
- console.log(` ${details.join(' • ')}`);
39
- }
40
- if (bundle.tools && bundle.tools.length > 0) {
41
- const toolNames = bundle.tools.slice(0, 3).map((t) => t.name);
42
- const toolsDisplay = bundle.tools.length > 3
43
- ? `${toolNames.join(', ')} +${bundle.tools.length - 3} more`
44
- : toolNames.join(', ');
45
- console.log(` Tools: ${toolsDisplay}`);
46
- }
47
- console.log();
48
- }
49
- if (result.pagination.has_more) {
50
- const nextOffset = (options.offset || 0) + (options.limit || 20);
51
- console.log(`More results available. Use --offset ${nextOffset} to see more.`);
52
- }
53
- console.log(`Use "mpak show <bundle>" for more details`);
54
- }
55
- catch (error) {
56
- console.error('=> Failed to search bundles');
57
- if (error instanceof Error) {
58
- console.error(` ${error.message}`);
59
- }
60
- process.exit(1);
61
- }
62
- }
63
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/packages/search.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface ShowOptions {
2
- json?: boolean;
3
- }
4
- /**
5
- * Show detailed information about a bundle (v1 API)
6
- */
7
- export declare function handleShow(packageName: string, options?: ShowOptions): Promise<void>;
8
- //# sourceMappingURL=show.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/show.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAmHf"}
@@ -1,109 +0,0 @@
1
- import { RegistryClient } from '../../lib/api/registry-client.js';
2
- /**
3
- * Show detailed information about a bundle (v1 API)
4
- */
5
- export async function handleShow(packageName, options = {}) {
6
- try {
7
- const client = new RegistryClient();
8
- // Fetch bundle details and versions in parallel
9
- const [bundle, versionsInfo] = await Promise.all([
10
- client.getBundle(packageName),
11
- client.getVersions(packageName),
12
- ]);
13
- if (options.json) {
14
- console.log(JSON.stringify({ ...bundle, versions_detail: versionsInfo.versions }, null, 2));
15
- return;
16
- }
17
- // Header
18
- const verified = bundle.verified ? '✓ ' : '';
19
- const provenance = bundle.provenance ? '🔒 ' : '';
20
- console.log(`\n${verified}${provenance}${bundle.display_name || bundle.name} v${bundle.latest_version}\n`);
21
- // Description
22
- if (bundle.description) {
23
- console.log(bundle.description);
24
- console.log();
25
- }
26
- // Basic info
27
- console.log('Bundle Information:');
28
- console.log(` Name: ${bundle.name}`);
29
- if (bundle.author?.name) {
30
- console.log(` Author: ${bundle.author.name}`);
31
- }
32
- if (bundle.server_type) {
33
- console.log(` Type: ${bundle.server_type}`);
34
- }
35
- if (bundle.license) {
36
- console.log(` License: ${bundle.license}`);
37
- }
38
- if (bundle.homepage) {
39
- console.log(` Homepage: ${bundle.homepage}`);
40
- }
41
- console.log();
42
- // Provenance info
43
- if (bundle.provenance) {
44
- console.log('Provenance:');
45
- console.log(` Repository: ${bundle.provenance.repository}`);
46
- console.log(` Commit: ${bundle.provenance.sha.substring(0, 12)}`);
47
- console.log(` Provider: ${bundle.provenance.provider}`);
48
- console.log();
49
- }
50
- // Stats
51
- console.log('Statistics:');
52
- console.log(` Downloads: ${bundle.downloads.toLocaleString()}`);
53
- console.log(` Published: ${new Date(bundle.published_at).toLocaleDateString()}`);
54
- console.log();
55
- // Tools
56
- if (bundle.tools && bundle.tools.length > 0) {
57
- console.log(`Tools (${bundle.tools.length}):`);
58
- for (const tool of bundle.tools) {
59
- console.log(` - ${tool.name}`);
60
- if (tool.description) {
61
- console.log(` ${tool.description}`);
62
- }
63
- }
64
- console.log();
65
- }
66
- // Versions with platforms
67
- if (versionsInfo.versions && versionsInfo.versions.length > 0) {
68
- console.log(`Versions (${versionsInfo.versions.length}):`);
69
- const recentVersions = versionsInfo.versions.slice(0, 5);
70
- for (const version of recentVersions) {
71
- const date = new Date(version.published_at).toLocaleDateString();
72
- const downloads = version.downloads.toLocaleString();
73
- const isLatest = version.version === versionsInfo.latest ? ' (latest)' : '';
74
- const provTag = version.provenance ? ' 🔒' : '';
75
- // Format platforms
76
- const platformStrs = version.platforms.map((p) => `${p.os}-${p.arch}`);
77
- const platformsDisplay = platformStrs.length > 0 ? ` [${platformStrs.join(', ')}]` : '';
78
- console.log(` ${version.version}${isLatest}${provTag} - ${date} - ${downloads} downloads${platformsDisplay}`);
79
- }
80
- if (versionsInfo.versions.length > 5) {
81
- console.log(` ... and ${versionsInfo.versions.length - 5} more`);
82
- }
83
- console.log();
84
- }
85
- // Available platforms for latest version
86
- const latestVersion = versionsInfo.versions.find((v) => v.version === versionsInfo.latest);
87
- if (latestVersion && latestVersion.platforms.length > 0) {
88
- console.log('Available Platforms:');
89
- for (const platform of latestVersion.platforms) {
90
- console.log(` - ${platform.os}-${platform.arch}`);
91
- }
92
- console.log();
93
- }
94
- // Install instructions
95
- console.log('Install:');
96
- console.log(` mpak install ${bundle.name}`);
97
- console.log();
98
- console.log('Pull (download only):');
99
- console.log(` mpak pull ${bundle.name}`);
100
- }
101
- catch (error) {
102
- console.error('=> Failed to get bundle details');
103
- if (error instanceof Error) {
104
- console.error(` ${error.message}`);
105
- }
106
- process.exit(1);
107
- }
108
- }
109
- //# sourceMappingURL=show.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/packages/show.ts"],"names":[],"mappings":"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"}