agent-switchboard 0.1.13 → 0.1.16
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/dist/agents/codex.d.ts +4 -1
- package/dist/agents/codex.js +28 -4
- package/dist/agents/codex.js.map +1 -1
- package/dist/agents/gemini.d.ts +0 -3
- package/dist/agents/gemini.js +33 -5
- package/dist/agents/gemini.js.map +1 -1
- package/dist/agents/opencode.js +2 -2
- package/dist/agents/opencode.js.map +1 -1
- package/dist/commands/library.d.ts +6 -0
- package/dist/commands/library.js +32 -3
- package/dist/commands/library.js.map +1 -1
- package/dist/config/schemas.d.ts +58 -8
- package/dist/config/schemas.js +17 -1
- package/dist/config/schemas.js.map +1 -1
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -1
- package/dist/library/subscriptions.d.ts +42 -0
- package/dist/library/subscriptions.js +116 -0
- package/dist/library/subscriptions.js.map +1 -0
- package/dist/rules/library.d.ts +6 -0
- package/dist/rules/library.js +32 -3
- package/dist/rules/library.js.map +1 -1
- package/dist/skills/library.d.ts +8 -2
- package/dist/skills/library.js +31 -5
- package/dist/skills/library.js.map +1 -1
- package/dist/subagents/library.d.ts +6 -0
- package/dist/subagents/library.js +32 -3
- package/dist/subagents/library.js.map +1 -1
- package/package.json +1 -1
package/dist/skills/library.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getSkillsDir } from '../config/paths.js';
|
|
4
|
+
import { getSubscriptionsRecord } from '../library/subscriptions.js';
|
|
4
5
|
import { parseSkillMarkdown } from './parser.js';
|
|
5
6
|
const SKILL_FILE = 'SKILL.md';
|
|
6
7
|
export function ensureSkillsDirectory() {
|
|
@@ -11,11 +12,14 @@ export function ensureSkillsDirectory() {
|
|
|
11
12
|
return directory;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
|
-
* Load
|
|
15
|
-
*
|
|
15
|
+
* Load skills from a specific directory
|
|
16
|
+
* @param directory - Directory to load skills from
|
|
17
|
+
* @param namespace - Optional namespace prefix for IDs
|
|
16
18
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
function loadSkillsFromDirectory(directory, namespace) {
|
|
20
|
+
if (!fs.existsSync(directory)) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
19
23
|
const entries = fs.readdirSync(directory, { withFileTypes: true });
|
|
20
24
|
const result = [];
|
|
21
25
|
for (const entry of entries) {
|
|
@@ -30,12 +34,17 @@ export function loadSkillLibrary() {
|
|
|
30
34
|
const rawContent = fs.readFileSync(skillPath, 'utf-8');
|
|
31
35
|
try {
|
|
32
36
|
const parsed = parseSkillMarkdown(rawContent);
|
|
37
|
+
const bareId = entry.name;
|
|
38
|
+
const id = namespace ? `${namespace}:${bareId}` : bareId;
|
|
33
39
|
// Warn if directory name doesn't match skill name
|
|
34
40
|
if (parsed.metadata.name !== entry.name) {
|
|
35
41
|
console.warn(`Warning: Skill folder "${entry.name}" differs from frontmatter name "${parsed.metadata.name}"`);
|
|
36
42
|
}
|
|
37
43
|
result.push({
|
|
38
|
-
id
|
|
44
|
+
id,
|
|
45
|
+
bareId,
|
|
46
|
+
namespace,
|
|
47
|
+
source: directory,
|
|
39
48
|
dirPath,
|
|
40
49
|
skillPath,
|
|
41
50
|
metadata: parsed.metadata,
|
|
@@ -49,6 +58,23 @@ export function loadSkillLibrary() {
|
|
|
49
58
|
throw error;
|
|
50
59
|
}
|
|
51
60
|
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load all skills from default library and subscribed libraries.
|
|
65
|
+
* Each skill is a directory containing a SKILL.md file.
|
|
66
|
+
*/
|
|
67
|
+
export function loadSkillLibrary() {
|
|
68
|
+
const result = [];
|
|
69
|
+
// Load from default library (no namespace)
|
|
70
|
+
const defaultDir = ensureSkillsDirectory();
|
|
71
|
+
result.push(...loadSkillsFromDirectory(defaultDir));
|
|
72
|
+
// Load from subscribed libraries (with namespace prefix)
|
|
73
|
+
const subscriptions = getSubscriptionsRecord();
|
|
74
|
+
for (const [namespace, basePath] of Object.entries(subscriptions)) {
|
|
75
|
+
const skillsDir = path.join(basePath, 'skills');
|
|
76
|
+
result.push(...loadSkillsFromDirectory(skillsDir, namespace));
|
|
77
|
+
}
|
|
52
78
|
result.sort((a, b) => a.id.localeCompare(b.id));
|
|
53
79
|
return result;
|
|
54
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/skills/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/skills/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { LibraryFrontmatter } from '../library/schema.js';
|
|
2
2
|
export interface SubagentEntry {
|
|
3
3
|
id: string;
|
|
4
|
+
bareId: string;
|
|
5
|
+
namespace?: string;
|
|
6
|
+
source: string;
|
|
4
7
|
filePath: string;
|
|
5
8
|
metadata: LibraryFrontmatter;
|
|
6
9
|
content: string;
|
|
7
10
|
}
|
|
8
11
|
export declare function ensureSubagentsDirectory(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Load all subagents from default library and subscribed libraries
|
|
14
|
+
*/
|
|
9
15
|
export declare function loadSubagentLibrary(): SubagentEntry[];
|
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getSubagentsDir } from '../config/paths.js';
|
|
4
4
|
import { parseLibraryMarkdown } from '../library/parser.js';
|
|
5
|
+
import { getSubscriptionsRecord } from '../library/subscriptions.js';
|
|
5
6
|
function isMarkdownFile(fileName) {
|
|
6
7
|
const extension = path.extname(fileName).toLowerCase();
|
|
7
8
|
return extension === '.md' || extension === '.markdown';
|
|
@@ -16,8 +17,15 @@ export function ensureSubagentsDirectory() {
|
|
|
16
17
|
}
|
|
17
18
|
return directory;
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Load subagents from a specific directory
|
|
22
|
+
* @param directory - Directory to load subagents from
|
|
23
|
+
* @param namespace - Optional namespace prefix for IDs
|
|
24
|
+
*/
|
|
25
|
+
function loadSubagentsFromDirectory(directory, namespace) {
|
|
26
|
+
if (!fs.existsSync(directory)) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
21
29
|
const entries = fs.readdirSync(directory, { withFileTypes: true });
|
|
22
30
|
const result = [];
|
|
23
31
|
for (const entry of entries) {
|
|
@@ -29,8 +37,13 @@ export function loadSubagentLibrary() {
|
|
|
29
37
|
const rawContent = fs.readFileSync(absolutePath, 'utf-8');
|
|
30
38
|
try {
|
|
31
39
|
const parsed = parseLibraryMarkdown(rawContent);
|
|
40
|
+
const bareId = toId(entry.name);
|
|
41
|
+
const id = namespace ? `${namespace}:${bareId}` : bareId;
|
|
32
42
|
result.push({
|
|
33
|
-
id
|
|
43
|
+
id,
|
|
44
|
+
bareId,
|
|
45
|
+
namespace,
|
|
46
|
+
source: directory,
|
|
34
47
|
filePath: absolutePath,
|
|
35
48
|
metadata: parsed.metadata,
|
|
36
49
|
content: parsed.content,
|
|
@@ -43,6 +56,22 @@ export function loadSubagentLibrary() {
|
|
|
43
56
|
throw error;
|
|
44
57
|
}
|
|
45
58
|
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load all subagents from default library and subscribed libraries
|
|
63
|
+
*/
|
|
64
|
+
export function loadSubagentLibrary() {
|
|
65
|
+
const result = [];
|
|
66
|
+
// Load from default library (no namespace)
|
|
67
|
+
const defaultDir = ensureSubagentsDirectory();
|
|
68
|
+
result.push(...loadSubagentsFromDirectory(defaultDir));
|
|
69
|
+
// Load from subscribed libraries (with namespace prefix)
|
|
70
|
+
const subscriptions = getSubscriptionsRecord();
|
|
71
|
+
for (const [namespace, basePath] of Object.entries(subscriptions)) {
|
|
72
|
+
const subagentsDir = path.join(basePath, 'subagents');
|
|
73
|
+
result.push(...loadSubagentsFromDirectory(subagentsDir, namespace));
|
|
74
|
+
}
|
|
46
75
|
result.sort((a, b) => a.id.localeCompare(b.id));
|
|
47
76
|
return result;
|
|
48
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/subagents/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/subagents/library.ts"],"names":[],"mappings":"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"}
|