@pulsemcp/air-cli 0.0.2 → 0.0.3

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,3 +1,21 @@
1
1
  import { Command } from "commander";
2
+ import { type RootEntry } from "@pulsemcp/air-core";
3
+ /**
4
+ * Normalize a git remote URL to a comparable form: "github.com/owner/repo"
5
+ * Handles HTTPS, SSH (git@), and trailing .git.
6
+ */
7
+ export declare function normalizeGitUrl(url: string): string;
8
+ /**
9
+ * Detect which root matches the current git repository and subdirectory.
10
+ *
11
+ * Algorithm:
12
+ * 1. Get the git remote URL and relative subdirectory from targetDir
13
+ * 2. Normalize the URL and compare against all root URLs
14
+ * 3. Among roots with matching URLs, pick the best subdirectory match:
15
+ * - Exact match (root.subdirectory === current subdirectory)
16
+ * - Longest prefix match
17
+ * - Root-level (no subdirectory / empty subdirectory)
18
+ */
19
+ export declare function detectRoot(roots: Record<string, RootEntry>, targetDir: string): RootEntry | undefined;
2
20
  export declare function prepareCommand(): Command;
3
21
  //# sourceMappingURL=prepare.d.ts.map
@@ -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,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAG5B;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkBnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAChC,SAAS,EAAE,MAAM,GAChB,SAAS,GAAG,SAAS,CAkEvB;AAED,wBAAgB,cAAc,IAAI,OAAO,CA2GxC"}
@@ -1,12 +1,109 @@
1
1
  import { Command } from "commander";
2
- import { dirname } from "path";
2
+ import { execSync } from "child_process";
3
+ import { resolve } from "path";
3
4
  import { getAirJsonPath, resolveArtifacts, } from "@pulsemcp/air-core";
4
5
  import { findAdapter, listAvailableAdapters } from "../adapter-registry.js";
6
+ /**
7
+ * Normalize a git remote URL to a comparable form: "github.com/owner/repo"
8
+ * Handles HTTPS, SSH (git@), and trailing .git.
9
+ */
10
+ export function normalizeGitUrl(url) {
11
+ let normalized = url.trim();
12
+ // SSH format: git@github.com:owner/repo.git → github.com/owner/repo
13
+ const sshMatch = normalized.match(/^git@([^:]+):(.+)$/);
14
+ if (sshMatch) {
15
+ normalized = `${sshMatch[1]}/${sshMatch[2]}`;
16
+ }
17
+ else {
18
+ // HTTPS format: https://github.com/owner/repo.git → github.com/owner/repo
19
+ normalized = normalized.replace(/^https?:\/\//, "");
20
+ }
21
+ // Strip trailing .git
22
+ normalized = normalized.replace(/\.git$/, "");
23
+ // Strip trailing slash
24
+ normalized = normalized.replace(/\/$/, "");
25
+ return normalized;
26
+ }
27
+ /**
28
+ * Detect which root matches the current git repository and subdirectory.
29
+ *
30
+ * Algorithm:
31
+ * 1. Get the git remote URL and relative subdirectory from targetDir
32
+ * 2. Normalize the URL and compare against all root URLs
33
+ * 3. Among roots with matching URLs, pick the best subdirectory match:
34
+ * - Exact match (root.subdirectory === current subdirectory)
35
+ * - Longest prefix match
36
+ * - Root-level (no subdirectory / empty subdirectory)
37
+ */
38
+ export function detectRoot(roots, targetDir) {
39
+ let remoteUrl;
40
+ let relativeDir;
41
+ try {
42
+ remoteUrl = execSync("git remote get-url origin", {
43
+ cwd: targetDir,
44
+ stdio: ["pipe", "pipe", "pipe"],
45
+ encoding: "utf-8",
46
+ }).trim();
47
+ }
48
+ catch {
49
+ // Not in a git repo or no remote — can't auto-detect
50
+ return undefined;
51
+ }
52
+ try {
53
+ relativeDir = execSync("git rev-parse --show-prefix", {
54
+ cwd: targetDir,
55
+ stdio: ["pipe", "pipe", "pipe"],
56
+ encoding: "utf-8",
57
+ }).trim();
58
+ // Remove trailing slash
59
+ relativeDir = relativeDir.replace(/\/$/, "");
60
+ }
61
+ catch {
62
+ relativeDir = "";
63
+ }
64
+ const normalizedRemote = normalizeGitUrl(remoteUrl);
65
+ // Find all roots whose URL matches this repo
66
+ const matchingRoots = [];
67
+ for (const root of Object.values(roots)) {
68
+ if (!root.url)
69
+ continue;
70
+ const normalizedRootUrl = normalizeGitUrl(root.url);
71
+ if (normalizedRemote === normalizedRootUrl) {
72
+ matchingRoots.push(root);
73
+ }
74
+ }
75
+ if (matchingRoots.length === 0)
76
+ return undefined;
77
+ // Find best subdirectory match
78
+ // Priority: exact match → longest prefix → root-level (no/empty subdirectory)
79
+ const rootSubdir = (r) => (r.subdirectory || "").replace(/\/$/, "");
80
+ // 1. Exact match
81
+ const exact = matchingRoots.find((r) => rootSubdir(r) === relativeDir);
82
+ if (exact)
83
+ return exact;
84
+ // 2. Longest prefix match (current dir is within root's subdirectory)
85
+ const prefixMatches = matchingRoots
86
+ .filter((r) => {
87
+ const sub = rootSubdir(r);
88
+ if (!sub)
89
+ return false;
90
+ return relativeDir.startsWith(sub + "/") || relativeDir === sub;
91
+ })
92
+ .sort((a, b) => rootSubdir(b).length - rootSubdir(a).length);
93
+ if (prefixMatches.length > 0)
94
+ return prefixMatches[0];
95
+ // 3. Root-level fallback (root with no subdirectory)
96
+ const rootLevel = matchingRoots.find((r) => !rootSubdir(r));
97
+ if (rootLevel)
98
+ return rootLevel;
99
+ // 4. Any matching root as last resort
100
+ return matchingRoots[0];
101
+ }
5
102
  export function prepareCommand() {
6
103
  const cmd = new Command("prepare")
7
104
  .description("Prepare a target directory for an agent session (write .mcp.json, inject skills) without starting the agent")
8
105
  .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)")
106
+ .option("--root <name>", "Root to activate (auto-detected from cwd when omitted)")
10
107
  .option("--target <dir>", "Target directory to prepare (defaults to cwd)", process.cwd())
11
108
  .option("--adapter <name>", "Agent adapter to use (e.g., claude)", "claude")
12
109
  .option("--skills <ids>", "Comma-separated skill IDs (overrides root defaults)")
@@ -30,8 +127,7 @@ export function prepareCommand() {
30
127
  }
31
128
  // Load and resolve all artifacts
32
129
  const artifacts = await resolveArtifacts(airJsonPath);
33
- const baseDir = dirname(airJsonPath);
34
- // Resolve root if specified
130
+ // Resolve root: explicit --root, auto-detect, or none
35
131
  let root;
36
132
  if (options.root) {
37
133
  root = artifacts.roots[options.root];
@@ -40,6 +136,14 @@ export function prepareCommand() {
40
136
  process.exit(1);
41
137
  }
42
138
  }
139
+ else {
140
+ // Auto-detect from target directory's git context
141
+ const targetDir = resolve(options.target);
142
+ root = detectRoot(artifacts.roots, targetDir);
143
+ if (root) {
144
+ console.error(`Auto-detected root: ${root.name}`);
145
+ }
146
+ }
43
147
  // Parse overrides
44
148
  const skillOverrides = options.skills
45
149
  ? options.skills.split(",").map((s) => s.trim())
@@ -50,7 +154,6 @@ export function prepareCommand() {
50
154
  // Prepare the session
51
155
  const result = await adapter.prepareSession(artifacts, options.target, {
52
156
  root,
53
- baseDir,
54
157
  skillOverrides,
55
158
  mcpServerOverrides,
56
159
  });
@@ -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":"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"}
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.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -26,8 +26,8 @@
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-core": "0.0.3",
30
+ "@pulsemcp/air-adapter-claude": "0.0.3",
31
31
  "commander": "^12.1.0",
32
32
  "chalk": "^5.3.0"
33
33
  },