@nimblebrain/mpak 0.0.1-beta.1

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 (58) hide show
  1. package/.env.example +13 -0
  2. package/CLAUDE.md +117 -0
  3. package/LICENSE +201 -0
  4. package/README.md +206 -0
  5. package/dist/commands/packages/pull.d.ts +11 -0
  6. package/dist/commands/packages/pull.d.ts.map +1 -0
  7. package/dist/commands/packages/pull.js +72 -0
  8. package/dist/commands/packages/pull.js.map +1 -0
  9. package/dist/commands/packages/search.d.ts +12 -0
  10. package/dist/commands/packages/search.d.ts.map +1 -0
  11. package/dist/commands/packages/search.js +63 -0
  12. package/dist/commands/packages/search.js.map +1 -0
  13. package/dist/commands/packages/show.d.ts +8 -0
  14. package/dist/commands/packages/show.d.ts.map +1 -0
  15. package/dist/commands/packages/show.js +121 -0
  16. package/dist/commands/packages/show.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +12 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/lib/api/registry-client.d.ts +63 -0
  22. package/dist/lib/api/registry-client.d.ts.map +1 -0
  23. package/dist/lib/api/registry-client.js +167 -0
  24. package/dist/lib/api/registry-client.js.map +1 -0
  25. package/dist/program.d.ts +8 -0
  26. package/dist/program.d.ts.map +1 -0
  27. package/dist/program.js +69 -0
  28. package/dist/program.js.map +1 -0
  29. package/dist/utils/config-manager.d.ts +23 -0
  30. package/dist/utils/config-manager.d.ts.map +1 -0
  31. package/dist/utils/config-manager.js +65 -0
  32. package/dist/utils/config-manager.js.map +1 -0
  33. package/dist/utils/errors.d.ts +12 -0
  34. package/dist/utils/errors.d.ts.map +1 -0
  35. package/dist/utils/errors.js +27 -0
  36. package/dist/utils/errors.js.map +1 -0
  37. package/dist/utils/version.d.ts +5 -0
  38. package/dist/utils/version.d.ts.map +1 -0
  39. package/dist/utils/version.js +19 -0
  40. package/dist/utils/version.js.map +1 -0
  41. package/eslint.config.js +63 -0
  42. package/package.json +48 -0
  43. package/src/commands/packages/pull.ts +96 -0
  44. package/src/commands/packages/search.ts +83 -0
  45. package/src/commands/packages/show.ts +138 -0
  46. package/src/index.ts +15 -0
  47. package/src/lib/api/registry-client.ts +223 -0
  48. package/src/lib/api/schema.d.ts +548 -0
  49. package/src/program.test.ts +24 -0
  50. package/src/program.ts +76 -0
  51. package/src/utils/config-manager.test.ts +60 -0
  52. package/src/utils/config-manager.ts +81 -0
  53. package/src/utils/errors.test.ts +25 -0
  54. package/src/utils/errors.ts +33 -0
  55. package/src/utils/version.test.ts +16 -0
  56. package/src/utils/version.ts +18 -0
  57. package/tsconfig.json +25 -0
  58. package/vitest.config.ts +13 -0
@@ -0,0 +1,63 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/packages/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
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
@@ -0,0 +1 @@
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,CA6Hf"}
@@ -0,0 +1,121 @@
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
+ // GitHub info
56
+ if (bundle.github) {
57
+ console.log('GitHub:');
58
+ console.log(` Repository: ${bundle.github.repo}`);
59
+ if (bundle.github.stars != null)
60
+ console.log(` Stars: ${bundle.github.stars}`);
61
+ if (bundle.github.forks != null)
62
+ console.log(` Forks: ${bundle.github.forks}`);
63
+ if (bundle.github.watchers != null)
64
+ console.log(` Watchers: ${bundle.github.watchers}`);
65
+ console.log();
66
+ }
67
+ // Tools
68
+ if (bundle.tools && bundle.tools.length > 0) {
69
+ console.log(`Tools (${bundle.tools.length}):`);
70
+ for (const tool of bundle.tools) {
71
+ console.log(` - ${tool.name}`);
72
+ if (tool.description) {
73
+ console.log(` ${tool.description}`);
74
+ }
75
+ }
76
+ console.log();
77
+ }
78
+ // Versions with platforms
79
+ if (versionsInfo.versions && versionsInfo.versions.length > 0) {
80
+ console.log(`Versions (${versionsInfo.versions.length}):`);
81
+ const recentVersions = versionsInfo.versions.slice(0, 5);
82
+ for (const version of recentVersions) {
83
+ const date = new Date(version.published_at).toLocaleDateString();
84
+ const downloads = version.downloads.toLocaleString();
85
+ const isLatest = version.version === versionsInfo.latest ? ' (latest)' : '';
86
+ const provTag = version.provenance ? ' 🔒' : '';
87
+ // Format platforms
88
+ const platformStrs = version.platforms.map((p) => `${p.os}-${p.arch}`);
89
+ const platformsDisplay = platformStrs.length > 0 ? ` [${platformStrs.join(', ')}]` : '';
90
+ console.log(` ${version.version}${isLatest}${provTag} - ${date} - ${downloads} downloads${platformsDisplay}`);
91
+ }
92
+ if (versionsInfo.versions.length > 5) {
93
+ console.log(` ... and ${versionsInfo.versions.length - 5} more`);
94
+ }
95
+ console.log();
96
+ }
97
+ // Available platforms for latest version
98
+ const latestVersion = versionsInfo.versions.find((v) => v.version === versionsInfo.latest);
99
+ if (latestVersion && latestVersion.platforms.length > 0) {
100
+ console.log('Available Platforms:');
101
+ for (const platform of latestVersion.platforms) {
102
+ console.log(` - ${platform.os}-${platform.arch}`);
103
+ }
104
+ console.log();
105
+ }
106
+ // Install instructions
107
+ console.log('Install:');
108
+ console.log(` mpak install ${bundle.name}`);
109
+ console.log();
110
+ console.log('Pull (download only):');
111
+ console.log(` mpak pull ${bundle.name}`);
112
+ }
113
+ catch (error) {
114
+ console.error('=> Failed to get bundle details');
115
+ if (error instanceof Error) {
116
+ console.error(` ${error.message}`);
117
+ }
118
+ process.exit(1);
119
+ }
120
+ }
121
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/packages/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { config } from 'dotenv';
3
+ import { createProgram } from './program.js';
4
+ import { handleError } from './utils/errors.js';
5
+ // Load environment variables from .env file
6
+ config();
7
+ async function main() {
8
+ const program = createProgram();
9
+ await program.parseAsync(process.argv);
10
+ }
11
+ main().catch(handleError);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,4CAA4C;AAC5C,MAAM,EAAE,CAAC;AAET,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { paths } from './schema.js';
2
+ type ResponseOf<T> = T extends {
3
+ responses: {
4
+ 200: {
5
+ content: {
6
+ 'application/json': infer R;
7
+ };
8
+ };
9
+ };
10
+ } ? R : never;
11
+ export type BundleSearchResponse = ResponseOf<paths['/v1/bundles/search']['get']>;
12
+ export type BundleDetailResponse = ResponseOf<paths['/v1/bundles/@{scope}/{package}']['get']>;
13
+ export type VersionsResponse = ResponseOf<paths['/v1/bundles/@{scope}/{package}/versions']['get']>;
14
+ export type DownloadInfoResponse = ResponseOf<paths['/v1/bundles/@{scope}/{package}/versions/{version}/download']['get']>;
15
+ export type Bundle = BundleSearchResponse['bundles'][number];
16
+ export type BundleDetail = BundleDetailResponse;
17
+ export type VersionInfo = VersionsResponse['versions'][number];
18
+ export type DownloadInfo = DownloadInfoResponse;
19
+ /** Platform identifier (os + arch) */
20
+ export interface Platform {
21
+ os: string;
22
+ arch: string;
23
+ }
24
+ /**
25
+ * Client for interacting with the mpak registry v1 API
26
+ *
27
+ * All methods use the public /v1/bundles API (unauthenticated)
28
+ */
29
+ export declare class RegistryClient {
30
+ private baseUrl;
31
+ constructor();
32
+ /**
33
+ * Search bundles
34
+ */
35
+ searchBundles(query: string, options?: {
36
+ type?: string;
37
+ sort?: 'downloads' | 'recent' | 'name';
38
+ limit?: number;
39
+ offset?: number;
40
+ }): Promise<BundleSearchResponse>;
41
+ /**
42
+ * Get bundle details
43
+ */
44
+ getBundle(packageName: string): Promise<BundleDetail>;
45
+ /**
46
+ * Get versions with platform info
47
+ */
48
+ getVersions(packageName: string): Promise<VersionsResponse>;
49
+ /**
50
+ * Detect the current platform
51
+ */
52
+ static detectPlatform(): Platform;
53
+ /**
54
+ * Get download info for a bundle version
55
+ */
56
+ getDownloadInfo(packageName: string, version?: string, platform?: Platform): Promise<DownloadInfo>;
57
+ /**
58
+ * Download a bundle to a file
59
+ */
60
+ downloadBundle(downloadUrl: string, outputPath: string): Promise<void>;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=registry-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/registry-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOzC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,SAAS,EAAE;QAAE,GAAG,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,CAAC,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAGhH,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAG1H,MAAM,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAEhD,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;;IAOxB;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;QACvC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsBtC;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB3D;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBjE;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,QAAQ;IAoCjC;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAuCxG;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa7E"}
@@ -0,0 +1,167 @@
1
+ import { ConfigManager } from '../../utils/config-manager.js';
2
+ // =============================================================================
3
+ // Registry Client (v1 API only)
4
+ // =============================================================================
5
+ /**
6
+ * Client for interacting with the mpak registry v1 API
7
+ *
8
+ * All methods use the public /v1/bundles API (unauthenticated)
9
+ */
10
+ export class RegistryClient {
11
+ baseUrl;
12
+ constructor() {
13
+ const configManager = new ConfigManager();
14
+ this.baseUrl = configManager.getRegistryUrl();
15
+ }
16
+ /**
17
+ * Search bundles
18
+ */
19
+ async searchBundles(query, options = {}) {
20
+ const params = new URLSearchParams();
21
+ if (query)
22
+ params.set('q', query);
23
+ if (options.type)
24
+ params.set('type', options.type);
25
+ if (options.sort)
26
+ params.set('sort', options.sort);
27
+ if (options.limit)
28
+ params.set('limit', options.limit.toString());
29
+ if (options.offset)
30
+ params.set('offset', options.offset.toString());
31
+ const url = `${this.baseUrl}/v1/bundles/search?${params.toString()}`;
32
+ const response = await fetch(url);
33
+ if (!response.ok) {
34
+ const error = await response.json().catch(() => ({ error: response.statusText }));
35
+ const errorMessage = typeof error.error === 'string'
36
+ ? error.error
37
+ : error.error?.message || `Failed to search bundles: ${response.statusText}`;
38
+ throw new Error(errorMessage);
39
+ }
40
+ return response.json();
41
+ }
42
+ /**
43
+ * Get bundle details
44
+ */
45
+ async getBundle(packageName) {
46
+ if (!packageName.startsWith('@')) {
47
+ throw new Error('Package name must be scoped (e.g., @username/package-name)');
48
+ }
49
+ const url = `${this.baseUrl}/v1/bundles/${packageName}`;
50
+ const response = await fetch(url);
51
+ if (!response.ok) {
52
+ if (response.status === 404) {
53
+ throw new Error(`Bundle not found: ${packageName}`);
54
+ }
55
+ const error = await response.json().catch(() => ({ error: response.statusText }));
56
+ const errorMessage = typeof error.error === 'string'
57
+ ? error.error
58
+ : error.error?.message || `Failed to get bundle details: ${response.statusText}`;
59
+ throw new Error(errorMessage);
60
+ }
61
+ return response.json();
62
+ }
63
+ /**
64
+ * Get versions with platform info
65
+ */
66
+ async getVersions(packageName) {
67
+ if (!packageName.startsWith('@')) {
68
+ throw new Error('Package name must be scoped (e.g., @username/package-name)');
69
+ }
70
+ const url = `${this.baseUrl}/v1/bundles/${packageName}/versions`;
71
+ const response = await fetch(url);
72
+ if (!response.ok) {
73
+ if (response.status === 404) {
74
+ throw new Error(`Bundle not found: ${packageName}`);
75
+ }
76
+ const error = await response.json().catch(() => ({ error: response.statusText }));
77
+ const errorMessage = typeof error.error === 'string'
78
+ ? error.error
79
+ : error.error?.message || `Failed to get versions: ${response.statusText}`;
80
+ throw new Error(errorMessage);
81
+ }
82
+ return response.json();
83
+ }
84
+ /**
85
+ * Detect the current platform
86
+ */
87
+ static detectPlatform() {
88
+ const platform = process.platform;
89
+ const arch = process.arch;
90
+ // Map Node.js platform names to MCPB spec names
91
+ let os;
92
+ switch (platform) {
93
+ case 'darwin':
94
+ os = 'darwin';
95
+ break;
96
+ case 'win32':
97
+ os = 'win32';
98
+ break;
99
+ case 'linux':
100
+ os = 'linux';
101
+ break;
102
+ default:
103
+ os = 'any';
104
+ }
105
+ // Map Node.js arch names to MCPB spec names
106
+ let mcpbArch;
107
+ switch (arch) {
108
+ case 'x64':
109
+ mcpbArch = 'x64';
110
+ break;
111
+ case 'arm64':
112
+ mcpbArch = 'arm64';
113
+ break;
114
+ default:
115
+ mcpbArch = 'any';
116
+ }
117
+ return { os, arch: mcpbArch };
118
+ }
119
+ /**
120
+ * Get download info for a bundle version
121
+ */
122
+ async getDownloadInfo(packageName, version, platform) {
123
+ if (!packageName.startsWith('@')) {
124
+ throw new Error('Package name must be scoped (e.g., @username/package-name)');
125
+ }
126
+ const versionPath = version ? `/versions/${version}` : '/versions/latest';
127
+ const params = new URLSearchParams();
128
+ if (platform) {
129
+ params.set('os', platform.os);
130
+ params.set('arch', platform.arch);
131
+ }
132
+ const queryString = params.toString();
133
+ const url = `${this.baseUrl}/v1/bundles/${packageName}${versionPath}/download${queryString ? `?${queryString}` : ''}`;
134
+ const response = await fetch(url, {
135
+ headers: {
136
+ Accept: 'application/json',
137
+ },
138
+ });
139
+ if (!response.ok) {
140
+ if (response.status === 404) {
141
+ throw new Error(version
142
+ ? `Bundle version not found: ${packageName}@${version}`
143
+ : `Bundle not found: ${packageName}`);
144
+ }
145
+ const error = await response.json().catch(() => ({ error: response.statusText }));
146
+ const errorMessage = typeof error.error === 'string'
147
+ ? error.error
148
+ : error.error?.message || `Failed to get download info: ${response.statusText}`;
149
+ throw new Error(errorMessage);
150
+ }
151
+ return response.json();
152
+ }
153
+ /**
154
+ * Download a bundle to a file
155
+ */
156
+ async downloadBundle(downloadUrl, outputPath) {
157
+ const response = await fetch(downloadUrl);
158
+ if (!response.ok) {
159
+ throw new Error(`Failed to download bundle: ${response.statusText}`);
160
+ }
161
+ const arrayBuffer = await response.arrayBuffer();
162
+ const buffer = Buffer.from(arrayBuffer);
163
+ const fs = await import('fs');
164
+ fs.writeFileSync(outputPath, buffer);
165
+ }
166
+ }
167
+ //# sourceMappingURL=registry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../../src/lib/api/registry-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Creates and configures the CLI program
4
+ *
5
+ * MVP: Unauthenticated commands only (v1 API)
6
+ */
7
+ export declare function createProgram(): Command;
8
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAgEvC"}
@@ -0,0 +1,69 @@
1
+ import { Command } from 'commander';
2
+ import { getVersion } from './utils/version.js';
3
+ import { handleSearch } from './commands/packages/search.js';
4
+ import { handleShow } from './commands/packages/show.js';
5
+ import { handlePull } from './commands/packages/pull.js';
6
+ /**
7
+ * Creates and configures the CLI program
8
+ *
9
+ * MVP: Unauthenticated commands only (v1 API)
10
+ */
11
+ export function createProgram() {
12
+ const program = new Command();
13
+ program
14
+ .name('mpak')
15
+ .description('CLI for downloading MCPB bundles from the package directory')
16
+ .version(getVersion(), '-v, --version', 'Output the current version');
17
+ // Search command
18
+ program
19
+ .command('search <query>')
20
+ .description('Search public bundles')
21
+ .option('--type <type>', 'Filter by server type (node, python, binary)')
22
+ .option('--sort <field>', 'Sort by: downloads, recent, name')
23
+ .option('--limit <number>', 'Limit results', parseInt)
24
+ .option('--offset <number>', 'Pagination offset', parseInt)
25
+ .option('--json', 'Output as JSON')
26
+ .action(async (query, options) => {
27
+ await handleSearch(query, options);
28
+ });
29
+ // Show command
30
+ program
31
+ .command('show <package>')
32
+ .description('Show detailed information about a bundle')
33
+ .option('--json', 'Output as JSON')
34
+ .action(async (packageName, options) => {
35
+ await handleShow(packageName, options);
36
+ });
37
+ // Info command (alias for show)
38
+ program
39
+ .command('info <package>')
40
+ .description('Show detailed information about a bundle (alias for show)')
41
+ .option('--json', 'Output as JSON')
42
+ .action(async (packageName, options) => {
43
+ await handleShow(packageName, options);
44
+ });
45
+ // Pull command
46
+ program
47
+ .command('pull <package>')
48
+ .description('Download a bundle from the registry (e.g., @scope/name or @scope/name@1.0.0)')
49
+ .option('-o, --output <path>', 'Output file path')
50
+ .option('--os <os>', 'Target OS (darwin, linux, win32)')
51
+ .option('--arch <arch>', 'Target architecture (x64, arm64)')
52
+ .option('--json', 'Output download info as JSON')
53
+ .action(async (packageSpec, options) => {
54
+ await handlePull(packageSpec, options);
55
+ });
56
+ // Install command (alias for pull)
57
+ program
58
+ .command('install <package>')
59
+ .description('Download a bundle from the registry (alias for pull)')
60
+ .option('-o, --output <path>', 'Output file path')
61
+ .option('--os <os>', 'Target OS (darwin, linux, win32)')
62
+ .option('--arch <arch>', 'Target architecture (x64, arm64)')
63
+ .option('--json', 'Output download info as JSON')
64
+ .action(async (packageSpec, options) => {
65
+ await handlePull(packageSpec, options);
66
+ });
67
+ return program;
68
+ }
69
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Configuration structure
3
+ */
4
+ export interface MpakConfig {
5
+ version: string;
6
+ lastUpdated: string;
7
+ registryUrl?: string;
8
+ }
9
+ /**
10
+ * Configuration manager for CLI settings in ~/.mpak/config.json
11
+ */
12
+ export declare class ConfigManager {
13
+ private configDir;
14
+ private configFile;
15
+ private config;
16
+ constructor();
17
+ private ensureConfigDir;
18
+ loadConfig(): MpakConfig;
19
+ private saveConfig;
20
+ setRegistryUrl(url: string): void;
21
+ getRegistryUrl(): string;
22
+ }
23
+ //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;;IAQzC,OAAO,CAAC,eAAe;IAMvB,UAAU,IAAI,UAAU;IA4BxB,OAAO,CAAC,UAAU;IASlB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMjC,cAAc,IAAI,MAAM;CAIzB"}