agent-switchboard 0.1.26 → 0.1.28
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 +37 -11
- package/dist/commands/distribution.js +2 -2
- package/dist/commands/distribution.js.map +1 -1
- package/dist/commands/library.d.ts +1 -1
- package/dist/commands/library.js +5 -6
- package/dist/commands/library.js.map +1 -1
- package/dist/config/application-config.d.ts +37 -0
- package/dist/config/application-config.js +83 -0
- package/dist/config/application-config.js.map +1 -0
- package/dist/config/layered-config.js +43 -2
- package/dist/config/layered-config.js.map +1 -1
- package/dist/config/paths.d.ts +13 -2
- package/dist/config/paths.js +21 -3
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schemas.d.ts +408 -43
- package/dist/config/schemas.js +32 -22
- package/dist/config/schemas.js.map +1 -1
- package/dist/config/switchboard-config.d.ts +3 -6
- package/dist/config/switchboard-config.js +3 -6
- package/dist/config/switchboard-config.js.map +1 -1
- package/dist/hooks/distribution.d.ts +27 -0
- package/dist/hooks/distribution.js +235 -0
- package/dist/hooks/distribution.js.map +1 -0
- package/dist/hooks/library.d.ts +40 -0
- package/dist/hooks/library.js +143 -0
- package/dist/hooks/library.js.map +1 -0
- package/dist/hooks/schema.d.ts +542 -0
- package/dist/hooks/schema.js +49 -0
- package/dist/hooks/schema.js.map +1 -0
- package/dist/index.js +708 -168
- package/dist/index.js.map +1 -1
- package/dist/library/fs.d.ts +1 -3
- package/dist/library/fs.js +24 -7
- package/dist/library/fs.js.map +1 -1
- package/dist/library/schema.d.ts +1 -1
- package/dist/library/schema.js +1 -1
- package/dist/library/sources.d.ts +75 -0
- package/dist/library/sources.js +285 -0
- package/dist/library/sources.js.map +1 -0
- package/dist/library/state.d.ts +4 -5
- package/dist/library/state.js +15 -31
- package/dist/library/state.js.map +1 -1
- package/dist/marketplace/plugin-loader.d.ts +30 -0
- package/dist/marketplace/plugin-loader.js +178 -0
- package/dist/marketplace/plugin-loader.js.map +1 -0
- package/dist/marketplace/reader.d.ts +36 -0
- package/dist/marketplace/reader.js +90 -0
- package/dist/marketplace/reader.js.map +1 -0
- package/dist/marketplace/schemas.d.ts +467 -0
- package/dist/marketplace/schemas.js +57 -0
- package/dist/marketplace/schemas.js.map +1 -0
- package/dist/marketplace/source-loader.d.ts +32 -0
- package/dist/marketplace/source-loader.js +45 -0
- package/dist/marketplace/source-loader.js.map +1 -0
- package/dist/rules/agents.d.ts +4 -4
- package/dist/rules/agents.js +10 -4
- package/dist/rules/agents.js.map +1 -1
- package/dist/rules/composer.d.ts +2 -2
- package/dist/rules/composer.js +5 -5
- package/dist/rules/composer.js.map +1 -1
- package/dist/rules/distribution.js +48 -112
- package/dist/rules/distribution.js.map +1 -1
- package/dist/rules/library.d.ts +1 -1
- package/dist/rules/library.js +4 -5
- package/dist/rules/library.js.map +1 -1
- package/dist/skills/distribution.js +6 -6
- package/dist/skills/distribution.js.map +1 -1
- package/dist/skills/library.d.ts +1 -2
- package/dist/skills/library.js +6 -7
- package/dist/skills/library.js.map +1 -1
- package/dist/subagents/distribution.d.ts +1 -1
- package/dist/subagents/distribution.js +319 -20
- package/dist/subagents/distribution.js.map +1 -1
- package/dist/subagents/importer.d.ts +1 -1
- package/dist/subagents/importer.js +61 -1
- package/dist/subagents/importer.js.map +1 -1
- package/dist/subagents/inventory.js +3 -3
- package/dist/subagents/inventory.js.map +1 -1
- package/dist/subagents/library.d.ts +2 -2
- package/dist/subagents/library.js +14 -20
- package/dist/subagents/library.js.map +1 -1
- package/dist/ui/hook-ui.d.ts +8 -0
- package/dist/ui/hook-ui.js +17 -0
- package/dist/ui/hook-ui.js.map +1 -0
- package/dist/ui/library-selector.d.ts +1 -1
- package/dist/ui/subagent-ui.js +3 -3
- package/dist/ui/subagent-ui.js.map +1 -1
- package/dist/util/cli.d.ts +20 -0
- package/dist/util/cli.js +107 -14
- package/dist/util/cli.js.map +1 -1
- package/package.json +3 -2
- package/dist/config/agent-config.d.ts +0 -35
- package/dist/config/agent-config.js +0 -88
- package/dist/config/agent-config.js.map +0 -1
- package/dist/library/subscriptions.d.ts +0 -42
- package/dist/library/subscriptions.js +0 -116
- package/dist/library/subscriptions.js.map +0 -1
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Library subscription management utilities
|
|
3
|
-
* Handles adding, removing, and listing library source subscriptions
|
|
4
|
-
*/
|
|
5
|
-
import fs from 'node:fs';
|
|
6
|
-
import path from 'node:path';
|
|
7
|
-
import { updateConfigLayer } from '../config/layered-config.js';
|
|
8
|
-
import { loadSwitchboardConfig } from '../config/switchboard-config.js';
|
|
9
|
-
/**
|
|
10
|
-
* Get all library subscriptions from config
|
|
11
|
-
*/
|
|
12
|
-
export function getSubscriptions() {
|
|
13
|
-
const config = loadSwitchboardConfig();
|
|
14
|
-
const subs = config.library.subscriptions;
|
|
15
|
-
return Object.entries(subs).map(([namespace, subPath]) => ({
|
|
16
|
-
namespace,
|
|
17
|
-
path: subPath,
|
|
18
|
-
}));
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get subscriptions as a record (namespace -> path)
|
|
22
|
-
*/
|
|
23
|
-
export function getSubscriptionsRecord() {
|
|
24
|
-
const config = loadSwitchboardConfig();
|
|
25
|
-
return config.library.subscriptions;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Add a library subscription
|
|
29
|
-
* @param namespace - Unique namespace for this subscription
|
|
30
|
-
* @param libraryPath - Path to the library directory
|
|
31
|
-
* @throws Error if namespace already exists or path is invalid
|
|
32
|
-
*/
|
|
33
|
-
export function addSubscription(namespace, libraryPath) {
|
|
34
|
-
const resolvedPath = path.resolve(libraryPath);
|
|
35
|
-
// Validate path exists and is a directory
|
|
36
|
-
if (!fs.existsSync(resolvedPath)) {
|
|
37
|
-
throw new Error(`Path does not exist: ${resolvedPath}`);
|
|
38
|
-
}
|
|
39
|
-
if (!fs.statSync(resolvedPath).isDirectory()) {
|
|
40
|
-
throw new Error(`Path is not a directory: ${resolvedPath}`);
|
|
41
|
-
}
|
|
42
|
-
// Validate namespace format (alphanumeric, hyphens, underscores)
|
|
43
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(namespace)) {
|
|
44
|
-
throw new Error(`Invalid namespace "${namespace}". Use only letters, numbers, hyphens, and underscores.`);
|
|
45
|
-
}
|
|
46
|
-
// Check if namespace already exists
|
|
47
|
-
const current = getSubscriptionsRecord();
|
|
48
|
-
if (namespace in current) {
|
|
49
|
-
throw new Error(`Namespace "${namespace}" already exists. Use a different name or unsubscribe first.`);
|
|
50
|
-
}
|
|
51
|
-
// Update config
|
|
52
|
-
updateConfigLayer((layer) => ({
|
|
53
|
-
...layer,
|
|
54
|
-
library: {
|
|
55
|
-
...layer.library,
|
|
56
|
-
subscriptions: {
|
|
57
|
-
...(layer.library?.subscriptions ?? {}),
|
|
58
|
-
[namespace]: resolvedPath,
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Remove a library subscription by namespace
|
|
65
|
-
* @param namespace - Namespace to remove
|
|
66
|
-
* @throws Error if namespace doesn't exist
|
|
67
|
-
*/
|
|
68
|
-
export function removeSubscription(namespace) {
|
|
69
|
-
const current = getSubscriptionsRecord();
|
|
70
|
-
if (!(namespace in current)) {
|
|
71
|
-
throw new Error(`Namespace "${namespace}" not found in subscriptions.`);
|
|
72
|
-
}
|
|
73
|
-
updateConfigLayer((layer) => {
|
|
74
|
-
const newSubs = { ...(layer.library?.subscriptions ?? {}) };
|
|
75
|
-
delete newSubs[namespace];
|
|
76
|
-
return {
|
|
77
|
-
...layer,
|
|
78
|
-
library: {
|
|
79
|
-
...layer.library,
|
|
80
|
-
subscriptions: newSubs,
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Check if a subscription namespace exists
|
|
87
|
-
*/
|
|
88
|
-
export function hasSubscription(namespace) {
|
|
89
|
-
const current = getSubscriptionsRecord();
|
|
90
|
-
return namespace in current;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Validate a subscription path has expected library structure
|
|
94
|
-
* Returns list of found library types
|
|
95
|
-
*/
|
|
96
|
-
export function validateSubscriptionPath(libraryPath) {
|
|
97
|
-
const resolvedPath = path.resolve(libraryPath);
|
|
98
|
-
const libraryTypes = ['rules', 'commands', 'subagents', 'skills'];
|
|
99
|
-
const found = [];
|
|
100
|
-
const missing = [];
|
|
101
|
-
for (const type of libraryTypes) {
|
|
102
|
-
const typePath = path.join(resolvedPath, type);
|
|
103
|
-
if (fs.existsSync(typePath) && fs.statSync(typePath).isDirectory()) {
|
|
104
|
-
found.push(type);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
missing.push(type);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return {
|
|
111
|
-
valid: found.length > 0,
|
|
112
|
-
found,
|
|
113
|
-
missing,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=subscriptions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/library/subscriptions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAOxE;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,SAAS;QACT,IAAI,EAAE,OAAO;KACd,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,WAAmB;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE/C,0CAA0C;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,sBAAsB,SAAS,yDAAyD,CACzF,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,cAAc,SAAS,8DAA8D,CACtF,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,KAAK;QACR,OAAO,EAAE;YACP,GAAG,KAAK,CAAC,OAAO;YAChB,aAAa,EAAE;gBACb,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC;gBACvC,CAAC,SAAS,CAAC,EAAE,YAAY;aAC1B;SACF;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,+BAA+B,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO;YACL,GAAG,KAAK;YACR,OAAO,EAAE;gBACP,GAAG,KAAK,CAAC,OAAO;gBAChB,aAAa,EAAE,OAAO;aACvB;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,SAAS,IAAI,OAAO,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAK1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
|