agent-switchboard 0.1.28 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -62
- package/dist/commands/distribution.js +1 -1
- package/dist/commands/distribution.js.map +1 -1
- package/dist/commands/inventory.js +1 -1
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/library.d.ts +1 -1
- package/dist/commands/library.js +3 -3
- package/dist/commands/library.js.map +1 -1
- package/dist/config/application-config.d.ts +14 -3
- package/dist/config/application-config.js +61 -6
- package/dist/config/application-config.js.map +1 -1
- package/dist/config/mcp-config.d.ts +7 -0
- package/dist/config/mcp-config.js +25 -0
- package/dist/config/mcp-config.js.map +1 -1
- package/dist/config/schemas.d.ts +828 -273
- package/dist/config/schemas.js +62 -18
- package/dist/config/schemas.js.map +1 -1
- package/dist/hooks/distribution.js +1 -1
- package/dist/hooks/distribution.js.map +1 -1
- package/dist/hooks/library.d.ts +1 -1
- package/dist/hooks/library.js +3 -3
- package/dist/hooks/library.js.map +1 -1
- package/dist/index.js +323 -67
- package/dist/index.js.map +1 -1
- package/dist/library/sources.d.ts +3 -2
- package/dist/library/sources.js +16 -17
- package/dist/library/sources.js.map +1 -1
- package/dist/library/state.d.ts +6 -6
- package/dist/library/state.js +15 -15
- package/dist/library/state.js.map +1 -1
- package/dist/marketplace/plugin-loader.d.ts +3 -0
- package/dist/marketplace/plugin-loader.js +53 -2
- package/dist/marketplace/plugin-loader.js.map +1 -1
- package/dist/marketplace/reader.d.ts +22 -0
- package/dist/marketplace/reader.js +122 -17
- package/dist/marketplace/reader.js.map +1 -1
- package/dist/marketplace/schemas.d.ts +48 -12
- package/dist/marketplace/schemas.js +4 -1
- package/dist/marketplace/schemas.js.map +1 -1
- package/dist/marketplace/source-loader.d.ts +6 -6
- package/dist/marketplace/source-loader.js +8 -8
- package/dist/marketplace/source-loader.js.map +1 -1
- package/dist/plugins/index.d.ts +57 -0
- package/dist/plugins/index.js +304 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/rules/composer.js +4 -4
- package/dist/rules/composer.js.map +1 -1
- package/dist/rules/inventory.js +1 -1
- package/dist/rules/inventory.js.map +1 -1
- package/dist/rules/library.d.ts +1 -1
- package/dist/rules/library.js +19 -3
- package/dist/rules/library.js.map +1 -1
- package/dist/rules/schema.d.ts +3 -3
- package/dist/rules/schema.js +1 -1
- package/dist/rules/schema.js.map +1 -1
- package/dist/rules/state.js +12 -12
- package/dist/rules/state.js.map +1 -1
- package/dist/skills/distribution.js +5 -5
- package/dist/skills/distribution.js.map +1 -1
- package/dist/skills/inventory.js +1 -1
- package/dist/skills/inventory.js.map +1 -1
- package/dist/skills/library.d.ts +1 -1
- package/dist/skills/library.js +3 -3
- package/dist/skills/library.js.map +1 -1
- package/dist/subagents/distribution.js +2 -2
- package/dist/subagents/distribution.js.map +1 -1
- package/dist/subagents/inventory.js +1 -1
- package/dist/subagents/inventory.js.map +1 -1
- package/dist/subagents/library.d.ts +1 -1
- package/dist/subagents/library.js +3 -3
- package/dist/subagents/library.js.map +1 -1
- package/dist/ui/library-selector.d.ts +1 -1
- package/dist/ui/library-selector.js +7 -7
- package/dist/ui/library-selector.js.map +1 -1
- package/dist/ui/plugin-ui.d.ts +3 -0
- package/dist/ui/plugin-ui.js +77 -0
- package/dist/ui/plugin-ui.js.map +1 -0
- package/dist/ui/rule-ui.d.ts +1 -1
- package/dist/ui/rule-ui.js +4 -4
- package/dist/ui/rule-ui.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://github.com/qyhfrank/agent-switchboard/actions/workflows/ci.yml)
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
|
|
7
|
-
Manage MCP servers, rules, commands,
|
|
7
|
+
Manage MCP servers, rules, commands, agents, skills, and hooks from a single source of truth, then sync them to every AI coding agent you use.
|
|
8
8
|
|
|
9
9
|
Alias: `asb`
|
|
10
10
|
|
|
@@ -20,13 +20,13 @@ Libraries Config Layers Distribution
|
|
|
20
20
|
│ mcp.json │ │ User config.toml │ │ Claude Code │
|
|
21
21
|
│ rules/ │ │ Profile <name>.toml │ │ Codex │
|
|
22
22
|
│ commands/ │ ─► │ Project .asb.toml │ ─► │ Cursor │
|
|
23
|
-
│
|
|
24
|
-
│ skills/ │ │ Per-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
│ agents/ │ │ │ │ Gemini │
|
|
24
|
+
│ skills/ │ │ Per-app overrides │ │ OpenCode │
|
|
25
|
+
│ hooks/ │ │ │ │ Claude Desktop │
|
|
26
|
+
└──────────────┘ └─────────────────────┘ └────────────────┘
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Library entries are agent-agnostic Markdown files (or directories for skills, JSON for hooks). Agent Switchboard reads them, applies layered configuration and per-application overrides, then writes the correct format to each agent's config location.
|
|
30
30
|
|
|
31
31
|
## Compatibility
|
|
32
32
|
|
|
@@ -36,12 +36,13 @@ All library entries are agent-agnostic Markdown files (or directories for skills
|
|
|
36
36
|
| Project-level MCP| ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
37
37
|
| Rules | ✓ | ✓ | ✓ mdc | ✓ | ✓ | |
|
|
38
38
|
| Commands | ✓ | ✓\* | ✓ | ✓ | ✓ | |
|
|
39
|
-
|
|
|
39
|
+
| Agents | ✓ | | ✓ | | ✓ | |
|
|
40
40
|
| Skills | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
41
|
+
| Hooks | ✓ | | | | | |
|
|
41
42
|
|
|
42
43
|
\* Codex commands use deprecated `~/.codex/prompts/`; prefer skills instead.
|
|
43
44
|
|
|
44
|
-
Cursor rules are
|
|
45
|
+
Cursor rules are composed into a single `asb-rules.mdc` file at `~/.cursor/rules/` with `alwaysApply: true`.
|
|
45
46
|
|
|
46
47
|
## Quick Start
|
|
47
48
|
|
|
@@ -52,7 +53,7 @@ npm i -g agent-switchboard # or: npx agent-switchboard@latest mcp
|
|
|
52
53
|
1. **Pick your agents** -- create `~/.agent-switchboard/config.toml`:
|
|
53
54
|
|
|
54
55
|
```toml
|
|
55
|
-
[
|
|
56
|
+
[applications]
|
|
56
57
|
active = ["claude-code", "codex", "cursor"]
|
|
57
58
|
```
|
|
58
59
|
|
|
@@ -62,56 +63,86 @@ active = ["claude-code", "codex", "cursor"]
|
|
|
62
63
|
asb mcp
|
|
63
64
|
```
|
|
64
65
|
|
|
65
|
-
3. **
|
|
66
|
+
3. **Add a plugin source** (optional) -- pull components from a local directory, git repo, or Claude Code marketplace:
|
|
66
67
|
|
|
67
68
|
```bash
|
|
68
|
-
asb
|
|
69
|
+
asb plugin marketplace add /path/to/my-plugin
|
|
70
|
+
asb plugin marketplace add https://github.com/org/marketplace-repo
|
|
69
71
|
```
|
|
70
72
|
|
|
71
|
-
|
|
73
|
+
4. **Sync everything** -- pushes all libraries (rules, commands, agents, skills, hooks) and MCP config to every active application:
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
```bash
|
|
76
|
+
asb sync
|
|
77
|
+
```
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
|:---------------------|:--------------------------------------------------------|
|
|
77
|
-
| `asb mcp` | Interactive MCP server selector |
|
|
78
|
-
| `asb rule` | Interactive rule snippet selector with ordering |
|
|
79
|
-
| `asb command` | Interactive command selector |
|
|
80
|
-
| `asb subagent` | Interactive subagent selector |
|
|
81
|
-
| `asb skill` | Interactive skill selector |
|
|
82
|
-
| `asb sync` | Push all libraries + MCP to agents (no UI) |
|
|
83
|
-
| `asb <lib> load` | Import files from a platform into the library |
|
|
84
|
-
| `asb <lib> list` | Show inventory, activation state, and sync timestamps |
|
|
85
|
-
| `asb source add` | Add an external library source (local path or git URL) |
|
|
86
|
-
| `asb source remove` | Remove a library source |
|
|
87
|
-
| `asb source list` | List configured library sources |
|
|
79
|
+
Library content lives under `~/.agent-switchboard/` and agent configs are updated in place.
|
|
88
80
|
|
|
89
|
-
|
|
81
|
+
## Command Reference
|
|
90
82
|
|
|
91
|
-
|
|
83
|
+
| Command | Description |
|
|
84
|
+
|:--------------------------------|:-----------------------------------------------------|
|
|
85
|
+
| `asb mcp` | Interactive MCP server selector |
|
|
86
|
+
| `asb rule` | Interactive rule snippet selector with ordering |
|
|
87
|
+
| `asb command` | Interactive command selector |
|
|
88
|
+
| `asb agent` | Interactive agent selector |
|
|
89
|
+
| `asb skill` | Interactive skill selector |
|
|
90
|
+
| `asb hook` | Interactive hook selector (Claude Code only) |
|
|
91
|
+
| `asb sync` | Push all libraries + MCP to applications (no UI) |
|
|
92
|
+
| `asb <lib> load` | Import files from a platform into the library |
|
|
93
|
+
| `asb <lib> list` | Show inventory, enabled state, and sync timestamps |
|
|
94
|
+
| `asb plugin list` | List all discovered plugins and their states |
|
|
95
|
+
| `asb plugin info <ref>` | Show plugin details and components |
|
|
96
|
+
| `asb plugin enable <ref>` | Enable a plugin |
|
|
97
|
+
| `asb plugin disable <ref>` | Disable a plugin (keep in config) |
|
|
98
|
+
| `asb plugin uninstall <ref>` | Remove a plugin from enabled config |
|
|
99
|
+
| `asb plugin marketplace add` | Add a plugin source (local path or git URL) |
|
|
100
|
+
| `asb plugin marketplace remove` | Remove a plugin source |
|
|
101
|
+
| `asb plugin marketplace list` | List configured plugin sources |
|
|
102
|
+
|
|
103
|
+
`<lib>` = `rule`, `command`, `agent`, `skill`, or `hook`. `<ref>` = `plugin` or `plugin@source`.
|
|
104
|
+
|
|
105
|
+
**Shared flags**: `-p, --profile <name>`, `--project <path>`, `--json` (on `list` commands).
|
|
92
106
|
|
|
93
107
|
## Configuration
|
|
94
108
|
|
|
95
109
|
### `config.toml`
|
|
96
110
|
|
|
97
|
-
The central config file at `~/.agent-switchboard/config.toml` controls
|
|
111
|
+
The central config file at `~/.agent-switchboard/config.toml` controls target applications, entry-level selections, and plugin sources:
|
|
98
112
|
|
|
99
113
|
```toml
|
|
100
|
-
[
|
|
101
|
-
active = ["claude-code", "codex", "cursor"
|
|
114
|
+
[applications]
|
|
115
|
+
active = ["claude-code", "codex", "cursor"]
|
|
102
116
|
|
|
103
117
|
[rules]
|
|
104
|
-
|
|
118
|
+
enabled = ["prompt-hygiene", "code-style"]
|
|
119
|
+
includeDelimiters = false
|
|
120
|
+
|
|
121
|
+
[commands]
|
|
122
|
+
enabled = ["docs", "deploy"]
|
|
123
|
+
|
|
124
|
+
[plugins.sources]
|
|
125
|
+
context7 = "/path/to/context7-plugin"
|
|
126
|
+
team-lib = "https://github.com/org/team-library"
|
|
127
|
+
|
|
128
|
+
[plugins.enabled]
|
|
129
|
+
context7 = true
|
|
130
|
+
"plugin-a@team-lib" = true
|
|
131
|
+
"plugin-b@team-lib" = false
|
|
105
132
|
```
|
|
106
133
|
|
|
107
|
-
Supported
|
|
134
|
+
Supported application IDs: `claude-code`, `claude-desktop`, `codex`, `cursor`, `gemini`, `opencode`.
|
|
135
|
+
|
|
136
|
+
Entry-level sections (`rules`, `commands`, `agents`, `skills`, `hooks`) use `enabled = [...]` where array order defines composition priority. Plugin references in `enabled` arrays use `plugin:bareId` or `plugin@source:bareId` syntax.
|
|
137
|
+
|
|
138
|
+
`[plugins.enabled]` is a boolean map with three states: `true` (enabled), `false` (disabled but tracked), absent (uninstalled).
|
|
108
139
|
|
|
109
|
-
### Per-
|
|
140
|
+
### Per-Application Overrides
|
|
110
141
|
|
|
111
|
-
Fine-tune which library entries reach each
|
|
142
|
+
Fine-tune which library entries reach each application using `add` / `remove` / `enabled`:
|
|
112
143
|
|
|
113
144
|
```toml
|
|
114
|
-
[
|
|
145
|
+
[applications]
|
|
115
146
|
active = ["claude-code", "codex", "opencode"]
|
|
116
147
|
|
|
117
148
|
codex.skills.remove = ["skill-codex"]
|
|
@@ -123,11 +154,11 @@ gemini.skills.remove = ["skill-go"]
|
|
|
123
154
|
|
|
124
155
|
| Syntax | Behavior |
|
|
125
156
|
|:----------------------------------|:---------------------------|
|
|
126
|
-
| `<
|
|
127
|
-
| `<
|
|
128
|
-
| `<
|
|
157
|
+
| `<app>.<section>.enabled = [...]` | Replace the global list |
|
|
158
|
+
| `<app>.<section>.add = [...]` | Append to the global list |
|
|
159
|
+
| `<app>.<section>.remove = [...]` | Remove from the global list|
|
|
129
160
|
|
|
130
|
-
Sections: `mcp`, `rules`, `commands`, `
|
|
161
|
+
Sections: `mcp`, `rules`, `commands`, `agents`, `skills`, `hooks`.
|
|
131
162
|
|
|
132
163
|
### Layered Configuration
|
|
133
164
|
|
|
@@ -142,7 +173,7 @@ Three TOML layers merge in priority order (higher wins):
|
|
|
142
173
|
```bash
|
|
143
174
|
asb command -p team # profile layer
|
|
144
175
|
asb rule --project /path/to/repo # project layer
|
|
145
|
-
asb
|
|
176
|
+
asb agent -p team --project /path/to/repo # both
|
|
146
177
|
```
|
|
147
178
|
|
|
148
179
|
When `--project` is used, outputs target the project directory (e.g. `<project>/AGENTS.md`, `<project>/.claude/commands/`).
|
|
@@ -171,7 +202,7 @@ requires: [claude-code]
|
|
|
171
202
|
Keep commit messages scoped to the change.
|
|
172
203
|
```
|
|
173
204
|
|
|
174
|
-
|
|
205
|
+
Platform-specific options live in `extras.<platform>`:
|
|
175
206
|
|
|
176
207
|
```markdown
|
|
177
208
|
---
|
|
@@ -185,15 +216,15 @@ extras:
|
|
|
185
216
|
Use type hints everywhere.
|
|
186
217
|
```
|
|
187
218
|
|
|
188
|
-
The interactive selector lets you **reorder** snippets. For most agents, rules are composed into a single document. For Cursor,
|
|
219
|
+
The interactive selector lets you **reorder** snippets. For most agents, rules are composed into a single document. For Cursor, rules are merged into a single `asb-rules.mdc` with native frontmatter:
|
|
189
220
|
|
|
190
|
-
| Agent | Global output
|
|
191
|
-
|
|
192
|
-
| Claude Code | `~/.claude/CLAUDE.md`
|
|
193
|
-
| Codex | `~/.codex/AGENTS.md`
|
|
194
|
-
| Cursor | `~/.cursor/rules
|
|
195
|
-
| Gemini | `~/.gemini/AGENTS.md`
|
|
196
|
-
| OpenCode | `~/.config/opencode/AGENTS.md`
|
|
221
|
+
| Agent | Global output | Project output |
|
|
222
|
+
|:------------|:-------------------------------------------|:---------------------------------------------|
|
|
223
|
+
| Claude Code | `~/.claude/CLAUDE.md` | `<project>/.claude/CLAUDE.md` |
|
|
224
|
+
| Codex | `~/.codex/AGENTS.md` | `<project>/AGENTS.md` |
|
|
225
|
+
| Cursor | `~/.cursor/rules/asb-rules.mdc` | `<project>/.cursor/rules/asb-rules.mdc` |
|
|
226
|
+
| Gemini | `~/.gemini/AGENTS.md` | `<project>/.gemini/AGENTS.md` |
|
|
227
|
+
| OpenCode | `~/.config/opencode/AGENTS.md` | `<project>/AGENTS.md` |
|
|
197
228
|
|
|
198
229
|
### Commands
|
|
199
230
|
|
|
@@ -206,12 +237,12 @@ asb command load gemini [path] -r # import recursively
|
|
|
206
237
|
|
|
207
238
|
Platforms: `claude-code`, `codex`, `cursor`, `gemini`, `opencode`.
|
|
208
239
|
|
|
209
|
-
###
|
|
240
|
+
### Agents
|
|
210
241
|
|
|
211
|
-
Same format as commands, stored in `~/.agent-switchboard/
|
|
242
|
+
Same format as commands, stored in `~/.agent-switchboard/agents/`.
|
|
212
243
|
|
|
213
244
|
```bash
|
|
214
|
-
asb
|
|
245
|
+
asb agent load claude-code # import from ~/.claude/agents/
|
|
215
246
|
```
|
|
216
247
|
|
|
217
248
|
Platforms: `claude-code`, `opencode`, `cursor`.
|
|
@@ -235,28 +266,62 @@ asb skill load codex # import from ~/.agents/skills/
|
|
|
235
266
|
|
|
236
267
|
Entire directories are copied to each agent's skill location. Deactivated skills are cleaned up automatically.
|
|
237
268
|
|
|
238
|
-
|
|
269
|
+
### Hooks
|
|
270
|
+
|
|
271
|
+
JSON-based hook definitions distributed to Claude Code's `settings.json`. Two storage formats:
|
|
272
|
+
|
|
273
|
+
- **Single file**: `~/.agent-switchboard/hooks/<id>.json`
|
|
274
|
+
- **Bundle**: `~/.agent-switchboard/hooks/<id>/hook.json` plus script files
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
asb hook load claude-code # import from ~/.claude/settings.json
|
|
278
|
+
asb hook load /path/to/hook.json # import a JSON file
|
|
279
|
+
asb hook load /path/to/hook-dir/ # import a bundle directory
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Bundle scripts are copied to `~/.claude/hooks/asb/<id>/` and the `${HOOK_DIR}` placeholder in commands is resolved to the absolute path at distribution time.
|
|
283
|
+
|
|
284
|
+
## Plugins
|
|
285
|
+
|
|
286
|
+
Plugins are external component bundles (commands, agents, skills, rules, hooks, MCP servers) that ASB discovers and distributes alongside your local library. Plugin sources are registered in `[plugins.sources]` and can be:
|
|
287
|
+
|
|
288
|
+
- **Local path** -- a directory on disk
|
|
289
|
+
- **Git URL** -- a GitHub repository (cloned automatically)
|
|
290
|
+
- **GitHub tree URL** -- a subdirectory within a monorepo
|
|
291
|
+
|
|
292
|
+
ASB auto-detects two source kinds:
|
|
293
|
+
|
|
294
|
+
| Kind | Detection | Structure |
|
|
295
|
+
|:--------------|:-------------------------------------------|:-------------------------------------------------|
|
|
296
|
+
| `marketplace` | Contains `.claude-plugin/marketplace.json` | Multiple plugins, each in its own subdirectory |
|
|
297
|
+
| `plugin` | Everything else | Single plugin; optionally has `.claude-plugin/plugin.json` |
|
|
239
298
|
|
|
240
|
-
|
|
299
|
+
A `plugin` source covers both formal plugins (with `plugin.json` metadata) and informal directories (just `rules/`, `commands/`, etc. subdirectories). The distinction is internal; from the user's perspective, both are "plugins".
|
|
241
300
|
|
|
242
301
|
```bash
|
|
243
|
-
asb
|
|
244
|
-
asb
|
|
245
|
-
asb
|
|
246
|
-
asb
|
|
302
|
+
asb plugin marketplace add /path/to/my-plugin # local
|
|
303
|
+
asb plugin marketplace add https://github.com/org/repo # git
|
|
304
|
+
asb plugin marketplace list
|
|
305
|
+
asb plugin marketplace remove my-plugin
|
|
306
|
+
|
|
307
|
+
asb plugin enable context7 # activate a plugin
|
|
308
|
+
asb plugin disable context7 # deactivate (keep in config)
|
|
309
|
+
asb plugin uninstall context7 # remove from config
|
|
310
|
+
asb plugin list # show all discovered plugins
|
|
311
|
+
asb plugin info context7 # show plugin details
|
|
247
312
|
```
|
|
248
313
|
|
|
249
|
-
|
|
314
|
+
Plugin components appear in selectors with a namespace prefix (e.g. `context7:docs`). Enabled plugin components are expanded into entry-level `enabled` arrays during distribution.
|
|
250
315
|
|
|
251
316
|
## Sync
|
|
252
317
|
|
|
253
|
-
Push all libraries and MCP config to every active
|
|
318
|
+
Push all libraries and MCP config to every active application in one step:
|
|
254
319
|
|
|
255
320
|
```bash
|
|
256
321
|
asb sync [-p <profile>] [--project <path>]
|
|
257
322
|
```
|
|
258
323
|
|
|
259
|
-
This merges layered config, applies per-
|
|
324
|
+
This merges layered config, applies per-application overrides, and writes target files in place. Files are only rewritten when content changes.
|
|
260
325
|
|
|
261
326
|
## Environment
|
|
262
327
|
|
|
@@ -129,7 +129,7 @@ export function distributeCommands(scope) {
|
|
|
129
129
|
const filterSelected = (platform, _allEntries) => {
|
|
130
130
|
const agentId = platformToAgentId(platform);
|
|
131
131
|
const state = loadLibraryStateSectionForApplication('commands', agentId, scope);
|
|
132
|
-
const activeIds = state.
|
|
132
|
+
const activeIds = state.enabled;
|
|
133
133
|
const selected = [];
|
|
134
134
|
for (const id of activeIds) {
|
|
135
135
|
const e = byId.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/commands/distribution.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/commands/distribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ export function buildCommandInventory(scope) {
|
|
|
38
38
|
const byId = new Map(entries.map((e) => [e.id, e]));
|
|
39
39
|
const rows = [];
|
|
40
40
|
const seen = new Set();
|
|
41
|
-
state.
|
|
41
|
+
state.enabled.forEach((id) => {
|
|
42
42
|
const e = byId.get(id);
|
|
43
43
|
if (!e) {
|
|
44
44
|
rows.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAqB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAqB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAkBrE,SAAS,YAAY,CAAC,OAAuB;IAC3C,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAmC,CAAC;QACpD,MAAM,KAAK,GAAG,CAAC,CAAC,QAAmC,CAAC;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAgB,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAgB,CAAC;QACtC,MAAM,MAAM,GAAG,CACb,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACvE,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,CACb,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACvE,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAmC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAgB,CAAC;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IAC1C,OAAO,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB,EAAE,MAAe;IAC3D,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;QAC7B,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI;QAC/C,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;QAC7B,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChD,MAAM;QACN,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEzD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAA0B,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,6 @@ export interface CommandEntry {
|
|
|
10
10
|
}
|
|
11
11
|
export declare function ensureCommandsDirectory(): string;
|
|
12
12
|
/**
|
|
13
|
-
* Load all commands from default library,
|
|
13
|
+
* Load all commands from default library, plugin sources, and marketplace sources.
|
|
14
14
|
*/
|
|
15
15
|
export declare function loadCommandLibrary(): CommandEntry[];
|
package/dist/commands/library.js
CHANGED
|
@@ -59,14 +59,14 @@ function loadCommandsFromDirectory(directory, namespace) {
|
|
|
59
59
|
return result;
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* Load all commands from default library,
|
|
62
|
+
* Load all commands from default library, plugin sources, and marketplace sources.
|
|
63
63
|
*/
|
|
64
64
|
export function loadCommandLibrary() {
|
|
65
65
|
const result = [];
|
|
66
66
|
const defaultDir = ensureCommandsDirectory();
|
|
67
67
|
result.push(...loadCommandsFromDirectory(defaultDir));
|
|
68
|
-
const {
|
|
69
|
-
for (const { namespace, basePath } of
|
|
68
|
+
const { pluginSources, marketplaceEntries } = loadEntriesFromSources();
|
|
69
|
+
for (const { namespace, basePath } of pluginSources) {
|
|
70
70
|
const commandsDir = path.join(basePath, 'commands');
|
|
71
71
|
result.push(...loadCommandsFromDirectory(commandsDir, namespace));
|
|
72
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/commands/library.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/commands/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ import type { IncrementalSelection, SwitchboardConfig } from './schemas.js';
|
|
|
9
9
|
import type { ConfigScope } from './scope.js';
|
|
10
10
|
export type ConfigSection = 'mcp' | 'commands' | 'agents' | 'skills' | 'hooks' | 'rules';
|
|
11
11
|
export interface ResolvedSectionConfig {
|
|
12
|
-
|
|
12
|
+
enabled: string[];
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Merge incremental selection with base
|
|
15
|
+
* Merge incremental selection with base enabled list
|
|
16
16
|
*
|
|
17
|
-
* Priority:
|
|
17
|
+
* Priority: enabled > add/remove
|
|
18
18
|
* Formula: (base - remove) ∪ add
|
|
19
19
|
*/
|
|
20
20
|
export declare function mergeIncrementalSelection(base: string[], override?: IncrementalSelection): string[];
|
|
@@ -35,3 +35,14 @@ export declare function hasApplicationOverrides(config: SwitchboardConfig, appId
|
|
|
35
35
|
* Get list of applications that have overrides configured
|
|
36
36
|
*/
|
|
37
37
|
export declare function getApplicationsWithOverrides(config: SwitchboardConfig): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Resolve the effective enabled list for a section, merging:
|
|
40
|
+
* 1. Global `config.<section>.enabled`
|
|
41
|
+
* 2. Plugin expansion: `config.plugins.enabled` (true keys) -> PluginIndex.expand -> per-section IDs
|
|
42
|
+
* 3. Plugin exclude: `config.plugins.exclude.<section>` removals
|
|
43
|
+
* 4. Per-application overrides (`add`/`remove`/`enabled`)
|
|
44
|
+
*
|
|
45
|
+
* This is the function distribution modules should use to determine
|
|
46
|
+
* what entries to distribute for a given app.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveEffectiveSectionConfig(section: ConfigSection, appId: string, scope?: ConfigScope): ResolvedSectionConfig;
|
|
@@ -5,19 +5,20 @@
|
|
|
5
5
|
* "Applications" are the target AI agent apps (claude-code, cursor, codex, etc.)
|
|
6
6
|
* that ASB distributes library entries to.
|
|
7
7
|
*/
|
|
8
|
+
import { buildPluginIndex } from '../plugins/index.js';
|
|
8
9
|
import { loadMergedSwitchboardConfig } from './layered-config.js';
|
|
9
10
|
import { scopeToLayerOptions } from './scope.js';
|
|
10
11
|
/**
|
|
11
|
-
* Merge incremental selection with base
|
|
12
|
+
* Merge incremental selection with base enabled list
|
|
12
13
|
*
|
|
13
|
-
* Priority:
|
|
14
|
+
* Priority: enabled > add/remove
|
|
14
15
|
* Formula: (base - remove) ∪ add
|
|
15
16
|
*/
|
|
16
17
|
export function mergeIncrementalSelection(base, override) {
|
|
17
18
|
if (!override)
|
|
18
19
|
return base;
|
|
19
|
-
if (override.
|
|
20
|
-
return override.
|
|
20
|
+
if (override.enabled && override.enabled.length > 0) {
|
|
21
|
+
return override.enabled;
|
|
21
22
|
}
|
|
22
23
|
let result = [...base];
|
|
23
24
|
if (override.remove && override.remove.length > 0) {
|
|
@@ -53,10 +54,10 @@ export function getApplicationOverride(config, appId, section) {
|
|
|
53
54
|
export function resolveApplicationSectionConfig(section, appId, scope) {
|
|
54
55
|
const layerOptions = scopeToLayerOptions(scope);
|
|
55
56
|
const { config } = loadMergedSwitchboardConfig(layerOptions);
|
|
56
|
-
const
|
|
57
|
+
const globalEnabled = [...config[section].enabled];
|
|
57
58
|
const override = getApplicationOverride(config, appId, section);
|
|
58
59
|
return {
|
|
59
|
-
|
|
60
|
+
enabled: mergeIncrementalSelection(globalEnabled, override),
|
|
60
61
|
};
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
@@ -80,4 +81,58 @@ export function getApplicationsWithOverrides(config) {
|
|
|
80
81
|
}
|
|
81
82
|
return result;
|
|
82
83
|
}
|
|
84
|
+
// ── Plugin-aware effective config ──────────────────────────────────
|
|
85
|
+
/**
|
|
86
|
+
* Get enabled plugin refs from `plugins.enabled` boolean map (true keys only).
|
|
87
|
+
*/
|
|
88
|
+
function getEnabledPluginRefs(config) {
|
|
89
|
+
return Object.entries(config.plugins.enabled)
|
|
90
|
+
.filter(([, v]) => v === true)
|
|
91
|
+
.map(([k]) => k);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve the effective enabled list for a section, merging:
|
|
95
|
+
* 1. Global `config.<section>.enabled`
|
|
96
|
+
* 2. Plugin expansion: `config.plugins.enabled` (true keys) -> PluginIndex.expand -> per-section IDs
|
|
97
|
+
* 3. Plugin exclude: `config.plugins.exclude.<section>` removals
|
|
98
|
+
* 4. Per-application overrides (`add`/`remove`/`enabled`)
|
|
99
|
+
*
|
|
100
|
+
* This is the function distribution modules should use to determine
|
|
101
|
+
* what entries to distribute for a given app.
|
|
102
|
+
*/
|
|
103
|
+
export function resolveEffectiveSectionConfig(section, appId, scope) {
|
|
104
|
+
const layerOptions = scopeToLayerOptions(scope);
|
|
105
|
+
const { config } = loadMergedSwitchboardConfig(layerOptions);
|
|
106
|
+
const globalEnabled = [...config[section].enabled];
|
|
107
|
+
const enabledPluginRefs = getEnabledPluginRefs(config);
|
|
108
|
+
let merged;
|
|
109
|
+
if (enabledPluginRefs.length > 0) {
|
|
110
|
+
const index = buildPluginIndex(scope);
|
|
111
|
+
const expanded = index.expand(enabledPluginRefs);
|
|
112
|
+
const pluginSection = section;
|
|
113
|
+
const pluginEntryIds = expanded[pluginSection] ?? [];
|
|
114
|
+
// Union: global enabled ∪ plugin-expanded (preserving explicit enabled order first)
|
|
115
|
+
const seen = new Set(globalEnabled);
|
|
116
|
+
merged = [...globalEnabled];
|
|
117
|
+
for (const id of pluginEntryIds) {
|
|
118
|
+
if (!seen.has(id)) {
|
|
119
|
+
merged.push(id);
|
|
120
|
+
seen.add(id);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const exclude = config.plugins.exclude;
|
|
124
|
+
const excludeList = exclude?.[pluginSection];
|
|
125
|
+
if (excludeList && excludeList.length > 0) {
|
|
126
|
+
const excludeSet = new Set(excludeList);
|
|
127
|
+
merged = merged.filter((id) => !excludeSet.has(id));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
merged = globalEnabled;
|
|
132
|
+
}
|
|
133
|
+
const override = getApplicationOverride(config, appId, section);
|
|
134
|
+
return {
|
|
135
|
+
enabled: mergeIncrementalSelection(merged, override),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
83
138
|
//# sourceMappingURL=application-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-config.js","sourceRoot":"","sources":["../../src/config/application-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQjD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAc,EACd,QAA+B;IAE/B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"application-config.js","sourceRoot":"","sources":["../../src/config/application-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,13 @@ import { type McpConfig } from './schemas.js';
|
|
|
12
12
|
* @throws {Error} If file exists but contains invalid JSON or fails schema validation
|
|
13
13
|
*/
|
|
14
14
|
export declare function loadMcpConfig(): McpConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Loads MCP server definitions from both ~/.asb/mcp.json and enabled plugins.
|
|
17
|
+
* Only includes plugin MCP servers whose parent plugin is enabled in `plugins.enabled`.
|
|
18
|
+
* Plugin-sourced servers use namespaced IDs (e.g. "context7:context7").
|
|
19
|
+
* If a plugin server ID collides with a user-defined server, the user definition wins.
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadMcpConfigWithPlugins(): McpConfig;
|
|
15
22
|
/**
|
|
16
23
|
* Removes legacy `enabled` fields from ~/.agent-switchboard/mcp.json (definition-only file).
|
|
17
24
|
* Returns true if the file was changed.
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
import fs from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { parse } from 'jsonc-parser';
|
|
8
|
+
import { buildPluginIndex } from '../plugins/index.js';
|
|
8
9
|
import { getMcpConfigPath } from './paths.js';
|
|
9
10
|
import { mcpConfigSchema } from './schemas.js';
|
|
11
|
+
import { loadSwitchboardConfig } from './switchboard-config.js';
|
|
10
12
|
/**
|
|
11
13
|
* Loads the MCP configuration from ~/.agent-switchboard/mcp.json
|
|
12
14
|
* Parses JSONC (JSON with comments) format
|
|
@@ -48,6 +50,29 @@ export function loadMcpConfig() {
|
|
|
48
50
|
throw error;
|
|
49
51
|
}
|
|
50
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Loads MCP server definitions from both ~/.asb/mcp.json and enabled plugins.
|
|
55
|
+
* Only includes plugin MCP servers whose parent plugin is enabled in `plugins.enabled`.
|
|
56
|
+
* Plugin-sourced servers use namespaced IDs (e.g. "context7:context7").
|
|
57
|
+
* If a plugin server ID collides with a user-defined server, the user definition wins.
|
|
58
|
+
*/
|
|
59
|
+
export function loadMcpConfigWithPlugins() {
|
|
60
|
+
const base = loadMcpConfig();
|
|
61
|
+
const pluginIndex = buildPluginIndex();
|
|
62
|
+
if (pluginIndex.mcpServers.length === 0)
|
|
63
|
+
return base;
|
|
64
|
+
const config = loadSwitchboardConfig();
|
|
65
|
+
const enabledPlugins = new Set(Object.entries(config.plugins.enabled)
|
|
66
|
+
.filter(([, v]) => v === true)
|
|
67
|
+
.map(([k]) => k));
|
|
68
|
+
const merged = { ...base.mcpServers };
|
|
69
|
+
for (const ps of pluginIndex.mcpServers) {
|
|
70
|
+
if (!(ps.serverId in merged) && enabledPlugins.has(ps.pluginId)) {
|
|
71
|
+
merged[ps.serverId] = ps.server;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { mcpServers: merged };
|
|
75
|
+
}
|
|
51
76
|
/**
|
|
52
77
|
* Removes legacy `enabled` fields from ~/.agent-switchboard/mcp.json (definition-only file).
|
|
53
78
|
* Returns true if the file was changed.
|