@pulsemcp/air-cli 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,WAAW,IAAI,OAAO,CA4DrC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,WAAW,IAAI,OAAO,CAuBrC"}
@@ -1,51 +1,22 @@
1
1
  import { Command } from "commander";
2
- import { writeFileSync, existsSync, mkdirSync } from "fs";
3
- import { resolve, dirname } from "path";
4
- import { getDefaultAirJsonPath } from "@pulsemcp/air-core";
2
+ import { initConfig } from "@pulsemcp/air-sdk";
5
3
  export function initCommand() {
6
4
  const cmd = new Command("init")
7
5
  .description("Initialize a new AIR configuration at ~/.air/")
8
6
  .action(() => {
9
- const airJsonPath = getDefaultAirJsonPath();
10
- const airDir = dirname(airJsonPath);
11
- if (existsSync(airJsonPath)) {
12
- console.error(`Error: ${airJsonPath} already exists.`);
13
- process.exit(1);
14
- }
15
- mkdirSync(airDir, { recursive: true });
16
- const airJson = {
17
- name: "my-config",
18
- description: "",
19
- skills: ["./skills/skills.json"],
20
- references: ["./references/references.json"],
21
- mcp: ["./mcp/mcp.json"],
22
- plugins: ["./plugins/plugins.json"],
23
- roots: ["./roots/roots.json"],
24
- hooks: ["./hooks/hooks.json"],
25
- };
26
- const emptyIndex = () => "{}\n";
27
- writeFileSync(airJsonPath, JSON.stringify(airJson, null, 2) + "\n");
28
- const files = [
29
- ["skills/skills.json", emptyIndex()],
30
- ["references/references.json", emptyIndex()],
31
- ["mcp/mcp.json", emptyIndex()],
32
- ["plugins/plugins.json", emptyIndex()],
33
- ["roots/roots.json", emptyIndex()],
34
- ["hooks/hooks.json", emptyIndex()],
35
- ];
36
- for (const [filename, content] of files) {
37
- const filePath = resolve(airDir, filename);
38
- mkdirSync(dirname(filePath), { recursive: true });
39
- if (!existsSync(filePath)) {
40
- writeFileSync(filePath, content);
7
+ try {
8
+ const result = initConfig();
9
+ console.log(`Initialized AIR configuration at ${result.airDir}/:`);
10
+ for (const file of result.files) {
11
+ console.log(` ${file}`);
41
12
  }
13
+ console.log("\nEdit air.json to configure your setup. Run 'air validate ~/.air/air.json' to check.");
42
14
  }
43
- console.log(`Initialized AIR configuration at ${airDir}/:`);
44
- console.log(" air.json");
45
- for (const [filename] of files) {
46
- console.log(` ${filename}`);
15
+ catch (err) {
16
+ const message = err instanceof Error ? err.message : "Unknown error";
17
+ console.error(`Error: ${message}`);
18
+ process.exit(1);
47
19
  }
48
- console.log("\nEdit air.json to configure your setup. Run 'air validate ~/.air/air.json' to check.");
49
20
  });
50
21
  return cmd;
51
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;SAC5B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,WAAW,kBAAkB,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,CAAC,sBAAsB,CAAC;YAChC,UAAU,EAAE,CAAC,8BAA8B,CAAC;YAC5C,GAAG,EAAE,CAAC,gBAAgB,CAAC;YACvB,OAAO,EAAE,CAAC,wBAAwB,CAAC;YACnC,KAAK,EAAE,CAAC,oBAAoB,CAAC;YAC7B,KAAK,EAAE,CAAC,oBAAoB,CAAC;SAC9B,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;QAEhC,aAAa,CACX,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACxC,CAAC;QAEF,MAAM,KAAK,GAAuB;YAChC,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;YACpC,CAAC,4BAA4B,EAAE,UAAU,EAAE,CAAC;YAC5C,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;YAC9B,CAAC,sBAAsB,EAAE,UAAU,EAAE,CAAC;YACtC,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAC;YAClC,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAC;SACnC,CAAC;QAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;SAC5B,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAE5B,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YACnE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,WAAW,IAAI,OAAO,CAsJrC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,WAAW,IAAI,OAAO,CA8JrC"}
@@ -1,26 +1,20 @@
1
1
  import { Command } from "commander";
2
- import { getAirJsonPath, resolveArtifacts, emptyArtifacts, } from "@pulsemcp/air-core";
3
- const VALID_TYPES = [
4
- "skills",
5
- "mcp",
6
- "plugins",
7
- "roots",
8
- "hooks",
9
- "references",
10
- ];
2
+ import { listArtifacts, } from "@pulsemcp/air-sdk";
11
3
  export function listCommand() {
12
4
  const cmd = new Command("list")
13
5
  .description("List available artifacts (skills, mcp, plugins, roots, hooks, references)")
14
6
  .argument("<type>", "Artifact type to list: skills, mcp, plugins, roots, hooks, references")
15
7
  .action(async (type) => {
16
- if (!VALID_TYPES.includes(type)) {
17
- console.error(`Error: Unknown artifact type "${type}". Valid types: ${VALID_TYPES.join(", ")}`);
8
+ let result;
9
+ try {
10
+ result = await listArtifacts(type);
11
+ }
12
+ catch (err) {
13
+ const message = err instanceof Error ? err.message : "Unknown error";
14
+ console.error(`Error: ${message}`);
18
15
  process.exit(1);
19
16
  }
20
- const airJsonPath = getAirJsonPath();
21
- const artifacts = airJsonPath
22
- ? await resolveArtifacts(airJsonPath)
23
- : emptyArtifacts();
17
+ const { artifacts } = result;
24
18
  const listType = type;
25
19
  switch (listType) {
26
20
  case "skills": {
@@ -68,9 +62,18 @@ export function listCommand() {
68
62
  console.log(`Plugins (${entries.length}):\n`);
69
63
  for (const [id, plugin] of entries) {
70
64
  const title = plugin.title ? ` (${plugin.title})` : "";
71
- console.log(` ${id}${title}`);
65
+ const version = plugin.version ? ` v${plugin.version}` : "";
66
+ console.log(` ${id}${title}${version}`);
72
67
  console.log(` ${plugin.description}`);
73
- console.log(` Command: ${plugin.command} ${(plugin.args || []).join(" ")}`);
68
+ if (plugin.skills?.length) {
69
+ console.log(` Skills: ${plugin.skills.join(", ")}`);
70
+ }
71
+ if (plugin.mcp_servers?.length) {
72
+ console.log(` MCP Servers: ${plugin.mcp_servers.join(", ")}`);
73
+ }
74
+ if (plugin.hooks?.length) {
75
+ console.log(` Hooks: ${plugin.hooks.join(", ")}`);
76
+ }
74
77
  console.log();
75
78
  }
76
79
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,cAAc,IAAI,OAAO,CAsGxC"}
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,cAAc,IAAI,OAAO,CAmExC"}
@@ -1,61 +1,39 @@
1
1
  import { Command } from "commander";
2
- import { dirname } from "path";
3
- import { getAirJsonPath, resolveArtifacts, } from "@pulsemcp/air-core";
4
- import { findAdapter, listAvailableAdapters } from "../adapter-registry.js";
2
+ import { prepareSession } from "@pulsemcp/air-sdk";
5
3
  export function prepareCommand() {
6
4
  const cmd = new Command("prepare")
7
5
  .description("Prepare a target directory for an agent session (write .mcp.json, inject skills) without starting the agent")
8
6
  .option("--config <path>", "Path to air.json (defaults to AIR_CONFIG env or ~/.air/air.json)")
9
- .option("--root <name>", "Root to activate (filters artifacts by root defaults)")
7
+ .option("--root <name>", "Root to activate (auto-detected from cwd when omitted)")
10
8
  .option("--target <dir>", "Target directory to prepare (defaults to cwd)", process.cwd())
11
9
  .option("--adapter <name>", "Agent adapter to use (e.g., claude)", "claude")
12
10
  .option("--skills <ids>", "Comma-separated skill IDs (overrides root defaults)")
13
11
  .option("--mcp-servers <ids>", "Comma-separated MCP server IDs (overrides root defaults)")
14
12
  .action(async (options) => {
15
- // Find the adapter
16
- const adapter = await findAdapter(options.adapter);
17
- if (!adapter) {
18
- const available = await listAvailableAdapters();
19
- const availableMsg = available.length > 0
20
- ? `Available: ${available.join(", ")}`
21
- : "No adapters installed";
22
- console.error(`Error: No adapter found for "${options.adapter}". ${availableMsg}.`);
23
- process.exit(1);
13
+ try {
14
+ const result = await prepareSession({
15
+ config: options.config,
16
+ root: options.root,
17
+ target: options.target,
18
+ adapter: options.adapter,
19
+ skills: options.skills
20
+ ? options.skills.split(",").map((s) => s.trim())
21
+ : undefined,
22
+ mcpServers: options.mcpServers
23
+ ? options.mcpServers.split(",").map((s) => s.trim())
24
+ : undefined,
25
+ });
26
+ if (result.rootAutoDetected && result.root) {
27
+ console.error(`Auto-detected root: ${result.root.name}`);
28
+ }
29
+ // Output structured JSON to stdout for orchestrator consumption
30
+ console.log(JSON.stringify(result.session, null, 2));
24
31
  }
25
- // Resolve air.json path
26
- const airJsonPath = options.config || getAirJsonPath();
27
- if (!airJsonPath) {
28
- console.error("Error: No air.json found. Specify --config or set AIR_CONFIG env var.");
32
+ catch (err) {
33
+ const message = err instanceof Error ? err.message : "Unknown error";
34
+ console.error(`Error: ${message}`);
29
35
  process.exit(1);
30
36
  }
31
- // Load and resolve all artifacts
32
- const artifacts = await resolveArtifacts(airJsonPath);
33
- const baseDir = dirname(airJsonPath);
34
- // Resolve root if specified
35
- let root;
36
- if (options.root) {
37
- root = artifacts.roots[options.root];
38
- if (!root) {
39
- console.error(`Error: Root "${options.root}" not found. Available roots: ${Object.keys(artifacts.roots).join(", ") || "(none)"}`);
40
- process.exit(1);
41
- }
42
- }
43
- // Parse overrides
44
- const skillOverrides = options.skills
45
- ? options.skills.split(",").map((s) => s.trim())
46
- : undefined;
47
- const mcpServerOverrides = options.mcpServers
48
- ? options.mcpServers.split(",").map((s) => s.trim())
49
- : undefined;
50
- // Prepare the session
51
- const result = await adapter.prepareSession(artifacts, options.target, {
52
- root,
53
- baseDir,
54
- skillOverrides,
55
- mcpServerOverrides,
56
- });
57
- // Output structured JSON to stdout for orchestrator consumption
58
- console.log(JSON.stringify(result, null, 2));
59
37
  });
60
38
  return cmd;
61
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;SAC/B,WAAW,CACV,6GAA6G,CAC9G;SACA,MAAM,CACL,iBAAiB,EACjB,kEAAkE,CACnE;SACA,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;SACjF,MAAM,CACL,gBAAgB,EAChB,+CAA+C,EAC/C,OAAO,CAAC,GAAG,EAAE,CACd;SACA,MAAM,CACL,kBAAkB,EAClB,qCAAqC,EACrC,QAAQ,CACT;SACA,MAAM,CACL,gBAAgB,EAChB,qDAAqD,CACtD;SACA,MAAM,CACL,qBAAqB,EACrB,0DAA0D,CAC3D;SACA,MAAM,CACL,KAAK,EAAE,OAON,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACpB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChD,CAAC,CAAC,SAAS;gBACb,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC5B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpD,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,gEAAgE;YAChE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CACF,CAAC;IAEJ,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,YAAY,IAAI,OAAO,CAkFtC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,YAAY,IAAI,OAAO,CAwDtC"}
@@ -1,6 +1,5 @@
1
1
  import { Command } from "commander";
2
- import { getAirJsonPath, resolveArtifacts, emptyArtifacts, } from "@pulsemcp/air-core";
3
- import { findAdapter, listAvailableAdapters } from "../adapter-registry.js";
2
+ import { startSession, } from "@pulsemcp/air-sdk";
4
3
  export function startCommand() {
5
4
  const cmd = new Command("start")
6
5
  .description("Start an agent session with AIR configs loaded")
@@ -9,48 +8,31 @@ export function startCommand() {
9
8
  .option("--dry-run", "Show what would be activated without starting")
10
9
  .option("--skip-confirmation", "Don't prompt for confirmation before starting")
11
10
  .action(async (agent, options) => {
12
- // Try to find the adapter
13
- const adapter = await findAdapter(agent);
14
- if (!adapter) {
15
- const available = await listAvailableAdapters();
16
- const availableMsg = available.length > 0
17
- ? `Available: ${available.join(", ")}`
18
- : "No adapters installed";
19
- console.error(`Error: No adapter found for "${agent}". ${availableMsg}.\n` +
20
- `Install an adapter: npm install @pulsemcp/air-adapter-${agent}`);
21
- process.exit(1);
11
+ let result;
12
+ try {
13
+ result = await startSession(agent, {
14
+ root: options.root,
15
+ checkAvailability: !options.dryRun,
16
+ });
22
17
  }
23
- // Load air.json
24
- const airJsonPath = getAirJsonPath();
25
- const artifacts = airJsonPath
26
- ? await resolveArtifacts(airJsonPath)
27
- : emptyArtifacts();
28
- // Resolve root if specified
29
- let root;
30
- if (options.root) {
31
- root = artifacts.roots[options.root];
32
- if (!root) {
33
- console.error(`Error: Root "${options.root}" not found. Available roots: ${Object.keys(artifacts.roots).join(", ") || "(none)"}`);
34
- process.exit(1);
35
- }
18
+ catch (err) {
19
+ const message = err instanceof Error ? err.message : "Unknown error";
20
+ console.error(`Error: ${message}`);
21
+ process.exit(1);
36
22
  }
37
- // Generate config
38
- const sessionConfig = adapter.generateConfig(artifacts, root);
39
23
  // Dry run
40
24
  if (options.dryRun) {
41
- printDryRun(agent, artifacts, root);
25
+ printDryRun(agent, result.artifacts, result.root);
42
26
  process.exit(0);
43
27
  }
44
28
  // Check if agent is available
45
- const available = await adapter.isAvailable();
46
- if (!available) {
47
- console.error(`Error: ${adapter.displayName} is not installed or not in PATH.`);
29
+ if (!result.agentAvailable) {
30
+ console.error(`Error: ${result.adapterDisplayName} is not installed or not in PATH.`);
48
31
  process.exit(1);
49
32
  }
50
- printDryRun(agent, artifacts, root);
51
- const startCmd = adapter.buildStartCommand(sessionConfig);
52
- console.log(`\nStarting ${adapter.displayName}...`);
53
- console.log(`Command: ${startCmd.command} ${startCmd.args.join(" ")}`);
33
+ printDryRun(agent, result.artifacts, result.root);
34
+ console.log(`\nStarting ${result.adapterDisplayName}...`);
35
+ console.log(`Command: ${result.startCommand.command} ${result.startCommand.args.join(" ")}`);
54
36
  });
55
37
  return cmd;
56
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,eAAe,IAAI,OAAO,CA2EzC"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,eAAe,IAAI,OAAO,CAoCzC"}
@@ -1,59 +1,31 @@
1
1
  import { Command } from "commander";
2
- import { readFileSync } from "fs";
3
- import { resolve } from "path";
4
- import { detectSchemaType, detectSchemaFromValue, isValidSchemaType, validateJson, } from "@pulsemcp/air-core";
2
+ import { validateFile } from "@pulsemcp/air-sdk";
5
3
  export function validateCommand() {
6
4
  const cmd = new Command("validate")
7
5
  .description("Validate a JSON file against its AIR schema")
8
6
  .argument("<file>", "Path to the JSON file to validate")
9
7
  .option("--schema <type>", "Override schema detection (air, skills, references, mcp, plugins, roots, hooks)")
10
8
  .action((file, options) => {
11
- const filePath = resolve(process.cwd(), file);
12
- let data;
13
9
  try {
14
- const content = readFileSync(filePath, "utf-8");
15
- data = JSON.parse(content);
16
- }
17
- catch (err) {
18
- const message = err instanceof Error ? err.message : "Unknown error";
19
- console.error(`Error: Could not read or parse "${file}": ${message}`);
20
- process.exit(1);
21
- }
22
- // Determine schema type: --schema flag > $schema in JSON > filename substring
23
- let schemaType = null;
24
- if (options.schema) {
25
- if (!isValidSchemaType(options.schema)) {
26
- console.error(`Error: Unknown schema type "${options.schema}". Valid types: air, skills, references, mcp, plugins, roots, hooks`);
27
- process.exit(1);
10
+ const result = validateFile(file, { schema: options.schema });
11
+ if (result.valid) {
12
+ console.log(`\u2713 ${file} is valid (schema: ${result.schemaType})`);
13
+ process.exit(0);
28
14
  }
29
- schemaType = options.schema;
30
- }
31
- if (!schemaType &&
32
- data &&
33
- typeof data === "object" &&
34
- !Array.isArray(data)) {
35
- const schemaValue = data.$schema;
36
- if (typeof schemaValue === "string") {
37
- schemaType = detectSchemaFromValue(schemaValue);
15
+ else {
16
+ console.error(`\u2717 ${file} has validation errors (schema: ${result.schemaType}):`);
17
+ for (const error of result.validation.errors) {
18
+ console.error(` ${error.path}: ${error.message}`);
19
+ }
20
+ process.exit(1);
38
21
  }
39
22
  }
40
- if (!schemaType) {
41
- schemaType = detectSchemaType(file);
42
- }
43
- if (!schemaType) {
44
- console.error(`Error: Could not detect schema type for "${file}". Use --schema to specify.`);
45
- process.exit(1);
46
- }
47
- const result = validateJson(data, schemaType);
48
- if (result.valid) {
49
- console.log(`\u2713 ${file} is valid (schema: ${schemaType})`);
50
- process.exit(0);
51
- }
52
- else {
53
- console.error(`\u2717 ${file} has validation errors (schema: ${schemaType}):`);
54
- for (const error of result.errors) {
55
- console.error(` ${error.path}: ${error.message}`);
23
+ catch (err) {
24
+ let message = err instanceof Error ? err.message : "Unknown error";
25
+ if (message.includes("Could not detect schema type")) {
26
+ message += " Use --schema to specify.";
56
27
  }
28
+ console.error(`Error: ${message}`);
57
29
  process.exit(1);
58
30
  }
59
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SAChC,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACvD,MAAM,CACL,iBAAiB,EACjB,iFAAiF,CAClF;SACA,MAAM,CAAC,CAAC,IAAY,EAAE,OAA4B,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAE9D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,sBAAsB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,UAAU,IAAI,mCAAmC,MAAM,CAAC,UAAU,IAAI,CACvE,CAAC;gBACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,GACT,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;gBACrD,OAAO,IAAI,2BAA2B,CAAC;YACzC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ const program = new Command();
9
9
  program
10
10
  .name("air")
11
11
  .description("AIR \u2014 Agent Infrastructure Repository CLI")
12
- .version("0.0.2");
12
+ .version("0.0.3");
13
13
  program.addCommand(validateCommand());
14
14
  program.addCommand(startCommand());
15
15
  program.addCommand(prepareCommand());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pulsemcp/air-cli",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -26,8 +26,7 @@
26
26
  "lint": "tsc --noEmit"
27
27
  },
28
28
  "dependencies": {
29
- "@pulsemcp/air-core": "0.0.2",
30
- "@pulsemcp/air-adapter-claude": "0.0.2",
29
+ "@pulsemcp/air-sdk": "0.0.4",
31
30
  "commander": "^12.1.0",
32
31
  "chalk": "^5.3.0"
33
32
  },
@@ -1,11 +0,0 @@
1
- import type { AgentAdapter } from "@pulsemcp/air-core";
2
- /**
3
- * Find an adapter by agent name.
4
- * Returns null if the adapter package isn't installed.
5
- */
6
- export declare function findAdapter(name: string): Promise<AgentAdapter | null>;
7
- /**
8
- * List all available adapter names (installed packages only).
9
- */
10
- export declare function listAvailableAdapters(): Promise<string[]>;
11
- //# sourceMappingURL=adapter-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter-registry.d.ts","sourceRoot":"","sources":["../src/adapter-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAUrE;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsB9B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW/D"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Known adapter packages. The CLI tries to dynamically import each one.
3
- * If the package is installed, its adapter is available. If not, it's skipped.
4
- */
5
- const KNOWN_ADAPTERS = [
6
- { name: "claude", packageName: "@pulsemcp/air-adapter-claude" },
7
- ];
8
- /**
9
- * Find an adapter by agent name.
10
- * Returns null if the adapter package isn't installed.
11
- */
12
- export async function findAdapter(name) {
13
- // Check known adapters first
14
- for (const known of KNOWN_ADAPTERS) {
15
- if (known.name === name) {
16
- try {
17
- const mod = await import(known.packageName);
18
- const ext = mod.default;
19
- return ext?.adapter ?? null;
20
- }
21
- catch {
22
- return null;
23
- }
24
- }
25
- }
26
- // Try convention-based package name: @pulsemcp/air-adapter-{name}
27
- try {
28
- const mod = await import(`@pulsemcp/air-adapter-${name}`);
29
- const ext = mod.default;
30
- return ext?.adapter ?? null;
31
- }
32
- catch {
33
- return null;
34
- }
35
- }
36
- /**
37
- * List all available adapter names (installed packages only).
38
- */
39
- export async function listAvailableAdapters() {
40
- const available = [];
41
- for (const known of KNOWN_ADAPTERS) {
42
- try {
43
- await import(known.packageName);
44
- available.push(known.name);
45
- }
46
- catch {
47
- // Not installed
48
- }
49
- }
50
- return available;
51
- }
52
- //# sourceMappingURL=adapter-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter-registry.js","sourceRoot":"","sources":["../src/adapter-registry.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,cAAc,GAA4C;IAC9D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;CAChE,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY;IAEZ,6BAA6B;IAC7B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAmC,CAAC;gBACpD,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,OAAmC,CAAC;QACpD,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}