@kanon-pm/setup 0.3.0 → 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/auth.d.ts +22 -8
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +162 -18
- package/dist/auth.js.map +1 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -42
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +15 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +66 -0
- package/dist/mcp-config.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/auth.d.ts
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
apiUrl: string;
|
|
3
|
-
apiKey: string;
|
|
4
|
-
}
|
|
1
|
+
import type { AuthResult, AuthDeps, PlatformContext } from "./types.js";
|
|
5
2
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* Check if a URL points to a localhost address.
|
|
4
|
+
* Matches: localhost, 127.0.0.1, ::1, 0.0.0.0
|
|
5
|
+
*/
|
|
6
|
+
export declare function isLocalhost(url: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Auto-generate an API key by logging in with dev credentials.
|
|
9
|
+
* Only works against localhost URLs — returns null for remote or on any error.
|
|
10
|
+
*/
|
|
11
|
+
export declare function autoGenerateApiKey(apiUrl: string, fetchFn?: typeof globalThis.fetch): Promise<string | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve API URL and key with a 5-step cascade:
|
|
14
|
+
* 1. CLI flags
|
|
15
|
+
* 2. Environment variables
|
|
16
|
+
* 3. Existing MCP config extraction
|
|
17
|
+
* 4. Auto-generation (localhost only)
|
|
18
|
+
* 5. Interactive prompt
|
|
19
|
+
*
|
|
20
|
+
* URL is resolved first (steps 1-5), then key (steps 1-5),
|
|
21
|
+
* because auto-generating a key requires a resolved URL.
|
|
8
22
|
*/
|
|
9
23
|
export declare function resolveAuth(options: {
|
|
10
24
|
apiUrl?: string;
|
|
11
25
|
apiKey?: string;
|
|
12
|
-
|
|
13
|
-
|
|
26
|
+
yes?: boolean;
|
|
27
|
+
}, ctx: PlatformContext, deps?: AuthDeps): Promise<AuthResult>;
|
|
14
28
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGxE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAchD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,GAClD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsCxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5D,GAAG,EAAE,eAAe,EACpB,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,UAAU,CAAC,CAgHrB"}
|
package/dist/auth.js
CHANGED
|
@@ -1,33 +1,177 @@
|
|
|
1
1
|
// ─── Auth Resolution ─────────────────────────────────────────────────────────
|
|
2
|
-
import
|
|
2
|
+
import { input, password } from "@inquirer/prompts";
|
|
3
|
+
import { extractExistingAuth } from "./mcp-config.js";
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
5
|
+
* Check if a URL points to a localhost address.
|
|
6
|
+
* Matches: localhost, 127.0.0.1, ::1, 0.0.0.0
|
|
6
7
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export function isLocalhost(url) {
|
|
9
|
+
try {
|
|
10
|
+
const parsed = new URL(url);
|
|
11
|
+
const host = parsed.hostname;
|
|
12
|
+
return (host === "localhost" ||
|
|
13
|
+
host === "127.0.0.1" ||
|
|
14
|
+
host === "::1" ||
|
|
15
|
+
host === "[::1]" ||
|
|
16
|
+
host === "0.0.0.0");
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Auto-generate an API key by logging in with dev credentials.
|
|
24
|
+
* Only works against localhost URLs — returns null for remote or on any error.
|
|
25
|
+
*/
|
|
26
|
+
export async function autoGenerateApiKey(apiUrl, fetchFn = globalThis.fetch) {
|
|
27
|
+
if (!isLocalhost(apiUrl)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
// Step 1: Login with dev credentials
|
|
32
|
+
const loginResp = await fetchFn(`${apiUrl}/api/auth/login`, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
headers: { "Content-Type": "application/json" },
|
|
35
|
+
body: JSON.stringify({
|
|
36
|
+
email: "dev@kanon.io",
|
|
37
|
+
password: "Password1!",
|
|
38
|
+
workspaceId: "kanon-dev",
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
if (!loginResp.ok)
|
|
42
|
+
return null;
|
|
43
|
+
const loginData = (await loginResp.json());
|
|
44
|
+
const accessToken = loginData.accessToken;
|
|
45
|
+
if (!accessToken)
|
|
46
|
+
return null;
|
|
47
|
+
// Step 2: Generate API key
|
|
48
|
+
const keyResp = await fetchFn(`${apiUrl}/api/auth/api-key`, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
51
|
+
});
|
|
52
|
+
if (!keyResp.ok)
|
|
53
|
+
return null;
|
|
54
|
+
const keyData = (await keyResp.json());
|
|
55
|
+
return keyData.apiKey ?? null;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve API URL and key with a 5-step cascade:
|
|
63
|
+
* 1. CLI flags
|
|
64
|
+
* 2. Environment variables
|
|
65
|
+
* 3. Existing MCP config extraction
|
|
66
|
+
* 4. Auto-generation (localhost only)
|
|
67
|
+
* 5. Interactive prompt
|
|
68
|
+
*
|
|
69
|
+
* URL is resolved first (steps 1-5), then key (steps 1-5),
|
|
70
|
+
* because auto-generating a key requires a resolved URL.
|
|
71
|
+
*/
|
|
72
|
+
export async function resolveAuth(options, ctx, deps) {
|
|
73
|
+
const _extractExisting = deps?.extractExisting ?? extractExistingAuth;
|
|
74
|
+
const _autoGenerateKey = deps?.autoGenerateKey ?? autoGenerateApiKey;
|
|
75
|
+
const _promptUrl = deps?.promptUrl ?? defaultPromptUrl;
|
|
76
|
+
const _promptKey = deps?.promptKey ?? defaultPromptKey;
|
|
77
|
+
const _fetchFn = deps?.fetchFn ?? globalThis.fetch;
|
|
78
|
+
let apiUrl;
|
|
79
|
+
let urlSource = "flag";
|
|
80
|
+
// ── Resolve URL ────────────────────────────────────────────────────
|
|
81
|
+
// Step 1: Flag
|
|
82
|
+
if (options.apiUrl) {
|
|
83
|
+
apiUrl = options.apiUrl;
|
|
84
|
+
urlSource = "flag";
|
|
85
|
+
}
|
|
86
|
+
// Step 2: Env
|
|
87
|
+
if (!apiUrl && process.env["KANON_API_URL"]) {
|
|
88
|
+
apiUrl = process.env["KANON_API_URL"];
|
|
89
|
+
urlSource = "env";
|
|
90
|
+
}
|
|
91
|
+
// Step 3: Existing config
|
|
92
|
+
if (!apiUrl) {
|
|
93
|
+
const existing = _extractExisting(ctx);
|
|
94
|
+
if (existing.apiUrl) {
|
|
95
|
+
apiUrl = existing.apiUrl;
|
|
96
|
+
urlSource = "existing-config";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Step 4: Auto-detect localhost
|
|
10
100
|
if (!apiUrl) {
|
|
11
|
-
|
|
101
|
+
try {
|
|
102
|
+
const healthResp = await _fetchFn("http://localhost:3000/health");
|
|
103
|
+
if (healthResp.ok) {
|
|
104
|
+
apiUrl = "http://localhost:3000";
|
|
105
|
+
urlSource = "auto-generated";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// localhost not running — fall through
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Step 5: Interactive prompt
|
|
113
|
+
if (!apiUrl) {
|
|
114
|
+
if (options.yes || !process.stdin.isTTY) {
|
|
115
|
+
throw new Error("API URL could not be resolved automatically. " +
|
|
116
|
+
"Provide via --api-url flag or KANON_API_URL env var.");
|
|
117
|
+
}
|
|
118
|
+
apiUrl = await _promptUrl();
|
|
119
|
+
urlSource = "prompt";
|
|
12
120
|
}
|
|
13
121
|
if (!apiUrl) {
|
|
14
122
|
throw new Error("API URL is required. Provide via --api-url, KANON_API_URL env var, or enter it when prompted.");
|
|
15
123
|
}
|
|
124
|
+
// ── Resolve Key ────────────────────────────────────────────────────
|
|
125
|
+
let apiKey;
|
|
126
|
+
let keySource = "flag";
|
|
127
|
+
// Step 1: Flag
|
|
128
|
+
if (options.apiKey) {
|
|
129
|
+
apiKey = options.apiKey;
|
|
130
|
+
keySource = "flag";
|
|
131
|
+
}
|
|
132
|
+
// Step 2: Env
|
|
133
|
+
if (!apiKey && process.env["KANON_API_KEY"]) {
|
|
134
|
+
apiKey = process.env["KANON_API_KEY"];
|
|
135
|
+
keySource = "env";
|
|
136
|
+
}
|
|
137
|
+
// Step 3: Existing config
|
|
16
138
|
if (!apiKey) {
|
|
17
|
-
|
|
139
|
+
const existing = _extractExisting(ctx);
|
|
140
|
+
if (existing.apiKey) {
|
|
141
|
+
apiKey = existing.apiKey;
|
|
142
|
+
keySource = "existing-config";
|
|
143
|
+
}
|
|
18
144
|
}
|
|
19
|
-
|
|
145
|
+
// Step 4: Auto-generate (localhost only)
|
|
146
|
+
if (!apiKey) {
|
|
147
|
+
const generated = await _autoGenerateKey(apiUrl);
|
|
148
|
+
if (generated) {
|
|
149
|
+
apiKey = generated;
|
|
150
|
+
keySource = "auto-generated";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Step 5: Interactive prompt
|
|
154
|
+
if (!apiKey) {
|
|
155
|
+
if (options.yes || !process.stdin.isTTY) {
|
|
156
|
+
throw new Error("API key could not be resolved automatically. " +
|
|
157
|
+
"Provide via --api-key flag or KANON_API_KEY env var.");
|
|
158
|
+
}
|
|
159
|
+
apiKey = await _promptKey();
|
|
160
|
+
keySource = "prompt";
|
|
161
|
+
}
|
|
162
|
+
return { apiUrl, apiKey: apiKey ?? "", urlSource, keySource };
|
|
20
163
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
164
|
+
// ── Default prompt implementations ──────────────────────────────────────────
|
|
165
|
+
async function defaultPromptUrl() {
|
|
166
|
+
return input({
|
|
167
|
+
message: "Kanon API URL:",
|
|
168
|
+
default: "http://localhost:3000",
|
|
25
169
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
170
|
+
}
|
|
171
|
+
async function defaultPromptKey() {
|
|
172
|
+
return password({
|
|
173
|
+
message: "Kanon API Key:",
|
|
174
|
+
mask: "*",
|
|
31
175
|
});
|
|
32
176
|
}
|
|
33
177
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import type { ToolDefinition, PlatformContext } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Select which tools to configure based on flags or interactive checkbox.
|
|
5
|
+
*
|
|
6
|
+
* - --tool <name> → single tool (validated against registry)
|
|
7
|
+
* - --all or --yes → all detected tools
|
|
8
|
+
* - interactive (TTY, no flags) → checkbox with all pre-selected
|
|
9
|
+
* - non-interactive (no TTY, no flags) → all detected tools
|
|
10
|
+
*/
|
|
11
|
+
export declare function selectTools(detected: ToolDefinition[], flags: {
|
|
12
|
+
tool?: string;
|
|
13
|
+
all?: boolean;
|
|
14
|
+
yes?: boolean;
|
|
15
|
+
}, isInteractive: boolean, ctx: PlatformContext, deps?: {
|
|
16
|
+
promptTools?: (choices: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
value: string;
|
|
19
|
+
checked: boolean;
|
|
20
|
+
}>) => Promise<string[]>;
|
|
21
|
+
}): Promise<ToolDefinition[]>;
|
|
3
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AA4R9E;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EACtD,aAAa,EAAE,OAAO,EACtB,GAAG,EAAE,eAAe,EACpB,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAChH,OAAO,CAAC,cAAc,EAAE,CAAC,CAoD3B"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// ─── Kanon Setup ───────────────────────────────────────────────────────────────
|
|
3
3
|
import { Command } from "commander";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
+
import { checkbox } from "@inquirer/prompts";
|
|
5
6
|
import { buildPlatformContext } from "./detect.js";
|
|
6
7
|
import { resolveAuth } from "./auth.js";
|
|
7
8
|
import { detectTools, getToolByName } from "./registry.js";
|
|
@@ -29,7 +30,8 @@ program
|
|
|
29
30
|
.option("--api-key <key>", "Kanon API key")
|
|
30
31
|
.option("--tool <name>", "Target a specific tool (claude-code, cursor, antigravity)")
|
|
31
32
|
.option("--all", "Configure all detected tools")
|
|
32
|
-
.option("--remove", "Remove Kanon configuration from tools")
|
|
33
|
+
.option("--remove", "Remove Kanon configuration from tools")
|
|
34
|
+
.option("-y, --yes", "Accept all defaults without interactive prompts");
|
|
33
35
|
program.action(async (options) => {
|
|
34
36
|
try {
|
|
35
37
|
await run(options);
|
|
@@ -43,58 +45,35 @@ program.action(async (options) => {
|
|
|
43
45
|
async function run(options) {
|
|
44
46
|
const removeMode = options.remove === true;
|
|
45
47
|
const assetsDir = getAssetsDir();
|
|
46
|
-
|
|
48
|
+
const isInteractive = !options.yes && !options.tool && !options.all && !!process.stdin.isTTY;
|
|
49
|
+
// ── 1. Platform Detection ──────────────────────────────────────────
|
|
47
50
|
const ctx = await buildPlatformContext();
|
|
51
|
+
const platformLabel = ctx.platform === "wsl" ? "WSL2" : ctx.platform.charAt(0).toUpperCase() + ctx.platform.slice(1);
|
|
52
|
+
console.log(chalk.cyan("[info]") + ` Detected platform: ${chalk.bold(platformLabel)}`);
|
|
48
53
|
if (ctx.platform === "wsl") {
|
|
49
54
|
if (ctx.winHome) {
|
|
50
55
|
console.log(chalk.cyan("[info]") +
|
|
51
|
-
`
|
|
56
|
+
` Windows home: ${chalk.bold(ctx.winHome)}`);
|
|
52
57
|
}
|
|
53
58
|
else {
|
|
54
59
|
console.log(chalk.yellow("[warn]") +
|
|
55
60
|
" WSL detected but could not resolve Windows home directory");
|
|
56
61
|
}
|
|
57
62
|
}
|
|
58
|
-
// ──
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
throw new Error(`Unknown tool: '${options.tool}'. Supported: claude-code, cursor, antigravity`);
|
|
64
|
-
}
|
|
65
|
-
// Check if the tool supports the current platform
|
|
66
|
-
if (!tool.platforms[ctx.platform]) {
|
|
67
|
-
throw new Error(`${tool.displayName} is not supported on ${ctx.platform}`);
|
|
68
|
-
}
|
|
69
|
-
selectedTools = [tool];
|
|
70
|
-
}
|
|
71
|
-
else if (options.all) {
|
|
72
|
-
selectedTools = await detectTools(ctx);
|
|
73
|
-
if (selectedTools.length === 0) {
|
|
74
|
-
throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// Detect and show what's available
|
|
79
|
-
selectedTools = await detectTools(ctx);
|
|
80
|
-
if (selectedTools.length === 0) {
|
|
81
|
-
throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
|
|
82
|
-
}
|
|
83
|
-
console.log("");
|
|
84
|
-
console.log(chalk.bold("Detected AI coding tools:"));
|
|
85
|
-
for (const tool of selectedTools) {
|
|
86
|
-
console.log(` ${chalk.cyan("-")} ${tool.displayName}`);
|
|
87
|
-
}
|
|
88
|
-
console.log("");
|
|
89
|
-
}
|
|
90
|
-
// ── Auth Resolution (skip for --remove) ────────────────────────────
|
|
63
|
+
// ── 2. Detect all tools ────────────────────────────────────────────
|
|
64
|
+
const detectedTools = await detectTools(ctx);
|
|
65
|
+
// ── 3. Select tools (interactive or flag-based) ────────────────────
|
|
66
|
+
const selectedTools = await selectTools(detectedTools, { tool: options.tool, all: options.all, yes: options.yes }, isInteractive, ctx);
|
|
67
|
+
// ── 4. Auth Resolution (skip for --remove) ─────────────────────────
|
|
91
68
|
let apiUrl = "";
|
|
92
69
|
let apiKey = "";
|
|
70
|
+
let auth;
|
|
93
71
|
if (!removeMode) {
|
|
94
|
-
|
|
72
|
+
auth = await resolveAuth({
|
|
95
73
|
apiUrl: options.apiUrl,
|
|
96
74
|
apiKey: options.apiKey,
|
|
97
|
-
|
|
75
|
+
yes: options.yes,
|
|
76
|
+
}, ctx);
|
|
98
77
|
apiUrl = auth.apiUrl;
|
|
99
78
|
apiKey = auth.apiKey;
|
|
100
79
|
}
|
|
@@ -186,19 +165,75 @@ async function run(options) {
|
|
|
186
165
|
}
|
|
187
166
|
console.log("");
|
|
188
167
|
}
|
|
189
|
-
// ── Summary
|
|
168
|
+
// ── 6. Summary ─────────────────────────────────────────────────────
|
|
190
169
|
if (removeMode) {
|
|
191
170
|
console.log(chalk.green(`✓ Removed Kanon configuration from ${successCount} tool(s).`));
|
|
192
171
|
}
|
|
193
172
|
else {
|
|
194
|
-
console.log(chalk.green(`✓
|
|
173
|
+
console.log(chalk.green(`✓ Configured ${successCount} tool(s)!`));
|
|
195
174
|
console.log("");
|
|
196
|
-
|
|
197
|
-
|
|
175
|
+
if (auth) {
|
|
176
|
+
const maskKey = (key) => key.length > 4 ? "****" + key.slice(-4) : "****";
|
|
177
|
+
console.log(` API URL: ${chalk.cyan(apiUrl)} ${chalk.dim(`(from ${auth.urlSource})`)}`);
|
|
178
|
+
console.log(` API Key: ${chalk.cyan(maskKey(apiKey))} ${chalk.dim(`(${auth.keySource})`)}`);
|
|
179
|
+
}
|
|
198
180
|
console.log("");
|
|
199
181
|
console.log(chalk.yellow(" Restart your AI coding tool(s) to pick up the new configuration."));
|
|
200
182
|
}
|
|
201
183
|
console.log("");
|
|
202
184
|
}
|
|
185
|
+
// ─── Tool Selection ──────────────────────────────────────────────────────────
|
|
186
|
+
/**
|
|
187
|
+
* Select which tools to configure based on flags or interactive checkbox.
|
|
188
|
+
*
|
|
189
|
+
* - --tool <name> → single tool (validated against registry)
|
|
190
|
+
* - --all or --yes → all detected tools
|
|
191
|
+
* - interactive (TTY, no flags) → checkbox with all pre-selected
|
|
192
|
+
* - non-interactive (no TTY, no flags) → all detected tools
|
|
193
|
+
*/
|
|
194
|
+
export async function selectTools(detected, flags, isInteractive, ctx, deps) {
|
|
195
|
+
// --tool flag: single tool by name
|
|
196
|
+
if (flags.tool) {
|
|
197
|
+
const tool = getToolByName(flags.tool);
|
|
198
|
+
if (!tool) {
|
|
199
|
+
throw new Error(`Unknown tool: '${flags.tool}'. Supported: claude-code, cursor, antigravity`);
|
|
200
|
+
}
|
|
201
|
+
if (!tool.platforms[ctx.platform]) {
|
|
202
|
+
throw new Error(`${tool.displayName} is not supported on ${ctx.platform}`);
|
|
203
|
+
}
|
|
204
|
+
return [tool];
|
|
205
|
+
}
|
|
206
|
+
// No tools detected → error
|
|
207
|
+
if (detected.length === 0) {
|
|
208
|
+
throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
|
|
209
|
+
}
|
|
210
|
+
// --all or --yes → all detected
|
|
211
|
+
if (flags.all || flags.yes) {
|
|
212
|
+
return detected;
|
|
213
|
+
}
|
|
214
|
+
// Non-interactive (no TTY) → all detected
|
|
215
|
+
if (!isInteractive) {
|
|
216
|
+
return detected;
|
|
217
|
+
}
|
|
218
|
+
// Interactive → checkbox with all pre-selected
|
|
219
|
+
const _promptTools = deps?.promptTools ?? defaultPromptTools;
|
|
220
|
+
console.log("");
|
|
221
|
+
const selectedNames = await _promptTools(detected.map((t) => ({
|
|
222
|
+
name: t.displayName,
|
|
223
|
+
value: t.name,
|
|
224
|
+
checked: true,
|
|
225
|
+
})));
|
|
226
|
+
if (selectedNames.length === 0) {
|
|
227
|
+
console.log(chalk.yellow("No tools selected — nothing to do."));
|
|
228
|
+
process.exit(0);
|
|
229
|
+
}
|
|
230
|
+
return detected.filter((t) => selectedNames.includes(t.name));
|
|
231
|
+
}
|
|
232
|
+
async function defaultPromptTools(choices) {
|
|
233
|
+
return checkbox({
|
|
234
|
+
message: "Select tools to configure:",
|
|
235
|
+
choices,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
203
238
|
program.parse();
|
|
204
239
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,kFAAkF;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,SAAS,YAAY;IACnB,wDAAwD;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtD,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrD,yCAAyC;IACzC,OAAO,QAAQ,IAAI,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CACV,sFAAsF,CACvF;KACA,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;KAC1C,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;KAC1C,MAAM,CACL,eAAe,EACf,2DAA2D,CAC5D;KACA,MAAM,CAAC,OAAO,EAAE,8BAA8B,CAAC;KAC/C,MAAM,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-config.d.ts
CHANGED
|
@@ -34,4 +34,19 @@ export declare function resolveMcpServerPath(): McpResolution;
|
|
|
34
34
|
* Resolve the path to the node binary.
|
|
35
35
|
*/
|
|
36
36
|
export declare function resolveNodeBin(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Extract auth credentials from existing kanon-mcp entries across all tool configs.
|
|
39
|
+
*
|
|
40
|
+
* Scans each tool in the registry that supports the current platform, reads its
|
|
41
|
+
* MCP config file, and looks for a "kanon-mcp" entry. Extracts KANON_API_URL and
|
|
42
|
+
* KANON_API_KEY from:
|
|
43
|
+
* - Direct mode: `entry.env.KANON_API_URL` / `entry.env.KANON_API_KEY`
|
|
44
|
+
* - WSL bridge mode: parses `entry.args` array for `KANON_API_URL=xxx` patterns
|
|
45
|
+
*
|
|
46
|
+
* Returns the first values found. Missing files/entries are handled gracefully.
|
|
47
|
+
*/
|
|
48
|
+
export declare function extractExistingAuth(ctx: PlatformContext): {
|
|
49
|
+
apiUrl?: string;
|
|
50
|
+
apiKey?: string;
|
|
51
|
+
};
|
|
37
52
|
//# sourceMappingURL=mcp-config.d.ts.map
|
package/dist/mcp-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,GACpB,IAAI,CAqBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAsBzE;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,cAAc,CAwChB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAwBpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,GACnB;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA2DtC"}
|
package/dist/mcp-config.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { toolRegistry } from "./registry.js";
|
|
5
6
|
/**
|
|
6
7
|
* Merge a Kanon MCP server entry into a tool's JSON config file.
|
|
7
8
|
* Creates the file and parent directories if they don't exist.
|
|
@@ -127,4 +128,69 @@ export function resolveMcpServerPath() {
|
|
|
127
128
|
export function resolveNodeBin() {
|
|
128
129
|
return process.execPath;
|
|
129
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Extract auth credentials from existing kanon-mcp entries across all tool configs.
|
|
133
|
+
*
|
|
134
|
+
* Scans each tool in the registry that supports the current platform, reads its
|
|
135
|
+
* MCP config file, and looks for a "kanon-mcp" entry. Extracts KANON_API_URL and
|
|
136
|
+
* KANON_API_KEY from:
|
|
137
|
+
* - Direct mode: `entry.env.KANON_API_URL` / `entry.env.KANON_API_KEY`
|
|
138
|
+
* - WSL bridge mode: parses `entry.args` array for `KANON_API_URL=xxx` patterns
|
|
139
|
+
*
|
|
140
|
+
* Returns the first values found. Missing files/entries are handled gracefully.
|
|
141
|
+
*/
|
|
142
|
+
export function extractExistingAuth(ctx) {
|
|
143
|
+
let apiUrl;
|
|
144
|
+
let apiKey;
|
|
145
|
+
for (const tool of toolRegistry) {
|
|
146
|
+
const platformPaths = tool.platforms[ctx.platform];
|
|
147
|
+
if (!platformPaths)
|
|
148
|
+
continue;
|
|
149
|
+
const configPath = platformPaths.config(ctx);
|
|
150
|
+
let config;
|
|
151
|
+
try {
|
|
152
|
+
const content = fs.readFileSync(configPath, "utf8");
|
|
153
|
+
config = JSON.parse(content);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// File doesn't exist or is invalid JSON — skip
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const servers = config[tool.rootKey];
|
|
160
|
+
if (!servers)
|
|
161
|
+
continue;
|
|
162
|
+
const entry = servers["kanon-mcp"];
|
|
163
|
+
if (!entry)
|
|
164
|
+
continue;
|
|
165
|
+
// Try direct mode: env object
|
|
166
|
+
if (entry.env) {
|
|
167
|
+
if (!apiUrl && entry.env["KANON_API_URL"]) {
|
|
168
|
+
apiUrl = entry.env["KANON_API_URL"];
|
|
169
|
+
}
|
|
170
|
+
if (!apiKey && entry.env["KANON_API_KEY"]) {
|
|
171
|
+
apiKey = entry.env["KANON_API_KEY"];
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Try WSL bridge mode: parse args array for KEY=VALUE patterns
|
|
175
|
+
if (entry.args) {
|
|
176
|
+
for (const arg of entry.args) {
|
|
177
|
+
if (!apiUrl && arg.startsWith("KANON_API_URL=")) {
|
|
178
|
+
apiUrl = arg.slice("KANON_API_URL=".length);
|
|
179
|
+
}
|
|
180
|
+
if (!apiKey && arg.startsWith("KANON_API_KEY=")) {
|
|
181
|
+
apiKey = arg.slice("KANON_API_KEY=".length);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Stop early if we have both values
|
|
186
|
+
if (apiUrl && apiKey)
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
const result = {};
|
|
190
|
+
if (apiUrl)
|
|
191
|
+
result.apiUrl = apiUrl;
|
|
192
|
+
if (apiKey)
|
|
193
|
+
result.apiKey = apiKey;
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
130
196
|
//# sourceMappingURL=mcp-config.js.map
|
package/dist/mcp-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,4 +27,27 @@ export interface McpServerEntry {
|
|
|
27
27
|
args: string[];
|
|
28
28
|
env?: Record<string, string>;
|
|
29
29
|
}
|
|
30
|
+
/** Source that resolved an auth field, for logging */
|
|
31
|
+
export type AuthSource = "flag" | "env" | "existing-config" | "auto-generated" | "prompt";
|
|
32
|
+
export interface AuthResult {
|
|
33
|
+
apiUrl: string;
|
|
34
|
+
apiKey: string;
|
|
35
|
+
urlSource: AuthSource;
|
|
36
|
+
keySource: AuthSource;
|
|
37
|
+
}
|
|
38
|
+
/** Injectable dependencies for resolveAuth — enables testing without mocks */
|
|
39
|
+
export interface AuthDeps {
|
|
40
|
+
extractExisting?: (ctx: PlatformContext) => {
|
|
41
|
+
apiUrl?: string;
|
|
42
|
+
apiKey?: string;
|
|
43
|
+
};
|
|
44
|
+
autoGenerateKey?: (apiUrl: string) => Promise<string | null>;
|
|
45
|
+
promptUrl?: () => Promise<string>;
|
|
46
|
+
promptKey?: () => Promise<string>;
|
|
47
|
+
fetchFn?: typeof globalThis.fetch;
|
|
48
|
+
}
|
|
49
|
+
export interface InteractiveOptions {
|
|
50
|
+
yes: boolean;
|
|
51
|
+
interactive: boolean;
|
|
52
|
+
}
|
|
30
53
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,eAAe,GAAG,WAAW,CAAC;IAG5C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,eAAe,GAAG,WAAW,CAAC;IAG5C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAID,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,KAAK,GACL,iBAAiB,GACjB,gBAAgB,GAChB,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,8EAA8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,eAAe,CAAC,EAAE,CAChB,GAAG,EAAE,eAAe,KACjB;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC;AAID,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kanon-pm/setup",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Setup and configure Kanon AI tool integrations (Claude Code, Cursor, Antigravity)",
|
|
6
6
|
"bin": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"assets/"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
+
"@inquirer/prompts": "^8.3.2",
|
|
21
22
|
"chalk": "^5.3.0",
|
|
22
23
|
"commander": "^12.0.0"
|
|
23
24
|
},
|