@pulsemcp/air-sdk 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clean.d.ts +41 -0
- package/dist/clean.d.ts.map +1 -0
- package/dist/clean.js +78 -0
- package/dist/clean.js.map +1 -0
- package/dist/hook-x-config.d.ts +35 -0
- package/dist/hook-x-config.d.ts.map +1 -0
- package/dist/hook-x-config.js +109 -0
- package/dist/hook-x-config.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +9 -1
- package/dist/prepare.js.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +6 -1
- package/dist/resolve.js.map +1 -1
- package/package.json +2 -2
package/dist/clean.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type CleanSessionResult } from "@pulsemcp/air-core";
|
|
2
|
+
export interface CleanSessionOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Agent adapter name (e.g., "claude"). When omitted, the adapter is read
|
|
5
|
+
* from the on-disk manifest written by the previous `prepareSession`. Pass
|
|
6
|
+
* an explicit value only to override that lookup.
|
|
7
|
+
*/
|
|
8
|
+
adapter?: string;
|
|
9
|
+
/** Target directory whose AIR-managed artifacts should be removed. Defaults to process.cwd(). */
|
|
10
|
+
target?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Path to air.json. Used only to locate adapter packages installed under
|
|
13
|
+
* `~/.air/node_modules/`. The clean operation itself does not require an
|
|
14
|
+
* air.json — it reads the on-disk manifest. Uses AIR_CONFIG env or
|
|
15
|
+
* `~/.air/air.json` when omitted; if no air.json exists, adapter
|
|
16
|
+
* resolution falls back to the SDK's normal Node module search.
|
|
17
|
+
*/
|
|
18
|
+
config?: string;
|
|
19
|
+
/** Print what would be removed without modifying disk. */
|
|
20
|
+
dryRun?: boolean;
|
|
21
|
+
/** Skip skill removal — manifest entry for skills is preserved. */
|
|
22
|
+
keepSkills?: boolean;
|
|
23
|
+
/** Skip hook removal — manifest entry for hooks is preserved. */
|
|
24
|
+
keepHooks?: boolean;
|
|
25
|
+
/** Skip MCP server removal — manifest entry for MCP servers is preserved. */
|
|
26
|
+
keepMcpServers?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface CleanSessionSdkResult extends CleanSessionResult {
|
|
29
|
+
/** Display name of the adapter that performed the clean. */
|
|
30
|
+
adapterDisplayName: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Remove every artifact AIR has previously written to a target directory.
|
|
34
|
+
*
|
|
35
|
+
* Resolves the adapter (from extensions if an air.json is available, then
|
|
36
|
+
* from the adapter registry) and delegates to its `cleanSession()` method.
|
|
37
|
+
* Throws a clear error when the adapter is not installed or doesn't
|
|
38
|
+
* implement `cleanSession`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function cleanSession(options?: CleanSessionOptions): Promise<CleanSessionSdkResult>;
|
|
41
|
+
//# sourceMappingURL=clean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../src/clean.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAK5B,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,qBAAqB,CAAC,CA0DhC"}
|
package/dist/clean.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { resolve, dirname } from "path";
|
|
2
|
+
import { getAirJsonPath, loadAirConfig, loadManifest, getManifestPath, } from "@pulsemcp/air-core";
|
|
3
|
+
import { existsSync } from "fs";
|
|
4
|
+
import { findAdapter, listAvailableAdapters } from "./adapter-registry.js";
|
|
5
|
+
import { loadExtensions } from "./extension-loader.js";
|
|
6
|
+
/**
|
|
7
|
+
* Remove every artifact AIR has previously written to a target directory.
|
|
8
|
+
*
|
|
9
|
+
* Resolves the adapter (from extensions if an air.json is available, then
|
|
10
|
+
* from the adapter registry) and delegates to its `cleanSession()` method.
|
|
11
|
+
* Throws a clear error when the adapter is not installed or doesn't
|
|
12
|
+
* implement `cleanSession`.
|
|
13
|
+
*/
|
|
14
|
+
export async function cleanSession(options = {}) {
|
|
15
|
+
const targetDir = resolve(options.target ?? process.cwd());
|
|
16
|
+
const adapterName = options.adapter ?? inferAdapterFromManifest(targetDir);
|
|
17
|
+
if (!adapterName) {
|
|
18
|
+
const manifestPath = getManifestPath(targetDir);
|
|
19
|
+
if (existsSync(manifestPath)) {
|
|
20
|
+
throw new Error(`Manifest at ${manifestPath} does not record which adapter wrote it ` +
|
|
21
|
+
`(written by an older AIR version). Re-run with the adapter name, ` +
|
|
22
|
+
`e.g. \`air clean claude\`.`);
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`No AIR manifest found for ${targetDir} (looked for ${manifestPath}). ` +
|
|
25
|
+
`Run \`air prepare <adapter>\` first, or pass the adapter name explicitly: ` +
|
|
26
|
+
`\`air clean <adapter>\`.`);
|
|
27
|
+
}
|
|
28
|
+
const airJsonPath = options.config ?? getAirJsonPath();
|
|
29
|
+
const airJsonDir = airJsonPath ? dirname(resolve(airJsonPath)) : undefined;
|
|
30
|
+
const searchDirs = airJsonDir ? [airJsonDir] : undefined;
|
|
31
|
+
let adapter = airJsonPath && airJsonDir
|
|
32
|
+
? await findAdapterFromAirJson(adapterName, airJsonPath, airJsonDir)
|
|
33
|
+
: null;
|
|
34
|
+
if (!adapter) {
|
|
35
|
+
adapter = await findAdapter(adapterName, { searchDirs });
|
|
36
|
+
}
|
|
37
|
+
if (!adapter) {
|
|
38
|
+
const available = await listAvailableAdapters({ searchDirs });
|
|
39
|
+
const availableMsg = available.length > 0
|
|
40
|
+
? `Available: ${available.join(", ")}`
|
|
41
|
+
: "No adapters installed";
|
|
42
|
+
throw new Error(`No adapter found for "${adapterName}". ${availableMsg}.\n` +
|
|
43
|
+
`Install an adapter: npm install @pulsemcp/air-adapter-${adapterName}`);
|
|
44
|
+
}
|
|
45
|
+
if (!adapter.cleanSession) {
|
|
46
|
+
throw new Error(`Adapter "${adapterName}" does not support clean. ` +
|
|
47
|
+
`Update the adapter package or remove AIR-managed files manually.`);
|
|
48
|
+
}
|
|
49
|
+
const result = await adapter.cleanSession(targetDir, {
|
|
50
|
+
dryRun: options.dryRun,
|
|
51
|
+
keepSkills: options.keepSkills,
|
|
52
|
+
keepHooks: options.keepHooks,
|
|
53
|
+
keepMcpServers: options.keepMcpServers,
|
|
54
|
+
});
|
|
55
|
+
return { ...result, adapterDisplayName: adapter.displayName };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Read the prior-run manifest for `targetDir` and return the adapter name it
|
|
59
|
+
* records. Returns null when no manifest exists, the manifest is corrupt, or
|
|
60
|
+
* it predates the adapter field.
|
|
61
|
+
*/
|
|
62
|
+
function inferAdapterFromManifest(targetDir) {
|
|
63
|
+
const manifest = loadManifest(targetDir);
|
|
64
|
+
return manifest?.adapter ?? null;
|
|
65
|
+
}
|
|
66
|
+
async function findAdapterFromAirJson(name, airJsonPath, airJsonDir) {
|
|
67
|
+
try {
|
|
68
|
+
const airConfig = loadAirConfig(airJsonPath);
|
|
69
|
+
if (!airConfig.extensions?.length)
|
|
70
|
+
return null;
|
|
71
|
+
const loaded = await loadExtensions(airConfig.extensions, airJsonDir);
|
|
72
|
+
return loaded.adapters.find((ext) => ext.adapter?.name === name)?.adapter ?? null;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../src/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAkCvD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAA+B,EAAE;IAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,eAAe,YAAY,0CAA0C;gBACnE,mEAAmE;gBACnE,4BAA4B,CAC/B,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,gBAAgB,YAAY,KAAK;YACrE,4EAA4E;YAC5E,0BAA0B,CAC7B,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,IAAI,OAAO,GACT,WAAW,IAAI,UAAU;QACvB,CAAC,CAAC,MAAM,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;QACpE,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,CAAC,CAAC,uBAAuB,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,MAAM,YAAY,KAAK;YACzD,yDAAyD,WAAW,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,4BAA4B;YACjD,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,SAAiB;IACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAY,EACZ,WAAmB,EACnB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ResolvedArtifacts } from "@pulsemcp/air-core";
|
|
2
|
+
/**
|
|
3
|
+
* Read every active hook's source HOOK.json and deep-merge the consumer's
|
|
4
|
+
* `x-config` (declared in `hooks.json`) into the file's own `x-config`.
|
|
5
|
+
* Returns a new `ResolvedArtifacts` whose `hooks[*]["x-config"]` is the
|
|
6
|
+
* fully-merged value — what `air resolve --json` shows and what should be
|
|
7
|
+
* written to the materialized HOOK.json.
|
|
8
|
+
*
|
|
9
|
+
* Hooks whose source HOOK.json is missing or unparseable are returned with
|
|
10
|
+
* just the consumer's `x-config` (or undefined) — the consumer's intent is
|
|
11
|
+
* preserved even when the source is unreachable.
|
|
12
|
+
*
|
|
13
|
+
* The original HookEntry objects are not mutated.
|
|
14
|
+
*/
|
|
15
|
+
export declare function materializeHookXConfig(artifacts: ResolvedArtifacts): ResolvedArtifacts;
|
|
16
|
+
/**
|
|
17
|
+
* After the adapter has copied a hook directory into the agent's working
|
|
18
|
+
* tree, write the merged `x-config` back into the materialized HOOK.json so
|
|
19
|
+
* subsequent transforms (e.g. `${VAR}` interpolation) operate on the fully
|
|
20
|
+
* composed config.
|
|
21
|
+
*
|
|
22
|
+
* Each `hookPath` is a directory; its basename is the short ID. When
|
|
23
|
+
* `activations` is provided (a short→qualified mapping the adapter emits),
|
|
24
|
+
* the qualified ID is used to look up the exact resolved hook entry —
|
|
25
|
+
* disambiguating cross-scope shortname collisions. Without `activations`,
|
|
26
|
+
* falls back to a short-id lookup that picks the first matching entry.
|
|
27
|
+
*
|
|
28
|
+
* Hooks without an `x-config` on either side are skipped — the verbatim copy
|
|
29
|
+
* made by the adapter is correct.
|
|
30
|
+
*/
|
|
31
|
+
export declare function writeMergedHookXConfigs(hookPaths: string[], artifacts: ResolvedArtifacts, activations?: Array<{
|
|
32
|
+
short: string;
|
|
33
|
+
qualified: string;
|
|
34
|
+
}>): void;
|
|
35
|
+
//# sourceMappingURL=hook-x-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-x-config.d.ts","sourceRoot":"","sources":["../src/hook-x-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,iBAAiB,GAC3B,iBAAiB,CAgBnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,iBAAiB,EAC5B,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,IAAI,CAkCN"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
2
|
+
import { basename, join } from "path";
|
|
3
|
+
import { mergeXConfig, parseQualifiedId, } from "@pulsemcp/air-core";
|
|
4
|
+
/**
|
|
5
|
+
* Read every active hook's source HOOK.json and deep-merge the consumer's
|
|
6
|
+
* `x-config` (declared in `hooks.json`) into the file's own `x-config`.
|
|
7
|
+
* Returns a new `ResolvedArtifacts` whose `hooks[*]["x-config"]` is the
|
|
8
|
+
* fully-merged value — what `air resolve --json` shows and what should be
|
|
9
|
+
* written to the materialized HOOK.json.
|
|
10
|
+
*
|
|
11
|
+
* Hooks whose source HOOK.json is missing or unparseable are returned with
|
|
12
|
+
* just the consumer's `x-config` (or undefined) — the consumer's intent is
|
|
13
|
+
* preserved even when the source is unreachable.
|
|
14
|
+
*
|
|
15
|
+
* The original HookEntry objects are not mutated.
|
|
16
|
+
*/
|
|
17
|
+
export function materializeHookXConfig(artifacts) {
|
|
18
|
+
const merged = {};
|
|
19
|
+
for (const [qualified, entry] of Object.entries(artifacts.hooks)) {
|
|
20
|
+
const sourceXConfig = readHookSourceXConfig(entry.path);
|
|
21
|
+
const consumerXConfig = entry["x-config"];
|
|
22
|
+
const result = mergeXConfig(sourceXConfig, consumerXConfig);
|
|
23
|
+
if (result === undefined || !isPlainObject(result)) {
|
|
24
|
+
// No x-config on either side — drop the field rather than emit an empty
|
|
25
|
+
// object, so consumers that conditionally render the field stay clean.
|
|
26
|
+
const { "x-config": _omit, ...rest } = entry;
|
|
27
|
+
merged[qualified] = rest;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
merged[qualified] = { ...entry, "x-config": result };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { ...artifacts, hooks: merged };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* After the adapter has copied a hook directory into the agent's working
|
|
37
|
+
* tree, write the merged `x-config` back into the materialized HOOK.json so
|
|
38
|
+
* subsequent transforms (e.g. `${VAR}` interpolation) operate on the fully
|
|
39
|
+
* composed config.
|
|
40
|
+
*
|
|
41
|
+
* Each `hookPath` is a directory; its basename is the short ID. When
|
|
42
|
+
* `activations` is provided (a short→qualified mapping the adapter emits),
|
|
43
|
+
* the qualified ID is used to look up the exact resolved hook entry —
|
|
44
|
+
* disambiguating cross-scope shortname collisions. Without `activations`,
|
|
45
|
+
* falls back to a short-id lookup that picks the first matching entry.
|
|
46
|
+
*
|
|
47
|
+
* Hooks without an `x-config` on either side are skipped — the verbatim copy
|
|
48
|
+
* made by the adapter is correct.
|
|
49
|
+
*/
|
|
50
|
+
export function writeMergedHookXConfigs(hookPaths, artifacts, activations) {
|
|
51
|
+
const qualifiedByShort = new Map();
|
|
52
|
+
if (activations) {
|
|
53
|
+
for (const a of activations)
|
|
54
|
+
qualifiedByShort.set(a.short, a.qualified);
|
|
55
|
+
}
|
|
56
|
+
for (const hookPath of hookPaths) {
|
|
57
|
+
const shortId = basename(hookPath);
|
|
58
|
+
const qualified = qualifiedByShort.get(shortId);
|
|
59
|
+
const entry = qualified
|
|
60
|
+
? artifacts.hooks[qualified]
|
|
61
|
+
: findHookByShortId(artifacts, shortId);
|
|
62
|
+
if (!entry)
|
|
63
|
+
continue;
|
|
64
|
+
const consumerXConfig = entry["x-config"];
|
|
65
|
+
const hookJsonPath = join(hookPath, "HOOK.json");
|
|
66
|
+
if (!existsSync(hookJsonPath))
|
|
67
|
+
continue;
|
|
68
|
+
let hookJson;
|
|
69
|
+
try {
|
|
70
|
+
hookJson = JSON.parse(readFileSync(hookJsonPath, "utf-8"));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const sourceXConfig = hookJson["x-config"];
|
|
76
|
+
if (consumerXConfig === undefined && sourceXConfig === undefined)
|
|
77
|
+
continue;
|
|
78
|
+
const merged = mergeXConfig(sourceXConfig, consumerXConfig);
|
|
79
|
+
if (merged === undefined)
|
|
80
|
+
continue;
|
|
81
|
+
const next = { ...hookJson, "x-config": merged };
|
|
82
|
+
writeFileSync(hookJsonPath, JSON.stringify(next, null, 2) + "\n");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function readHookSourceXConfig(hookDir) {
|
|
86
|
+
const hookJsonPath = join(hookDir, "HOOK.json");
|
|
87
|
+
if (!existsSync(hookJsonPath))
|
|
88
|
+
return undefined;
|
|
89
|
+
try {
|
|
90
|
+
const data = JSON.parse(readFileSync(hookJsonPath, "utf-8"));
|
|
91
|
+
if (!isPlainObject(data))
|
|
92
|
+
return undefined;
|
|
93
|
+
return data["x-config"];
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function findHookByShortId(artifacts, shortId) {
|
|
100
|
+
for (const [qualified, entry] of Object.entries(artifacts.hooks)) {
|
|
101
|
+
if (parseQualifiedId(qualified).id === shortId)
|
|
102
|
+
return entry;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
function isPlainObject(value) {
|
|
107
|
+
return (typeof value === "object" && value !== null && !Array.isArray(value));
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=hook-x-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-x-config.js","sourceRoot":"","sources":["../src/hook-x-config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, expandPlugins, emptyArtifacts, LOCAL_SCOPE, isQualified, qualifyId, parseQualifiedId, validateScope, deriveScope, buildShortnameIndex, lookupArtifactId, resolveReference, stripScopes, ShortnameCollisionError, validateJson, getSchemasDir, getSchemaPath, loadSchema, detectSchemaType, detectSchemaFromValue, getAllSchemaTypes, isValidSchemaType, MANIFEST_VERSION, getDefaultAirHome, getManifestPath, loadManifest, writeManifest, buildManifest, diffManifest, } from "@pulsemcp/air-core";
|
|
2
|
-
export type { AirConfig, ResolvedArtifacts, SkillEntry, ReferenceEntry, McpOAuthConfig, McpServerEntry, PluginAuthor, PluginEntry, RootEntry, HookEntry, AgentAdapter, CatalogProvider, CacheFreshnessWarning, CacheRefreshResult, AirExtension, PrepareTransform, PluginEmitter, BuildMarketplaceOptions, BuiltPlugin, BuiltMarketplace, McpConfig, TransformContext, ExtensionCliOption, AgentSessionConfig, StartCommand, PrepareSessionOptions as CorePrepareSessionOptions, PreparedSession, LocalArtifacts, LocalSkillEntry, ValidationResult, ValidationError, ResolveOptions, SchemaType, Manifest, ManifestSelection, ManifestDiff, QualifiedId, ReferenceResolution, ShortnameCollision, } from "@pulsemcp/air-core";
|
|
1
|
+
export { loadAirConfig, getDefaultAirJsonPath, getAirJsonPath, resolveArtifacts, mergeArtifacts, expandPlugins, emptyArtifacts, LOCAL_SCOPE, isQualified, qualifyId, parseQualifiedId, validateScope, deriveScope, buildShortnameIndex, lookupArtifactId, resolveReference, stripScopes, ShortnameCollisionError, validateJson, getSchemasDir, getSchemaPath, loadSchema, detectSchemaType, detectSchemaFromValue, getAllSchemaTypes, isValidSchemaType, MANIFEST_VERSION, getDefaultAirHome, getManifestPath, loadManifest, writeManifest, buildManifest, diffManifest, deleteManifest, } from "@pulsemcp/air-core";
|
|
2
|
+
export type { AirConfig, ResolvedArtifacts, SkillEntry, ReferenceEntry, McpOAuthConfig, McpServerEntry, PluginAuthor, PluginEntry, RootEntry, HookEntry, AgentAdapter, CatalogProvider, CacheFreshnessWarning, CacheRefreshResult, AirExtension, PrepareTransform, PluginEmitter, BuildMarketplaceOptions, BuiltPlugin, BuiltMarketplace, McpConfig, TransformContext, ExtensionCliOption, AgentSessionConfig, StartCommand, PrepareSessionOptions as CorePrepareSessionOptions, PreparedSession, CleanSessionOptions as CoreCleanSessionOptions, CleanSessionResult, LocalArtifacts, LocalSkillEntry, ValidationResult, ValidationError, ResolveOptions, SchemaType, Manifest, ManifestSelection, ManifestDiff, QualifiedId, ReferenceResolution, ShortnameCollision, } from "@pulsemcp/air-core";
|
|
3
3
|
export { findAdapter, listAvailableAdapters, type FindAdapterOptions, } from "./adapter-registry.js";
|
|
4
4
|
export { normalizeGitUrl, detectRoot } from "./root-detection.js";
|
|
5
5
|
export { validateFile } from "./validate.js";
|
|
@@ -14,6 +14,8 @@ export { startSession } from "./start.js";
|
|
|
14
14
|
export type { StartSessionOptions, StartSessionResult } from "./start.js";
|
|
15
15
|
export { prepareSession, computeMergedDefaults, resolveCategoryOverride, } from "./prepare.js";
|
|
16
16
|
export type { PrepareSessionOptions, PrepareSessionResult, MergedArtifactDefaults, } from "./prepare.js";
|
|
17
|
+
export { cleanSession } from "./clean.js";
|
|
18
|
+
export type { CleanSessionOptions, CleanSessionSdkResult, } from "./clean.js";
|
|
17
19
|
export { exportMarketplace } from "./export-marketplace.js";
|
|
18
20
|
export type { ExportMarketplaceOptions, ExportMarketplaceResult, } from "./export-marketplace.js";
|
|
19
21
|
export { resolveFullArtifacts } from "./resolve.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,OAAO,EAEL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,EAEd,WAAW,EACX,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EAEvB,YAAY,EAEZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAEjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ validateJson,
|
|
|
9
9
|
// Schemas
|
|
10
10
|
getSchemasDir, getSchemaPath, loadSchema, detectSchemaType, detectSchemaFromValue, getAllSchemaTypes, isValidSchemaType,
|
|
11
11
|
// Manifest
|
|
12
|
-
MANIFEST_VERSION, getDefaultAirHome, getManifestPath, loadManifest, writeManifest, buildManifest, diffManifest, } from "@pulsemcp/air-core";
|
|
12
|
+
MANIFEST_VERSION, getDefaultAirHome, getManifestPath, loadManifest, writeManifest, buildManifest, diffManifest, deleteManifest, } from "@pulsemcp/air-core";
|
|
13
13
|
// Adapter registry
|
|
14
14
|
export { findAdapter, listAvailableAdapters, } from "./adapter-registry.js";
|
|
15
15
|
// Root detection
|
|
@@ -21,6 +21,7 @@ export { initFromRepo, smartInit, InitFromRepoError } from "./init-from-repo.js"
|
|
|
21
21
|
export { listArtifacts, VALID_ARTIFACT_TYPES } from "./list.js";
|
|
22
22
|
export { startSession } from "./start.js";
|
|
23
23
|
export { prepareSession, computeMergedDefaults, resolveCategoryOverride, } from "./prepare.js";
|
|
24
|
+
export { cleanSession } from "./clean.js";
|
|
24
25
|
export { exportMarketplace } from "./export-marketplace.js";
|
|
25
26
|
export { resolveFullArtifacts } from "./resolve.js";
|
|
26
27
|
// Extension installer
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO;AACL,oBAAoB;AACpB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc;AACd,kBAAkB;AAClB,WAAW,EACX,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,uBAAuB;AACvB,aAAa;AACb,YAAY;AACZ,UAAU;AACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB;AACjB,WAAW;AACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO;AACL,oBAAoB;AACpB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc;AACd,kBAAkB;AAClB,WAAW,EACX,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,uBAAuB;AACvB,aAAa;AACb,YAAY;AACZ,UAAU;AACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB;AACjB,WAAW;AACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAsD5B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElE,wBAAwB;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASjF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,sBAAsB;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,4BAA4B;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAMnD,2BAA2B;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,iFAAiF;AACjF,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,uBAAuB,CAAC;AAU/B,2DAA2D;AAC3D,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAG1B,6CAA6C;AAC7C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAS5B,qEAAqE;AACrE,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC"}
|
package/dist/prepare.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
|
package/dist/prepare.js
CHANGED
|
@@ -5,6 +5,7 @@ import { detectRoot } from "./root-detection.js";
|
|
|
5
5
|
import { loadExtensions } from "./extension-loader.js";
|
|
6
6
|
import { runTransforms } from "./transform-runner.js";
|
|
7
7
|
import { checkProviderFreshness } from "./cache-freshness.js";
|
|
8
|
+
import { materializeHookXConfig, writeMergedHookXConfigs, } from "./hook-x-config.js";
|
|
8
9
|
import { existsSync, readFileSync } from "fs";
|
|
9
10
|
import { findUnresolvedVars, findUnresolvedHookVars, unresolvedVarsMessage, } from "./validate-config.js";
|
|
10
11
|
/**
|
|
@@ -55,10 +56,11 @@ export async function prepareSession(options) {
|
|
|
55
56
|
if (options.gitProtocol !== undefined) {
|
|
56
57
|
providerOptions.gitProtocol = options.gitProtocol;
|
|
57
58
|
}
|
|
58
|
-
const
|
|
59
|
+
const rawArtifacts = await resolveArtifacts(airJsonPath, {
|
|
59
60
|
providers,
|
|
60
61
|
providerOptions,
|
|
61
62
|
});
|
|
63
|
+
const artifacts = materializeHookXConfig(rawArtifacts);
|
|
62
64
|
// Check freshness of provider caches (non-blocking — warnings only)
|
|
63
65
|
const warnings = await checkProviderFreshness(airConfig, providers);
|
|
64
66
|
// Detect or validate root
|
|
@@ -100,6 +102,12 @@ export async function prepareSession(options) {
|
|
|
100
102
|
pluginOverrides,
|
|
101
103
|
skipSubagentMerge: options.skipSubagentMerge,
|
|
102
104
|
});
|
|
105
|
+
// After the adapter copies hook directories into the target tree, write
|
|
106
|
+
// the merged x-config back into each materialized HOOK.json so transforms
|
|
107
|
+
// (e.g. ${VAR} interpolation) operate on the fully composed config.
|
|
108
|
+
if (session.hookPaths.length > 0) {
|
|
109
|
+
writeMergedHookXConfigs(session.hookPaths, artifacts, session.hookActivations);
|
|
110
|
+
}
|
|
103
111
|
// Run transforms in extension-list order on all config files (e.g., .mcp.json, settings.json)
|
|
104
112
|
if (loaded.transforms.length > 0 && session.configFiles.length > 0) {
|
|
105
113
|
await runTransforms({
|
package/dist/prepare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAyB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAkF9B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;IAEhC,oEAAoE;IACpE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAE7C,kDAAkD;IAClD,IAAI,MAAwB,CAAC;IAC7B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IAED,iEAAiE;IACjE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,IAAI,OAAO,GACT,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,CAAC,EAAE,OAAO;QACzE,IAAI,CAAC;IACP,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,CAAC,CAAC,uBAAuB,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,MAAM,YAAY,GAAG,CAC1D,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;SAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAS,CAAC;SAC3B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,eAAe,GAA4B,EAAE,CAAC;IACpD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,eAAe,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACpD,CAAC;IACD,MAAM,
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../src/prepare.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,2BAA2B;IAC1C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,iBAAiB,CAAC,CAuB5B"}
|
package/dist/resolve.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { dirname, resolve } from "path";
|
|
2
2
|
import { loadAirConfig, getAirJsonPath, resolveArtifacts, } from "@pulsemcp/air-core";
|
|
3
3
|
import { loadExtensions } from "./extension-loader.js";
|
|
4
|
+
import { materializeHookXConfig } from "./hook-x-config.js";
|
|
4
5
|
/**
|
|
5
6
|
* Load the active air.json, load declared extensions to obtain catalog
|
|
6
7
|
* providers (e.g., github://), and resolve the full merged artifact tree.
|
|
@@ -25,6 +26,10 @@ export async function resolveFullArtifacts(options = {}) {
|
|
|
25
26
|
if (options.gitProtocol !== undefined) {
|
|
26
27
|
providerOptions.gitProtocol = options.gitProtocol;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
const artifacts = await resolveArtifacts(airJsonPath, {
|
|
30
|
+
providers,
|
|
31
|
+
providerOptions,
|
|
32
|
+
});
|
|
33
|
+
return materializeHookXConfig(artifacts);
|
|
29
34
|
}
|
|
30
35
|
//# sourceMappingURL=resolve.js.map
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAY5D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAuC,EAAE;IAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAE5E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;IAC/D,MAAM,eAAe,GAA4B,EAAE,CAAC;IACpD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,eAAe,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE;QACpD,SAAS;QACT,eAAe;KAChB,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulsemcp/air-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"lint": "tsc --noEmit"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@pulsemcp/air-core": "0.
|
|
32
|
+
"@pulsemcp/air-core": "0.4.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|