@pulsemcp/air-sdk 0.0.31 → 0.0.33
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init-from-repo.d.ts +5 -4
- package/dist/init-from-repo.d.ts.map +1 -1
- package/dist/init-from-repo.js +11 -5
- package/dist/init-from-repo.js.map +1 -1
- package/dist/init.d.ts +23 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +144 -8
- package/dist/init.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { normalizeGitUrl, detectRoot } from "./root-detection.js";
|
|
|
5
5
|
export { validateFile } from "./validate.js";
|
|
6
6
|
export type { ValidateFileOptions, ValidateFileResult } from "./validate.js";
|
|
7
7
|
export { initConfig } from "./init.js";
|
|
8
|
-
export type { InitConfigOptions, InitConfigResult } from "./init.js";
|
|
8
|
+
export type { InitConfigOptions, InitConfigResult, ScaffoldedFile, } from "./init.js";
|
|
9
9
|
export { initFromRepo, smartInit, InitFromRepoError } from "./init-from-repo.js";
|
|
10
10
|
export type { InitFromRepoOptions, InitFromRepoResult, InitFromRepoErrorCode, DiscoveredArtifact, SmartInitResult, } from "./init-from-repo.js";
|
|
11
11
|
export { listArtifacts, VALID_ARTIFACT_TYPES } from "./list.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,YAAY,EAEZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAEV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EAET,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,IAAI,yBAAyB,EAClD,eAAe,EAEf,gBAAgB,EAChB,eAAe,EAEf,cAAc,EAEd,UAAU,GACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
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,aAAa;AACb,YAAY;AACZ,UAAU;AACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AA0C5B,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;
|
|
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,aAAa;AACb,YAAY;AACZ,UAAU;AACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AA0C5B,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,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM5D,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"}
|
package/dist/init-from-repo.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SchemaType } from "@pulsemcp/air-core";
|
|
2
|
+
import { type InitConfigResult, type ScaffoldedFile } from "./init.js";
|
|
2
3
|
/** Error codes for `initFromRepo` failures. */
|
|
3
4
|
export type InitFromRepoErrorCode = "EXISTS" | "NO_GIT" | "NO_REMOTE" | "NO_GITHUB" | "NO_ARTIFACTS";
|
|
4
5
|
/**
|
|
@@ -38,6 +39,8 @@ export interface InitFromRepoResult {
|
|
|
38
39
|
discovered: DiscoveredArtifact[];
|
|
39
40
|
/** Whether an existing config was overwritten. */
|
|
40
41
|
overwritten: boolean;
|
|
42
|
+
/** Local index files and README scaffolded into `airDir` alongside the discovered remote URIs. */
|
|
43
|
+
scaffolded: ScaffoldedFile[];
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* Parse a git remote URL and extract the GitHub owner/repo.
|
|
@@ -79,11 +82,9 @@ export declare function initFromRepo(options?: InitFromRepoOptions): InitFromRep
|
|
|
79
82
|
/** Result from `smartInit` — discriminated by `mode`. */
|
|
80
83
|
export type SmartInitResult = ({
|
|
81
84
|
mode: "repo";
|
|
82
|
-
} & InitFromRepoResult) | {
|
|
85
|
+
} & InitFromRepoResult) | ({
|
|
83
86
|
mode: "blank";
|
|
84
|
-
|
|
85
|
-
airDir: string;
|
|
86
|
-
};
|
|
87
|
+
} & InitConfigResult);
|
|
87
88
|
/**
|
|
88
89
|
* High-level init that tries repo-based discovery first and falls back to
|
|
89
90
|
* blank scaffolding when no git context or artifacts are available.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-from-repo.d.ts","sourceRoot":"","sources":["../src/init-from-repo.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init-from-repo.d.ts","sourceRoot":"","sources":["../src/init-from-repo.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAOnB,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,WAAW,GACX,cAAc,CAAC;AAEnB;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,qBAAqB;gBAD3C,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,qBAAqB;CAK9C;AAED,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,kGAAkG;IAClG,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAaD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAaD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiCvD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,kBAAkB,EAAE,CA2DtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,kBAAkB,CA6GpB;AAED,yDAAyD;AACzD,MAAM,MAAM,eAAe,GACvB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAAC,GACvC,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAAC,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAuBxE"}
|
package/dist/init-from-repo.js
CHANGED
|
@@ -2,7 +2,7 @@ import { execFileSync } from "child_process";
|
|
|
2
2
|
import { readFileSync, existsSync, writeFileSync, mkdirSync, unlinkSync, } from "fs";
|
|
3
3
|
import { resolve, dirname } from "path";
|
|
4
4
|
import { getDefaultAirJsonPath, detectSchemaType, detectSchemaFromValue, getAllSchemaTypes, } from "@pulsemcp/air-core";
|
|
5
|
-
import { initConfig } from "./init.js";
|
|
5
|
+
import { initConfig, scaffoldLocalFiles, } from "./init.js";
|
|
6
6
|
/** Artifact types that map to air.json properties (all schema types except "air"). */
|
|
7
7
|
const ARTIFACT_TYPES = getAllSchemaTypes().filter((t) => t !== "air");
|
|
8
8
|
/**
|
|
@@ -222,8 +222,10 @@ export function initFromRepo(options) {
|
|
|
222
222
|
// Derive config name from repo name
|
|
223
223
|
const repoName = repo.split("/")[1] || "my-config";
|
|
224
224
|
const configName = repoName.replace(/[^a-zA-Z0-9_-]/g, "-");
|
|
225
|
-
// Build air.json
|
|
226
|
-
//
|
|
225
|
+
// Build air.json. Every artifact type gets a local index path so users can
|
|
226
|
+
// compose local entries on top of the discovered remote catalog without
|
|
227
|
+
// editing air.json first. Later entries win by ID, so the local path goes
|
|
228
|
+
// last and overrides the github:// URI.
|
|
227
229
|
const airJson = {
|
|
228
230
|
name: configName,
|
|
229
231
|
extensions: [
|
|
@@ -234,13 +236,16 @@ export function initFromRepo(options) {
|
|
|
234
236
|
],
|
|
235
237
|
};
|
|
236
238
|
for (const type of ARTIFACT_TYPES) {
|
|
239
|
+
const entries = [];
|
|
237
240
|
if (grouped[type]) {
|
|
238
|
-
|
|
241
|
+
entries.push(...grouped[type]);
|
|
239
242
|
}
|
|
243
|
+
entries.push(`./${type}/${type}.json`);
|
|
244
|
+
airJson[type] = entries;
|
|
240
245
|
}
|
|
241
|
-
// Write config
|
|
242
246
|
mkdirSync(airDir, { recursive: true });
|
|
243
247
|
writeFileSync(airJsonPath, JSON.stringify(airJson, null, 2) + "\n");
|
|
248
|
+
const scaffolded = scaffoldLocalFiles(airDir);
|
|
244
249
|
return {
|
|
245
250
|
airJsonPath,
|
|
246
251
|
airDir,
|
|
@@ -248,6 +253,7 @@ export function initFromRepo(options) {
|
|
|
248
253
|
branch,
|
|
249
254
|
discovered,
|
|
250
255
|
overwritten,
|
|
256
|
+
scaffolded,
|
|
251
257
|
};
|
|
252
258
|
}
|
|
253
259
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-from-repo.js","sourceRoot":"","sources":["../src/init-from-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"init-from-repo.js","sourceRoot":"","sources":["../src/init-from-repo.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts
CHANGED
|
@@ -1,17 +1,39 @@
|
|
|
1
|
+
import { type SchemaType } from "@pulsemcp/air-core";
|
|
1
2
|
export interface InitConfigOptions {
|
|
2
3
|
/** Override the default air.json path (~/.air/air.json). */
|
|
3
4
|
path?: string;
|
|
4
5
|
}
|
|
6
|
+
export interface ScaffoldedFile {
|
|
7
|
+
/** Absolute path to the file that was created. */
|
|
8
|
+
path: string;
|
|
9
|
+
/** What kind of file this is. Index files are keyed by their schema type. */
|
|
10
|
+
kind: "air" | "readme" | SchemaType;
|
|
11
|
+
}
|
|
5
12
|
export interface InitConfigResult {
|
|
6
13
|
/** Absolute path to the created air.json. */
|
|
7
14
|
airJsonPath: string;
|
|
8
15
|
/** Absolute path to the AIR config directory. */
|
|
9
16
|
airDir: string;
|
|
17
|
+
/** All files created by this init, in creation order. */
|
|
18
|
+
scaffolded: ScaffoldedFile[];
|
|
10
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Scaffold the six local artifact index files and the README in `airDir`.
|
|
22
|
+
*
|
|
23
|
+
* Idempotent: skips any file that already exists. Returns entries only for
|
|
24
|
+
* files that were actually written, in creation order. Intended to be shared
|
|
25
|
+
* between blank-mode `initConfig` and repo-mode `initFromRepo`, so that
|
|
26
|
+
* local-composition indexes always exist on disk regardless of how `air.json`
|
|
27
|
+
* was produced.
|
|
28
|
+
*/
|
|
29
|
+
export declare function scaffoldLocalFiles(airDir: string): ScaffoldedFile[];
|
|
11
30
|
/**
|
|
12
31
|
* Initialize a new AIR configuration directory.
|
|
13
32
|
*
|
|
14
|
-
*
|
|
33
|
+
* Scaffolds a ready-to-edit workspace: `air.json` pre-wired to six local
|
|
34
|
+
* index files (one per artifact type), each containing a `$schema` reference
|
|
35
|
+
* so editors give autocomplete out of the box, plus a README orienting the
|
|
36
|
+
* user to the layout.
|
|
15
37
|
*
|
|
16
38
|
* @throws Error if air.json already exists at the target path.
|
|
17
39
|
*/
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAqHD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAoBnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAkBxE"}
|
package/dist/init.js
CHANGED
|
@@ -1,10 +1,146 @@
|
|
|
1
1
|
import { writeFileSync, existsSync, mkdirSync } from "fs";
|
|
2
|
-
import { dirname } from "path";
|
|
3
|
-
import { getDefaultAirJsonPath } from "@pulsemcp/air-core";
|
|
2
|
+
import { dirname, resolve } from "path";
|
|
3
|
+
import { getAllSchemaTypes, getDefaultAirJsonPath, } from "@pulsemcp/air-core";
|
|
4
|
+
const SCHEMA_BASE_URL = "https://raw.githubusercontent.com/pulsemcp/air/main/schemas";
|
|
5
|
+
/** Artifact types that get their own index file and air.json entry. */
|
|
6
|
+
const ARTIFACT_TYPES = getAllSchemaTypes().filter((t) => t !== "air");
|
|
7
|
+
function indexFileRelPath(type) {
|
|
8
|
+
return `${type}/${type}.json`;
|
|
9
|
+
}
|
|
10
|
+
function buildAirJson() {
|
|
11
|
+
const airJson = {
|
|
12
|
+
$schema: `${SCHEMA_BASE_URL}/air.schema.json`,
|
|
13
|
+
name: "my-config",
|
|
14
|
+
description: "Personal AIR configuration",
|
|
15
|
+
};
|
|
16
|
+
for (const type of ARTIFACT_TYPES) {
|
|
17
|
+
airJson[type] = [`./${indexFileRelPath(type)}`];
|
|
18
|
+
}
|
|
19
|
+
return airJson;
|
|
20
|
+
}
|
|
21
|
+
function buildIndexFile(type) {
|
|
22
|
+
const body = {
|
|
23
|
+
$schema: `${SCHEMA_BASE_URL}/${type}.schema.json`,
|
|
24
|
+
};
|
|
25
|
+
return JSON.stringify(body, null, 2) + "\n";
|
|
26
|
+
}
|
|
27
|
+
function buildReadme() {
|
|
28
|
+
return `# My AIR configuration
|
|
29
|
+
|
|
30
|
+
This directory is your personal AIR composition point. \`air.json\` references
|
|
31
|
+
the six index files below — add entries to those files and they become
|
|
32
|
+
available to any session started via \`air start\`.
|
|
33
|
+
|
|
34
|
+
## Layout
|
|
35
|
+
|
|
36
|
+
\`\`\`
|
|
37
|
+
air.json # composition — references the indexes below
|
|
38
|
+
skills/skills.json # skills (invocable units of work)
|
|
39
|
+
references/references.json # shared reference docs attached to skills
|
|
40
|
+
mcp/mcp.json # MCP server connection configs
|
|
41
|
+
plugins/plugins.json # named groupings of skills + MCP servers + hooks
|
|
42
|
+
roots/roots.json # agent roots (per-domain workspaces)
|
|
43
|
+
hooks/hooks.json # lifecycle hooks
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
Every index file has a \`$schema\` reference, so editors like VS Code and
|
|
47
|
+
JetBrains give you autocomplete and inline validation as you type.
|
|
48
|
+
|
|
49
|
+
## Adding your first MCP server
|
|
50
|
+
|
|
51
|
+
Open \`mcp/mcp.json\` and add an entry keyed by the server name:
|
|
52
|
+
|
|
53
|
+
\`\`\`json
|
|
54
|
+
{
|
|
55
|
+
"$schema": "${SCHEMA_BASE_URL}/mcp.schema.json",
|
|
56
|
+
"github": {
|
|
57
|
+
"title": "GitHub",
|
|
58
|
+
"description": "Create and manage issues, PRs, and files in GitHub.",
|
|
59
|
+
"type": "stdio",
|
|
60
|
+
"command": "npx",
|
|
61
|
+
"args": ["-y", "@modelcontextprotocol/server-github@0.6.2"],
|
|
62
|
+
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_PERSONAL_ACCESS_TOKEN}" }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
\`\`\`
|
|
66
|
+
|
|
67
|
+
## Adding your first skill
|
|
68
|
+
|
|
69
|
+
Skills live as directories containing a \`SKILL.md\`. Point at one from
|
|
70
|
+
\`skills/skills.json\`:
|
|
71
|
+
|
|
72
|
+
\`\`\`json
|
|
73
|
+
{
|
|
74
|
+
"$schema": "${SCHEMA_BASE_URL}/skills.schema.json",
|
|
75
|
+
"deploy-staging": {
|
|
76
|
+
"title": "Deploy to Staging",
|
|
77
|
+
"description": "Deploy the current PR branch to staging for testing.",
|
|
78
|
+
"path": "skills/deploy-staging"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
\`\`\`
|
|
82
|
+
|
|
83
|
+
## Adding remote catalogs
|
|
84
|
+
|
|
85
|
+
Each array in \`air.json\` can mix local paths with remote URIs. Append a
|
|
86
|
+
\`github://\` entry after your local index to layer a team or org catalog on
|
|
87
|
+
top — later entries override earlier ones by ID:
|
|
88
|
+
|
|
89
|
+
\`\`\`json
|
|
90
|
+
{
|
|
91
|
+
"skills": [
|
|
92
|
+
"./skills/skills.json",
|
|
93
|
+
"github://acme/shared-air-config/skills/skills.json"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
\`\`\`
|
|
97
|
+
|
|
98
|
+
(Remote URIs require an appropriate catalog provider extension to be
|
|
99
|
+
installed, e.g. \`@pulsemcp/air-provider-github\`.)
|
|
100
|
+
|
|
101
|
+
## Next steps
|
|
102
|
+
|
|
103
|
+
- **\`air validate ~/.air/air.json\`** — check your config against the schemas.
|
|
104
|
+
- **\`air list\`** — see every artifact AIR has resolved.
|
|
105
|
+
- **\`air start <agent>\`** — start a session with your config loaded.
|
|
106
|
+
|
|
107
|
+
See the full docs at https://github.com/pulsemcp/air/tree/main/docs/guides.
|
|
108
|
+
`;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Scaffold the six local artifact index files and the README in `airDir`.
|
|
112
|
+
*
|
|
113
|
+
* Idempotent: skips any file that already exists. Returns entries only for
|
|
114
|
+
* files that were actually written, in creation order. Intended to be shared
|
|
115
|
+
* between blank-mode `initConfig` and repo-mode `initFromRepo`, so that
|
|
116
|
+
* local-composition indexes always exist on disk regardless of how `air.json`
|
|
117
|
+
* was produced.
|
|
118
|
+
*/
|
|
119
|
+
export function scaffoldLocalFiles(airDir) {
|
|
120
|
+
mkdirSync(airDir, { recursive: true });
|
|
121
|
+
const scaffolded = [];
|
|
122
|
+
for (const type of ARTIFACT_TYPES) {
|
|
123
|
+
const abs = resolve(airDir, indexFileRelPath(type));
|
|
124
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
125
|
+
if (!existsSync(abs)) {
|
|
126
|
+
writeFileSync(abs, buildIndexFile(type));
|
|
127
|
+
scaffolded.push({ path: abs, kind: type });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const readmePath = resolve(airDir, "README.md");
|
|
131
|
+
if (!existsSync(readmePath)) {
|
|
132
|
+
writeFileSync(readmePath, buildReadme());
|
|
133
|
+
scaffolded.push({ path: readmePath, kind: "readme" });
|
|
134
|
+
}
|
|
135
|
+
return scaffolded;
|
|
136
|
+
}
|
|
4
137
|
/**
|
|
5
138
|
* Initialize a new AIR configuration directory.
|
|
6
139
|
*
|
|
7
|
-
*
|
|
140
|
+
* Scaffolds a ready-to-edit workspace: `air.json` pre-wired to six local
|
|
141
|
+
* index files (one per artifact type), each containing a `$schema` reference
|
|
142
|
+
* so editors give autocomplete out of the box, plus a README orienting the
|
|
143
|
+
* user to the layout.
|
|
8
144
|
*
|
|
9
145
|
* @throws Error if air.json already exists at the target path.
|
|
10
146
|
*/
|
|
@@ -15,10 +151,10 @@ export function initConfig(options) {
|
|
|
15
151
|
throw new Error(`${airJsonPath} already exists.`);
|
|
16
152
|
}
|
|
17
153
|
mkdirSync(airDir, { recursive: true });
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
return { airJsonPath, airDir };
|
|
154
|
+
const scaffolded = [];
|
|
155
|
+
writeFileSync(airJsonPath, JSON.stringify(buildAirJson(), null, 2) + "\n");
|
|
156
|
+
scaffolded.push({ path: airJsonPath, kind: "air" });
|
|
157
|
+
scaffolded.push(...scaffoldLocalFiles(airDir));
|
|
158
|
+
return { airJsonPath, airDir, scaffolded };
|
|
23
159
|
}
|
|
24
160
|
//# sourceMappingURL=init.js.map
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulsemcp/air-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
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.0.
|
|
32
|
+
"@pulsemcp/air-core": "0.0.33"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|