agent-switchboard 0.4.3 → 0.4.4
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 +45 -0
- package/dist/config/mcp-config.d.ts +2 -3
- package/dist/config/mcp-config.js +2 -14
- package/dist/config/mcp-config.js.map +1 -1
- package/dist/hooks/distribution.d.ts +3 -1
- package/dist/hooks/distribution.js +4 -1
- package/dist/hooks/distribution.js.map +1 -1
- package/dist/index.js +130 -18
- package/dist/index.js.map +1 -1
- package/dist/library/distribute-bundle.js +79 -17
- package/dist/library/distribute-bundle.js.map +1 -1
- package/dist/library/distribute.js +34 -12
- package/dist/library/distribute.js.map +1 -1
- package/dist/manifest/store.d.ts +4 -0
- package/dist/manifest/store.js +49 -0
- package/dist/manifest/store.js.map +1 -1
- package/dist/mcp/distribution.js +104 -40
- package/dist/mcp/distribution.js.map +1 -1
- package/dist/rules/block-merge.d.ts +0 -7
- package/dist/rules/block-merge.js +2 -1
- package/dist/rules/block-merge.js.map +1 -1
- package/dist/rules/distribution.js +12 -1
- package/dist/rules/distribution.js.map +1 -1
- package/dist/sync/command.js +1 -1
- package/dist/sync/command.js.map +1 -1
- package/dist/targets/builtin/claude-code.js +3 -1
- package/dist/targets/builtin/claude-code.js.map +1 -1
- package/dist/targets/builtin/common.d.ts +4 -1
- package/dist/targets/builtin/common.js +11 -1
- package/dist/targets/builtin/common.js.map +1 -1
- package/dist/targets/builtin/opencode.js +3 -1
- package/dist/targets/builtin/opencode.js.map +1 -1
- package/dist/ui/library-selector.js +9 -6
- package/dist/ui/library-selector.js.map +1 -1
- package/dist/ui/mcp-ui.d.ts +2 -0
- package/dist/ui/mcp-ui.js +4 -4
- package/dist/ui/mcp-ui.js.map +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
|
@@ -183,6 +183,41 @@ asb agent -p team --project /path/to/repo # both
|
|
|
183
183
|
|
|
184
184
|
When `--project` is used, outputs target the project directory (e.g. `<project>/AGENTS.md`, `<project>/.claude/commands/`).
|
|
185
185
|
|
|
186
|
+
Interactive selectors follow the writable layer you target:
|
|
187
|
+
|
|
188
|
+
- User scope shows and edits the merged user selection.
|
|
189
|
+
- `-p/--profile` shows only that profile layer's explicit selection.
|
|
190
|
+
- `-P/--project` shows only that project layer's explicit selection.
|
|
191
|
+
|
|
192
|
+
Inherited entries from higher-priority layers do not participate in scoped sync until you write them into that profile or project layer. Saving an empty scoped selection creates an explicit empty override for that layer.
|
|
193
|
+
|
|
194
|
+
### Project Distribution Modes
|
|
195
|
+
|
|
196
|
+
Project-scoped sync supports three modes under `[distribution.project]`:
|
|
197
|
+
|
|
198
|
+
```toml
|
|
199
|
+
[distribution.project]
|
|
200
|
+
mode = "managed" # or: "exclusive", "none"
|
|
201
|
+
collision = "warn-skip" # managed only: "warn-skip", "error", "takeover"
|
|
202
|
+
|
|
203
|
+
[distribution.project.rules]
|
|
204
|
+
placement = "prepend" # or: "append"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
| Mode | Behavior |
|
|
208
|
+
|:------------|:---------|
|
|
209
|
+
| `exclusive` | ASB writes project-scoped outputs directly and cleans up inactive entries in target directories. |
|
|
210
|
+
| `managed` | Default. Uses a manifest at `<project>/.asb/state/distribution.json` so cleanup only removes files and directories previously written by ASB. Shared rule files use block merge instead of full replacement. |
|
|
211
|
+
| `none` | Disables all project-scoped writes. Selections can still be edited in `.asb.toml`, but project distribution commands and `asb sync -P <project>` skip output generation. |
|
|
212
|
+
|
|
213
|
+
Managed-mode collision policy controls what happens when ASB encounters a foreign file or directory at a target path:
|
|
214
|
+
|
|
215
|
+
| Policy | Behavior |
|
|
216
|
+
|:------------|:---------|
|
|
217
|
+
| `warn-skip` | Report a conflict and leave the foreign path untouched. |
|
|
218
|
+
| `error` | Report a hard error and fail the affected distribution step. |
|
|
219
|
+
| `takeover` | Treat the path as ASB-managed and overwrite it. |
|
|
220
|
+
|
|
186
221
|
## Libraries
|
|
187
222
|
|
|
188
223
|
All library types follow the same pattern:
|
|
@@ -345,8 +380,12 @@ asb plugin list # show all discovered plugins
|
|
|
345
380
|
asb plugin info context7 # show plugin details + components
|
|
346
381
|
```
|
|
347
382
|
|
|
383
|
+
Discovered plugin MCP servers appear in the MCP picker alongside locally-defined servers and can be enabled per user, profile, or project scope.
|
|
384
|
+
|
|
348
385
|
Enabled plugin components are expanded into entry-level `enabled` arrays during `asb sync`. Components appear with a namespace prefix (e.g. `context7:docs-researcher`) and can be individually controlled via per-application overrides.
|
|
349
386
|
|
|
387
|
+
Plugin MCP servers are also addressable directly through `[mcp].enabled` and the `asb mcp` selector. As long as the plugin source is discoverable, a plugin MCP server can be enabled directly without adding its parent plugin to `[plugins].enabled`.
|
|
388
|
+
|
|
350
389
|
## Sync
|
|
351
390
|
|
|
352
391
|
Push all libraries and MCP config to every active application in one step:
|
|
@@ -357,6 +396,12 @@ asb sync [-p <profile>] [-P <path>]
|
|
|
357
396
|
|
|
358
397
|
This merges layered config, applies per-application overrides, and writes target files in place. Files are only rewritten when content changes.
|
|
359
398
|
|
|
399
|
+
For project scope, sync honors `[distribution.project].mode`:
|
|
400
|
+
|
|
401
|
+
- `managed` keeps a manifest and cleans up only ASB-owned project outputs
|
|
402
|
+
- `exclusive` writes directly to the project targets
|
|
403
|
+
- `none` skips project writes entirely
|
|
404
|
+
|
|
360
405
|
## Environment
|
|
361
406
|
|
|
362
407
|
| Variable | Default | Purpose |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* mcp.json contains server definitions only; enabled state is in config.toml
|
|
4
4
|
*/
|
|
5
5
|
import { type McpConfig } from './schemas.js';
|
|
6
|
-
import {
|
|
6
|
+
import type { ConfigScope } from './scope.js';
|
|
7
7
|
/**
|
|
8
8
|
* Loads the MCP configuration from ~/.agent-switchboard/mcp.json
|
|
9
9
|
* Parses JSONC (JSON with comments) format
|
|
@@ -14,8 +14,7 @@ import { type ConfigScope } from './scope.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function loadMcpConfig(): McpConfig;
|
|
16
16
|
/**
|
|
17
|
-
* Loads MCP server definitions from both ~/.asb/mcp.json and
|
|
18
|
-
* Only includes plugin MCP servers whose parent plugin is enabled in `plugins.enabled`.
|
|
17
|
+
* Loads MCP server definitions from both ~/.asb/mcp.json and discovered plugins.
|
|
19
18
|
* Plugin-sourced servers use namespaced IDs (e.g. "context7:context7").
|
|
20
19
|
* If a plugin server ID collides with a user-defined server, the user definition wins.
|
|
21
20
|
*/
|
|
@@ -8,8 +8,6 @@ import { parse } from 'jsonc-parser';
|
|
|
8
8
|
import { buildPluginIndex } from '../plugins/index.js';
|
|
9
9
|
import { getMcpConfigPath } from './paths.js';
|
|
10
10
|
import { mcpConfigSchema } from './schemas.js';
|
|
11
|
-
import { scopeToLayerOptions } from './scope.js';
|
|
12
|
-
import { loadSwitchboardConfig } from './switchboard-config.js';
|
|
13
11
|
/**
|
|
14
12
|
* Loads the MCP configuration from ~/.agent-switchboard/mcp.json
|
|
15
13
|
* Parses JSONC (JSON with comments) format
|
|
@@ -52,8 +50,7 @@ export function loadMcpConfig() {
|
|
|
52
50
|
}
|
|
53
51
|
}
|
|
54
52
|
/**
|
|
55
|
-
* Loads MCP server definitions from both ~/.asb/mcp.json and
|
|
56
|
-
* Only includes plugin MCP servers whose parent plugin is enabled in `plugins.enabled`.
|
|
53
|
+
* Loads MCP server definitions from both ~/.asb/mcp.json and discovered plugins.
|
|
57
54
|
* Plugin-sourced servers use namespaced IDs (e.g. "context7:context7").
|
|
58
55
|
* If a plugin server ID collides with a user-defined server, the user definition wins.
|
|
59
56
|
*/
|
|
@@ -62,18 +59,9 @@ export function loadMcpConfigWithPlugins(scope) {
|
|
|
62
59
|
const pluginIndex = buildPluginIndex(scope);
|
|
63
60
|
if (pluginIndex.mcpServers.length === 0)
|
|
64
61
|
return base;
|
|
65
|
-
const config = loadSwitchboardConfig(scopeToLayerOptions(scope));
|
|
66
|
-
// Resolve enabled plugin refs to descriptor IDs via PluginIndex.get(),
|
|
67
|
-
// which handles both bare names and name@source disambiguation.
|
|
68
|
-
const enabledPluginIds = new Set();
|
|
69
|
-
for (const ref of config.plugins.enabled) {
|
|
70
|
-
const descriptor = pluginIndex.get(ref);
|
|
71
|
-
if (descriptor)
|
|
72
|
-
enabledPluginIds.add(descriptor.id);
|
|
73
|
-
}
|
|
74
62
|
const merged = { ...base.mcpServers };
|
|
75
63
|
for (const ps of pluginIndex.mcpServers) {
|
|
76
|
-
if (!(ps.serverId in merged)
|
|
64
|
+
if (!(ps.serverId in merged)) {
|
|
77
65
|
merged[ps.serverId] = ps.server;
|
|
78
66
|
}
|
|
79
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/config/mcp-config.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,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAkC,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/config/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,4 +24,6 @@ export interface HookDistributionOutcome {
|
|
|
24
24
|
* 2. Merge all active hook configs into settings.json
|
|
25
25
|
* 3. Clean up orphan bundle directories
|
|
26
26
|
*/
|
|
27
|
-
export declare function distributeHooks(scope?: ConfigScope, activeAppIds?: string[], assumeInstalled?: ReadonlySet<string
|
|
27
|
+
export declare function distributeHooks(scope?: ConfigScope, activeAppIds?: string[], assumeInstalled?: ReadonlySet<string>, options?: {
|
|
28
|
+
projectMode?: 'managed' | 'exclusive' | 'none';
|
|
29
|
+
}): HookDistributionOutcome;
|
|
@@ -180,7 +180,10 @@ function cleanOrphanBundleDirs(activeIds, scope) {
|
|
|
180
180
|
* 2. Merge all active hook configs into settings.json
|
|
181
181
|
* 3. Clean up orphan bundle directories
|
|
182
182
|
*/
|
|
183
|
-
export function distributeHooks(scope, activeAppIds, assumeInstalled) {
|
|
183
|
+
export function distributeHooks(scope, activeAppIds, assumeInstalled, options) {
|
|
184
|
+
if (scope?.project && options?.projectMode === 'none') {
|
|
185
|
+
return { results: [] };
|
|
186
|
+
}
|
|
184
187
|
const results = [];
|
|
185
188
|
const platform = 'claude-code';
|
|
186
189
|
// Skip if claude-code is not installed (unless assumed installed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/hooks/distribution.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/hooks/distribution.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { distributeCommands } from './commands/distribution.js';
|
|
|
14
14
|
import { importCommandFromFile } from './commands/importer.js';
|
|
15
15
|
import { buildCommandInventory } from './commands/inventory.js';
|
|
16
16
|
import { loadWritableConfigLayer, updateConfigLayer } from './config/layered-config.js';
|
|
17
|
-
import { loadMcpConfig, stripLegacyEnabledFlagsFromMcpJson } from './config/mcp-config.js';
|
|
17
|
+
import { loadMcpConfig, loadMcpConfigWithPlugins, stripLegacyEnabledFlagsFromMcpJson, } from './config/mcp-config.js';
|
|
18
18
|
import { getAgentsDir, getAgentsHome, getClaudeDir, getCodexDir, getCommandsDir, getCursorDir, getGeminiDir, getHooksDir, getOpencodePath, getSkillsDir, getSourceCacheDir, } from './config/paths.js';
|
|
19
19
|
import { scopeToLayerOptions } from './config/scope.js';
|
|
20
20
|
import { loadSwitchboardConfig, loadSwitchboardConfigWithLayers, } from './config/switchboard-config.js';
|
|
@@ -23,6 +23,7 @@ import { loadHookLibrary } from './hooks/library.js';
|
|
|
23
23
|
import { copyDirRecursive, ensureLibraryDirectories, isDir, isFile, listFilesRecursively, writeFileSecure, } from './library/fs.js';
|
|
24
24
|
import { addLocalSource, addRemoteSource, getSources, inferSourceName, isGitUrl, parseGitUrl, removeSource, updateRemoteSources, validateSourcePath, } from './library/sources.js';
|
|
25
25
|
import { loadLibraryStateSection, saveMcpEnabledState } from './library/state.js';
|
|
26
|
+
import { loadManifest, saveManifest } from './manifest/store.js';
|
|
26
27
|
import { readMarketplace } from './marketplace/reader.js';
|
|
27
28
|
import { distributeMcp } from './mcp/distribution.js';
|
|
28
29
|
import { buildPluginIndex } from './plugins/index.js';
|
|
@@ -106,6 +107,29 @@ function resolveScope(input) {
|
|
|
106
107
|
project: project,
|
|
107
108
|
};
|
|
108
109
|
}
|
|
110
|
+
function getScopedProjectMode(scope, config) {
|
|
111
|
+
return scope?.project ? config.distribution.project.mode : undefined;
|
|
112
|
+
}
|
|
113
|
+
function shouldSkipProjectDistribution(scope, config) {
|
|
114
|
+
return getScopedProjectMode(scope, config) === 'none';
|
|
115
|
+
}
|
|
116
|
+
function printProjectDistributionDisabledMessage() {
|
|
117
|
+
console.log(chalk.gray('Project distribution is disabled by `[distribution.project].mode = "none"`.'));
|
|
118
|
+
}
|
|
119
|
+
function loadManagedProjectManifest(scope, projectMode) {
|
|
120
|
+
if (!scope?.project || projectMode !== 'managed')
|
|
121
|
+
return undefined;
|
|
122
|
+
const result = loadManifest(scope.project);
|
|
123
|
+
if (result.corrupt) {
|
|
124
|
+
throw new Error(`Corrupt managed manifest in ${scope.project}. Fix or remove it before retrying.`);
|
|
125
|
+
}
|
|
126
|
+
return result.manifest;
|
|
127
|
+
}
|
|
128
|
+
function saveManagedProjectManifest(scope, projectMode, manifest) {
|
|
129
|
+
if (!scope?.project || projectMode !== 'managed' || !manifest)
|
|
130
|
+
return;
|
|
131
|
+
saveManifest(scope.project, manifest);
|
|
132
|
+
}
|
|
109
133
|
function defaultCommandSourceDir(platform) {
|
|
110
134
|
switch (platform) {
|
|
111
135
|
case 'claude-code':
|
|
@@ -280,6 +304,7 @@ program
|
|
|
280
304
|
const scope = resolveScope(options);
|
|
281
305
|
const { config, layers } = loadSwitchboardConfigWithLayers(scopeToLayerOptions(scope));
|
|
282
306
|
const mcpConfig = loadMcpConfig();
|
|
307
|
+
const pluginIndex = buildPluginIndex(scope);
|
|
283
308
|
// Determine initial selection:
|
|
284
309
|
// - If writing to project/profile scope, only use that layer's explicit [mcp].enabled (no fallback).
|
|
285
310
|
// - If writing to user scope and [mcp].enabled is missing, fall back to legacy mcp.json enabled flags.
|
|
@@ -304,10 +329,22 @@ program
|
|
|
304
329
|
.map(([name]) => name);
|
|
305
330
|
}
|
|
306
331
|
}
|
|
332
|
+
const scopedPluginRefs = scope?.project
|
|
333
|
+
? (layers.project?.config?.plugins?.enabled ?? [])
|
|
334
|
+
: scope?.profile
|
|
335
|
+
? (layers.profile?.config?.plugins?.enabled ?? [])
|
|
336
|
+
: (layers.user.config?.plugins?.enabled ?? []);
|
|
337
|
+
const pluginMcpServers = pluginIndex.expand(scopedPluginRefs).mcp;
|
|
338
|
+
const currentActiveSet = new Set(currentActive);
|
|
339
|
+
for (const serverName of pluginMcpServers) {
|
|
340
|
+
currentActiveSet.add(serverName);
|
|
341
|
+
}
|
|
342
|
+
currentActive = [...currentActiveSet];
|
|
307
343
|
// Step 1: Show UI and get selected servers
|
|
308
344
|
const selectedServers = await showMcpServerUI({
|
|
309
345
|
pageSize: config.ui.page_size,
|
|
310
346
|
enabled: currentActive,
|
|
347
|
+
scope,
|
|
311
348
|
});
|
|
312
349
|
// Step 2: Save active state to config.toml (appropriate layer based on scope)
|
|
313
350
|
const spinner = ora('Updating MCP configuration...').start();
|
|
@@ -326,7 +363,18 @@ program
|
|
|
326
363
|
}
|
|
327
364
|
}
|
|
328
365
|
// Step 3: Apply to registered agents
|
|
329
|
-
|
|
366
|
+
const projectMode = getScopedProjectMode(scope, config);
|
|
367
|
+
const manifest = loadManagedProjectManifest(scope, projectMode);
|
|
368
|
+
try {
|
|
369
|
+
await distributeMcp(scope, selectedServers, { manifest, projectMode });
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
saveManagedProjectManifest(scope, projectMode, manifest);
|
|
373
|
+
}
|
|
374
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
375
|
+
console.log();
|
|
376
|
+
printProjectDistributionDisabledMessage();
|
|
377
|
+
}
|
|
330
378
|
// Step 4: Show summary
|
|
331
379
|
showSummary(selectedServers, scope);
|
|
332
380
|
}
|
|
@@ -425,12 +473,12 @@ ruleCommand.action(async (options) => {
|
|
|
425
473
|
if (!selection) {
|
|
426
474
|
return;
|
|
427
475
|
}
|
|
428
|
-
const { rules, writableState: previousState,
|
|
476
|
+
const { rules, writableState: previousState, activeState } = loadRuleRuntimeContext(scope);
|
|
429
477
|
const ruleMap = new Map(rules.map((rule) => [rule.id, rule]));
|
|
430
478
|
const desiredEnabled = selection.enabled;
|
|
431
479
|
const selectionChanged = selection.explicitEmpty ||
|
|
432
480
|
shouldPersistSelection({
|
|
433
|
-
effectiveEnabled:
|
|
481
|
+
effectiveEnabled: activeState.enabled,
|
|
434
482
|
selectedEnabled: desiredEnabled,
|
|
435
483
|
});
|
|
436
484
|
const updatedState = selectionChanged
|
|
@@ -459,11 +507,21 @@ ruleCommand.action(async (options) => {
|
|
|
459
507
|
}
|
|
460
508
|
}
|
|
461
509
|
}
|
|
462
|
-
const
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
510
|
+
const projectMode = getScopedProjectMode(scope, config);
|
|
511
|
+
const manifest = loadManagedProjectManifest(scope, projectMode);
|
|
512
|
+
let distribution;
|
|
513
|
+
try {
|
|
514
|
+
distribution = distributeRules({
|
|
515
|
+
force: !selectionChanged,
|
|
516
|
+
activeAppIds: config.applications.enabled,
|
|
517
|
+
assumeInstalled: new Set(config.applications.assume_installed),
|
|
518
|
+
manifest,
|
|
519
|
+
projectMode,
|
|
520
|
+
}, scope);
|
|
521
|
+
}
|
|
522
|
+
finally {
|
|
523
|
+
saveManagedProjectManifest(scope, projectMode, manifest);
|
|
524
|
+
}
|
|
467
525
|
if (distribution.results.length > 0) {
|
|
468
526
|
console.log();
|
|
469
527
|
printDistributionResults({
|
|
@@ -473,6 +531,10 @@ ruleCommand.action(async (options) => {
|
|
|
473
531
|
getPath: (result) => result.filePath,
|
|
474
532
|
});
|
|
475
533
|
}
|
|
534
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
535
|
+
console.log();
|
|
536
|
+
printProjectDistributionDisabledMessage();
|
|
537
|
+
}
|
|
476
538
|
const distributionErrors = distribution.results.filter((r) => r.status === 'error');
|
|
477
539
|
if (distributionErrors.length > 0) {
|
|
478
540
|
process.exit(1);
|
|
@@ -514,7 +576,18 @@ commandRoot.action(async (options) => {
|
|
|
514
576
|
return;
|
|
515
577
|
console.log();
|
|
516
578
|
printActiveSelection('commands', selection.enabled);
|
|
517
|
-
const
|
|
579
|
+
const projectMode = getScopedProjectMode(scope, config);
|
|
580
|
+
const manifest = loadManagedProjectManifest(scope, projectMode);
|
|
581
|
+
let out;
|
|
582
|
+
try {
|
|
583
|
+
out = distributeCommands(scope, config.applications.enabled, new Set(config.applications.assume_installed), {
|
|
584
|
+
manifest,
|
|
585
|
+
projectMode,
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
finally {
|
|
589
|
+
saveManagedProjectManifest(scope, projectMode, manifest);
|
|
590
|
+
}
|
|
518
591
|
if (out.results.length > 0) {
|
|
519
592
|
console.log();
|
|
520
593
|
printDistributionResults({
|
|
@@ -524,6 +597,10 @@ commandRoot.action(async (options) => {
|
|
|
524
597
|
getPath: (result) => result.filePath,
|
|
525
598
|
});
|
|
526
599
|
}
|
|
600
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
601
|
+
console.log();
|
|
602
|
+
printProjectDistributionDisabledMessage();
|
|
603
|
+
}
|
|
527
604
|
// Guidance: unsupported platforms for commands
|
|
528
605
|
console.log();
|
|
529
606
|
console.log(chalk.gray('Unsupported platforms (manual steps required): Claude Desktop'));
|
|
@@ -664,7 +741,18 @@ agentRoot.action(async (options) => {
|
|
|
664
741
|
return;
|
|
665
742
|
console.log();
|
|
666
743
|
printActiveSelection('agents', selection.enabled);
|
|
667
|
-
const
|
|
744
|
+
const projectMode = getScopedProjectMode(scope, config);
|
|
745
|
+
const manifest = loadManagedProjectManifest(scope, projectMode);
|
|
746
|
+
let out;
|
|
747
|
+
try {
|
|
748
|
+
out = distributeSubagents(scope, config.applications.enabled, new Set(config.applications.assume_installed), {
|
|
749
|
+
manifest,
|
|
750
|
+
projectMode,
|
|
751
|
+
});
|
|
752
|
+
}
|
|
753
|
+
finally {
|
|
754
|
+
saveManagedProjectManifest(scope, projectMode, manifest);
|
|
755
|
+
}
|
|
668
756
|
if (out.results.length > 0) {
|
|
669
757
|
console.log();
|
|
670
758
|
printDistributionResults({
|
|
@@ -674,6 +762,10 @@ agentRoot.action(async (options) => {
|
|
|
674
762
|
getPath: (result) => result.filePath,
|
|
675
763
|
});
|
|
676
764
|
}
|
|
765
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
766
|
+
console.log();
|
|
767
|
+
printProjectDistributionDisabledMessage();
|
|
768
|
+
}
|
|
677
769
|
console.log();
|
|
678
770
|
console.log(chalk.gray('Unsupported platforms (manual steps required): Codex, Gemini'));
|
|
679
771
|
}
|
|
@@ -812,11 +904,21 @@ skillRoot.action(async (options) => {
|
|
|
812
904
|
return;
|
|
813
905
|
console.log();
|
|
814
906
|
printActiveSelection('skills', selection.enabled);
|
|
815
|
-
const
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
907
|
+
const projectMode = getScopedProjectMode(scope, config);
|
|
908
|
+
const manifest = loadManagedProjectManifest(scope, projectMode);
|
|
909
|
+
let out;
|
|
910
|
+
try {
|
|
911
|
+
out = distributeSkills(scope, {
|
|
912
|
+
useAgentsDir: config.distribution.use_agents_dir,
|
|
913
|
+
activeAppIds: config.applications.enabled,
|
|
914
|
+
assumeInstalled: new Set(config.applications.assume_installed),
|
|
915
|
+
manifest,
|
|
916
|
+
projectMode,
|
|
917
|
+
});
|
|
918
|
+
}
|
|
919
|
+
finally {
|
|
920
|
+
saveManagedProjectManifest(scope, projectMode, manifest);
|
|
921
|
+
}
|
|
820
922
|
if (out.results.length > 0) {
|
|
821
923
|
console.log();
|
|
822
924
|
printDistributionResults({
|
|
@@ -832,6 +934,10 @@ skillRoot.action(async (options) => {
|
|
|
832
934
|
getPath: (result) => result.targetDir,
|
|
833
935
|
});
|
|
834
936
|
}
|
|
937
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
938
|
+
console.log();
|
|
939
|
+
printProjectDistributionDisabledMessage();
|
|
940
|
+
}
|
|
835
941
|
}
|
|
836
942
|
catch (error) {
|
|
837
943
|
if (error instanceof Error) {
|
|
@@ -961,7 +1067,9 @@ hookRoot.action(async (options) => {
|
|
|
961
1067
|
return;
|
|
962
1068
|
console.log();
|
|
963
1069
|
printActiveSelection('hooks', selection.enabled);
|
|
964
|
-
const out = distributeHooks(scope, config.applications.enabled, new Set(config.applications.assume_installed)
|
|
1070
|
+
const out = distributeHooks(scope, config.applications.enabled, new Set(config.applications.assume_installed), {
|
|
1071
|
+
projectMode: getScopedProjectMode(scope, config),
|
|
1072
|
+
});
|
|
965
1073
|
if (out.results.length > 0) {
|
|
966
1074
|
console.log();
|
|
967
1075
|
printDistributionResults({
|
|
@@ -971,6 +1079,10 @@ hookRoot.action(async (options) => {
|
|
|
971
1079
|
getPath: (result) => 'filePath' in result ? result.filePath : result.targetDir,
|
|
972
1080
|
});
|
|
973
1081
|
}
|
|
1082
|
+
if (shouldSkipProjectDistribution(scope, config)) {
|
|
1083
|
+
console.log();
|
|
1084
|
+
printProjectDistributionDisabledMessage();
|
|
1085
|
+
}
|
|
974
1086
|
}
|
|
975
1087
|
catch (error) {
|
|
976
1088
|
if (error instanceof Error) {
|
|
@@ -1117,7 +1229,7 @@ hookRoot
|
|
|
1117
1229
|
* Show summary of enabled/disabled servers and applied agents
|
|
1118
1230
|
*/
|
|
1119
1231
|
function showSummary(selectedServers, scope) {
|
|
1120
|
-
const mcpConfig =
|
|
1232
|
+
const mcpConfig = loadMcpConfigWithPlugins(scope);
|
|
1121
1233
|
const allServers = Object.keys(mcpConfig.mcpServers);
|
|
1122
1234
|
const enabledServers = selectedServers;
|
|
1123
1235
|
const disabledServers = allServers.filter((s) => !selectedServers.includes(s));
|