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.
Files changed (81) hide show
  1. package/README.md +127 -62
  2. package/dist/commands/distribution.js +1 -1
  3. package/dist/commands/distribution.js.map +1 -1
  4. package/dist/commands/inventory.js +1 -1
  5. package/dist/commands/inventory.js.map +1 -1
  6. package/dist/commands/library.d.ts +1 -1
  7. package/dist/commands/library.js +3 -3
  8. package/dist/commands/library.js.map +1 -1
  9. package/dist/config/application-config.d.ts +14 -3
  10. package/dist/config/application-config.js +61 -6
  11. package/dist/config/application-config.js.map +1 -1
  12. package/dist/config/mcp-config.d.ts +7 -0
  13. package/dist/config/mcp-config.js +25 -0
  14. package/dist/config/mcp-config.js.map +1 -1
  15. package/dist/config/schemas.d.ts +828 -273
  16. package/dist/config/schemas.js +62 -18
  17. package/dist/config/schemas.js.map +1 -1
  18. package/dist/hooks/distribution.js +1 -1
  19. package/dist/hooks/distribution.js.map +1 -1
  20. package/dist/hooks/library.d.ts +1 -1
  21. package/dist/hooks/library.js +3 -3
  22. package/dist/hooks/library.js.map +1 -1
  23. package/dist/index.js +323 -67
  24. package/dist/index.js.map +1 -1
  25. package/dist/library/sources.d.ts +3 -2
  26. package/dist/library/sources.js +16 -17
  27. package/dist/library/sources.js.map +1 -1
  28. package/dist/library/state.d.ts +6 -6
  29. package/dist/library/state.js +15 -15
  30. package/dist/library/state.js.map +1 -1
  31. package/dist/marketplace/plugin-loader.d.ts +3 -0
  32. package/dist/marketplace/plugin-loader.js +53 -2
  33. package/dist/marketplace/plugin-loader.js.map +1 -1
  34. package/dist/marketplace/reader.d.ts +22 -0
  35. package/dist/marketplace/reader.js +122 -17
  36. package/dist/marketplace/reader.js.map +1 -1
  37. package/dist/marketplace/schemas.d.ts +48 -12
  38. package/dist/marketplace/schemas.js +4 -1
  39. package/dist/marketplace/schemas.js.map +1 -1
  40. package/dist/marketplace/source-loader.d.ts +6 -6
  41. package/dist/marketplace/source-loader.js +8 -8
  42. package/dist/marketplace/source-loader.js.map +1 -1
  43. package/dist/plugins/index.d.ts +57 -0
  44. package/dist/plugins/index.js +304 -0
  45. package/dist/plugins/index.js.map +1 -0
  46. package/dist/rules/composer.js +4 -4
  47. package/dist/rules/composer.js.map +1 -1
  48. package/dist/rules/inventory.js +1 -1
  49. package/dist/rules/inventory.js.map +1 -1
  50. package/dist/rules/library.d.ts +1 -1
  51. package/dist/rules/library.js +19 -3
  52. package/dist/rules/library.js.map +1 -1
  53. package/dist/rules/schema.d.ts +3 -3
  54. package/dist/rules/schema.js +1 -1
  55. package/dist/rules/schema.js.map +1 -1
  56. package/dist/rules/state.js +12 -12
  57. package/dist/rules/state.js.map +1 -1
  58. package/dist/skills/distribution.js +5 -5
  59. package/dist/skills/distribution.js.map +1 -1
  60. package/dist/skills/inventory.js +1 -1
  61. package/dist/skills/inventory.js.map +1 -1
  62. package/dist/skills/library.d.ts +1 -1
  63. package/dist/skills/library.js +3 -3
  64. package/dist/skills/library.js.map +1 -1
  65. package/dist/subagents/distribution.js +2 -2
  66. package/dist/subagents/distribution.js.map +1 -1
  67. package/dist/subagents/inventory.js +1 -1
  68. package/dist/subagents/inventory.js.map +1 -1
  69. package/dist/subagents/library.d.ts +1 -1
  70. package/dist/subagents/library.js +3 -3
  71. package/dist/subagents/library.js.map +1 -1
  72. package/dist/ui/library-selector.d.ts +1 -1
  73. package/dist/ui/library-selector.js +7 -7
  74. package/dist/ui/library-selector.js.map +1 -1
  75. package/dist/ui/plugin-ui.d.ts +3 -0
  76. package/dist/ui/plugin-ui.js +77 -0
  77. package/dist/ui/plugin-ui.js.map +1 -0
  78. package/dist/ui/rule-ui.d.ts +1 -1
  79. package/dist/ui/rule-ui.js +4 -4
  80. package/dist/ui/rule-ui.js.map +1 -1
  81. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![CI](https://github.com/qyhfrank/agent-switchboard/actions/workflows/ci.yml/badge.svg)](https://github.com/qyhfrank/agent-switchboard/actions/workflows/ci.yml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
6
 
7
- Manage MCP servers, rules, commands, subagents, and skills from a single source of truth, then sync them to every AI coding agent you use.
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
- subagents/ │ │ │ │ Gemini │
24
- │ skills/ │ │ Per-agent overrides │ │ OpenCode │
25
- └──────────────┘ └─────────────────────┘ │ Claude Desktop │
26
- └────────────────┘
23
+ agents/ │ │ │ │ Gemini │
24
+ │ skills/ │ │ Per-app overrides │ │ OpenCode │
25
+ │ hooks/ │ │ │ │ Claude Desktop │
26
+ └──────────────┘ └─────────────────────┘ └────────────────┘
27
27
  ```
28
28
 
29
- All library entries are agent-agnostic Markdown files (or directories for skills). Agent Switchboard reads them, applies layered configuration and per-agent overrides, then writes the correct format to each agent's config location.
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
- | Subagents | ✓ | | ✓ | | ✓ | |
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 distributed as individual `.mdc` files to `~/.cursor/rules/` (native format), not as a single composed document.
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
- [agents]
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. **Sync everything** -- pushes all libraries (rules, commands, subagents, skills) and MCP config to every active agent:
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 sync
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
- That's it. Library content lives under `~/.agent-switchboard/` and agent configs are updated in place.
73
+ 4. **Sync everything** -- pushes all libraries (rules, commands, agents, skills, hooks) and MCP config to every active application:
72
74
 
73
- ## Command Reference
75
+ ```bash
76
+ asb sync
77
+ ```
74
78
 
75
- | Command | Description |
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
- `<lib>` = `rule`, `command`, `subagent`, or `skill`.
81
+ ## Command Reference
90
82
 
91
- **Shared flags**: `-p, --profile <name>`, `--project <path>`, `--json` (on `list` and `source list`).
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 which agents and library entries are active:
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
- [agents]
101
- active = ["claude-code", "codex", "cursor", "gemini", "opencode"]
114
+ [applications]
115
+ active = ["claude-code", "codex", "cursor"]
102
116
 
103
117
  [rules]
104
- includeDelimiters = false # wrap each rule snippet in <!-- id:start/end --> markers
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 agent IDs: `claude-code`, `claude-desktop`, `codex`, `cursor`, `gemini`, `opencode`.
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-Agent Overrides
140
+ ### Per-Application Overrides
110
141
 
111
- Fine-tune which library entries reach each agent using `add` / `remove` / `active`:
142
+ Fine-tune which library entries reach each application using `add` / `remove` / `enabled`:
112
143
 
113
144
  ```toml
114
- [agents]
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
- | `<agent>.<section>.active = [...]`| Replace the global list |
127
- | `<agent>.<section>.add = [...]` | Append to the global list |
128
- | `<agent>.<section>.remove = [...]`| Remove from the global list|
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`, `subagents`, `skills`.
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 subagent -p team --project /path/to/repo # both
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
- Cursor-specific options can be set via `extras.cursor` in rule frontmatter:
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, each rule is written as an individual `.mdc` file with native frontmatter (`description`, `alwaysApply`, `globs`):
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 | Project output |
191
- |:------------|:------------------------------------|:----------------------------------|
192
- | Claude Code | `~/.claude/CLAUDE.md` | `<project>/.claude/CLAUDE.md` |
193
- | Codex | `~/.codex/AGENTS.md` | `<project>/AGENTS.md` |
194
- | Cursor | `~/.cursor/rules/<id>.mdc` | `<project>/.cursor/rules/<id>.mdc`|
195
- | Gemini | `~/.gemini/AGENTS.md` | `<project>/.gemini/AGENTS.md` |
196
- | OpenCode | `~/.config/opencode/AGENTS.md` | `<project>/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
- ### Subagents
240
+ ### Agents
210
241
 
211
- Same format as commands, stored in `~/.agent-switchboard/subagents/`.
242
+ Same format as commands, stored in `~/.agent-switchboard/agents/`.
212
243
 
213
244
  ```bash
214
- asb subagent load claude-code # import from ~/.claude/agents/
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
- ## Library Sources
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
- Pull library entries from external directories or git repos:
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 source add https://github.com/org/repo # name defaults to "repo"
244
- asb source add /path/to/team-library team # explicit name
245
- asb source list # list configured sources
246
- asb source remove repo # remove
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
- The source path must contain at least one of `rules/`, `commands/`, `subagents/`, or `skills/`. Entries from external sources appear with a namespace prefix (e.g. `team:my-rule`) in selectors and config.
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 agent in one step:
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-agent overrides, and writes target files in place. Files are only rewritten when content changes.
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.active;
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.active.forEach((id) => {
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":"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"}
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, flat sources, and marketplace sources.
13
+ * Load all commands from default library, plugin sources, and marketplace sources.
14
14
  */
15
15
  export declare function loadCommandLibrary(): CommandEntry[];
@@ -59,14 +59,14 @@ function loadCommandsFromDirectory(directory, namespace) {
59
59
  return result;
60
60
  }
61
61
  /**
62
- * Load all commands from default library, flat sources, and marketplace sources.
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 { flatSources, marketplaceEntries } = loadEntriesFromSources();
69
- for (const { namespace, basePath } of flatSources) {
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
- active: string[];
12
+ enabled: string[];
13
13
  }
14
14
  /**
15
- * Merge incremental selection with base active list
15
+ * Merge incremental selection with base enabled list
16
16
  *
17
- * Priority: active > add/remove
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 active list
12
+ * Merge incremental selection with base enabled list
12
13
  *
13
- * Priority: active > add/remove
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.active && override.active.length > 0) {
20
- return override.active;
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 globalActive = [...config[section].active];
57
+ const globalEnabled = [...config[section].enabled];
57
58
  const override = getApplicationOverride(config, appId, section);
58
59
  return {
59
- active: mergeIncrementalSelection(globalActive, override),
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":"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"}
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.