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/agents/codex.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare class CodexAgent implements AgentAdapter {
|
|
|
27
27
|
/**
|
|
28
28
|
* Merge MCP server config into TOML content
|
|
29
29
|
* Preserves unrelated top-level tables/keys; rewrites mcp_servers in canonical form
|
|
30
|
+
* Note: SSE servers are filtered out as Codex only supports stdio and http
|
|
30
31
|
*/
|
|
31
32
|
export declare function mergeConfig(content: string, mcpServers: Record<string, Omit<McpServer, 'enabled'>>): string;
|
|
32
33
|
/**
|
|
@@ -39,11 +40,13 @@ export type McpServerLike = Record<string, unknown> & {
|
|
|
39
40
|
type?: string;
|
|
40
41
|
env_file?: string;
|
|
41
42
|
env?: Record<string, unknown>;
|
|
43
|
+
headers?: Record<string, string>;
|
|
42
44
|
};
|
|
43
45
|
/**
|
|
44
46
|
* Build canonical TOML: one table per server [mcp_servers.<name>]
|
|
45
47
|
* env must be written as dotted keys inside the same table: env.KEY = "VALUE"
|
|
46
|
-
*
|
|
48
|
+
* headers maps to http_headers in Codex format
|
|
49
|
+
* Key order per server: command, args, url, type, env_file, http_headers, env.* (alpha), unknown (alpha)
|
|
47
50
|
* Exactly one blank line between server tables; final newline added by caller
|
|
48
51
|
*/
|
|
49
52
|
export declare function buildNestedToml(mcpServers: Record<string, Omit<McpServerLike, 'enabled'>>): string;
|
package/dist/agents/codex.js
CHANGED
|
@@ -49,6 +49,7 @@ export class CodexAgent {
|
|
|
49
49
|
/**
|
|
50
50
|
* Merge MCP server config into TOML content
|
|
51
51
|
* Preserves unrelated top-level tables/keys; rewrites mcp_servers in canonical form
|
|
52
|
+
* Note: SSE servers are filtered out as Codex only supports stdio and http
|
|
52
53
|
*/
|
|
53
54
|
export function mergeConfig(content, mcpServers) {
|
|
54
55
|
// Read existing content to preserve unrelated top-level keys (not comments)
|
|
@@ -65,8 +66,18 @@ export function mergeConfig(content, mcpServers) {
|
|
|
65
66
|
// If parsing fails, drop old content entirely to avoid propagating bad state
|
|
66
67
|
otherTopLevel = {};
|
|
67
68
|
}
|
|
69
|
+
// Filter out SSE servers - Codex only supports stdio and http
|
|
70
|
+
const filteredServers = {};
|
|
71
|
+
for (const [name, server] of Object.entries(mcpServers)) {
|
|
72
|
+
const s = server;
|
|
73
|
+
if (s.type === 'sse') {
|
|
74
|
+
// Skip SSE servers - Codex doesn't support them
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
filteredServers[name] = server;
|
|
78
|
+
}
|
|
68
79
|
// Build canonical mcp_servers TOML from provided config
|
|
69
|
-
const mcpToml = buildNestedToml(
|
|
80
|
+
const mcpToml = buildNestedToml(filteredServers);
|
|
70
81
|
// Stringify other top-level tables/keys via iarna/toml
|
|
71
82
|
let otherToml = '';
|
|
72
83
|
try {
|
|
@@ -88,7 +99,8 @@ export function mergeConfig(content, mcpServers) {
|
|
|
88
99
|
/**
|
|
89
100
|
* Build canonical TOML: one table per server [mcp_servers.<name>]
|
|
90
101
|
* env must be written as dotted keys inside the same table: env.KEY = "VALUE"
|
|
91
|
-
*
|
|
102
|
+
* headers maps to http_headers in Codex format
|
|
103
|
+
* Key order per server: command, args, url, type, env_file, http_headers, env.* (alpha), unknown (alpha)
|
|
92
104
|
* Exactly one blank line between server tables; final newline added by caller
|
|
93
105
|
*/
|
|
94
106
|
export function buildNestedToml(mcpServers) {
|
|
@@ -116,6 +128,18 @@ export function buildNestedToml(mcpServers) {
|
|
|
116
128
|
// Known keys
|
|
117
129
|
for (const k of KNOWN_ORDER)
|
|
118
130
|
emit(k, server[k]);
|
|
131
|
+
// headers -> http_headers (inline table format)
|
|
132
|
+
if (server.headers && typeof server.headers === 'object') {
|
|
133
|
+
const headerEntries = Object.entries(server.headers).filter(([_, v]) => v !== undefined && v !== null);
|
|
134
|
+
if (headerEntries.length > 0) {
|
|
135
|
+
// Format as inline table: http_headers = { "Key" = "Value", ... }
|
|
136
|
+
const pairs = headerEntries
|
|
137
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
138
|
+
.map(([k, v]) => `"${k}" = "${String(v).replace(/"/g, '\\"')}"`)
|
|
139
|
+
.join(', ');
|
|
140
|
+
lines.push(`http_headers = { ${pairs} }`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
119
143
|
// env dotted keys (alphabetical)
|
|
120
144
|
if (server.env && typeof server.env === 'object') {
|
|
121
145
|
const envEntries = Object.entries(server.env).filter(([_, v]) => v !== undefined && v !== null);
|
|
@@ -123,8 +147,8 @@ export function buildNestedToml(mcpServers) {
|
|
|
123
147
|
for (const [ek, ev] of envEntries)
|
|
124
148
|
emit(`env.${ek}`, String(ev));
|
|
125
149
|
}
|
|
126
|
-
// Unknown keys (exclude known + env)
|
|
127
|
-
const knownSet = new Set([...KNOWN_ORDER.map(String), 'env']);
|
|
150
|
+
// Unknown keys (exclude known + env + headers)
|
|
151
|
+
const knownSet = new Set([...KNOWN_ORDER.map(String), 'env', 'headers']);
|
|
128
152
|
const unknownKeys = Object.keys(server)
|
|
129
153
|
.filter((k) => !knownSet.has(k))
|
|
130
154
|
.sort((a, b) => a.localeCompare(b));
|
package/dist/agents/codex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACZ,EAAE,GAAG,OAAgB,CAAC;IAE/B,UAAU;QACR,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,MAAkE;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB,CAChB,WAAmB,EACnB,MAAkE;QAElE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,WAAW,CAAC,UAAkB;QACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,WAAW,CAAC,UAAkB,EAAE,OAAe;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CACF;AAED
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/agents/codex.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/gemini.d.ts
CHANGED
package/dist/agents/gemini.js
CHANGED
|
@@ -5,11 +5,39 @@
|
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { getGeminiSettingsPath } from '../config/paths.js';
|
|
8
|
-
import { loadJsonFile,
|
|
8
|
+
import { loadJsonFile, saveJsonFile } from './json-utils.js';
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Map MCP server config to Gemini format
|
|
11
|
+
* - stdio: {command, args, env} (no type field)
|
|
12
|
+
* - sse: {url} (no type field)
|
|
13
|
+
* - http: {httpUrl} (Gemini uses httpUrl instead of url for HTTP transport)
|
|
11
14
|
*/
|
|
12
|
-
|
|
15
|
+
function mapServerForGemini(server) {
|
|
16
|
+
const { type, url, command, args, env, ...rest } = server;
|
|
17
|
+
if (type === 'http' && typeof url === 'string') {
|
|
18
|
+
// HTTP transport uses httpUrl field in Gemini
|
|
19
|
+
return { httpUrl: url, ...rest };
|
|
20
|
+
}
|
|
21
|
+
if ((type === 'sse' || type === undefined) && typeof url === 'string' && !command) {
|
|
22
|
+
// SSE transport (or inferred remote) uses url field
|
|
23
|
+
return { url, ...rest };
|
|
24
|
+
}
|
|
25
|
+
// stdio transport
|
|
26
|
+
return { command, args, env, ...rest };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Merge MCP servers into Gemini config with proper field mapping
|
|
30
|
+
*/
|
|
31
|
+
function mergeMcpForGemini(agentConfig, mcpServers) {
|
|
32
|
+
const merged = { ...agentConfig };
|
|
33
|
+
merged.mcpServers = {};
|
|
34
|
+
for (const [name, server] of Object.entries(mcpServers)) {
|
|
35
|
+
const existing = agentConfig.mcpServers?.[name] ?? {};
|
|
36
|
+
const mapped = mapServerForGemini(server);
|
|
37
|
+
merged.mcpServers[name] = { ...existing, ...mapped };
|
|
38
|
+
}
|
|
39
|
+
return merged;
|
|
40
|
+
}
|
|
13
41
|
/**
|
|
14
42
|
* Gemini CLI agent adapter
|
|
15
43
|
* Config location: ~/.gemini/settings.json
|
|
@@ -28,13 +56,13 @@ export class GeminiAgent {
|
|
|
28
56
|
applyConfig(config) {
|
|
29
57
|
const configPath = this.configPath();
|
|
30
58
|
const agentConfig = loadJsonFile(configPath, { mcpServers: {} });
|
|
31
|
-
const merged =
|
|
59
|
+
const merged = mergeMcpForGemini(agentConfig, config.mcpServers);
|
|
32
60
|
saveJsonFile(configPath, merged);
|
|
33
61
|
}
|
|
34
62
|
applyProjectConfig(projectRoot, config) {
|
|
35
63
|
const configPath = this.projectConfigPath(projectRoot);
|
|
36
64
|
const existing = loadJsonFile(configPath, { mcpServers: {} });
|
|
37
|
-
const merged =
|
|
65
|
+
const merged = mergeMcpForGemini(existing, config.mcpServers);
|
|
38
66
|
// Ensure .gemini directory exists
|
|
39
67
|
const dir = path.dirname(configPath);
|
|
40
68
|
if (!fs.existsSync(dir))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/agents/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/agents/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/opencode.js
CHANGED
|
@@ -71,8 +71,8 @@ export class OpencodeAgent {
|
|
|
71
71
|
const prev = { ...(current.mcp?.[name] ?? {}) };
|
|
72
72
|
// Cast to extended type to access potential additional fields
|
|
73
73
|
const extServer = server;
|
|
74
|
-
// Map stdio/local vs http/remote
|
|
75
|
-
const isRemote = extServer.type === 'http' || typeof extServer.url === 'string';
|
|
74
|
+
// Map stdio/local vs http/sse/remote
|
|
75
|
+
const isRemote = extServer.type === 'http' || extServer.type === 'sse' || typeof extServer.url === 'string';
|
|
76
76
|
const next = { ...prev };
|
|
77
77
|
if (isRemote) {
|
|
78
78
|
next.type = 'remote';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/agents/opencode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI7E;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,SAAS,GAAG,GAAG,QAAQ,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,QAAQ,OAAO,CAAC;IAEpC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,OAAgB;IAC3D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC,OAAO,CAAmB,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;AAC/C,CAAC;AAYD,MAAM,OAAO,aAAa;IACf,EAAE,GAAG,UAAmB,CAAC;IAElC,UAAU;QACR,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAmB;QACnC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACjE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,WAAW,CAAC,MAAkE;QAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB,CAChB,WAAmB,EACnB,MAAkE;QAElE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEO,YAAY,CAClB,QAAgB,EAChB,MAAkE;QAElE,oCAAoC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE5C,gBAAgB;QAChB,IAAI,OAAO,GAAmB,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,mFAAmF;gBACnF,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAmB,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3C,6DAA6D;QAC7D,wDAAwD;QACxD,MAAM,MAAM,GAA4C,EAAE,CAAC;QAE3D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,gFAAgF;YAChF,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAChD,8DAA8D;YAC9D,MAAM,SAAS,GAAG,MAA2B,CAAC;YAE9C,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/agents/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { LibraryFrontmatter } from '../library/schema.js';
|
|
2
2
|
export interface CommandEntry {
|
|
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 ensureCommandsDirectory(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Load all commands from default library and subscribed libraries
|
|
14
|
+
*/
|
|
9
15
|
export declare function loadCommandLibrary(): CommandEntry[];
|
package/dist/commands/library.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getCommandsDir } 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 ensureCommandsDirectory() {
|
|
|
16
17
|
}
|
|
17
18
|
return directory;
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Load commands from a specific directory
|
|
22
|
+
* @param directory - Directory to load commands from
|
|
23
|
+
* @param namespace - Optional namespace prefix for IDs
|
|
24
|
+
*/
|
|
25
|
+
function loadCommandsFromDirectory(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 loadCommandLibrary() {
|
|
|
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 loadCommandLibrary() {
|
|
|
43
56
|
throw error;
|
|
44
57
|
}
|
|
45
58
|
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load all commands from default library and subscribed libraries
|
|
63
|
+
*/
|
|
64
|
+
export function loadCommandLibrary() {
|
|
65
|
+
const result = [];
|
|
66
|
+
// Load from default library (no namespace)
|
|
67
|
+
const defaultDir = ensureCommandsDirectory();
|
|
68
|
+
result.push(...loadCommandsFromDirectory(defaultDir));
|
|
69
|
+
// Load from subscribed libraries (with namespace prefix)
|
|
70
|
+
const subscriptions = getSubscriptionsRecord();
|
|
71
|
+
for (const [namespace, basePath] of Object.entries(subscriptions)) {
|
|
72
|
+
const commandsDir = path.join(basePath, 'commands');
|
|
73
|
+
result.push(...loadCommandsFromDirectory(commandsDir, 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/commands/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/commands/library.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schemas.d.ts
CHANGED
|
@@ -12,19 +12,19 @@ export declare const mcpServerSchema: z.ZodObject<{
|
|
|
12
12
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
13
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
14
14
|
url: z.ZodOptional<z.ZodString>;
|
|
15
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
15
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
16
16
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
17
17
|
command: z.ZodOptional<z.ZodString>;
|
|
18
18
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
19
19
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
20
20
|
url: z.ZodOptional<z.ZodString>;
|
|
21
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
21
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
22
22
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
23
23
|
command: z.ZodOptional<z.ZodString>;
|
|
24
24
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
25
25
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
26
26
|
url: z.ZodOptional<z.ZodString>;
|
|
27
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
27
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
28
28
|
}, z.ZodTypeAny, "passthrough">>;
|
|
29
29
|
/**
|
|
30
30
|
* Schema for MCP configuration file (~/.agent-switchboard/mcp.json)
|
|
@@ -35,19 +35,19 @@ export declare const mcpConfigSchema: z.ZodObject<{
|
|
|
35
35
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
36
36
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
37
37
|
url: z.ZodOptional<z.ZodString>;
|
|
38
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
38
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
39
39
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
40
40
|
command: z.ZodOptional<z.ZodString>;
|
|
41
41
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
42
42
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
43
43
|
url: z.ZodOptional<z.ZodString>;
|
|
44
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
44
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
45
45
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
46
46
|
command: z.ZodOptional<z.ZodString>;
|
|
47
47
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
48
48
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
49
49
|
url: z.ZodOptional<z.ZodString>;
|
|
50
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
50
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
51
51
|
}, z.ZodTypeAny, "passthrough">>>>;
|
|
52
52
|
}, "strip", z.ZodTypeAny, {
|
|
53
53
|
mcpServers: Record<string, z.objectOutputType<{
|
|
@@ -55,7 +55,7 @@ export declare const mcpConfigSchema: z.ZodObject<{
|
|
|
55
55
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
56
56
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
57
57
|
url: z.ZodOptional<z.ZodString>;
|
|
58
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
58
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
59
59
|
}, z.ZodTypeAny, "passthrough">>;
|
|
60
60
|
}, {
|
|
61
61
|
mcpServers?: Record<string, z.objectInputType<{
|
|
@@ -63,7 +63,7 @@ export declare const mcpConfigSchema: z.ZodObject<{
|
|
|
63
63
|
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
64
64
|
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
65
65
|
url: z.ZodOptional<z.ZodString>;
|
|
66
|
-
type: z.ZodOptional<z.ZodEnum<["stdio", "http"]>>;
|
|
66
|
+
type: z.ZodOptional<z.ZodEnum<["stdio", "sse", "http"]>>;
|
|
67
67
|
}, z.ZodTypeAny, "passthrough">> | undefined;
|
|
68
68
|
}>;
|
|
69
69
|
export declare const selectionSectionSchema: z.ZodObject<{} & {
|
|
@@ -337,6 +337,13 @@ export declare const uiSectionSchema: z.ZodObject<{} & {
|
|
|
337
337
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
338
338
|
page_size: z.ZodDefault<z.ZodNumber>;
|
|
339
339
|
}, z.ZodTypeAny, "passthrough">>;
|
|
340
|
+
export declare const librarySectionSchema: z.ZodObject<{} & {
|
|
341
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
342
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{} & {
|
|
343
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
344
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
345
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
346
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
340
347
|
/**
|
|
341
348
|
* Schema for Agent Switchboard configuration file (~/.agent-switchboard/config.toml)
|
|
342
349
|
*/
|
|
@@ -393,6 +400,13 @@ export declare const switchboardConfigSchema: z.ZodObject<{
|
|
|
393
400
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
394
401
|
page_size: z.ZodDefault<z.ZodNumber>;
|
|
395
402
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
403
|
+
library: z.ZodDefault<z.ZodObject<{} & {
|
|
404
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
405
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{} & {
|
|
406
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
407
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
408
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
409
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
396
410
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
397
411
|
agents: z.ZodDefault<z.ZodObject<{
|
|
398
412
|
active: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -446,6 +460,13 @@ export declare const switchboardConfigSchema: z.ZodObject<{
|
|
|
446
460
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
447
461
|
page_size: z.ZodDefault<z.ZodNumber>;
|
|
448
462
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
463
|
+
library: z.ZodDefault<z.ZodObject<{} & {
|
|
464
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
465
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{} & {
|
|
466
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
467
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
468
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
469
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
449
470
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
450
471
|
agents: z.ZodDefault<z.ZodObject<{
|
|
451
472
|
active: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -499,6 +520,13 @@ export declare const switchboardConfigSchema: z.ZodObject<{
|
|
|
499
520
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
500
521
|
page_size: z.ZodDefault<z.ZodNumber>;
|
|
501
522
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
523
|
+
library: z.ZodDefault<z.ZodObject<{} & {
|
|
524
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
525
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{} & {
|
|
526
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
527
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{} & {
|
|
528
|
+
subscriptions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
529
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
502
530
|
}, z.ZodTypeAny, "passthrough">>;
|
|
503
531
|
/**
|
|
504
532
|
* Input schema for partial config layers (no defaults)
|
|
@@ -559,6 +587,13 @@ export declare const switchboardConfigLayerSchema: z.ZodObject<{
|
|
|
559
587
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
560
588
|
page_size: z.ZodOptional<z.ZodNumber>;
|
|
561
589
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
590
|
+
library: z.ZodOptional<z.ZodObject<{
|
|
591
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
592
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
593
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
594
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
595
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
596
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
562
597
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
563
598
|
agents: z.ZodOptional<z.ZodObject<{
|
|
564
599
|
active: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -615,6 +650,13 @@ export declare const switchboardConfigLayerSchema: z.ZodObject<{
|
|
|
615
650
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
616
651
|
page_size: z.ZodOptional<z.ZodNumber>;
|
|
617
652
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
653
|
+
library: z.ZodOptional<z.ZodObject<{
|
|
654
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
655
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
656
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
657
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
658
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
659
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
618
660
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
619
661
|
agents: z.ZodOptional<z.ZodObject<{
|
|
620
662
|
active: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -671,6 +713,13 @@ export declare const switchboardConfigLayerSchema: z.ZodObject<{
|
|
|
671
713
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
672
714
|
page_size: z.ZodOptional<z.ZodNumber>;
|
|
673
715
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
716
|
+
library: z.ZodOptional<z.ZodObject<{
|
|
717
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
718
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
719
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
720
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
721
|
+
subscriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
722
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
674
723
|
}, z.ZodTypeAny, "passthrough">>;
|
|
675
724
|
/**
|
|
676
725
|
* Infer TypeScript types from schemas
|
|
@@ -683,6 +732,7 @@ export type AgentConfigOverride = z.infer<typeof agentConfigOverrideSchema>;
|
|
|
683
732
|
export type AgentsSection = z.infer<typeof agentsSectionSchema>;
|
|
684
733
|
export type RulesSection = z.infer<typeof rulesSectionSchema>;
|
|
685
734
|
export type UiSection = z.infer<typeof uiSectionSchema>;
|
|
735
|
+
export type LibrarySection = z.infer<typeof librarySectionSchema>;
|
|
686
736
|
export type SwitchboardConfig = z.infer<typeof switchboardConfigSchema>;
|
|
687
737
|
export type SwitchboardConfigLayer = z.infer<typeof switchboardConfigLayerSchema>;
|
|
688
738
|
export {};
|
package/dist/config/schemas.js
CHANGED
|
@@ -13,7 +13,7 @@ export const mcpServerSchema = z
|
|
|
13
13
|
args: z.array(z.string()).optional(),
|
|
14
14
|
env: z.record(z.string()).optional(),
|
|
15
15
|
url: z.string().url().optional(),
|
|
16
|
-
type: z.enum(['stdio', 'http']).optional(),
|
|
16
|
+
type: z.enum(['stdio', 'sse', 'http']).optional(),
|
|
17
17
|
})
|
|
18
18
|
.passthrough(); // Allow unknown fields
|
|
19
19
|
/**
|
|
@@ -108,6 +108,20 @@ export const uiSectionSchema = uiSectionBaseSchema
|
|
|
108
108
|
page_size: z.number().int().min(5).max(50).default(20),
|
|
109
109
|
})
|
|
110
110
|
.passthrough();
|
|
111
|
+
/**
|
|
112
|
+
* Library configuration schema
|
|
113
|
+
* - subscriptions: Record of namespace -> path for additional library sources
|
|
114
|
+
*/
|
|
115
|
+
const librarySectionBaseSchema = z
|
|
116
|
+
.object({
|
|
117
|
+
subscriptions: z.record(z.string().trim().min(1), z.string().trim().min(1)).optional(),
|
|
118
|
+
})
|
|
119
|
+
.passthrough();
|
|
120
|
+
export const librarySectionSchema = librarySectionBaseSchema
|
|
121
|
+
.extend({
|
|
122
|
+
subscriptions: z.record(z.string().trim().min(1), z.string().trim().min(1)).default({}),
|
|
123
|
+
})
|
|
124
|
+
.passthrough();
|
|
111
125
|
/**
|
|
112
126
|
* Schema for Agent Switchboard configuration file (~/.agent-switchboard/config.toml)
|
|
113
127
|
*/
|
|
@@ -120,6 +134,7 @@ export const switchboardConfigSchema = z
|
|
|
120
134
|
skills: selectionSectionSchema.default({ active: [] }),
|
|
121
135
|
rules: rulesSectionSchema.default({ active: [], includeDelimiters: false }),
|
|
122
136
|
ui: uiSectionSchema.default({ pageSize: 20 }),
|
|
137
|
+
library: librarySectionSchema.default({ subscriptions: {} }),
|
|
123
138
|
})
|
|
124
139
|
.passthrough();
|
|
125
140
|
/**
|
|
@@ -134,6 +149,7 @@ export const switchboardConfigLayerSchema = z
|
|
|
134
149
|
skills: selectionSectionBaseSchema.optional(),
|
|
135
150
|
rules: rulesSectionBaseSchema.optional(),
|
|
136
151
|
ui: uiSectionBaseSchema.optional(),
|
|
152
|
+
library: librarySectionBaseSchema.optional(),
|
|
137
153
|
})
|
|
138
154
|
.passthrough();
|
|
139
155
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"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"}
|