@framers/agentos-skills 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CONTRIBUTING.md +231 -0
  2. package/README.md +99 -58
  3. package/package.json +22 -34
  4. package/registry/community/.gitkeep +0 -0
  5. package/registry/curated/1password/SKILL.md +53 -0
  6. package/registry/curated/account-manager/SKILL.md +60 -0
  7. package/registry/curated/agent-config/SKILL.md +22 -0
  8. package/registry/curated/amazon-polly/SKILL.md +74 -0
  9. package/registry/curated/apple-notes/SKILL.md +45 -0
  10. package/registry/curated/apple-reminders/SKILL.md +46 -0
  11. package/registry/curated/audio-generation/SKILL.md +231 -0
  12. package/registry/curated/blog-publisher/SKILL.md +110 -0
  13. package/registry/curated/bluesky-bot/SKILL.md +93 -0
  14. package/registry/curated/cli-tools/SKILL.md +137 -0
  15. package/registry/curated/cloud-ops/SKILL.md +124 -0
  16. package/registry/curated/code-safety/SKILL.md +42 -0
  17. package/registry/curated/coding-agent/SKILL.md +40 -0
  18. package/registry/curated/company-research/SKILL.md +46 -0
  19. package/registry/curated/content-creator/SKILL.md +53 -0
  20. package/registry/curated/deep-research/SKILL.md +56 -0
  21. package/registry/curated/diarization/SKILL.md +83 -0
  22. package/registry/curated/discord-helper/SKILL.md +43 -0
  23. package/registry/curated/document-export/SKILL.md +54 -0
  24. package/registry/curated/email-intelligence/SKILL.md +41 -0
  25. package/registry/curated/emergent-tools/SKILL.md +225 -0
  26. package/registry/curated/endpoint-semantic/SKILL.md +72 -0
  27. package/registry/curated/facebook-bot/SKILL.md +94 -0
  28. package/registry/curated/git/SKILL.md +49 -0
  29. package/registry/curated/github/SKILL.md +142 -0
  30. package/registry/curated/google-cloud-stt/SKILL.md +71 -0
  31. package/registry/curated/google-cloud-tts/SKILL.md +71 -0
  32. package/registry/curated/grounding-guard/SKILL.md +38 -0
  33. package/registry/curated/healthcheck/SKILL.md +43 -0
  34. package/registry/curated/image-editing/SKILL.md +25 -0
  35. package/registry/curated/image-gen/SKILL.md +141 -0
  36. package/registry/curated/instagram-bot/SKILL.md +60 -0
  37. package/registry/curated/interactive-widgets/SKILL.md +85 -0
  38. package/registry/curated/linkedin-bot/SKILL.md +86 -0
  39. package/registry/curated/mastodon-bot/SKILL.md +104 -0
  40. package/registry/curated/memory-manager/SKILL.md +127 -0
  41. package/registry/curated/ml-content-classifier/SKILL.md +38 -0
  42. package/registry/curated/movie-lookup/SKILL.md +48 -0
  43. package/registry/curated/multimodal-rag/SKILL.md +153 -0
  44. package/registry/curated/notion/SKILL.md +43 -0
  45. package/registry/curated/obsidian/SKILL.md +42 -0
  46. package/registry/curated/openwakeword/SKILL.md +75 -0
  47. package/registry/curated/pii-redaction/SKILL.md +56 -0
  48. package/registry/curated/pinterest-bot/SKILL.md +45 -0
  49. package/registry/curated/piper/SKILL.md +72 -0
  50. package/registry/curated/porcupine/SKILL.md +74 -0
  51. package/registry/curated/reddit-bot/SKILL.md +74 -0
  52. package/registry/curated/seo-campaign/SKILL.md +51 -0
  53. package/registry/curated/site-deploy/SKILL.md +119 -0
  54. package/registry/curated/slack-helper/SKILL.md +43 -0
  55. package/registry/curated/social-broadcast/SKILL.md +145 -0
  56. package/registry/curated/spotify-player/SKILL.md +45 -0
  57. package/registry/curated/streaming-stt-deepgram/SKILL.md +84 -0
  58. package/registry/curated/streaming-stt-whisper/SKILL.md +82 -0
  59. package/registry/curated/streaming-tts-elevenlabs/SKILL.md +84 -0
  60. package/registry/curated/streaming-tts-openai/SKILL.md +83 -0
  61. package/registry/curated/structured-output/SKILL.md +22 -0
  62. package/registry/curated/summarize/SKILL.md +40 -0
  63. package/registry/curated/threads-bot/SKILL.md +82 -0
  64. package/registry/curated/tiktok-bot/SKILL.md +104 -0
  65. package/registry/curated/topicality/SKILL.md +37 -0
  66. package/registry/curated/trello/SKILL.md +44 -0
  67. package/registry/curated/twitter-bot/SKILL.md +63 -0
  68. package/registry/curated/video-generation/SKILL.md +225 -0
  69. package/registry/curated/vision-ocr/SKILL.md +82 -0
  70. package/registry/curated/voice-conversation/SKILL.md +65 -0
  71. package/registry/curated/vosk/SKILL.md +74 -0
  72. package/registry/curated/weather/SKILL.md +37 -0
  73. package/registry/curated/web-scraper/SKILL.md +60 -0
  74. package/registry/curated/web-search/SKILL.md +49 -0
  75. package/registry/curated/whisper-transcribe/SKILL.md +58 -0
  76. package/registry/curated/youtube-bot/SKILL.md +104 -0
  77. package/registry.json +2446 -0
  78. package/scripts/update-registry.mjs +126 -0
  79. package/scripts/validate-skill.mjs +304 -0
  80. package/types.d.ts +160 -0
  81. package/dist/SkillLoader.d.ts +0 -50
  82. package/dist/SkillLoader.d.ts.map +0 -1
  83. package/dist/SkillLoader.js +0 -291
  84. package/dist/SkillLoader.js.map +0 -1
  85. package/dist/SkillRegistry.d.ts +0 -135
  86. package/dist/SkillRegistry.d.ts.map +0 -1
  87. package/dist/SkillRegistry.js +0 -455
  88. package/dist/SkillRegistry.js.map +0 -1
  89. package/dist/index.d.ts +0 -13
  90. package/dist/index.d.ts.map +0 -1
  91. package/dist/index.js +0 -13
  92. package/dist/index.js.map +0 -1
  93. package/dist/paths.d.ts +0 -35
  94. package/dist/paths.d.ts.map +0 -1
  95. package/dist/paths.js +0 -71
  96. package/dist/paths.js.map +0 -1
  97. package/dist/types.d.ts +0 -231
  98. package/dist/types.d.ts.map +0 -1
  99. package/dist/types.js +0 -21
  100. package/dist/types.js.map +0 -1
@@ -1,455 +0,0 @@
1
- /**
2
- * @fileoverview Skill Registry for AgentOS
3
- * @module @framers/agentos-skills/SkillRegistry
4
- *
5
- * Runtime registry for managing and querying loaded skills.
6
- * Provides methods for registration, filtering, and building
7
- * skill snapshots for agent context.
8
- */
9
- import * as fs from 'node:fs';
10
- import * as path from 'node:path';
11
- import { loadSkillsFromDir, filterByPlatform, filterByEligibility, checkBinaryRequirements, } from './SkillLoader.js';
12
- /**
13
- * Skill Registry for managing loaded skills at runtime.
14
- */
15
- export class SkillRegistry {
16
- constructor(config) {
17
- this.entries = new Map();
18
- this.snapshotVersion = 1;
19
- this.config = config;
20
- }
21
- // ============================================================================
22
- // REGISTRATION
23
- // ============================================================================
24
- /**
25
- * Register a skill entry.
26
- *
27
- * @returns Whether the skill was registered (false if already exists)
28
- */
29
- register(entry) {
30
- const name = entry.skill.name;
31
- const skillKey = entry.metadata?.skillKey ?? name;
32
- if (this.entries.has(name)) {
33
- console.warn(`[SkillRegistry] Skill '${name}' already registered, skipping`);
34
- return false;
35
- }
36
- // If an allowlist is configured, only apply it to bundled skills.
37
- const allowBundled = normalizeAllowlist(this.config?.allowBundled);
38
- if (allowBundled && entry.source === 'bundled') {
39
- if (!allowBundled.includes(skillKey) && !allowBundled.includes(name)) {
40
- console.log(`[SkillRegistry] Bundled skill '${name}' blocked by allowBundled, skipping`);
41
- return false;
42
- }
43
- }
44
- // Check if skill is enabled in config
45
- const skillConfig = this.config?.entries?.[skillKey] ?? this.config?.entries?.[name];
46
- if (skillConfig?.enabled === false) {
47
- console.log(`[SkillRegistry] Skill '${name}' disabled in config, skipping`);
48
- return false;
49
- }
50
- this.entries.set(name, entry);
51
- this.snapshotVersion++;
52
- return true;
53
- }
54
- /**
55
- * Unregister a skill by name.
56
- */
57
- unregister(name) {
58
- const existed = this.entries.delete(name);
59
- if (existed) {
60
- this.snapshotVersion++;
61
- }
62
- return existed;
63
- }
64
- /**
65
- * Clear all registered skills.
66
- */
67
- clear() {
68
- this.entries.clear();
69
- this.snapshotVersion++;
70
- }
71
- // ============================================================================
72
- // QUERIES
73
- // ============================================================================
74
- /**
75
- * Get a skill by name.
76
- */
77
- getByName(name) {
78
- return this.entries.get(name);
79
- }
80
- /**
81
- * List all registered skills.
82
- */
83
- listAll() {
84
- return Array.from(this.entries.values());
85
- }
86
- /**
87
- * Get the count of registered skills.
88
- */
89
- get size() {
90
- return this.entries.size;
91
- }
92
- /**
93
- * Check if a skill is registered.
94
- */
95
- has(name) {
96
- return this.entries.has(name);
97
- }
98
- // ============================================================================
99
- // LOADING
100
- // ============================================================================
101
- /**
102
- * Load skills from one or more directories.
103
- */
104
- async loadFromDirs(dirs) {
105
- let count = 0;
106
- for (const dir of dirs) {
107
- count += await this.loadFromDir(dir);
108
- }
109
- return count;
110
- }
111
- /**
112
- * Load skills from a single directory, optionally tagging the source.
113
- */
114
- async loadFromDir(dir, options) {
115
- let count = 0;
116
- const entries = await loadSkillsFromDir(dir);
117
- for (const entry of entries) {
118
- if (options?.source) {
119
- entry.source = options.source;
120
- }
121
- if (this.register(entry)) {
122
- count++;
123
- }
124
- }
125
- return count;
126
- }
127
- /**
128
- * Reload all skills from configured directories.
129
- */
130
- async reload(options) {
131
- this.clear();
132
- if (options.config) {
133
- this.config = options.config;
134
- }
135
- // Load in high -> low precedence order (first registered wins):
136
- // workspace > managed > bundled > extra.
137
- let count = 0;
138
- if (options.workspaceDir) {
139
- count += await this.loadFromDir(options.workspaceDir, { source: 'workspace' });
140
- }
141
- if (options.managedSkillsDir) {
142
- count += await this.loadFromDir(options.managedSkillsDir, { source: 'managed' });
143
- }
144
- if (options.bundledSkillsDir) {
145
- count += await this.loadFromDir(options.bundledSkillsDir, { source: 'bundled' });
146
- }
147
- if (options.extraDirs) {
148
- for (const dir of options.extraDirs) {
149
- count += await this.loadFromDir(dir, { source: 'extra' });
150
- }
151
- }
152
- return count;
153
- }
154
- // ============================================================================
155
- // FILTERING
156
- // ============================================================================
157
- /**
158
- * Get skills filtered by platform.
159
- */
160
- filterByPlatform(platform) {
161
- return filterByPlatform(this.listAll(), platform);
162
- }
163
- /**
164
- * Get skills filtered by eligibility context.
165
- */
166
- filterByEligibility(context) {
167
- return filterByEligibility(this.listAll(), context);
168
- }
169
- /**
170
- * Get skills that can be invoked by users.
171
- */
172
- getUserInvocableSkills() {
173
- return this.listAll().filter((entry) => entry.invocation?.userInvocable !== false);
174
- }
175
- /**
176
- * Get skills that can be invoked by the model.
177
- */
178
- getModelInvocableSkills() {
179
- return this.listAll().filter((entry) => entry.invocation?.disableModelInvocation !== true);
180
- }
181
- // ============================================================================
182
- // SNAPSHOTS
183
- // ============================================================================
184
- /**
185
- * Build a skill snapshot for agent context.
186
- */
187
- buildSnapshot(options) {
188
- let entries = this.listAll();
189
- // Apply platform filter
190
- if (options?.platform) {
191
- entries = filterByPlatform(entries, options.platform);
192
- }
193
- if (options?.strict) {
194
- const platform = (options.platform && String(options.platform).trim()) || process.platform;
195
- entries = entries.filter((entry) => shouldIncludeSkillEntry(entry, {
196
- platform,
197
- skillsConfig: this.config,
198
- runtimeConfig: options.runtimeConfig,
199
- }));
200
- }
201
- // Apply eligibility filter
202
- if (options?.eligibility) {
203
- entries = filterByEligibility(entries, options.eligibility);
204
- }
205
- // Apply name filter
206
- if (options?.filter && options.filter.length > 0) {
207
- const filterSet = new Set(options.filter);
208
- entries = entries.filter((e) => filterSet.has(e.skill.name));
209
- }
210
- // Build prompt
211
- const prompt = this.buildPrompt(entries);
212
- // Build skill list
213
- const skills = entries.map((e) => ({
214
- name: e.skill.name,
215
- primaryEnv: e.metadata?.primaryEnv,
216
- }));
217
- return {
218
- prompt,
219
- skills,
220
- resolvedSkills: entries.map((e) => e.skill),
221
- version: this.snapshotVersion,
222
- createdAt: new Date(),
223
- };
224
- }
225
- /**
226
- * Format skills into a prompt for LLM context.
227
- */
228
- buildPrompt(entries) {
229
- if (entries.length === 0) {
230
- return '';
231
- }
232
- const sections = entries.map((entry) => {
233
- const { skill, metadata } = entry;
234
- const emoji = metadata?.emoji || '\u{1F4E6}';
235
- const header = `## ${emoji} ${skill.name}`;
236
- const desc = skill.description ? `\n${skill.description}\n` : '';
237
- const content = skill.content ? `\n${skill.content}` : '';
238
- return `${header}${desc}${content}`;
239
- });
240
- return `# Available Skills\n\n${sections.join('\n\n---\n\n')}`;
241
- }
242
- // ============================================================================
243
- // COMMANDS
244
- // ============================================================================
245
- /**
246
- * Build command specifications for all skills.
247
- */
248
- buildCommandSpecs(options) {
249
- let entries = this.getUserInvocableSkills();
250
- if (options?.platform) {
251
- entries = filterByPlatform(entries, options.platform);
252
- }
253
- if (options?.eligibility) {
254
- entries = filterByEligibility(entries, options.eligibility);
255
- }
256
- const reservedNames = options?.reservedNames || new Set();
257
- const usedNames = new Set(reservedNames);
258
- const specs = [];
259
- for (const entry of entries) {
260
- const baseName = sanitizeCommandName(entry.skill.name);
261
- const name = resolveUniqueCommandName(baseName, usedNames);
262
- usedNames.add(name);
263
- specs.push({
264
- name,
265
- skillName: entry.skill.name,
266
- description: truncateDescription(entry.skill.description),
267
- });
268
- }
269
- return specs;
270
- }
271
- // ============================================================================
272
- // REQUIREMENTS
273
- // ============================================================================
274
- /**
275
- * Check requirements for all registered skills.
276
- */
277
- checkAllRequirements(hasBin) {
278
- const results = new Map();
279
- for (const entry of this.listAll()) {
280
- results.set(entry.skill.name, checkBinaryRequirements(entry, hasBin));
281
- }
282
- return results;
283
- }
284
- /**
285
- * Get skills with unmet requirements.
286
- */
287
- getSkillsWithMissingRequirements(hasBin) {
288
- const results = [];
289
- for (const entry of this.listAll()) {
290
- const { met, missing } = checkBinaryRequirements(entry, hasBin);
291
- if (!met) {
292
- results.push({ skill: entry.skill.name, missing });
293
- }
294
- }
295
- return results;
296
- }
297
- }
298
- // ============================================================================
299
- // HELPERS
300
- // ============================================================================
301
- const COMMAND_MAX_LENGTH = 32;
302
- const COMMAND_FALLBACK = 'skill';
303
- const DESCRIPTION_MAX_LENGTH = 100;
304
- /**
305
- * Sanitize a skill name into a valid command name.
306
- */
307
- function sanitizeCommandName(raw) {
308
- // Convert to lowercase, replace non-alphanumeric with hyphens
309
- let name = raw.toLowerCase().replace(/[^a-z0-9-]/g, '-');
310
- // Remove leading/trailing hyphens
311
- name = name.replace(/^-+|-+$/g, '');
312
- // Collapse multiple hyphens
313
- name = name.replace(/-+/g, '-');
314
- // Truncate to max length
315
- if (name.length > COMMAND_MAX_LENGTH) {
316
- name = name.slice(0, COMMAND_MAX_LENGTH);
317
- // Clean up trailing hyphen
318
- name = name.replace(/-+$/, '');
319
- }
320
- return name || COMMAND_FALLBACK;
321
- }
322
- /**
323
- * Resolve a unique command name avoiding collisions.
324
- */
325
- function resolveUniqueCommandName(base, used) {
326
- if (!used.has(base)) {
327
- return base;
328
- }
329
- // Append numeric suffix
330
- for (let i = 2; i < 100; i++) {
331
- const candidate = `${base}-${i}`;
332
- if (!used.has(candidate)) {
333
- return candidate;
334
- }
335
- }
336
- // Fallback with random suffix
337
- return `${base}-${Date.now() % 1000}`;
338
- }
339
- /**
340
- * Truncate description to max length.
341
- */
342
- function truncateDescription(desc) {
343
- if (desc.length <= DESCRIPTION_MAX_LENGTH) {
344
- return desc;
345
- }
346
- return desc.slice(0, DESCRIPTION_MAX_LENGTH - 3) + '...';
347
- }
348
- function normalizeAllowlist(input) {
349
- if (!Array.isArray(input))
350
- return undefined;
351
- const normalized = input.map((entry) => String(entry).trim()).filter(Boolean);
352
- return normalized.length > 0 ? normalized : undefined;
353
- }
354
- function isTruthy(value) {
355
- if (value === undefined || value === null)
356
- return false;
357
- if (typeof value === 'boolean')
358
- return value;
359
- if (typeof value === 'number')
360
- return value !== 0;
361
- if (typeof value === 'string')
362
- return value.trim().length > 0;
363
- return true;
364
- }
365
- function resolveConfigPath(config, pathStr) {
366
- if (!config)
367
- return undefined;
368
- const parts = pathStr.split('.').filter(Boolean);
369
- let current = config;
370
- for (const part of parts) {
371
- if (typeof current !== 'object' || current === null)
372
- return undefined;
373
- current = current[part];
374
- }
375
- return current;
376
- }
377
- function isConfigPathTruthy(config, pathStr) {
378
- return isTruthy(resolveConfigPath(config, pathStr));
379
- }
380
- function normalizePlatformName(raw) {
381
- const lower = raw.toLowerCase();
382
- if (lower === 'darwin' || lower === 'macos' || lower === 'mac')
383
- return 'darwin';
384
- if (lower === 'win32' || lower === 'windows')
385
- return 'win32';
386
- if (lower === 'linux')
387
- return 'linux';
388
- return lower;
389
- }
390
- function hasBinary(bin) {
391
- // Local PATH-only check (no shell).
392
- // Mirrors OpenClaw's behavior and is safe to call in hot paths.
393
- const pathEnv = process.env.PATH ?? '';
394
- const parts = pathEnv.split(path.delimiter).filter(Boolean);
395
- const candidates = process.platform === 'win32' ? [bin, `${bin}.exe`, `${bin}.cmd`, `${bin}.bat`] : [bin];
396
- for (const part of parts) {
397
- for (const candidateName of candidates) {
398
- const candidate = path.join(part, candidateName);
399
- try {
400
- fs.accessSync(candidate, fs.constants.X_OK);
401
- return true;
402
- }
403
- catch {
404
- // keep scanning
405
- }
406
- }
407
- }
408
- return false;
409
- }
410
- function shouldIncludeSkillEntry(entry, opts) {
411
- const name = entry.skill.name;
412
- const skillKey = entry.metadata?.skillKey ?? name;
413
- const skillConfig = opts.skillsConfig?.entries?.[skillKey] ?? opts.skillsConfig?.entries?.[name];
414
- if (skillConfig?.enabled === false)
415
- return false;
416
- const osList = entry.metadata?.os ?? [];
417
- if (osList.length > 0) {
418
- const platform = normalizePlatformName(opts.platform);
419
- const allowed = osList.some((p) => normalizePlatformName(p) === platform);
420
- if (!allowed)
421
- return false;
422
- }
423
- if (entry.metadata?.always === true) {
424
- return true;
425
- }
426
- const requires = entry.metadata?.requires;
427
- const requiredBins = requires?.bins ?? [];
428
- const requiredAnyBins = requires?.anyBins ?? [];
429
- const requiredEnv = requires?.env ?? [];
430
- const requiredConfig = requires?.config ?? [];
431
- for (const bin of requiredBins) {
432
- if (!hasBinary(bin))
433
- return false;
434
- }
435
- if (requiredAnyBins.length > 0) {
436
- const ok = requiredAnyBins.some((bin) => hasBinary(bin));
437
- if (!ok)
438
- return false;
439
- }
440
- for (const envName of requiredEnv) {
441
- if (process.env[envName])
442
- continue;
443
- if (skillConfig?.env?.[envName])
444
- continue;
445
- if (skillConfig?.apiKey && entry.metadata?.primaryEnv === envName)
446
- continue;
447
- return false;
448
- }
449
- for (const cfgPath of requiredConfig) {
450
- if (!isConfigPathTruthy(opts.runtimeConfig, cfgPath))
451
- return false;
452
- }
453
- return true;
454
- }
455
- //# sourceMappingURL=SkillRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillRegistry.js","sourceRoot":"","sources":["../src/SkillRegistry.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,13 +0,0 @@
1
- /**
2
- * @fileoverview Skills runtime module exports
3
- * @module @framers/agentos-skills
4
- *
5
- * Runtime package for loading, parsing, and managing SKILL.md prompt modules.
6
- * Provides SkillLoader (file parsing), SkillRegistry (runtime management),
7
- * and path utilities for skill directory resolution.
8
- */
9
- export * from './types.js';
10
- export * from './SkillLoader.js';
11
- export { SkillRegistry, type SkillRegistryOptions } from './SkillRegistry.js';
12
- export * from './paths.js';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,cAAc,YAAY,CAAC"}
package/dist/index.js DELETED
@@ -1,13 +0,0 @@
1
- /**
2
- * @fileoverview Skills runtime module exports
3
- * @module @framers/agentos-skills
4
- *
5
- * Runtime package for loading, parsing, and managing SKILL.md prompt modules.
6
- * Provides SkillLoader (file parsing), SkillRegistry (runtime management),
7
- * and path utilities for skill directory resolution.
8
- */
9
- export * from './types.js';
10
- export * from './SkillLoader.js';
11
- export { SkillRegistry } from './SkillRegistry.js';
12
- export * from './paths.js';
13
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAC9E,cAAc,YAAY,CAAC"}
package/dist/paths.d.ts DELETED
@@ -1,35 +0,0 @@
1
- /**
2
- * @fileoverview Skills path helpers for AgentOS
3
- * @module @framers/agentos-skills/paths
4
- *
5
- * Provides a canonical resolver for "default" skill directories so runtimes
6
- * and CLIs don't need to re-implement the same heuristics.
7
- */
8
- export interface ResolveSkillsDirsOptions {
9
- /** Base directory used to resolve relative --skills-dir entries. Default: process.cwd() */
10
- cwd?: string;
11
- /** Comma-separated list of additional skills directories (e.g. CLI flag). */
12
- skillsDirFlag?: string;
13
- /** Environment variables to consult. Default: process.env */
14
- env?: NodeJS.ProcessEnv;
15
- /** Include `AGENTOS_SKILLS_DIR` if set. Default: true */
16
- includeAgentosSkillsDir?: boolean;
17
- /** Include `$CODEX_HOME/skills` if CODEX_HOME is set. Default: true */
18
- includeCodexHomeSkillsDir?: boolean;
19
- /** Include `~/.codex/skills`. Default: true */
20
- includeHomeCodexSkillsDir?: boolean;
21
- /** Include `<cwd>/skills`. Default: true */
22
- includeCwdSkillsDir?: boolean;
23
- }
24
- /**
25
- * Resolve the "default" skills directories to scan for `SKILL.md` folders.
26
- *
27
- * Order is high -> low precedence for first-registered wins systems:
28
- * - CLI flag dirs
29
- * - AGENTOS_SKILLS_DIR
30
- * - CODEX_HOME/skills
31
- * - ~/.codex/skills
32
- * - <cwd>/skills
33
- */
34
- export declare function resolveDefaultSkillsDirs(options?: ResolveSkillsDirsOptions): string[];
35
- //# sourceMappingURL=paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,wBAAwB;IACvC,2FAA2F;IAC3F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAExB,yDAAyD;IACzD,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,uEAAuE;IACvE,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,+CAA+C;IAC/C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,EAAE,CAoCrF"}
package/dist/paths.js DELETED
@@ -1,71 +0,0 @@
1
- /**
2
- * @fileoverview Skills path helpers for AgentOS
3
- * @module @framers/agentos-skills/paths
4
- *
5
- * Provides a canonical resolver for "default" skill directories so runtimes
6
- * and CLIs don't need to re-implement the same heuristics.
7
- */
8
- import { existsSync } from 'node:fs';
9
- import * as path from 'node:path';
10
- import os from 'node:os';
11
- function splitCommaList(raw) {
12
- return raw
13
- .split(',')
14
- .map((p) => p.trim())
15
- .filter(Boolean);
16
- }
17
- function uniqExistingDirs(dirs) {
18
- const seen = new Set();
19
- const result = [];
20
- for (const dir of dirs) {
21
- const key = path.resolve(dir);
22
- if (seen.has(key))
23
- continue;
24
- seen.add(key);
25
- if (!existsSync(key))
26
- continue;
27
- result.push(key);
28
- }
29
- return result;
30
- }
31
- /**
32
- * Resolve the "default" skills directories to scan for `SKILL.md` folders.
33
- *
34
- * Order is high -> low precedence for first-registered wins systems:
35
- * - CLI flag dirs
36
- * - AGENTOS_SKILLS_DIR
37
- * - CODEX_HOME/skills
38
- * - ~/.codex/skills
39
- * - <cwd>/skills
40
- */
41
- export function resolveDefaultSkillsDirs(options) {
42
- const env = options?.env ?? process.env;
43
- const cwd = path.resolve(options?.cwd ?? process.cwd());
44
- const dirs = [];
45
- const skillsDirFlag = typeof options?.skillsDirFlag === 'string' ? options.skillsDirFlag.trim() : '';
46
- if (skillsDirFlag) {
47
- for (const part of splitCommaList(skillsDirFlag)) {
48
- dirs.push(path.resolve(cwd, part));
49
- }
50
- }
51
- if (options?.includeAgentosSkillsDir !== false) {
52
- const agentosDir = typeof env['AGENTOS_SKILLS_DIR'] === 'string' ? env['AGENTOS_SKILLS_DIR'].trim() : '';
53
- if (agentosDir) {
54
- dirs.push(path.resolve(cwd, agentosDir));
55
- }
56
- }
57
- if (options?.includeCodexHomeSkillsDir !== false) {
58
- const codexHome = typeof env['CODEX_HOME'] === 'string' ? env['CODEX_HOME'].trim() : '';
59
- if (codexHome) {
60
- dirs.push(path.join(codexHome, 'skills'));
61
- }
62
- }
63
- if (options?.includeHomeCodexSkillsDir !== false) {
64
- dirs.push(path.join(os.homedir(), '.codex', 'skills'));
65
- }
66
- if (options?.includeCwdSkillsDir !== false) {
67
- dirs.push(path.join(cwd, 'skills'));
68
- }
69
- return uniqExistingDirs(dirs);
70
- }
71
- //# sourceMappingURL=paths.js.map
package/dist/paths.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}