@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;
|
|
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"}
|
package/dist/commands/prepare.js
CHANGED
|
@@ -1,12 +1,109 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
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 (
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,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,
|
|
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.
|
|
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.
|
|
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.
|
|
30
|
-
"@pulsemcp/air-adapter-claude": "0.0.
|
|
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
|
},
|