@nimblebrain/mpak 0.1.0 → 0.3.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.
- package/README.md +50 -383
- package/dist/index.d.ts +0 -2
- package/dist/index.js +2117 -4
- package/dist/index.js.map +1 -1
- package/package.json +26 -23
- package/.claude/settings.local.json +0 -19
- package/.env.example +0 -13
- package/.github/workflows/ci.yml +0 -27
- package/CLAUDE.md +0 -283
- package/LICENSE +0 -201
- package/dist/commands/config.d.ts +0 -31
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -129
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/packages/pull.d.ts +0 -11
- package/dist/commands/packages/pull.d.ts.map +0 -1
- package/dist/commands/packages/pull.js +0 -72
- package/dist/commands/packages/pull.js.map +0 -1
- package/dist/commands/packages/run.d.ts +0 -47
- package/dist/commands/packages/run.d.ts.map +0 -1
- package/dist/commands/packages/run.js +0 -419
- package/dist/commands/packages/run.js.map +0 -1
- package/dist/commands/packages/search.d.ts +0 -12
- package/dist/commands/packages/search.d.ts.map +0 -1
- package/dist/commands/packages/search.js +0 -63
- package/dist/commands/packages/search.js.map +0 -1
- package/dist/commands/packages/show.d.ts +0 -8
- package/dist/commands/packages/show.d.ts.map +0 -1
- package/dist/commands/packages/show.js +0 -109
- package/dist/commands/packages/show.js.map +0 -1
- package/dist/commands/search.d.ts +0 -12
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -144
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/skills/index.d.ts +0 -8
- package/dist/commands/skills/index.d.ts.map +0 -1
- package/dist/commands/skills/index.js +0 -8
- package/dist/commands/skills/index.js.map +0 -1
- package/dist/commands/skills/install.d.ts +0 -9
- package/dist/commands/skills/install.d.ts.map +0 -1
- package/dist/commands/skills/install.js +0 -110
- package/dist/commands/skills/install.js.map +0 -1
- package/dist/commands/skills/list.d.ts +0 -8
- package/dist/commands/skills/list.d.ts.map +0 -1
- package/dist/commands/skills/list.js +0 -89
- package/dist/commands/skills/list.js.map +0 -1
- package/dist/commands/skills/pack.d.ts +0 -22
- package/dist/commands/skills/pack.d.ts.map +0 -1
- package/dist/commands/skills/pack.js +0 -116
- package/dist/commands/skills/pack.js.map +0 -1
- package/dist/commands/skills/pull.d.ts +0 -9
- package/dist/commands/skills/pull.d.ts.map +0 -1
- package/dist/commands/skills/pull.js +0 -68
- package/dist/commands/skills/pull.js.map +0 -1
- package/dist/commands/skills/search.d.ts +0 -14
- package/dist/commands/skills/search.d.ts.map +0 -1
- package/dist/commands/skills/search.js +0 -53
- package/dist/commands/skills/search.js.map +0 -1
- package/dist/commands/skills/show.d.ts +0 -8
- package/dist/commands/skills/show.d.ts.map +0 -1
- package/dist/commands/skills/show.js +0 -64
- package/dist/commands/skills/show.js.map +0 -1
- package/dist/commands/skills/validate.d.ts +0 -25
- package/dist/commands/skills/validate.d.ts.map +0 -1
- package/dist/commands/skills/validate.js +0 -191
- package/dist/commands/skills/validate.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/api/registry-client.d.ts +0 -63
- package/dist/lib/api/registry-client.d.ts.map +0 -1
- package/dist/lib/api/registry-client.js +0 -167
- package/dist/lib/api/registry-client.js.map +0 -1
- package/dist/lib/api/skills-client.d.ts +0 -30
- package/dist/lib/api/skills-client.d.ts.map +0 -1
- package/dist/lib/api/skills-client.js +0 -110
- package/dist/lib/api/skills-client.js.map +0 -1
- package/dist/program.d.ts +0 -12
- package/dist/program.d.ts.map +0 -1
- package/dist/program.js +0 -186
- package/dist/program.js.map +0 -1
- package/dist/schemas/generated/api-responses.d.ts +0 -541
- package/dist/schemas/generated/api-responses.d.ts.map +0 -1
- package/dist/schemas/generated/api-responses.js +0 -313
- package/dist/schemas/generated/api-responses.js.map +0 -1
- package/dist/schemas/generated/auth.d.ts +0 -18
- package/dist/schemas/generated/auth.d.ts.map +0 -1
- package/dist/schemas/generated/auth.js +0 -18
- package/dist/schemas/generated/auth.js.map +0 -1
- package/dist/schemas/generated/index.d.ts +0 -5
- package/dist/schemas/generated/index.d.ts.map +0 -1
- package/dist/schemas/generated/index.js +0 -6
- package/dist/schemas/generated/index.js.map +0 -1
- package/dist/schemas/generated/package.d.ts +0 -43
- package/dist/schemas/generated/package.d.ts.map +0 -1
- package/dist/schemas/generated/package.js +0 -20
- package/dist/schemas/generated/package.js.map +0 -1
- package/dist/schemas/generated/skill.d.ts +0 -381
- package/dist/schemas/generated/skill.d.ts.map +0 -1
- package/dist/schemas/generated/skill.js +0 -216
- package/dist/schemas/generated/skill.js.map +0 -1
- package/dist/utils/config-manager.d.ts +0 -66
- package/dist/utils/config-manager.d.ts.map +0 -1
- package/dist/utils/config-manager.js +0 -193
- package/dist/utils/config-manager.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -12
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -27
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/version.d.ts +0 -5
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -19
- package/dist/utils/version.js.map +0 -1
- package/eslint.config.js +0 -63
- package/src/commands/config.ts +0 -162
- package/src/commands/packages/pull.ts +0 -96
- package/src/commands/packages/run.test.ts +0 -261
- package/src/commands/packages/run.ts +0 -536
- package/src/commands/packages/search.ts +0 -83
- package/src/commands/packages/show.ts +0 -128
- package/src/commands/search.ts +0 -191
- package/src/commands/skills/index.ts +0 -7
- package/src/commands/skills/install.ts +0 -129
- package/src/commands/skills/list.ts +0 -116
- package/src/commands/skills/pack.test.ts +0 -260
- package/src/commands/skills/pack.ts +0 -145
- package/src/commands/skills/pull.ts +0 -88
- package/src/commands/skills/search.ts +0 -73
- package/src/commands/skills/show.ts +0 -72
- package/src/commands/skills/validate.test.ts +0 -466
- package/src/commands/skills/validate.ts +0 -227
- package/src/index.ts +0 -11
- package/src/lib/api/registry-client.ts +0 -223
- package/src/lib/api/schema.d.ts +0 -520
- package/src/lib/api/skills-client.ts +0 -148
- package/src/program.test.ts +0 -22
- package/src/program.ts +0 -226
- package/src/schemas/config.v1.schema.json +0 -37
- package/src/schemas/generated/api-responses.ts +0 -386
- package/src/schemas/generated/auth.ts +0 -21
- package/src/schemas/generated/index.ts +0 -5
- package/src/schemas/generated/package.ts +0 -29
- package/src/schemas/generated/skill.ts +0 -271
- package/src/utils/config-manager.test.ts +0 -330
- package/src/utils/config-manager.ts +0 -272
- package/src/utils/errors.test.ts +0 -25
- package/src/utils/errors.ts +0 -33
- package/src/utils/version.test.ts +0 -16
- package/src/utils/version.ts +0 -18
- package/test/integration/registry-client.test.ts +0 -180
- package/tsconfig.check.json +0 -9
- package/tsconfig.json +0 -25
- package/vitest.config.ts +0 -14
package/src/lib/api/schema.d.ts
DELETED
|
@@ -1,520 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file was auto-generated by openapi-typescript.
|
|
3
|
-
* Do not make direct changes to the file.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export interface paths {
|
|
7
|
-
"/v1/bundles/search": {
|
|
8
|
-
parameters: {
|
|
9
|
-
query?: never;
|
|
10
|
-
header?: never;
|
|
11
|
-
path?: never;
|
|
12
|
-
cookie?: never;
|
|
13
|
-
};
|
|
14
|
-
/** @description Search for bundles */
|
|
15
|
-
get: {
|
|
16
|
-
parameters: {
|
|
17
|
-
query?: {
|
|
18
|
-
/** @description Search query */
|
|
19
|
-
q?: string;
|
|
20
|
-
/** @description Filter by server type */
|
|
21
|
-
type?: string;
|
|
22
|
-
sort?: "downloads" | "recent" | "name";
|
|
23
|
-
limit?: number;
|
|
24
|
-
offset?: number;
|
|
25
|
-
};
|
|
26
|
-
header?: never;
|
|
27
|
-
path?: never;
|
|
28
|
-
cookie?: never;
|
|
29
|
-
};
|
|
30
|
-
requestBody?: never;
|
|
31
|
-
responses: {
|
|
32
|
-
/** @description Default Response */
|
|
33
|
-
200: {
|
|
34
|
-
headers: {
|
|
35
|
-
[name: string]: unknown;
|
|
36
|
-
};
|
|
37
|
-
content: {
|
|
38
|
-
"application/json": {
|
|
39
|
-
bundles: {
|
|
40
|
-
name: string;
|
|
41
|
-
display_name?: string | null;
|
|
42
|
-
description?: string | null;
|
|
43
|
-
author?: {
|
|
44
|
-
name: string;
|
|
45
|
-
} | null;
|
|
46
|
-
latest_version: string;
|
|
47
|
-
icon?: string | null;
|
|
48
|
-
server_type?: string | null;
|
|
49
|
-
tools?: {
|
|
50
|
-
name: string;
|
|
51
|
-
description?: string;
|
|
52
|
-
}[];
|
|
53
|
-
downloads: number;
|
|
54
|
-
published_at: string | unknown;
|
|
55
|
-
verified: boolean;
|
|
56
|
-
provenance?: {
|
|
57
|
-
schema_version: string;
|
|
58
|
-
provider: string;
|
|
59
|
-
repository: string;
|
|
60
|
-
sha: string;
|
|
61
|
-
} | null;
|
|
62
|
-
}[];
|
|
63
|
-
total: number;
|
|
64
|
-
pagination: {
|
|
65
|
-
limit: number;
|
|
66
|
-
offset: number;
|
|
67
|
-
has_more: boolean;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
put?: never;
|
|
75
|
-
post?: never;
|
|
76
|
-
delete?: never;
|
|
77
|
-
options?: never;
|
|
78
|
-
head?: never;
|
|
79
|
-
patch?: never;
|
|
80
|
-
trace?: never;
|
|
81
|
-
};
|
|
82
|
-
"/v1/bundles/@{scope}/{package}": {
|
|
83
|
-
parameters: {
|
|
84
|
-
query?: never;
|
|
85
|
-
header?: never;
|
|
86
|
-
path?: never;
|
|
87
|
-
cookie?: never;
|
|
88
|
-
};
|
|
89
|
-
/** @description Get detailed bundle information */
|
|
90
|
-
get: {
|
|
91
|
-
parameters: {
|
|
92
|
-
query?: never;
|
|
93
|
-
header?: never;
|
|
94
|
-
path: {
|
|
95
|
-
scope: string;
|
|
96
|
-
package: string;
|
|
97
|
-
};
|
|
98
|
-
cookie?: never;
|
|
99
|
-
};
|
|
100
|
-
requestBody?: never;
|
|
101
|
-
responses: {
|
|
102
|
-
/** @description Default Response */
|
|
103
|
-
200: {
|
|
104
|
-
headers: {
|
|
105
|
-
[name: string]: unknown;
|
|
106
|
-
};
|
|
107
|
-
content: {
|
|
108
|
-
"application/json": {
|
|
109
|
-
name: string;
|
|
110
|
-
display_name?: string | null;
|
|
111
|
-
description?: string | null;
|
|
112
|
-
author?: {
|
|
113
|
-
name: string;
|
|
114
|
-
} | null;
|
|
115
|
-
latest_version: string;
|
|
116
|
-
icon?: string | null;
|
|
117
|
-
server_type?: string | null;
|
|
118
|
-
tools?: {
|
|
119
|
-
name: string;
|
|
120
|
-
description?: string;
|
|
121
|
-
}[];
|
|
122
|
-
downloads: number;
|
|
123
|
-
published_at: string | unknown;
|
|
124
|
-
verified: boolean;
|
|
125
|
-
provenance?: {
|
|
126
|
-
schema_version: string;
|
|
127
|
-
provider: string;
|
|
128
|
-
repository: string;
|
|
129
|
-
sha: string;
|
|
130
|
-
} | null;
|
|
131
|
-
homepage?: string | null;
|
|
132
|
-
license?: string | null;
|
|
133
|
-
versions: {
|
|
134
|
-
version: string;
|
|
135
|
-
published_at: string | unknown;
|
|
136
|
-
downloads: number;
|
|
137
|
-
}[];
|
|
138
|
-
};
|
|
139
|
-
};
|
|
140
|
-
};
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
put?: never;
|
|
144
|
-
post?: never;
|
|
145
|
-
delete?: never;
|
|
146
|
-
options?: never;
|
|
147
|
-
head?: never;
|
|
148
|
-
patch?: never;
|
|
149
|
-
trace?: never;
|
|
150
|
-
};
|
|
151
|
-
"/v1/bundles/@{scope}/{package}/index.json": {
|
|
152
|
-
parameters: {
|
|
153
|
-
query?: never;
|
|
154
|
-
header?: never;
|
|
155
|
-
path?: never;
|
|
156
|
-
cookie?: never;
|
|
157
|
-
};
|
|
158
|
-
/** @description Get multi-platform distribution index for a bundle (MCPB Index spec) */
|
|
159
|
-
get: {
|
|
160
|
-
parameters: {
|
|
161
|
-
query?: never;
|
|
162
|
-
header?: never;
|
|
163
|
-
path: {
|
|
164
|
-
scope: string;
|
|
165
|
-
package: string;
|
|
166
|
-
};
|
|
167
|
-
cookie?: never;
|
|
168
|
-
};
|
|
169
|
-
requestBody?: never;
|
|
170
|
-
responses: {
|
|
171
|
-
/** @description Default Response */
|
|
172
|
-
200: {
|
|
173
|
-
headers: {
|
|
174
|
-
[name: string]: unknown;
|
|
175
|
-
};
|
|
176
|
-
content: {
|
|
177
|
-
"application/json": {
|
|
178
|
-
index_version: string;
|
|
179
|
-
mimeType: string;
|
|
180
|
-
name: string;
|
|
181
|
-
version: string;
|
|
182
|
-
description: string | null;
|
|
183
|
-
bundles: {
|
|
184
|
-
mimeType: string | null;
|
|
185
|
-
digest: string;
|
|
186
|
-
size: number;
|
|
187
|
-
platform: {
|
|
188
|
-
os: string;
|
|
189
|
-
arch: string;
|
|
190
|
-
};
|
|
191
|
-
urls: string[];
|
|
192
|
-
}[];
|
|
193
|
-
annotations?: {
|
|
194
|
-
[key: string]: string;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
};
|
|
199
|
-
};
|
|
200
|
-
};
|
|
201
|
-
put?: never;
|
|
202
|
-
post?: never;
|
|
203
|
-
delete?: never;
|
|
204
|
-
options?: never;
|
|
205
|
-
head?: never;
|
|
206
|
-
patch?: never;
|
|
207
|
-
trace?: never;
|
|
208
|
-
};
|
|
209
|
-
"/v1/bundles/@{scope}/{package}/versions": {
|
|
210
|
-
parameters: {
|
|
211
|
-
query?: never;
|
|
212
|
-
header?: never;
|
|
213
|
-
path?: never;
|
|
214
|
-
cookie?: never;
|
|
215
|
-
};
|
|
216
|
-
/** @description List all versions of a bundle */
|
|
217
|
-
get: {
|
|
218
|
-
parameters: {
|
|
219
|
-
query?: never;
|
|
220
|
-
header?: never;
|
|
221
|
-
path: {
|
|
222
|
-
scope: string;
|
|
223
|
-
package: string;
|
|
224
|
-
};
|
|
225
|
-
cookie?: never;
|
|
226
|
-
};
|
|
227
|
-
requestBody?: never;
|
|
228
|
-
responses: {
|
|
229
|
-
/** @description Default Response */
|
|
230
|
-
200: {
|
|
231
|
-
headers: {
|
|
232
|
-
[name: string]: unknown;
|
|
233
|
-
};
|
|
234
|
-
content: {
|
|
235
|
-
"application/json": {
|
|
236
|
-
name: string;
|
|
237
|
-
latest: string;
|
|
238
|
-
versions: {
|
|
239
|
-
version: string;
|
|
240
|
-
artifacts_count: number;
|
|
241
|
-
platforms: {
|
|
242
|
-
os: string;
|
|
243
|
-
arch: string;
|
|
244
|
-
}[];
|
|
245
|
-
published_at: string | unknown;
|
|
246
|
-
downloads: number;
|
|
247
|
-
publish_method: string | null;
|
|
248
|
-
provenance?: {
|
|
249
|
-
schema_version: string;
|
|
250
|
-
provider: string;
|
|
251
|
-
repository: string;
|
|
252
|
-
sha: string;
|
|
253
|
-
} | null;
|
|
254
|
-
}[];
|
|
255
|
-
};
|
|
256
|
-
};
|
|
257
|
-
};
|
|
258
|
-
};
|
|
259
|
-
};
|
|
260
|
-
put?: never;
|
|
261
|
-
post?: never;
|
|
262
|
-
delete?: never;
|
|
263
|
-
options?: never;
|
|
264
|
-
head?: never;
|
|
265
|
-
patch?: never;
|
|
266
|
-
trace?: never;
|
|
267
|
-
};
|
|
268
|
-
"/v1/bundles/@{scope}/{package}/versions/{version}": {
|
|
269
|
-
parameters: {
|
|
270
|
-
query?: never;
|
|
271
|
-
header?: never;
|
|
272
|
-
path?: never;
|
|
273
|
-
cookie?: never;
|
|
274
|
-
};
|
|
275
|
-
/** @description Get information about a specific version */
|
|
276
|
-
get: {
|
|
277
|
-
parameters: {
|
|
278
|
-
query?: never;
|
|
279
|
-
header?: never;
|
|
280
|
-
path: {
|
|
281
|
-
scope: string;
|
|
282
|
-
package: string;
|
|
283
|
-
version: string;
|
|
284
|
-
};
|
|
285
|
-
cookie?: never;
|
|
286
|
-
};
|
|
287
|
-
requestBody?: never;
|
|
288
|
-
responses: {
|
|
289
|
-
/** @description Default Response */
|
|
290
|
-
200: {
|
|
291
|
-
headers: {
|
|
292
|
-
[name: string]: unknown;
|
|
293
|
-
};
|
|
294
|
-
content: {
|
|
295
|
-
"application/json": {
|
|
296
|
-
name: string;
|
|
297
|
-
version: string;
|
|
298
|
-
published_at: string | unknown;
|
|
299
|
-
downloads: number;
|
|
300
|
-
artifacts: {
|
|
301
|
-
platform: {
|
|
302
|
-
os: string;
|
|
303
|
-
arch: string;
|
|
304
|
-
};
|
|
305
|
-
digest: string;
|
|
306
|
-
size: number;
|
|
307
|
-
download_url: string;
|
|
308
|
-
source_url?: string;
|
|
309
|
-
}[];
|
|
310
|
-
manifest: {
|
|
311
|
-
[key: string]: unknown;
|
|
312
|
-
};
|
|
313
|
-
release?: {
|
|
314
|
-
tag: string | null;
|
|
315
|
-
url: string | null;
|
|
316
|
-
};
|
|
317
|
-
publish_method: string | null;
|
|
318
|
-
provenance: {
|
|
319
|
-
schema_version: string;
|
|
320
|
-
provider: string;
|
|
321
|
-
repository: string;
|
|
322
|
-
sha: string;
|
|
323
|
-
} | null;
|
|
324
|
-
};
|
|
325
|
-
};
|
|
326
|
-
};
|
|
327
|
-
};
|
|
328
|
-
};
|
|
329
|
-
put?: never;
|
|
330
|
-
post?: never;
|
|
331
|
-
delete?: never;
|
|
332
|
-
options?: never;
|
|
333
|
-
head?: never;
|
|
334
|
-
patch?: never;
|
|
335
|
-
trace?: never;
|
|
336
|
-
};
|
|
337
|
-
"/v1/bundles/@{scope}/{package}/versions/{version}/download": {
|
|
338
|
-
parameters: {
|
|
339
|
-
query?: never;
|
|
340
|
-
header?: never;
|
|
341
|
-
path?: never;
|
|
342
|
-
cookie?: never;
|
|
343
|
-
};
|
|
344
|
-
/** @description Download a specific version of a bundle */
|
|
345
|
-
get: {
|
|
346
|
-
parameters: {
|
|
347
|
-
query?: {
|
|
348
|
-
/** @description Target OS (darwin, linux, win32, any) */
|
|
349
|
-
os?: string;
|
|
350
|
-
/** @description Target arch (x64, arm64, any) */
|
|
351
|
-
arch?: string;
|
|
352
|
-
};
|
|
353
|
-
header?: never;
|
|
354
|
-
path: {
|
|
355
|
-
scope: string;
|
|
356
|
-
package: string;
|
|
357
|
-
version: string;
|
|
358
|
-
};
|
|
359
|
-
cookie?: never;
|
|
360
|
-
};
|
|
361
|
-
requestBody?: never;
|
|
362
|
-
responses: {
|
|
363
|
-
/** @description Default Response */
|
|
364
|
-
200: {
|
|
365
|
-
headers: {
|
|
366
|
-
[name: string]: unknown;
|
|
367
|
-
};
|
|
368
|
-
content: {
|
|
369
|
-
"application/json": {
|
|
370
|
-
url: string;
|
|
371
|
-
bundle: {
|
|
372
|
-
name: string;
|
|
373
|
-
version: string;
|
|
374
|
-
platform: {
|
|
375
|
-
os: string;
|
|
376
|
-
arch: string;
|
|
377
|
-
};
|
|
378
|
-
sha256: string;
|
|
379
|
-
size: number;
|
|
380
|
-
};
|
|
381
|
-
expires_at?: string;
|
|
382
|
-
};
|
|
383
|
-
};
|
|
384
|
-
};
|
|
385
|
-
/** @description Redirect to download URL */
|
|
386
|
-
302: {
|
|
387
|
-
headers: {
|
|
388
|
-
[name: string]: unknown;
|
|
389
|
-
};
|
|
390
|
-
content?: never;
|
|
391
|
-
};
|
|
392
|
-
};
|
|
393
|
-
};
|
|
394
|
-
put?: never;
|
|
395
|
-
post?: never;
|
|
396
|
-
delete?: never;
|
|
397
|
-
options?: never;
|
|
398
|
-
head?: never;
|
|
399
|
-
patch?: never;
|
|
400
|
-
trace?: never;
|
|
401
|
-
};
|
|
402
|
-
"/v1/bundles/announce": {
|
|
403
|
-
parameters: {
|
|
404
|
-
query?: never;
|
|
405
|
-
header?: never;
|
|
406
|
-
path?: never;
|
|
407
|
-
cookie?: never;
|
|
408
|
-
};
|
|
409
|
-
get?: never;
|
|
410
|
-
put?: never;
|
|
411
|
-
/** @description Announce a single artifact for a bundle version from a GitHub release (OIDC only). Idempotent - can be called multiple times for different artifacts of the same version. */
|
|
412
|
-
post: {
|
|
413
|
-
parameters: {
|
|
414
|
-
query?: never;
|
|
415
|
-
header?: never;
|
|
416
|
-
path?: never;
|
|
417
|
-
cookie?: never;
|
|
418
|
-
};
|
|
419
|
-
requestBody: {
|
|
420
|
-
content: {
|
|
421
|
-
"application/json": {
|
|
422
|
-
name: string;
|
|
423
|
-
version: string;
|
|
424
|
-
manifest: {
|
|
425
|
-
[key: string]: unknown;
|
|
426
|
-
};
|
|
427
|
-
release_tag: string;
|
|
428
|
-
/** @default false */
|
|
429
|
-
prerelease: boolean;
|
|
430
|
-
artifact: {
|
|
431
|
-
filename: string;
|
|
432
|
-
os: string;
|
|
433
|
-
arch: string;
|
|
434
|
-
sha256: string;
|
|
435
|
-
size: number;
|
|
436
|
-
};
|
|
437
|
-
};
|
|
438
|
-
};
|
|
439
|
-
};
|
|
440
|
-
responses: {
|
|
441
|
-
/** @description Default Response */
|
|
442
|
-
200: {
|
|
443
|
-
headers: {
|
|
444
|
-
[name: string]: unknown;
|
|
445
|
-
};
|
|
446
|
-
content: {
|
|
447
|
-
"application/json": {
|
|
448
|
-
package: string;
|
|
449
|
-
version: string;
|
|
450
|
-
artifact: {
|
|
451
|
-
os: string;
|
|
452
|
-
arch: string;
|
|
453
|
-
filename: string;
|
|
454
|
-
};
|
|
455
|
-
total_artifacts: number;
|
|
456
|
-
/** @enum {string} */
|
|
457
|
-
status: "created" | "updated";
|
|
458
|
-
};
|
|
459
|
-
};
|
|
460
|
-
};
|
|
461
|
-
};
|
|
462
|
-
};
|
|
463
|
-
delete?: never;
|
|
464
|
-
options?: never;
|
|
465
|
-
head?: never;
|
|
466
|
-
patch?: never;
|
|
467
|
-
trace?: never;
|
|
468
|
-
};
|
|
469
|
-
"/health": {
|
|
470
|
-
parameters: {
|
|
471
|
-
query?: never;
|
|
472
|
-
header?: never;
|
|
473
|
-
path?: never;
|
|
474
|
-
cookie?: never;
|
|
475
|
-
};
|
|
476
|
-
/** @description Health check endpoint */
|
|
477
|
-
get: {
|
|
478
|
-
parameters: {
|
|
479
|
-
query?: never;
|
|
480
|
-
header?: never;
|
|
481
|
-
path?: never;
|
|
482
|
-
cookie?: never;
|
|
483
|
-
};
|
|
484
|
-
requestBody?: never;
|
|
485
|
-
responses: {
|
|
486
|
-
/** @description Default Response */
|
|
487
|
-
200: {
|
|
488
|
-
headers: {
|
|
489
|
-
[name: string]: unknown;
|
|
490
|
-
};
|
|
491
|
-
content: {
|
|
492
|
-
"application/json": {
|
|
493
|
-
status?: string;
|
|
494
|
-
/** Format: date-time */
|
|
495
|
-
timestamp?: string;
|
|
496
|
-
};
|
|
497
|
-
};
|
|
498
|
-
};
|
|
499
|
-
};
|
|
500
|
-
};
|
|
501
|
-
put?: never;
|
|
502
|
-
post?: never;
|
|
503
|
-
delete?: never;
|
|
504
|
-
options?: never;
|
|
505
|
-
head?: never;
|
|
506
|
-
patch?: never;
|
|
507
|
-
trace?: never;
|
|
508
|
-
};
|
|
509
|
-
}
|
|
510
|
-
export type webhooks = Record<string, never>;
|
|
511
|
-
export interface components {
|
|
512
|
-
schemas: never;
|
|
513
|
-
responses: never;
|
|
514
|
-
parameters: never;
|
|
515
|
-
requestBodies: never;
|
|
516
|
-
headers: never;
|
|
517
|
-
pathItems: never;
|
|
518
|
-
}
|
|
519
|
-
export type $defs = Record<string, never>;
|
|
520
|
-
export type operations = Record<string, never>;
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skills API client for mpak registry
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type {
|
|
6
|
-
SkillSearchResponse,
|
|
7
|
-
SkillDetail,
|
|
8
|
-
SkillDownloadInfo,
|
|
9
|
-
} from '../../schemas/generated/skill.js';
|
|
10
|
-
|
|
11
|
-
const DEFAULT_REGISTRY_URL = 'https://api.mpak.dev';
|
|
12
|
-
|
|
13
|
-
function getRegistryUrl(): string {
|
|
14
|
-
return process.env.MPAK_REGISTRY_URL || DEFAULT_REGISTRY_URL;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Parse a scoped name into scope and name parts
|
|
19
|
-
* Handles both @scope/name and scope/name formats
|
|
20
|
-
*/
|
|
21
|
-
function parseScopedName(name: string): { scope: string; skillName: string } {
|
|
22
|
-
const normalizedName = name.startsWith('@') ? name.slice(1) : name;
|
|
23
|
-
const [scope, skillName] = normalizedName.split('/');
|
|
24
|
-
if (!scope || !skillName) {
|
|
25
|
-
throw new Error(`Invalid skill name format: ${name}. Expected @scope/name or scope/name`);
|
|
26
|
-
}
|
|
27
|
-
return { scope, skillName };
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface SkillSearchOptions {
|
|
31
|
-
q?: string;
|
|
32
|
-
tags?: string;
|
|
33
|
-
category?: string;
|
|
34
|
-
surface?: string;
|
|
35
|
-
sort?: 'downloads' | 'recent' | 'name';
|
|
36
|
-
limit?: number;
|
|
37
|
-
offset?: number;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Search for skills in the registry
|
|
42
|
-
*/
|
|
43
|
-
export async function searchSkills(options: SkillSearchOptions): Promise<SkillSearchResponse> {
|
|
44
|
-
const baseUrl = getRegistryUrl();
|
|
45
|
-
const params = new URLSearchParams();
|
|
46
|
-
|
|
47
|
-
if (options.q) params.set('q', options.q);
|
|
48
|
-
if (options.tags) params.set('tags', options.tags);
|
|
49
|
-
if (options.category) params.set('category', options.category);
|
|
50
|
-
if (options.surface) params.set('surface', options.surface);
|
|
51
|
-
if (options.sort) params.set('sort', options.sort);
|
|
52
|
-
if (options.limit) params.set('limit', options.limit.toString());
|
|
53
|
-
if (options.offset) params.set('offset', options.offset.toString());
|
|
54
|
-
|
|
55
|
-
const url = `${baseUrl}/v1/skills/search?${params.toString()}`;
|
|
56
|
-
|
|
57
|
-
const response = await fetch(url, {
|
|
58
|
-
headers: { Accept: 'application/json' },
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
if (!response.ok) {
|
|
62
|
-
const text = await response.text();
|
|
63
|
-
throw new Error(`Search failed (${response.status}): ${text}`);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return response.json() as Promise<SkillSearchResponse>;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Get skill details from the registry
|
|
71
|
-
*/
|
|
72
|
-
export async function getSkillDetails(name: string): Promise<SkillDetail> {
|
|
73
|
-
const baseUrl = getRegistryUrl();
|
|
74
|
-
const { scope, skillName } = parseScopedName(name);
|
|
75
|
-
|
|
76
|
-
// Server expects: /v1/skills/@scope/name
|
|
77
|
-
const url = `${baseUrl}/v1/skills/@${scope}/${skillName}`;
|
|
78
|
-
|
|
79
|
-
const response = await fetch(url, {
|
|
80
|
-
headers: { Accept: 'application/json' },
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
if (!response.ok) {
|
|
84
|
-
if (response.status === 404) {
|
|
85
|
-
throw new Error(`Skill not found: ${name}`);
|
|
86
|
-
}
|
|
87
|
-
const text = await response.text();
|
|
88
|
-
throw new Error(`Failed to get skill details (${response.status}): ${text}`);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return response.json() as Promise<SkillDetail>;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Get download info for a skill
|
|
96
|
-
*/
|
|
97
|
-
export async function getSkillDownloadInfo(
|
|
98
|
-
name: string,
|
|
99
|
-
version?: string
|
|
100
|
-
): Promise<SkillDownloadInfo> {
|
|
101
|
-
const baseUrl = getRegistryUrl();
|
|
102
|
-
const { scope, skillName } = parseScopedName(name);
|
|
103
|
-
|
|
104
|
-
// Server expects: /v1/skills/@scope/name/download or /v1/skills/@scope/name/versions/x.y.z/download
|
|
105
|
-
const versionPath = version ? `/versions/${version}` : '';
|
|
106
|
-
const url = `${baseUrl}/v1/skills/@${scope}/${skillName}${versionPath}/download`;
|
|
107
|
-
|
|
108
|
-
const response = await fetch(url, {
|
|
109
|
-
headers: { Accept: 'application/json' },
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
if (!response.ok) {
|
|
113
|
-
if (response.status === 404) {
|
|
114
|
-
throw new Error(`Skill not found: ${name}${version ? `@${version}` : ''}`);
|
|
115
|
-
}
|
|
116
|
-
const text = await response.text();
|
|
117
|
-
throw new Error(`Failed to get download info (${response.status}): ${text}`);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return response.json() as Promise<SkillDownloadInfo>;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Download a skill bundle
|
|
125
|
-
*/
|
|
126
|
-
export async function downloadSkillBundle(
|
|
127
|
-
downloadUrl: string,
|
|
128
|
-
expectedSha256?: string
|
|
129
|
-
): Promise<Buffer> {
|
|
130
|
-
const response = await fetch(downloadUrl);
|
|
131
|
-
|
|
132
|
-
if (!response.ok) {
|
|
133
|
-
throw new Error(`Download failed (${response.status})`);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
const buffer = Buffer.from(await response.arrayBuffer());
|
|
137
|
-
|
|
138
|
-
// Verify SHA256 if provided
|
|
139
|
-
if (expectedSha256) {
|
|
140
|
-
const { createHash } = await import('crypto');
|
|
141
|
-
const hash = createHash('sha256').update(buffer).digest('hex');
|
|
142
|
-
if (hash !== expectedSha256) {
|
|
143
|
-
throw new Error(`SHA256 mismatch: expected ${expectedSha256}, got ${hash}`);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return buffer;
|
|
148
|
-
}
|
package/src/program.test.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { createProgram } from './program.js';
|
|
3
|
-
|
|
4
|
-
describe('createProgram', () => {
|
|
5
|
-
it('should create a program with correct name', () => {
|
|
6
|
-
const program = createProgram();
|
|
7
|
-
expect(program.name()).toBe('mpak');
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('should have a description', () => {
|
|
11
|
-
const program = createProgram();
|
|
12
|
-
expect(program.description()).toBe('CLI for MCP bundles and Agent Skills');
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should have version option', () => {
|
|
16
|
-
const program = createProgram();
|
|
17
|
-
const versionOption = program.options.find(
|
|
18
|
-
(opt) => opt.short === '-v' || opt.long === '--version'
|
|
19
|
-
);
|
|
20
|
-
expect(versionOption).toBeDefined();
|
|
21
|
-
});
|
|
22
|
-
});
|