@framers/agentos-ext-skills 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsInstall.d.ts","sourceRoot":"","sources":["../../src/tools/skillsInstall.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAI1C,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AA0TF,qBAAa,iBAAkB,YAAW,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACtF,SAAgB,EAAE,+BAA+B;IACjD,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,WAAW,gCAAgC;IAC3D,SAAgB,WAAW,qJACoH;IAC/I,SAAgB,QAAQ,YAAY;IACpC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW,EAAE,gBAAgB,CAsC3C;IAEI,OAAO,CACX,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;CAqJrD"}
@@ -0,0 +1,462 @@
1
+ // @ts-nocheck
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import * as fs from 'node:fs/promises';
5
+ import * as fsSync from 'node:fs';
6
+ import { spawn } from 'node:child_process';
7
+ import { Readable } from 'node:stream';
8
+ import { pipeline } from 'node:stream/promises';
9
+ import { findSkillEntry, loadSkillsRegistry } from '../catalog.js';
10
+ const DEFAULT_TIMEOUT_MS = 5 * 60_000;
11
+ function resolveInstallId(spec, index) {
12
+ return (spec.id ?? `${spec.kind}-${index}`).trim();
13
+ }
14
+ function filterByPlatform(specs, platform) {
15
+ return specs.filter((spec) => {
16
+ const osList = spec.os ?? [];
17
+ return osList.length === 0 || osList.includes(platform);
18
+ });
19
+ }
20
+ function hasBinary(bin) {
21
+ const pathEnv = process.env.PATH ?? '';
22
+ const parts = pathEnv.split(path.delimiter).filter(Boolean);
23
+ const candidates = process.platform === 'win32' ? [bin, `${bin}.exe`, `${bin}.cmd`, `${bin}.bat`] : [bin];
24
+ for (const part of parts) {
25
+ for (const name of candidates) {
26
+ const candidate = path.join(part, name);
27
+ try {
28
+ fsSync.accessSync(candidate, fsSync.constants.X_OK);
29
+ return true;
30
+ }
31
+ catch {
32
+ // keep scanning
33
+ }
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+ function selectPreferredInstallSpec(specs, opts) {
39
+ if (specs.length === 0)
40
+ return undefined;
41
+ const indexed = specs.map((spec, index) => ({ spec, index }));
42
+ const findKind = (kind) => indexed.find((item) => item.spec.kind === kind);
43
+ const brewSpec = findKind('brew');
44
+ const uvSpec = findKind('uv');
45
+ const nodeSpec = findKind('node');
46
+ const aptSpec = findKind('apt');
47
+ const goSpec = findKind('go');
48
+ if (opts.preferBrew && hasBinary('brew') && brewSpec)
49
+ return brewSpec;
50
+ if (uvSpec)
51
+ return uvSpec;
52
+ if (nodeSpec)
53
+ return nodeSpec;
54
+ if (brewSpec)
55
+ return brewSpec;
56
+ if (aptSpec)
57
+ return aptSpec;
58
+ if (goSpec)
59
+ return goSpec;
60
+ return indexed[0];
61
+ }
62
+ function buildNodeInstallCommand(packageName, manager) {
63
+ switch (manager) {
64
+ case 'pnpm':
65
+ return ['pnpm', 'add', '-g', packageName];
66
+ case 'yarn':
67
+ return ['yarn', 'global', 'add', packageName];
68
+ case 'bun':
69
+ return ['bun', 'add', '-g', packageName];
70
+ default:
71
+ return ['npm', 'install', '-g', packageName];
72
+ }
73
+ }
74
+ function buildInstallArgv(spec, opts) {
75
+ switch (spec.kind) {
76
+ case 'brew':
77
+ return spec.formula
78
+ ? { argv: ['brew', 'install', spec.formula] }
79
+ : { argv: null, error: 'missing brew formula' };
80
+ case 'apt':
81
+ return spec.package
82
+ ? {
83
+ argv: opts.useSudo
84
+ ? ['sudo', 'apt-get', 'install', '-y', spec.package]
85
+ : ['apt-get', 'install', '-y', spec.package],
86
+ }
87
+ : { argv: null, error: 'missing apt package' };
88
+ case 'node':
89
+ return spec.package
90
+ ? { argv: buildNodeInstallCommand(spec.package, opts.nodeManager) }
91
+ : { argv: null, error: 'missing node package' };
92
+ case 'go':
93
+ return spec.module
94
+ ? { argv: ['go', 'install', spec.module] }
95
+ : { argv: null, error: 'missing go module' };
96
+ case 'uv':
97
+ return spec.package
98
+ ? { argv: ['uv', 'tool', 'install', spec.package] }
99
+ : { argv: null, error: 'missing uv package' };
100
+ case 'download':
101
+ return { argv: null };
102
+ default:
103
+ return { argv: null, error: `unsupported install kind: ${String(spec.kind)}` };
104
+ }
105
+ }
106
+ async function runCommand(argv, opts) {
107
+ return new Promise((resolve) => {
108
+ const child = spawn(argv[0], argv.slice(1), {
109
+ cwd: opts.cwd,
110
+ env: process.env,
111
+ stdio: ['ignore', 'pipe', 'pipe'],
112
+ });
113
+ const stdoutChunks = [];
114
+ const stderrChunks = [];
115
+ child.stdout?.on('data', (chunk) => stdoutChunks.push(Buffer.from(chunk)));
116
+ child.stderr?.on('data', (chunk) => stderrChunks.push(Buffer.from(chunk)));
117
+ let timedOut = false;
118
+ const timeoutId = setTimeout(() => {
119
+ timedOut = true;
120
+ try {
121
+ child.kill('SIGKILL');
122
+ }
123
+ catch {
124
+ // ignore
125
+ }
126
+ }, Math.max(1_000, opts.timeoutMs));
127
+ child.on('error', (err) => {
128
+ clearTimeout(timeoutId);
129
+ resolve({
130
+ stdout: Buffer.concat(stdoutChunks).toString('utf-8'),
131
+ stderr: Buffer.concat([...stderrChunks, Buffer.from(String(err))]).toString('utf-8'),
132
+ code: null,
133
+ timedOut,
134
+ });
135
+ });
136
+ child.on('close', (code) => {
137
+ clearTimeout(timeoutId);
138
+ resolve({
139
+ stdout: Buffer.concat(stdoutChunks).toString('utf-8'),
140
+ stderr: Buffer.concat(stderrChunks).toString('utf-8'),
141
+ code: typeof code === 'number' ? code : null,
142
+ timedOut,
143
+ });
144
+ });
145
+ });
146
+ }
147
+ function normalizeUrl(raw) {
148
+ const url = typeof raw === 'string' ? raw.trim() : '';
149
+ if (!url)
150
+ return null;
151
+ if (url.startsWith('https://') || url.startsWith('http://'))
152
+ return url;
153
+ return null;
154
+ }
155
+ async function downloadToFile(opts) {
156
+ const controller = new AbortController();
157
+ const timeoutId = setTimeout(() => controller.abort(), Math.max(1_000, opts.timeoutMs));
158
+ try {
159
+ const res = await fetch(opts.url, { signal: controller.signal });
160
+ if (!res.ok || !res.body) {
161
+ throw new Error(`Download failed (${res.status} ${res.statusText})`);
162
+ }
163
+ await fs.mkdir(path.dirname(opts.destPath), { recursive: true });
164
+ const body = Readable.fromWeb(res.body);
165
+ const file = fsSync.createWriteStream(opts.destPath);
166
+ await pipeline(body, file);
167
+ const stat = await fs.stat(opts.destPath);
168
+ return { bytes: stat.size };
169
+ }
170
+ finally {
171
+ clearTimeout(timeoutId);
172
+ }
173
+ }
174
+ async function extractArchive(opts) {
175
+ await fs.mkdir(opts.targetDir, { recursive: true });
176
+ const lower = opts.archivePath.toLowerCase();
177
+ if (lower.endsWith('.zip')) {
178
+ const result = await runCommand(['unzip', '-o', opts.archivePath, '-d', opts.targetDir], {
179
+ timeoutMs: opts.timeoutMs,
180
+ });
181
+ return {
182
+ extractedTo: opts.targetDir,
183
+ stdout: result.stdout,
184
+ stderr: result.stderr,
185
+ code: result.code,
186
+ };
187
+ }
188
+ if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz')) {
189
+ const argv = ['tar', '-xzf', opts.archivePath, '-C', opts.targetDir];
190
+ if (typeof opts.stripComponents === 'number' &&
191
+ Number.isFinite(opts.stripComponents) &&
192
+ opts.stripComponents > 0) {
193
+ argv.push(`--strip-components=${Math.floor(opts.stripComponents)}`);
194
+ }
195
+ const result = await runCommand(argv, { timeoutMs: opts.timeoutMs });
196
+ return {
197
+ extractedTo: opts.targetDir,
198
+ stdout: result.stdout,
199
+ stderr: result.stderr,
200
+ code: result.code,
201
+ };
202
+ }
203
+ throw new Error('Unsupported archive format (supported: .zip, .tar.gz, .tgz)');
204
+ }
205
+ async function executeDownloadInstall(spec, opts) {
206
+ const url = normalizeUrl(spec.url);
207
+ if (!url) {
208
+ return {
209
+ ok: false,
210
+ message: 'download install missing/invalid url (must be http/https)',
211
+ stdout: '',
212
+ stderr: '',
213
+ code: null,
214
+ };
215
+ }
216
+ const fileName = (spec.archive && String(spec.archive).trim()) || url.split('/').pop() || 'download';
217
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'agentos-skills-install-'));
218
+ const archivePath = path.join(tmpDir, fileName);
219
+ try {
220
+ await downloadToFile({ url, destPath: archivePath, timeoutMs: opts.timeoutMs });
221
+ if (spec.extract !== true) {
222
+ return {
223
+ ok: true,
224
+ message: `Downloaded to ${archivePath}`,
225
+ stdout: '',
226
+ stderr: '',
227
+ code: 0,
228
+ details: {
229
+ skill: '',
230
+ installId: spec.id ?? spec.kind,
231
+ kind: spec.kind,
232
+ downloadPath: archivePath,
233
+ },
234
+ };
235
+ }
236
+ const targetDir = (spec.targetDir && String(spec.targetDir).trim()) || '';
237
+ if (!targetDir) {
238
+ return {
239
+ ok: false,
240
+ message: 'download install requires targetDir when extract=true',
241
+ stdout: '',
242
+ stderr: '',
243
+ code: null,
244
+ };
245
+ }
246
+ const extracted = await extractArchive({
247
+ archivePath,
248
+ targetDir: path.resolve(targetDir),
249
+ stripComponents: spec.stripComponents,
250
+ timeoutMs: opts.timeoutMs,
251
+ });
252
+ const ok = extracted.code === 0;
253
+ return {
254
+ ok,
255
+ message: ok ? `Extracted to ${extracted.extractedTo}` : 'Extraction failed',
256
+ stdout: extracted.stdout,
257
+ stderr: extracted.stderr,
258
+ code: extracted.code,
259
+ details: {
260
+ skill: '',
261
+ installId: spec.id ?? spec.kind,
262
+ kind: spec.kind,
263
+ downloadPath: archivePath,
264
+ extractedTo: extracted.extractedTo,
265
+ },
266
+ };
267
+ }
268
+ catch (error) {
269
+ return {
270
+ ok: false,
271
+ message: error?.message || String(error),
272
+ stdout: '',
273
+ stderr: '',
274
+ code: null,
275
+ };
276
+ }
277
+ }
278
+ export class SkillsInstallTool {
279
+ id = 'agentos-skills-install-v1';
280
+ name = 'skills_install';
281
+ displayName = 'Install Skill Dependencies';
282
+ description = 'Install missing dependencies for a curated skill, using the skill’s metadata.install specs (brew/apt/node/go/uv/download). Side-effectful.';
283
+ category = 'system';
284
+ hasSideEffects = true;
285
+ inputSchema = {
286
+ type: 'object',
287
+ required: ['skill'],
288
+ properties: {
289
+ skill: { type: 'string', description: 'Skill name or id' },
290
+ installId: {
291
+ type: 'string',
292
+ description: 'Install spec id (defaults to preferred for your platform)',
293
+ },
294
+ platform: {
295
+ type: 'string',
296
+ description: 'Platform for OS filtering (default: process.platform)',
297
+ },
298
+ timeoutMs: {
299
+ type: 'number',
300
+ description: 'Timeout in milliseconds',
301
+ default: 300000,
302
+ minimum: 1000,
303
+ maximum: 3600000,
304
+ },
305
+ dryRun: {
306
+ type: 'boolean',
307
+ description: 'Return the resolved command without executing',
308
+ default: false,
309
+ },
310
+ preferBrew: { type: 'boolean', description: 'Prefer brew when available', default: true },
311
+ nodeManager: {
312
+ type: 'string',
313
+ description: 'Node manager: npm|pnpm|yarn|bun',
314
+ default: 'npm',
315
+ },
316
+ useSudo: {
317
+ type: 'boolean',
318
+ description: 'Use sudo for apt installs (linux)',
319
+ default: false,
320
+ },
321
+ },
322
+ additionalProperties: false,
323
+ };
324
+ async execute(input, _context) {
325
+ try {
326
+ const ref = (input.skill || '').trim();
327
+ if (!ref)
328
+ return { success: false, error: 'Missing required field: skill' };
329
+ const platform = (input.platform && String(input.platform).trim()) || process.platform;
330
+ const timeoutMs = typeof input.timeoutMs === 'number'
331
+ ? Math.max(1_000, Math.min(3_600_000, input.timeoutMs))
332
+ : DEFAULT_TIMEOUT_MS;
333
+ const dryRun = input.dryRun === true;
334
+ const preferBrew = input.preferBrew !== false;
335
+ const nodeManagerRaw = typeof input.nodeManager === 'string' ? input.nodeManager.trim().toLowerCase() : '';
336
+ const nodeManager = nodeManagerRaw === 'pnpm' ||
337
+ nodeManagerRaw === 'yarn' ||
338
+ nodeManagerRaw === 'bun' ||
339
+ nodeManagerRaw === 'npm'
340
+ ? nodeManagerRaw
341
+ : 'npm';
342
+ const useSudo = input.useSudo === true;
343
+ const registry = await loadSkillsRegistry();
344
+ const entry = findSkillEntry(registry, ref);
345
+ if (!entry) {
346
+ return { success: false, error: `Skill not found in catalog: ${ref}` };
347
+ }
348
+ const installSpecsRaw = entry.metadata?.install ?? [];
349
+ const installSpecs = filterByPlatform(installSpecsRaw, platform);
350
+ if (installSpecs.length === 0) {
351
+ return {
352
+ success: false,
353
+ error: `No install specs available for ${entry.name} on platform ${platform}`,
354
+ };
355
+ }
356
+ let chosen;
357
+ if (typeof input.installId === 'string' && input.installId.trim()) {
358
+ const installId = input.installId.trim();
359
+ for (const [index, spec] of installSpecs.entries()) {
360
+ if (resolveInstallId(spec, index) === installId) {
361
+ chosen = { spec, index };
362
+ break;
363
+ }
364
+ }
365
+ if (!chosen) {
366
+ return { success: false, error: `Install spec not found: ${installId}` };
367
+ }
368
+ }
369
+ else {
370
+ chosen = selectPreferredInstallSpec(installSpecs, { preferBrew, nodeManager });
371
+ }
372
+ if (!chosen) {
373
+ return { success: false, error: `No install spec resolved for ${entry.name}` };
374
+ }
375
+ const resolvedInstallId = resolveInstallId(chosen.spec, chosen.index);
376
+ if (chosen.spec.kind === 'download') {
377
+ if (dryRun) {
378
+ return {
379
+ success: true,
380
+ output: {
381
+ ok: true,
382
+ message: 'download install (dryRun): would download url and optionally extract',
383
+ stdout: '',
384
+ stderr: '',
385
+ code: 0,
386
+ details: {
387
+ skill: entry.name,
388
+ installId: resolvedInstallId,
389
+ kind: chosen.spec.kind,
390
+ },
391
+ },
392
+ };
393
+ }
394
+ const result = await executeDownloadInstall(chosen.spec, { timeoutMs });
395
+ return {
396
+ success: result.ok,
397
+ output: {
398
+ ...result,
399
+ details: {
400
+ ...(result.details ?? {}),
401
+ skill: entry.name,
402
+ installId: resolvedInstallId,
403
+ kind: chosen.spec.kind,
404
+ },
405
+ },
406
+ error: result.ok ? undefined : result.message,
407
+ };
408
+ }
409
+ const { argv, error } = buildInstallArgv(chosen.spec, { nodeManager, useSudo });
410
+ if (!argv) {
411
+ const msg = error ? `Invalid install spec: ${error}` : 'Invalid install spec';
412
+ return { success: false, error: msg };
413
+ }
414
+ if (dryRun) {
415
+ return {
416
+ success: true,
417
+ output: {
418
+ ok: true,
419
+ message: 'dryRun: resolved install command',
420
+ stdout: '',
421
+ stderr: '',
422
+ code: 0,
423
+ details: {
424
+ skill: entry.name,
425
+ installId: resolvedInstallId,
426
+ kind: chosen.spec.kind,
427
+ argv,
428
+ },
429
+ },
430
+ };
431
+ }
432
+ const executed = await runCommand(argv, { timeoutMs });
433
+ const ok = executed.code === 0 && !executed.timedOut;
434
+ const message = executed.timedOut
435
+ ? 'Install timed out'
436
+ : ok
437
+ ? 'Install succeeded'
438
+ : `Install failed (exit ${executed.code ?? 'unknown'})`;
439
+ return {
440
+ success: ok,
441
+ output: {
442
+ ok,
443
+ message,
444
+ stdout: executed.stdout,
445
+ stderr: executed.stderr,
446
+ code: executed.code,
447
+ details: {
448
+ skill: entry.name,
449
+ installId: resolvedInstallId,
450
+ kind: chosen.spec.kind,
451
+ argv,
452
+ },
453
+ },
454
+ error: ok ? undefined : message,
455
+ };
456
+ }
457
+ catch (error) {
458
+ return { success: false, error: error?.message || String(error) };
459
+ }
460
+ }
461
+ }
462
+ //# sourceMappingURL=skillsInstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsInstall.js","sourceRoot":"","sources":["../../src/tools/skillsInstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
2
+ import { type SkillCatalogItem } from '../catalog.js';
3
+ type SkillsListInput = {
4
+ query?: string;
5
+ verifiedOnly?: boolean;
6
+ includeCommunity?: boolean;
7
+ platform?: string;
8
+ limit?: number;
9
+ };
10
+ type SkillsListOutput = {
11
+ source: 'agentos-skills';
12
+ registryVersion: string;
13
+ updated: string;
14
+ skills: SkillCatalogItem[];
15
+ };
16
+ export declare class SkillsListTool implements ITool<SkillsListInput, SkillsListOutput> {
17
+ readonly id = "agentos-skills-list-v1";
18
+ readonly name = "skills_list";
19
+ readonly displayName = "List Skills";
20
+ readonly description = "List curated skills from the installed @framers/agentos-skills-registry catalog. Includes basic eligibility checks (OS/bins/env) and suggested install commands.";
21
+ readonly category = "system";
22
+ readonly hasSideEffects = false;
23
+ readonly inputSchema: JSONSchemaObject;
24
+ execute(input: SkillsListInput, _context: ToolExecutionContext): Promise<ToolExecutionResult<SkillsListOutput>>;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=skillsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsList.d.ts","sourceRoot":"","sources":["../../src/tools/skillsList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAqBF,qBAAa,cAAe,YAAW,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,SAAgB,EAAE,4BAA4B;IAC9C,SAAgB,IAAI,iBAAiB;IACrC,SAAgB,WAAW,iBAAiB;IAC5C,SAAgB,WAAW,sKAC0I;IACrK,SAAgB,QAAQ,YAAY;IACpC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW,EAAE,gBAAgB,CAiB3C;IAEI,OAAO,CACX,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CAoClD"}
@@ -0,0 +1,80 @@
1
+ import { buildInstallCommands, computeEligibility, loadSkillsRegistry, resolveSkillAbsoluteDir, } from '../catalog.js';
2
+ function normalizeQuery(raw) {
3
+ return typeof raw === 'string' ? raw.trim().toLowerCase() : '';
4
+ }
5
+ function matchesQuery(entry, query) {
6
+ if (!query)
7
+ return true;
8
+ const haystack = [entry.id, entry.name, entry.description, ...(entry.keywords ?? [])]
9
+ .filter(Boolean)
10
+ .join(' ')
11
+ .toLowerCase();
12
+ return haystack.includes(query);
13
+ }
14
+ function flattenSkills(registry, includeCommunity) {
15
+ const curated = registry.skills?.curated ?? [];
16
+ const community = includeCommunity ? (registry.skills?.community ?? []) : [];
17
+ return [...curated, ...community];
18
+ }
19
+ export class SkillsListTool {
20
+ id = 'agentos-skills-list-v1';
21
+ name = 'skills_list';
22
+ displayName = 'List Skills';
23
+ description = 'List curated skills from the installed @framers/agentos-skills-registry catalog. Includes basic eligibility checks (OS/bins/env) and suggested install commands.';
24
+ category = 'system';
25
+ hasSideEffects = false;
26
+ inputSchema = {
27
+ type: 'object',
28
+ properties: {
29
+ query: { type: 'string', description: 'Search by name/keywords/description' },
30
+ verifiedOnly: { type: 'boolean', description: 'Only include verified skills', default: true },
31
+ includeCommunity: {
32
+ type: 'boolean',
33
+ description: 'Include community skills (if present)',
34
+ default: false,
35
+ },
36
+ platform: {
37
+ type: 'string',
38
+ description: 'Platform for OS gating (default: process.platform)',
39
+ },
40
+ limit: { type: 'number', description: 'Max results', default: 50, minimum: 1, maximum: 500 },
41
+ },
42
+ additionalProperties: false,
43
+ };
44
+ async execute(input, _context) {
45
+ try {
46
+ const registry = await loadSkillsRegistry();
47
+ const query = normalizeQuery(input.query);
48
+ const platform = (input.platform && String(input.platform).trim()) || process.platform;
49
+ const verifiedOnly = input.verifiedOnly !== false;
50
+ const includeCommunity = input.includeCommunity === true;
51
+ const limit = typeof input.limit === 'number' ? Math.max(1, Math.min(500, input.limit)) : 50;
52
+ const skills = flattenSkills(registry, includeCommunity)
53
+ .filter((e) => (verifiedOnly ? e.verified === true : true))
54
+ .filter((e) => matchesQuery(e, query))
55
+ .slice(0, limit)
56
+ .map((entry) => ({
57
+ ...entry,
58
+ absolutePath: resolveSkillAbsoluteDir(entry),
59
+ eligibility: computeEligibility(entry, platform),
60
+ installCommands: buildInstallCommands(entry, platform),
61
+ }));
62
+ return {
63
+ success: true,
64
+ output: {
65
+ source: 'agentos-skills',
66
+ registryVersion: registry.version,
67
+ updated: registry.updated,
68
+ skills,
69
+ },
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ success: false,
75
+ error: error?.message || String(error),
76
+ };
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=skillsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsList.js","sourceRoot":"","sources":["../../src/tools/skillsList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
2
+ import { type SkillCatalogItem } from '../catalog.js';
3
+ type SkillsReadInput = {
4
+ skill: string;
5
+ platform?: string;
6
+ };
7
+ type SkillsReadOutput = {
8
+ skill: SkillCatalogItem;
9
+ markdown: string;
10
+ };
11
+ export declare class SkillsReadTool implements ITool<SkillsReadInput, SkillsReadOutput> {
12
+ readonly id = "agentos-skills-read-v1";
13
+ readonly name = "skills_read";
14
+ readonly displayName = "Read Skill";
15
+ readonly description = "Read a curated skill\u2019s SKILL.md from the installed @framers/agentos-skills-registry catalog.";
16
+ readonly category = "system";
17
+ readonly hasSideEffects = false;
18
+ readonly inputSchema: JSONSchemaObject;
19
+ execute(input: SkillsReadInput, _context: ToolExecutionContext): Promise<ToolExecutionResult<SkillsReadOutput>>;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=skillsRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsRead.d.ts","sourceRoot":"","sources":["../../src/tools/skillsRead.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,cAAe,YAAW,KAAK,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7E,SAAgB,EAAE,4BAA4B;IAC9C,SAAgB,IAAI,iBAAiB;IACrC,SAAgB,WAAW,gBAAgB;IAC3C,SAAgB,WAAW,uGACsE;IACjG,SAAgB,QAAQ,YAAY;IACpC,SAAgB,cAAc,SAAS;IAEvC,SAAgB,WAAW,EAAE,gBAAgB,CAc3C;IAEI,OAAO,CACX,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;CA6BlD"}