@pulsemcp/air-core 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +111 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +30 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/plugins.schema.json +70 -20
- package/schemas/roots.schema.json +7 -0
- package/schemas/schemas/plugins.schema.json +70 -20
- package/schemas/schemas/roots.schema.json +7 -0
package/dist/config.d.ts
CHANGED
|
@@ -24,7 +24,29 @@ export interface ResolveOptions {
|
|
|
24
24
|
export declare function resolveArtifacts(airJsonPath: string, options?: ResolveOptions): Promise<ResolvedArtifacts>;
|
|
25
25
|
/**
|
|
26
26
|
* Merge two resolved artifact sets. Override wins for matching IDs.
|
|
27
|
+
* Composite plugins are re-expanded after merging so that newly
|
|
28
|
+
* added plugins that reference existing ones are fully resolved.
|
|
27
29
|
*/
|
|
28
30
|
export declare function mergeArtifacts(base: ResolvedArtifacts, override: ResolvedArtifacts): ResolvedArtifacts;
|
|
31
|
+
/**
|
|
32
|
+
* Recursively expand plugin references.
|
|
33
|
+
*
|
|
34
|
+
* Each plugin may declare a `plugins` array referencing other plugins by ID.
|
|
35
|
+
* This function resolves those references recursively, merging child plugins'
|
|
36
|
+
* primitives (skills, mcp_servers, hooks) into the parent. The result is a
|
|
37
|
+
* flat set of primitive IDs on each plugin — nesting is author convenience,
|
|
38
|
+
* not a runtime concept.
|
|
39
|
+
*
|
|
40
|
+
* Semantics:
|
|
41
|
+
* - Child plugins are expanded depth-first in declaration order
|
|
42
|
+
* - Parent's direct declarations override children (later wins via dedup)
|
|
43
|
+
* - Circular references are rejected with a clear error message
|
|
44
|
+
* - Plugins without a `plugins` field are returned unchanged
|
|
45
|
+
* - The `plugins` array on each entry is preserved as metadata (e.g., for
|
|
46
|
+
* UI display of the dependency graph) even though primitives are inlined
|
|
47
|
+
*
|
|
48
|
+
* Returns a new ResolvedArtifacts object; the input is not mutated.
|
|
49
|
+
*/
|
|
50
|
+
export declare function expandPlugins(artifacts: ResolvedArtifacts): ResolvedArtifacts;
|
|
29
51
|
export declare function emptyArtifacts(): ResolvedArtifacts;
|
|
30
52
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAOjB,eAAe,EAChB,MAAM,YAAY,CAAC;AAmGpB,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAG5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAG9C;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAOjB,eAAe,EAChB,MAAM,YAAY,CAAC;AAmGpB,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAG5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAG9C;AAED,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAuC5B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,iBAAiB,GAC1B,iBAAiB,CASnB;AAmBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,iBAAiB,CAiF7E;AAED,wBAAgB,cAAc,IAAI,iBAAiB,CASlD"}
|
package/dist/config.js
CHANGED
|
@@ -108,7 +108,7 @@ export async function resolveArtifacts(airJsonPath, options) {
|
|
|
108
108
|
const airConfig = loadAirConfig(airJsonPath);
|
|
109
109
|
const baseDir = dirname(resolve(airJsonPath));
|
|
110
110
|
const providers = options?.providers || [];
|
|
111
|
-
|
|
111
|
+
const resolved = {
|
|
112
112
|
skills: await loadAndMerge(airConfig.skills || [], baseDir, providers),
|
|
113
113
|
references: await loadAndMerge(airConfig.references || [], baseDir, providers),
|
|
114
114
|
mcp: await loadAndMerge(airConfig.mcp || [], baseDir, providers),
|
|
@@ -116,18 +116,127 @@ export async function resolveArtifacts(airJsonPath, options) {
|
|
|
116
116
|
roots: await loadAndMerge(airConfig.roots || [], baseDir, providers),
|
|
117
117
|
hooks: await loadAndMerge(airConfig.hooks || [], baseDir, providers),
|
|
118
118
|
};
|
|
119
|
+
return expandPlugins(resolved);
|
|
119
120
|
}
|
|
120
121
|
/**
|
|
121
122
|
* Merge two resolved artifact sets. Override wins for matching IDs.
|
|
123
|
+
* Composite plugins are re-expanded after merging so that newly
|
|
124
|
+
* added plugins that reference existing ones are fully resolved.
|
|
122
125
|
*/
|
|
123
126
|
export function mergeArtifacts(base, override) {
|
|
124
|
-
return {
|
|
127
|
+
return expandPlugins({
|
|
125
128
|
skills: { ...base.skills, ...override.skills },
|
|
126
129
|
references: { ...base.references, ...override.references },
|
|
127
130
|
mcp: { ...base.mcp, ...override.mcp },
|
|
128
131
|
plugins: { ...base.plugins, ...override.plugins },
|
|
129
132
|
roots: { ...base.roots, ...override.roots },
|
|
130
133
|
hooks: { ...base.hooks, ...override.hooks },
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Deduplicate an array of strings, keeping the last occurrence of each value.
|
|
138
|
+
* This ensures parent declarations take precedence over child plugin declarations
|
|
139
|
+
* when arrays are concatenated as [...childIds, ...parentIds].
|
|
140
|
+
*/
|
|
141
|
+
function deduplicateIds(arr) {
|
|
142
|
+
const seen = new Set();
|
|
143
|
+
const result = [];
|
|
144
|
+
for (let i = arr.length - 1; i >= 0; i--) {
|
|
145
|
+
if (!seen.has(arr[i])) {
|
|
146
|
+
seen.add(arr[i]);
|
|
147
|
+
result.unshift(arr[i]);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Recursively expand plugin references.
|
|
154
|
+
*
|
|
155
|
+
* Each plugin may declare a `plugins` array referencing other plugins by ID.
|
|
156
|
+
* This function resolves those references recursively, merging child plugins'
|
|
157
|
+
* primitives (skills, mcp_servers, hooks) into the parent. The result is a
|
|
158
|
+
* flat set of primitive IDs on each plugin — nesting is author convenience,
|
|
159
|
+
* not a runtime concept.
|
|
160
|
+
*
|
|
161
|
+
* Semantics:
|
|
162
|
+
* - Child plugins are expanded depth-first in declaration order
|
|
163
|
+
* - Parent's direct declarations override children (later wins via dedup)
|
|
164
|
+
* - Circular references are rejected with a clear error message
|
|
165
|
+
* - Plugins without a `plugins` field are returned unchanged
|
|
166
|
+
* - The `plugins` array on each entry is preserved as metadata (e.g., for
|
|
167
|
+
* UI display of the dependency graph) even though primitives are inlined
|
|
168
|
+
*
|
|
169
|
+
* Returns a new ResolvedArtifacts object; the input is not mutated.
|
|
170
|
+
*/
|
|
171
|
+
export function expandPlugins(artifacts) {
|
|
172
|
+
const plugins = artifacts.plugins;
|
|
173
|
+
const expanded = new Map();
|
|
174
|
+
function expand(pluginId, ancestors) {
|
|
175
|
+
if (expanded.has(pluginId)) {
|
|
176
|
+
return expanded.get(pluginId);
|
|
177
|
+
}
|
|
178
|
+
const plugin = plugins[pluginId];
|
|
179
|
+
if (!plugin) {
|
|
180
|
+
throw new Error(`Plugin "${pluginId}" referenced by "${ancestors[ancestors.length - 1]}" not found in resolved artifacts`);
|
|
181
|
+
}
|
|
182
|
+
// Cycle detection
|
|
183
|
+
const cycleIndex = ancestors.indexOf(pluginId);
|
|
184
|
+
if (cycleIndex !== -1) {
|
|
185
|
+
const cycle = [...ancestors.slice(cycleIndex), pluginId].join(" → ");
|
|
186
|
+
throw new Error(`Circular plugin dependency detected: ${cycle}`);
|
|
187
|
+
}
|
|
188
|
+
// No child plugins — return as-is
|
|
189
|
+
if (!plugin.plugins || plugin.plugins.length === 0) {
|
|
190
|
+
expanded.set(pluginId, plugin);
|
|
191
|
+
return plugin;
|
|
192
|
+
}
|
|
193
|
+
// Recursively expand child plugins and collect their primitives
|
|
194
|
+
const childSkills = [];
|
|
195
|
+
const childMcpServers = [];
|
|
196
|
+
const childHooks = [];
|
|
197
|
+
for (const childId of plugin.plugins) {
|
|
198
|
+
const child = expand(childId, [...ancestors, pluginId]);
|
|
199
|
+
if (child.skills)
|
|
200
|
+
childSkills.push(...child.skills);
|
|
201
|
+
if (child.mcp_servers)
|
|
202
|
+
childMcpServers.push(...child.mcp_servers);
|
|
203
|
+
if (child.hooks)
|
|
204
|
+
childHooks.push(...child.hooks);
|
|
205
|
+
}
|
|
206
|
+
// Merge: children first, then parent's direct declarations (parent wins via dedup)
|
|
207
|
+
const mergedSkills = deduplicateIds([
|
|
208
|
+
...childSkills,
|
|
209
|
+
...(plugin.skills || []),
|
|
210
|
+
]);
|
|
211
|
+
const mergedMcpServers = deduplicateIds([
|
|
212
|
+
...childMcpServers,
|
|
213
|
+
...(plugin.mcp_servers || []),
|
|
214
|
+
]);
|
|
215
|
+
const mergedHooks = deduplicateIds([
|
|
216
|
+
...childHooks,
|
|
217
|
+
...(plugin.hooks || []),
|
|
218
|
+
]);
|
|
219
|
+
const expandedPlugin = {
|
|
220
|
+
...plugin,
|
|
221
|
+
skills: mergedSkills.length > 0 ? mergedSkills : undefined,
|
|
222
|
+
mcp_servers: mergedMcpServers.length > 0 ? mergedMcpServers : undefined,
|
|
223
|
+
hooks: mergedHooks.length > 0 ? mergedHooks : undefined,
|
|
224
|
+
};
|
|
225
|
+
expanded.set(pluginId, expandedPlugin);
|
|
226
|
+
return expandedPlugin;
|
|
227
|
+
}
|
|
228
|
+
// Expand all plugins
|
|
229
|
+
for (const pluginId of Object.keys(plugins)) {
|
|
230
|
+
expand(pluginId, []);
|
|
231
|
+
}
|
|
232
|
+
// Build the new plugins record preserving insertion order
|
|
233
|
+
const expandedPlugins = {};
|
|
234
|
+
for (const pluginId of Object.keys(plugins)) {
|
|
235
|
+
expandedPlugins[pluginId] = expanded.get(pluginId);
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
...artifacts,
|
|
239
|
+
plugins: expandedPlugins,
|
|
131
240
|
};
|
|
132
241
|
}
|
|
133
242
|
export function emptyArtifacts() {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type { AirConfig, ResolvedArtifacts, SkillEntry, ReferenceEntry, McpOAuthConfig, McpServerEntry, PluginEntry, RootEntry, HookEntry, } from "./types.js";
|
|
1
|
+
export type { AirConfig, ResolvedArtifacts, SkillEntry, ReferenceEntry, McpOAuthConfig, McpServerEntry, PluginAuthor, PluginEntry, RootEntry, HookEntry, } from "./types.js";
|
|
2
2
|
export type { AgentAdapter, CatalogProvider, SecretResolver, AirExtension, AgentSessionConfig, StartCommand, PrepareSessionOptions, PreparedSession, } from "./types.js";
|
|
3
|
-
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, emptyArtifacts, } from "./config.js";
|
|
3
|
+
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, expandPlugins, emptyArtifacts, } from "./config.js";
|
|
4
4
|
export type { ResolveOptions } from "./config.js";
|
|
5
5
|
export { validateJson } from "./validator.js";
|
|
6
6
|
export type { ValidationResult, ValidationError } from "./validator.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Config resolution
|
|
2
|
-
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, emptyArtifacts, } from "./config.js";
|
|
2
|
+
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, expandPlugins, emptyArtifacts, } from "./config.js";
|
|
3
3
|
// Validation
|
|
4
4
|
export { validateJson } from "./validator.js";
|
|
5
5
|
// Schemas
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0BA,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,UAAU;AACV,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -45,15 +45,26 @@ export interface McpServerEntry {
|
|
|
45
45
|
headers?: Record<string, string>;
|
|
46
46
|
oauth?: McpOAuthConfig;
|
|
47
47
|
}
|
|
48
|
+
export interface PluginAuthor {
|
|
49
|
+
name?: string;
|
|
50
|
+
email?: string;
|
|
51
|
+
url?: string;
|
|
52
|
+
}
|
|
48
53
|
export interface PluginEntry {
|
|
49
54
|
id: string;
|
|
50
55
|
title?: string;
|
|
51
56
|
description: string;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
version?: string;
|
|
58
|
+
skills?: string[];
|
|
59
|
+
mcp_servers?: string[];
|
|
60
|
+
hooks?: string[];
|
|
61
|
+
plugins?: string[];
|
|
62
|
+
author?: PluginAuthor;
|
|
63
|
+
homepage?: string;
|
|
64
|
+
repository?: string;
|
|
65
|
+
license?: string;
|
|
66
|
+
logo?: string;
|
|
67
|
+
keywords?: string[];
|
|
57
68
|
}
|
|
58
69
|
export interface RootEntry {
|
|
59
70
|
name: string;
|
|
@@ -66,6 +77,7 @@ export interface RootEntry {
|
|
|
66
77
|
default_skills?: string[];
|
|
67
78
|
default_plugins?: string[];
|
|
68
79
|
default_hooks?: string[];
|
|
80
|
+
default_subagent_roots?: string[];
|
|
69
81
|
user_invocable?: boolean;
|
|
70
82
|
default_stop_condition?: string;
|
|
71
83
|
}
|
|
@@ -120,6 +132,13 @@ export interface PrepareSessionOptions {
|
|
|
120
132
|
* When set, this replaces root.default_mcp_servers entirely.
|
|
121
133
|
*/
|
|
122
134
|
mcpServerOverrides?: string[];
|
|
135
|
+
/**
|
|
136
|
+
* Skip merging subagent roots' artifacts into the parent session.
|
|
137
|
+
* When true, default_subagent_roots is ignored during preparation.
|
|
138
|
+
* Orchestrators that manage subagent composition externally (e.g., via
|
|
139
|
+
* an MCP server) should set this to true.
|
|
140
|
+
*/
|
|
141
|
+
skipSubagentMerge?: boolean;
|
|
123
142
|
}
|
|
124
143
|
export interface PreparedSession {
|
|
125
144
|
/** Paths to config files written (e.g., ".mcp.json") */
|
|
@@ -128,6 +147,12 @@ export interface PreparedSession {
|
|
|
128
147
|
skillPaths: string[];
|
|
129
148
|
/** The command to start the agent in the prepared directory */
|
|
130
149
|
startCommand: StartCommand;
|
|
150
|
+
/**
|
|
151
|
+
* System prompt content describing subagent root dependencies.
|
|
152
|
+
* Present when the root has default_subagent_roots and skipSubagentMerge is false.
|
|
153
|
+
* Adapters write this to a file and/or include it in the start command.
|
|
154
|
+
*/
|
|
155
|
+
subagentContext?: string;
|
|
131
156
|
}
|
|
132
157
|
/**
|
|
133
158
|
* Catalog Provider — resolves remote artifact index URIs.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/plugins.schema.json",
|
|
4
4
|
"title": "AIR Plugins Index",
|
|
5
|
-
"description": "Index of agent plugins available in this AIR configuration.
|
|
5
|
+
"description": "Index of agent plugins available in this AIR configuration. A plugin is a named grouping of AIR primitives (skills, MCP servers, hooks) — a compositional unit for bundling and distributing related capabilities. Plugins do not define new artifacts inline; they reference existing artifacts by ID from the corresponding index files.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
8
|
"$schema": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"$defs": {
|
|
21
21
|
"Plugin": {
|
|
22
22
|
"type": "object",
|
|
23
|
-
"description": "
|
|
23
|
+
"description": "A plugin — a named grouping of AIR primitives (skills, MCP servers, hooks) for bundling and distribution. All referenced artifacts must be defined in their respective index files.",
|
|
24
24
|
"properties": {
|
|
25
25
|
"id": {
|
|
26
26
|
"type": "string",
|
|
@@ -38,38 +38,88 @@
|
|
|
38
38
|
"type": "string",
|
|
39
39
|
"minLength": 1,
|
|
40
40
|
"maxLength": 500,
|
|
41
|
-
"description": "Concise description of what this plugin
|
|
41
|
+
"description": "Concise description of what this plugin provides."
|
|
42
42
|
},
|
|
43
|
-
"
|
|
43
|
+
"version": {
|
|
44
44
|
"type": "string",
|
|
45
|
-
"
|
|
46
|
-
"description": "
|
|
45
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+([-+][a-zA-Z0-9._-]+)?$",
|
|
46
|
+
"description": "Semantic version of the plugin (e.g., '1.0.0')."
|
|
47
47
|
},
|
|
48
|
-
"
|
|
49
|
-
"type": "
|
|
50
|
-
"
|
|
48
|
+
"skills": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "string"
|
|
52
|
+
},
|
|
53
|
+
"description": "IDs of skills bundled by this plugin. Must reference skill IDs defined in skills.json indexes."
|
|
51
54
|
},
|
|
52
|
-
"
|
|
55
|
+
"mcp_servers": {
|
|
53
56
|
"type": "array",
|
|
54
57
|
"items": {
|
|
55
58
|
"type": "string"
|
|
56
59
|
},
|
|
57
|
-
"description": "
|
|
60
|
+
"description": "IDs of MCP servers bundled by this plugin. Must reference server IDs defined in mcp.json indexes."
|
|
58
61
|
},
|
|
59
|
-
"
|
|
60
|
-
"type": "
|
|
61
|
-
"
|
|
62
|
+
"hooks": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
62
65
|
"type": "string"
|
|
63
66
|
},
|
|
64
|
-
"description": "
|
|
67
|
+
"description": "IDs of hooks bundled by this plugin. Must reference hook IDs defined in hooks.json indexes."
|
|
68
|
+
},
|
|
69
|
+
"plugins": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"type": "string"
|
|
73
|
+
},
|
|
74
|
+
"description": "IDs of other plugins to compose into this plugin. Referenced plugins' primitives (skills, mcp_servers, hooks) are recursively expanded and merged with this plugin's direct declarations. Circular references are rejected at resolution time."
|
|
75
|
+
},
|
|
76
|
+
"author": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"description": "Plugin author information.",
|
|
79
|
+
"properties": {
|
|
80
|
+
"name": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Author's name."
|
|
83
|
+
},
|
|
84
|
+
"email": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"format": "email",
|
|
87
|
+
"description": "Author's email address."
|
|
88
|
+
},
|
|
89
|
+
"url": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"format": "uri",
|
|
92
|
+
"description": "Author's website or profile URL."
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false
|
|
96
|
+
},
|
|
97
|
+
"homepage": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"format": "uri",
|
|
100
|
+
"description": "URL to the plugin's homepage or documentation."
|
|
101
|
+
},
|
|
102
|
+
"repository": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "URL or identifier for the plugin's source repository."
|
|
105
|
+
},
|
|
106
|
+
"license": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"description": "SPDX license identifier (e.g., 'MIT', 'Apache-2.0')."
|
|
109
|
+
},
|
|
110
|
+
"logo": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "Path or URL to the plugin's logo image."
|
|
65
113
|
},
|
|
66
|
-
"
|
|
67
|
-
"type": "
|
|
68
|
-
"
|
|
69
|
-
|
|
114
|
+
"keywords": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"description": "Keywords for discovery and categorization."
|
|
70
120
|
}
|
|
71
121
|
},
|
|
72
|
-
"required": ["id", "description"
|
|
122
|
+
"required": ["id", "description"],
|
|
73
123
|
"additionalProperties": false
|
|
74
124
|
}
|
|
75
125
|
}
|
|
@@ -80,6 +80,13 @@
|
|
|
80
80
|
},
|
|
81
81
|
"description": "IDs of hooks to activate by default for sessions using this root."
|
|
82
82
|
},
|
|
83
|
+
"default_subagent_roots": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"description": "IDs of other roots that this root depends on as subagents. The default CLI behavior merges subagent roots' skills and MCP servers into the parent session and appends subagent metadata to the system prompt. Orchestrators that manage subagent composition externally (e.g., via an MCP server) can opt out with --no-subagent-merge."
|
|
89
|
+
},
|
|
83
90
|
"user_invocable": {
|
|
84
91
|
"type": "boolean",
|
|
85
92
|
"description": "Whether this root can be directly invoked by users to start a session.",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/plugins.schema.json",
|
|
4
4
|
"title": "AIR Plugins Index",
|
|
5
|
-
"description": "Index of agent plugins available in this AIR configuration.
|
|
5
|
+
"description": "Index of agent plugins available in this AIR configuration. A plugin is a named grouping of AIR primitives (skills, MCP servers, hooks) — a compositional unit for bundling and distributing related capabilities. Plugins do not define new artifacts inline; they reference existing artifacts by ID from the corresponding index files.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
|
8
8
|
"$schema": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"$defs": {
|
|
21
21
|
"Plugin": {
|
|
22
22
|
"type": "object",
|
|
23
|
-
"description": "
|
|
23
|
+
"description": "A plugin — a named grouping of AIR primitives (skills, MCP servers, hooks) for bundling and distribution. All referenced artifacts must be defined in their respective index files.",
|
|
24
24
|
"properties": {
|
|
25
25
|
"id": {
|
|
26
26
|
"type": "string",
|
|
@@ -38,38 +38,88 @@
|
|
|
38
38
|
"type": "string",
|
|
39
39
|
"minLength": 1,
|
|
40
40
|
"maxLength": 500,
|
|
41
|
-
"description": "Concise description of what this plugin
|
|
41
|
+
"description": "Concise description of what this plugin provides."
|
|
42
42
|
},
|
|
43
|
-
"
|
|
43
|
+
"version": {
|
|
44
44
|
"type": "string",
|
|
45
|
-
"
|
|
46
|
-
"description": "
|
|
45
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+([-+][a-zA-Z0-9._-]+)?$",
|
|
46
|
+
"description": "Semantic version of the plugin (e.g., '1.0.0')."
|
|
47
47
|
},
|
|
48
|
-
"
|
|
49
|
-
"type": "
|
|
50
|
-
"
|
|
48
|
+
"skills": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "string"
|
|
52
|
+
},
|
|
53
|
+
"description": "IDs of skills bundled by this plugin. Must reference skill IDs defined in skills.json indexes."
|
|
51
54
|
},
|
|
52
|
-
"
|
|
55
|
+
"mcp_servers": {
|
|
53
56
|
"type": "array",
|
|
54
57
|
"items": {
|
|
55
58
|
"type": "string"
|
|
56
59
|
},
|
|
57
|
-
"description": "
|
|
60
|
+
"description": "IDs of MCP servers bundled by this plugin. Must reference server IDs defined in mcp.json indexes."
|
|
58
61
|
},
|
|
59
|
-
"
|
|
60
|
-
"type": "
|
|
61
|
-
"
|
|
62
|
+
"hooks": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
62
65
|
"type": "string"
|
|
63
66
|
},
|
|
64
|
-
"description": "
|
|
67
|
+
"description": "IDs of hooks bundled by this plugin. Must reference hook IDs defined in hooks.json indexes."
|
|
68
|
+
},
|
|
69
|
+
"plugins": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"type": "string"
|
|
73
|
+
},
|
|
74
|
+
"description": "IDs of other plugins to compose into this plugin. Referenced plugins' primitives (skills, mcp_servers, hooks) are recursively expanded and merged with this plugin's direct declarations. Circular references are rejected at resolution time."
|
|
75
|
+
},
|
|
76
|
+
"author": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"description": "Plugin author information.",
|
|
79
|
+
"properties": {
|
|
80
|
+
"name": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Author's name."
|
|
83
|
+
},
|
|
84
|
+
"email": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"format": "email",
|
|
87
|
+
"description": "Author's email address."
|
|
88
|
+
},
|
|
89
|
+
"url": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"format": "uri",
|
|
92
|
+
"description": "Author's website or profile URL."
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false
|
|
96
|
+
},
|
|
97
|
+
"homepage": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"format": "uri",
|
|
100
|
+
"description": "URL to the plugin's homepage or documentation."
|
|
101
|
+
},
|
|
102
|
+
"repository": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "URL or identifier for the plugin's source repository."
|
|
105
|
+
},
|
|
106
|
+
"license": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"description": "SPDX license identifier (e.g., 'MIT', 'Apache-2.0')."
|
|
109
|
+
},
|
|
110
|
+
"logo": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "Path or URL to the plugin's logo image."
|
|
65
113
|
},
|
|
66
|
-
"
|
|
67
|
-
"type": "
|
|
68
|
-
"
|
|
69
|
-
|
|
114
|
+
"keywords": {
|
|
115
|
+
"type": "array",
|
|
116
|
+
"items": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"description": "Keywords for discovery and categorization."
|
|
70
120
|
}
|
|
71
121
|
},
|
|
72
|
-
"required": ["id", "description"
|
|
122
|
+
"required": ["id", "description"],
|
|
73
123
|
"additionalProperties": false
|
|
74
124
|
}
|
|
75
125
|
}
|
|
@@ -80,6 +80,13 @@
|
|
|
80
80
|
},
|
|
81
81
|
"description": "IDs of hooks to activate by default for sessions using this root."
|
|
82
82
|
},
|
|
83
|
+
"default_subagent_roots": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"description": "IDs of other roots that this root depends on as subagents. The default CLI behavior merges subagent roots' skills and MCP servers into the parent session and appends subagent metadata to the system prompt. Orchestrators that manage subagent composition externally (e.g., via an MCP server) can opt out with --no-subagent-merge."
|
|
89
|
+
},
|
|
83
90
|
"user_invocable": {
|
|
84
91
|
"type": "boolean",
|
|
85
92
|
"description": "Whether this root can be directly invoked by users to start a session.",
|