@nimblebrain/mpak 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/CLAUDE.md +73 -34
  3. package/README.md +222 -57
  4. package/dist/commands/search.d.ts +12 -0
  5. package/dist/commands/search.d.ts.map +1 -0
  6. package/dist/commands/search.js +144 -0
  7. package/dist/commands/search.js.map +1 -0
  8. package/dist/commands/skills/index.d.ts +8 -0
  9. package/dist/commands/skills/index.d.ts.map +1 -0
  10. package/dist/commands/skills/index.js +8 -0
  11. package/dist/commands/skills/index.js.map +1 -0
  12. package/dist/commands/skills/install.d.ts +9 -0
  13. package/dist/commands/skills/install.d.ts.map +1 -0
  14. package/dist/commands/skills/install.js +110 -0
  15. package/dist/commands/skills/install.js.map +1 -0
  16. package/dist/commands/skills/list.d.ts +8 -0
  17. package/dist/commands/skills/list.d.ts.map +1 -0
  18. package/dist/commands/skills/list.js +89 -0
  19. package/dist/commands/skills/list.js.map +1 -0
  20. package/dist/commands/skills/pack.d.ts +22 -0
  21. package/dist/commands/skills/pack.d.ts.map +1 -0
  22. package/dist/commands/skills/pack.js +116 -0
  23. package/dist/commands/skills/pack.js.map +1 -0
  24. package/dist/commands/skills/pull.d.ts +9 -0
  25. package/dist/commands/skills/pull.d.ts.map +1 -0
  26. package/dist/commands/skills/pull.js +68 -0
  27. package/dist/commands/skills/pull.js.map +1 -0
  28. package/dist/commands/skills/search.d.ts +14 -0
  29. package/dist/commands/skills/search.d.ts.map +1 -0
  30. package/dist/commands/skills/search.js +53 -0
  31. package/dist/commands/skills/search.js.map +1 -0
  32. package/dist/commands/skills/show.d.ts +8 -0
  33. package/dist/commands/skills/show.d.ts.map +1 -0
  34. package/dist/commands/skills/show.js +64 -0
  35. package/dist/commands/skills/show.js.map +1 -0
  36. package/dist/commands/skills/validate.d.ts +25 -0
  37. package/dist/commands/skills/validate.d.ts.map +1 -0
  38. package/dist/commands/skills/validate.js +191 -0
  39. package/dist/commands/skills/validate.js.map +1 -0
  40. package/dist/lib/api/skills-client.d.ts +30 -0
  41. package/dist/lib/api/skills-client.d.ts.map +1 -0
  42. package/dist/lib/api/skills-client.js +110 -0
  43. package/dist/lib/api/skills-client.js.map +1 -0
  44. package/dist/program.d.ts +5 -1
  45. package/dist/program.d.ts.map +1 -1
  46. package/dist/program.js +98 -33
  47. package/dist/program.js.map +1 -1
  48. package/dist/schemas/generated/api-responses.d.ts +541 -0
  49. package/dist/schemas/generated/api-responses.d.ts.map +1 -0
  50. package/dist/schemas/generated/api-responses.js +313 -0
  51. package/dist/schemas/generated/api-responses.js.map +1 -0
  52. package/dist/schemas/generated/auth.d.ts +18 -0
  53. package/dist/schemas/generated/auth.d.ts.map +1 -0
  54. package/dist/schemas/generated/auth.js +18 -0
  55. package/dist/schemas/generated/auth.js.map +1 -0
  56. package/dist/schemas/generated/index.d.ts +5 -0
  57. package/dist/schemas/generated/index.d.ts.map +1 -0
  58. package/dist/schemas/generated/index.js +6 -0
  59. package/dist/schemas/generated/index.js.map +1 -0
  60. package/dist/schemas/generated/package.d.ts +43 -0
  61. package/dist/schemas/generated/package.d.ts.map +1 -0
  62. package/dist/schemas/generated/package.js +20 -0
  63. package/dist/schemas/generated/package.js.map +1 -0
  64. package/dist/schemas/generated/skill.d.ts +381 -0
  65. package/dist/schemas/generated/skill.d.ts.map +1 -0
  66. package/dist/schemas/generated/skill.js +216 -0
  67. package/dist/schemas/generated/skill.js.map +1 -0
  68. package/dist/utils/config-manager.d.ts +13 -1
  69. package/dist/utils/config-manager.d.ts.map +1 -1
  70. package/dist/utils/config-manager.js +76 -11
  71. package/dist/utils/config-manager.js.map +1 -1
  72. package/package.json +6 -2
  73. package/src/commands/search.ts +191 -0
  74. package/src/commands/skills/index.ts +7 -0
  75. package/src/commands/skills/install.ts +129 -0
  76. package/src/commands/skills/list.ts +116 -0
  77. package/src/commands/skills/pack.test.ts +260 -0
  78. package/src/commands/skills/pack.ts +145 -0
  79. package/src/commands/skills/pull.ts +88 -0
  80. package/src/commands/skills/search.ts +73 -0
  81. package/src/commands/skills/show.ts +72 -0
  82. package/src/commands/skills/validate.test.ts +466 -0
  83. package/src/commands/skills/validate.ts +227 -0
  84. package/src/lib/api/skills-client.ts +148 -0
  85. package/src/program.test.ts +1 -3
  86. package/src/program.ts +125 -35
  87. package/src/schemas/config.v1.schema.json +37 -0
  88. package/src/schemas/generated/api-responses.ts +386 -0
  89. package/src/schemas/generated/auth.ts +21 -0
  90. package/src/schemas/generated/index.ts +5 -0
  91. package/src/schemas/generated/package.ts +29 -0
  92. package/src/schemas/generated/skill.ts +271 -0
  93. package/src/utils/config-manager.test.ts +182 -2
  94. package/src/utils/config-manager.ts +126 -12
@@ -0,0 +1,68 @@
1
+ import { writeFileSync } from 'fs';
2
+ import { basename, join } from 'path';
3
+ import { getSkillDownloadInfo, downloadSkillBundle } from '../../lib/api/skills-client.js';
4
+ /**
5
+ * Parse skill spec into name and version
6
+ * Examples: @scope/name, @scope/name@1.0.0
7
+ */
8
+ function parseSkillSpec(spec) {
9
+ // Handle @scope/name@version format
10
+ const atIndex = spec.lastIndexOf('@');
11
+ // If @ is at position 0, it's just the scope prefix
12
+ if (atIndex <= 0) {
13
+ return { name: spec };
14
+ }
15
+ // Check if the @ is part of version (after the /)
16
+ const slashIndex = spec.indexOf('/');
17
+ if (atIndex > slashIndex) {
18
+ return {
19
+ name: spec.slice(0, atIndex),
20
+ version: spec.slice(atIndex + 1),
21
+ };
22
+ }
23
+ return { name: spec };
24
+ }
25
+ /**
26
+ * Handle the skill pull command
27
+ */
28
+ export async function handleSkillPull(skillSpec, options) {
29
+ try {
30
+ const { name, version } = parseSkillSpec(skillSpec);
31
+ // Get download info
32
+ const downloadInfo = await getSkillDownloadInfo(name, version);
33
+ console.log(`Pulling ${downloadInfo.skill.name}@${downloadInfo.skill.version}...`);
34
+ // Download the bundle
35
+ const buffer = await downloadSkillBundle(downloadInfo.url, downloadInfo.skill.sha256);
36
+ // Determine output path
37
+ const filename = `${basename(downloadInfo.skill.name.replace('@', '').replace('/', '-'))}-${downloadInfo.skill.version}.skill`;
38
+ const outputPath = options.output || join(process.cwd(), filename);
39
+ // Write to disk
40
+ writeFileSync(outputPath, buffer);
41
+ if (options.json) {
42
+ console.log(JSON.stringify({
43
+ path: outputPath,
44
+ name: downloadInfo.skill.name,
45
+ version: downloadInfo.skill.version,
46
+ size: downloadInfo.skill.size,
47
+ sha256: downloadInfo.skill.sha256,
48
+ }, null, 2));
49
+ }
50
+ else {
51
+ console.log(`Downloaded ${filename} (${formatSize(downloadInfo.skill.size)})`);
52
+ console.log(` SHA256: ${downloadInfo.skill.sha256}`);
53
+ console.log(` Path: ${outputPath}`);
54
+ }
55
+ }
56
+ catch (err) {
57
+ console.error(`Error: ${err instanceof Error ? err.message : err}`);
58
+ process.exit(1);
59
+ }
60
+ }
61
+ function formatSize(bytes) {
62
+ if (bytes < 1024)
63
+ return `${bytes} B`;
64
+ if (bytes < 1024 * 1024)
65
+ return `${(bytes / 1024).toFixed(1)} KB`;
66
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
67
+ }
68
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/skills/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface SearchOptions {
2
+ tags?: string;
3
+ category?: string;
4
+ surface?: string;
5
+ sort?: string;
6
+ limit?: number;
7
+ offset?: number;
8
+ json?: boolean;
9
+ }
10
+ /**
11
+ * Handle the skill search command
12
+ */
13
+ export declare function handleSkillSearch(query: string, options: SearchOptions): Promise<void>;
14
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/search.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5F"}
@@ -0,0 +1,53 @@
1
+ import { searchSkills } from '../../lib/api/skills-client.js';
2
+ /**
3
+ * Handle the skill search command
4
+ */
5
+ export async function handleSkillSearch(query, options) {
6
+ try {
7
+ const result = await searchSkills({
8
+ q: query,
9
+ tags: options.tags,
10
+ category: options.category,
11
+ surface: options.surface,
12
+ sort: options.sort,
13
+ limit: options.limit,
14
+ offset: options.offset,
15
+ });
16
+ if (options.json) {
17
+ console.log(JSON.stringify(result, null, 2));
18
+ return;
19
+ }
20
+ if (result.skills.length === 0) {
21
+ console.log(`No skills found for "${query}"`);
22
+ return;
23
+ }
24
+ // Table header
25
+ const nameWidth = 45;
26
+ const categoryWidth = 12;
27
+ const downloadsWidth = 10;
28
+ console.log('');
29
+ console.log('NAME'.padEnd(nameWidth) +
30
+ 'CATEGORY'.padEnd(categoryWidth) +
31
+ 'DOWNLOADS'.padStart(downloadsWidth));
32
+ // Table rows
33
+ for (const skill of result.skills) {
34
+ const name = skill.name.length > nameWidth - 2
35
+ ? skill.name.slice(0, nameWidth - 5) + '...'
36
+ : skill.name;
37
+ const category = skill.category || '-';
38
+ const downloads = skill.downloads.toLocaleString();
39
+ console.log(name.padEnd(nameWidth) +
40
+ category.padEnd(categoryWidth) +
41
+ downloads.padStart(downloadsWidth));
42
+ }
43
+ if (result.pagination.has_more) {
44
+ console.log('');
45
+ console.log(`Showing ${result.skills.length} of ${result.total} results. Use --offset to see more.`);
46
+ }
47
+ }
48
+ catch (err) {
49
+ console.error(`Error: ${err instanceof Error ? err.message : err}`);
50
+ process.exit(1);
51
+ }
52
+ }
53
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/skills/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAY9D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,OAAsB;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,CAAC,EAAE,KAAK;YACR,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAe;YACjC,OAAO,EAAE,OAAO,CAAC,OAAc;YAC/B,IAAI,EAAE,OAAO,CAAC,IAAW;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,eAAe;QACf,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,MAAM,cAAc,GAAG,EAAE,CAAC;QAE1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YACtB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;YAChC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CACvC,CAAC;QAEF,aAAa;QACb,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC;gBAC5C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK;gBAC5C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC;YACvC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAEnD,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBACpB,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC9B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CACrC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,qCAAqC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface ShowOptions {
2
+ json?: boolean;
3
+ }
4
+ /**
5
+ * Handle the skill show command
6
+ */
7
+ export declare function handleSkillShow(name: 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/skills/show.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DvF"}
@@ -0,0 +1,64 @@
1
+ import { getSkillDetails } from '../../lib/api/skills-client.js';
2
+ /**
3
+ * Handle the skill show command
4
+ */
5
+ export async function handleSkillShow(name, options) {
6
+ try {
7
+ const skill = await getSkillDetails(name);
8
+ if (options.json) {
9
+ console.log(JSON.stringify(skill, null, 2));
10
+ return;
11
+ }
12
+ console.log('');
13
+ console.log(`${skill.name}@${skill.latest_version}`);
14
+ console.log('');
15
+ console.log(skill.description);
16
+ console.log('');
17
+ // Metadata section
18
+ console.log('Metadata:');
19
+ if (skill.license)
20
+ console.log(` License: ${skill.license}`);
21
+ if (skill.category)
22
+ console.log(` Category: ${skill.category}`);
23
+ if (skill.tags && skill.tags.length > 0)
24
+ console.log(` Tags: ${skill.tags.join(', ')}`);
25
+ if (skill.surfaces && skill.surfaces.length > 0)
26
+ console.log(` Surfaces: ${skill.surfaces.join(', ')}`);
27
+ if (skill.author)
28
+ console.log(` Author: ${skill.author.name}${skill.author.url ? ` (${skill.author.url})` : ''}`);
29
+ console.log(` Downloads: ${skill.downloads.toLocaleString()}`);
30
+ console.log(` Published: ${new Date(skill.published_at).toLocaleDateString()}`);
31
+ // Triggers
32
+ if (skill.triggers && skill.triggers.length > 0) {
33
+ console.log('');
34
+ console.log('Triggers:');
35
+ skill.triggers.forEach((t) => console.log(` - ${t}`));
36
+ }
37
+ // Examples
38
+ if (skill.examples && skill.examples.length > 0) {
39
+ console.log('');
40
+ console.log('Examples:');
41
+ skill.examples.forEach((ex) => {
42
+ console.log(` - "${ex.prompt}"${ex.context ? ` (${ex.context})` : ''}`);
43
+ });
44
+ }
45
+ // Versions
46
+ if (skill.versions && skill.versions.length > 0) {
47
+ console.log('');
48
+ console.log('Versions:');
49
+ skill.versions.slice(0, 5).forEach((v) => {
50
+ console.log(` ${v.version.padEnd(12)} ${new Date(v.published_at).toLocaleDateString().padEnd(12)} ${v.downloads.toLocaleString()} downloads`);
51
+ });
52
+ if (skill.versions.length > 5) {
53
+ console.log(` ... and ${skill.versions.length - 5} more`);
54
+ }
55
+ }
56
+ console.log('');
57
+ console.log(`Install: mpak skill install ${skill.name}`);
58
+ }
59
+ catch (err) {
60
+ console.error(`Error: ${err instanceof Error ? err.message : err}`);
61
+ process.exit(1);
62
+ }
63
+ }
64
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/skills/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMjE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAoB;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAEjF,WAAW;QACX,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAwC,EAAE,EAAE;gBAClE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;QACL,CAAC;QAED,WAAW;QACX,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAA+D,EAAE,EAAE;gBACrG,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAClI,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { SkillFrontmatter } from '../../schemas/generated/skill.js';
2
+ export interface ValidationResult {
3
+ valid: boolean;
4
+ name: string | null;
5
+ path: string;
6
+ frontmatter: SkillFrontmatter | null;
7
+ errors: string[];
8
+ warnings: string[];
9
+ }
10
+ /**
11
+ * Validate a skill directory against the Agent Skills spec
12
+ */
13
+ export declare function validateSkillDirectory(skillPath: string): ValidationResult;
14
+ /**
15
+ * Format validation result for CLI output
16
+ */
17
+ export declare function formatValidationResult(result: ValidationResult): string;
18
+ export interface ValidateOptions {
19
+ json?: boolean;
20
+ }
21
+ /**
22
+ * Handle the validate command
23
+ */
24
+ export declare function handleSkillValidate(skillPath: string, options: ValidateOptions): Promise<void>;
25
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAiH1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA+DvE;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,191 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
2
+ import { join, basename } from 'path';
3
+ import matter from 'gray-matter';
4
+ import { SkillFrontmatterSchema } from '../../schemas/generated/skill.js';
5
+ /**
6
+ * Validate a skill directory against the Agent Skills spec
7
+ */
8
+ export function validateSkillDirectory(skillPath) {
9
+ const result = {
10
+ valid: true,
11
+ name: null,
12
+ path: skillPath,
13
+ frontmatter: null,
14
+ errors: [],
15
+ warnings: [],
16
+ };
17
+ // Check directory exists
18
+ if (!existsSync(skillPath)) {
19
+ result.valid = false;
20
+ result.errors.push(`Directory not found: ${skillPath}`);
21
+ return result;
22
+ }
23
+ const stats = statSync(skillPath);
24
+ if (!stats.isDirectory()) {
25
+ result.valid = false;
26
+ result.errors.push(`Path is not a directory: ${skillPath}`);
27
+ return result;
28
+ }
29
+ // Check SKILL.md exists
30
+ const skillMdPath = join(skillPath, 'SKILL.md');
31
+ if (!existsSync(skillMdPath)) {
32
+ result.valid = false;
33
+ result.errors.push('SKILL.md not found');
34
+ return result;
35
+ }
36
+ // Read and parse SKILL.md
37
+ let content;
38
+ try {
39
+ content = readFileSync(skillMdPath, 'utf-8');
40
+ }
41
+ catch (err) {
42
+ result.valid = false;
43
+ result.errors.push(`Failed to read SKILL.md: ${err}`);
44
+ return result;
45
+ }
46
+ // Parse frontmatter
47
+ let parsed;
48
+ try {
49
+ parsed = matter(content);
50
+ }
51
+ catch (err) {
52
+ result.valid = false;
53
+ result.errors.push(`Failed to parse frontmatter: ${err}`);
54
+ return result;
55
+ }
56
+ if (!parsed.data || Object.keys(parsed.data).length === 0) {
57
+ result.valid = false;
58
+ result.errors.push('No frontmatter found in SKILL.md');
59
+ return result;
60
+ }
61
+ // Validate against schema
62
+ const validation = SkillFrontmatterSchema.safeParse(parsed.data);
63
+ if (!validation.success) {
64
+ result.valid = false;
65
+ for (const issue of validation.error.issues) {
66
+ const path = issue.path.join('.');
67
+ result.errors.push(`${path}: ${issue.message}`);
68
+ }
69
+ return result;
70
+ }
71
+ result.frontmatter = validation.data;
72
+ result.name = validation.data.name;
73
+ // Validate name matches directory name
74
+ const dirName = basename(skillPath);
75
+ if (validation.data.name !== dirName) {
76
+ result.valid = false;
77
+ result.errors.push(`Skill name "${validation.data.name}" does not match directory name "${dirName}"`);
78
+ }
79
+ // Check for optional directories and files
80
+ const contents = readdirSync(skillPath);
81
+ // Standard optional directories
82
+ const optionalDirs = ['scripts', 'references', 'assets'];
83
+ for (const dir of optionalDirs) {
84
+ if (contents.includes(dir)) {
85
+ const dirPath = join(skillPath, dir);
86
+ if (!statSync(dirPath).isDirectory()) {
87
+ result.warnings.push(`"${dir}" exists but is not a directory`);
88
+ }
89
+ }
90
+ }
91
+ // Check for discovery metadata (not required, but recommended)
92
+ if (!validation.data.metadata) {
93
+ result.warnings.push('No metadata field - consider adding for better discovery');
94
+ }
95
+ else {
96
+ const meta = validation.data.metadata;
97
+ if (!meta.tags || meta.tags.length === 0) {
98
+ result.warnings.push('No tags in metadata - consider adding for better discovery');
99
+ }
100
+ if (!meta.category) {
101
+ result.warnings.push('No category in metadata - consider adding for better discovery');
102
+ }
103
+ if (!meta.version) {
104
+ result.warnings.push('No version in metadata - required for registry publishing');
105
+ }
106
+ }
107
+ return result;
108
+ }
109
+ /**
110
+ * Format validation result for CLI output
111
+ */
112
+ export function formatValidationResult(result) {
113
+ const lines = [];
114
+ if (result.valid) {
115
+ lines.push(`\u2713 Valid: ${result.name || result.path}`);
116
+ }
117
+ else {
118
+ lines.push(`\u2717 Invalid: ${result.name || result.path}`);
119
+ }
120
+ lines.push('');
121
+ if (result.frontmatter) {
122
+ lines.push('\u2713 SKILL.md found');
123
+ lines.push('\u2713 Required fields');
124
+ lines.push(` \u251c\u2500 name: ${result.frontmatter.name}`);
125
+ lines.push(` \u2514\u2500 description: ${result.frontmatter.description.slice(0, 60)}${result.frontmatter.description.length > 60 ? '...' : ''} (${result.frontmatter.description.length} chars)`);
126
+ // Optional fields
127
+ const optionalFields = [];
128
+ if (result.frontmatter.license)
129
+ optionalFields.push(`license: ${result.frontmatter.license}`);
130
+ if (result.frontmatter.compatibility)
131
+ optionalFields.push(`compatibility: ${result.frontmatter.compatibility}`);
132
+ if (result.frontmatter['allowed-tools'])
133
+ optionalFields.push(`allowed-tools: ${result.frontmatter['allowed-tools']}`);
134
+ if (optionalFields.length > 0) {
135
+ lines.push('');
136
+ lines.push('\u2713 Optional fields');
137
+ optionalFields.forEach((field, i) => {
138
+ const prefix = i === optionalFields.length - 1 ? '\u2514\u2500' : '\u251c\u2500';
139
+ lines.push(` ${prefix} ${field}`);
140
+ });
141
+ }
142
+ // Discovery metadata
143
+ if (result.frontmatter.metadata) {
144
+ const meta = result.frontmatter.metadata;
145
+ lines.push('');
146
+ lines.push('\u2713 Discovery metadata (metadata:)');
147
+ if (meta.tags)
148
+ lines.push(` \u251c\u2500 tags: [${meta.tags.join(', ')}]`);
149
+ if (meta.category)
150
+ lines.push(` \u251c\u2500 category: ${meta.category}`);
151
+ if (meta.triggers)
152
+ lines.push(` \u251c\u2500 triggers: ${meta.triggers.length} defined`);
153
+ if (meta.version)
154
+ lines.push(` \u251c\u2500 version: ${meta.version}`);
155
+ if (meta.surfaces)
156
+ lines.push(` \u251c\u2500 surfaces: [${meta.surfaces.join(', ')}]`);
157
+ if (meta.author)
158
+ lines.push(` \u2514\u2500 author: ${meta.author.name}`);
159
+ }
160
+ }
161
+ if (result.errors.length > 0) {
162
+ lines.push('');
163
+ lines.push('Errors:');
164
+ result.errors.forEach((err) => lines.push(` \u2717 ${err}`));
165
+ }
166
+ if (result.warnings.length > 0) {
167
+ lines.push('');
168
+ lines.push('Warnings:');
169
+ result.warnings.forEach((warn) => lines.push(` \u26a0 ${warn}`));
170
+ }
171
+ return lines.join('\n');
172
+ }
173
+ /**
174
+ * Handle the validate command
175
+ */
176
+ export async function handleSkillValidate(skillPath, options) {
177
+ const result = validateSkillDirectory(skillPath);
178
+ if (options.json) {
179
+ console.log(JSON.stringify(result, null, 2));
180
+ }
181
+ else {
182
+ console.log('');
183
+ console.log(`Validating ${skillPath}...`);
184
+ console.log('');
185
+ console.log(formatValidationResult(result));
186
+ }
187
+ if (!result.valid) {
188
+ process.exit(1);
189
+ }
190
+ }
191
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/skills/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Skills API client for mpak registry
3
+ */
4
+ import type { SkillSearchResponse, SkillDetail, SkillDownloadInfo } from '../../schemas/generated/skill.js';
5
+ export interface SkillSearchOptions {
6
+ q?: string;
7
+ tags?: string;
8
+ category?: string;
9
+ surface?: string;
10
+ sort?: 'downloads' | 'recent' | 'name';
11
+ limit?: number;
12
+ offset?: number;
13
+ }
14
+ /**
15
+ * Search for skills in the registry
16
+ */
17
+ export declare function searchSkills(options: SkillSearchOptions): Promise<SkillSearchResponse>;
18
+ /**
19
+ * Get skill details from the registry
20
+ */
21
+ export declare function getSkillDetails(name: string): Promise<SkillDetail>;
22
+ /**
23
+ * Get download info for a skill
24
+ */
25
+ export declare function getSkillDownloadInfo(name: string, version?: string): Promise<SkillDownloadInfo>;
26
+ /**
27
+ * Download a skill bundle
28
+ */
29
+ export declare function downloadSkillBundle(downloadUrl: string, expectedSha256?: string): Promise<Buffer>;
30
+ //# sourceMappingURL=skills-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/skills-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAqB1C,MAAM,WAAW,kBAAkB;IACjC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwB5F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoBxE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Skills API client for mpak registry
3
+ */
4
+ const DEFAULT_REGISTRY_URL = 'https://api.mpak.dev';
5
+ function getRegistryUrl() {
6
+ return process.env.MPAK_REGISTRY_URL || DEFAULT_REGISTRY_URL;
7
+ }
8
+ /**
9
+ * Parse a scoped name into scope and name parts
10
+ * Handles both @scope/name and scope/name formats
11
+ */
12
+ function parseScopedName(name) {
13
+ const normalizedName = name.startsWith('@') ? name.slice(1) : name;
14
+ const [scope, skillName] = normalizedName.split('/');
15
+ if (!scope || !skillName) {
16
+ throw new Error(`Invalid skill name format: ${name}. Expected @scope/name or scope/name`);
17
+ }
18
+ return { scope, skillName };
19
+ }
20
+ /**
21
+ * Search for skills in the registry
22
+ */
23
+ export async function searchSkills(options) {
24
+ const baseUrl = getRegistryUrl();
25
+ const params = new URLSearchParams();
26
+ if (options.q)
27
+ params.set('q', options.q);
28
+ if (options.tags)
29
+ params.set('tags', options.tags);
30
+ if (options.category)
31
+ params.set('category', options.category);
32
+ if (options.surface)
33
+ params.set('surface', options.surface);
34
+ if (options.sort)
35
+ params.set('sort', options.sort);
36
+ if (options.limit)
37
+ params.set('limit', options.limit.toString());
38
+ if (options.offset)
39
+ params.set('offset', options.offset.toString());
40
+ const url = `${baseUrl}/v1/skills/search?${params.toString()}`;
41
+ const response = await fetch(url, {
42
+ headers: { Accept: 'application/json' },
43
+ });
44
+ if (!response.ok) {
45
+ const text = await response.text();
46
+ throw new Error(`Search failed (${response.status}): ${text}`);
47
+ }
48
+ return response.json();
49
+ }
50
+ /**
51
+ * Get skill details from the registry
52
+ */
53
+ export async function getSkillDetails(name) {
54
+ const baseUrl = getRegistryUrl();
55
+ const { scope, skillName } = parseScopedName(name);
56
+ // Server expects: /v1/skills/@scope/name
57
+ const url = `${baseUrl}/v1/skills/@${scope}/${skillName}`;
58
+ const response = await fetch(url, {
59
+ headers: { Accept: 'application/json' },
60
+ });
61
+ if (!response.ok) {
62
+ if (response.status === 404) {
63
+ throw new Error(`Skill not found: ${name}`);
64
+ }
65
+ const text = await response.text();
66
+ throw new Error(`Failed to get skill details (${response.status}): ${text}`);
67
+ }
68
+ return response.json();
69
+ }
70
+ /**
71
+ * Get download info for a skill
72
+ */
73
+ export async function getSkillDownloadInfo(name, version) {
74
+ const baseUrl = getRegistryUrl();
75
+ const { scope, skillName } = parseScopedName(name);
76
+ // Server expects: /v1/skills/@scope/name/download or /v1/skills/@scope/name/versions/x.y.z/download
77
+ const versionPath = version ? `/versions/${version}` : '';
78
+ const url = `${baseUrl}/v1/skills/@${scope}/${skillName}${versionPath}/download`;
79
+ const response = await fetch(url, {
80
+ headers: { Accept: 'application/json' },
81
+ });
82
+ if (!response.ok) {
83
+ if (response.status === 404) {
84
+ throw new Error(`Skill not found: ${name}${version ? `@${version}` : ''}`);
85
+ }
86
+ const text = await response.text();
87
+ throw new Error(`Failed to get download info (${response.status}): ${text}`);
88
+ }
89
+ return response.json();
90
+ }
91
+ /**
92
+ * Download a skill bundle
93
+ */
94
+ export async function downloadSkillBundle(downloadUrl, expectedSha256) {
95
+ const response = await fetch(downloadUrl);
96
+ if (!response.ok) {
97
+ throw new Error(`Download failed (${response.status})`);
98
+ }
99
+ const buffer = Buffer.from(await response.arrayBuffer());
100
+ // Verify SHA256 if provided
101
+ if (expectedSha256) {
102
+ const { createHash } = await import('crypto');
103
+ const hash = createHash('sha256').update(buffer).digest('hex');
104
+ if (hash !== expectedSha256) {
105
+ throw new Error(`SHA256 mismatch: expected ${expectedSha256}, got ${hash}`);
106
+ }
107
+ }
108
+ return buffer;
109
+ }
110
+ //# sourceMappingURL=skills-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-client.js","sourceRoot":"","sources":["../../../src/lib/api/skills-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAEpD,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,oBAAoB,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,sCAAsC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAYD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA2B;IAC5D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpE,MAAM,GAAG,GAAG,GAAG,OAAO,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAE/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAkC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEnD,yCAAyC;IACzC,MAAM,GAAG,GAAG,GAAG,OAAO,eAAe,KAAK,IAAI,SAAS,EAAE,CAAC;IAE1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAA0B,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAgB;IAEhB,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEnD,oGAAoG;IACpG,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,OAAO,eAAe,KAAK,IAAI,SAAS,GAAG,WAAW,WAAW,CAAC;IAEjF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,cAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAE1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAEzD,4BAA4B;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,cAAc,SAAS,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/program.d.ts CHANGED
@@ -2,7 +2,11 @@ import { Command } from 'commander';
2
2
  /**
3
3
  * Creates and configures the CLI program
4
4
  *
5
- * MVP: Unauthenticated commands only (v1 API)
5
+ * Command structure:
6
+ * - mpak search <query> - Unified search (bundles + skills)
7
+ * - mpak bundle <command> - MCP bundle commands
8
+ * - mpak skill <command> - Agent skill commands
9
+ * - mpak config <command> - Configuration commands
6
10
  */
7
11
  export declare function createProgram(): Command;
8
12
  //# sourceMappingURL=program.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA4GvC"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAmLvC"}