@kanon-pm/setup 0.2.0 → 0.3.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/detect.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Platform, PlatformContext } from "./types.js";
1
2
  /**
2
3
  * Check if running inside WSL by reading /proc/version.
3
4
  */
@@ -7,8 +8,21 @@ export declare function isWsl(): boolean;
7
8
  * Uses cmd.exe to get %USERNAME% and constructs /mnt/c/Users/<user>.
8
9
  */
9
10
  export declare function resolveWinHome(): string | undefined;
11
+ /**
12
+ * Detect the current platform as a tri-state: win32, wsl, or linux.
13
+ * Accepts an optional override for testing.
14
+ */
15
+ export declare function detectPlatform(override?: Platform): Platform;
16
+ /**
17
+ * Build a PlatformContext once at startup. All downstream functions receive
18
+ * this context instead of threading winHome/wslMode booleans.
19
+ *
20
+ * Overrides allow test injection without mocking globals.
21
+ */
22
+ export declare function buildPlatformContext(overrides?: Partial<PlatformContext>): Promise<PlatformContext>;
10
23
  /**
11
24
  * Check if a command exists on the system.
25
+ * Uses `where` on win32 and `which` on linux/wsl.
12
26
  */
13
- export declare function commandExists(cmd: string): boolean;
27
+ export declare function commandExists(cmd: string, platform?: Platform): boolean;
14
28
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAO/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAiBnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI5D;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAO/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAiBnD;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAM5D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACnC,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAQvE"}
package/dist/detect.js CHANGED
@@ -1,6 +1,8 @@
1
1
  // ─── Detection Utilities ─────────────────────────────────────────────────────
2
2
  import fs from "node:fs";
3
+ import os from "node:os";
3
4
  import { execSync } from "node:child_process";
5
+ // ─── Internal Helpers ────────────────────────────────────────────────────────
4
6
  /**
5
7
  * Check if running inside WSL by reading /proc/version.
6
8
  */
@@ -35,12 +37,52 @@ export function resolveWinHome() {
35
37
  return undefined;
36
38
  }
37
39
  }
40
+ // ─── Platform Detection ──────────────────────────────────────────────────────
41
+ /**
42
+ * Detect the current platform as a tri-state: win32, wsl, or linux.
43
+ * Accepts an optional override for testing.
44
+ */
45
+ export function detectPlatform(override) {
46
+ if (override)
47
+ return override;
48
+ if (process.platform === "win32")
49
+ return "win32";
50
+ if (isWsl())
51
+ return "wsl";
52
+ return "linux";
53
+ }
54
+ /**
55
+ * Build a PlatformContext once at startup. All downstream functions receive
56
+ * this context instead of threading winHome/wslMode booleans.
57
+ *
58
+ * Overrides allow test injection without mocking globals.
59
+ */
60
+ export async function buildPlatformContext(overrides) {
61
+ const platform = overrides?.platform ?? detectPlatform();
62
+ const homedir = overrides?.homedir ?? os.homedir();
63
+ const ctx = { platform, homedir };
64
+ switch (platform) {
65
+ case "win32":
66
+ ctx.appDataDir = overrides?.appDataDir ?? process.env["APPDATA"];
67
+ break;
68
+ case "wsl":
69
+ ctx.winHome = overrides?.winHome ?? resolveWinHome();
70
+ break;
71
+ case "linux":
72
+ // No extra fields needed
73
+ break;
74
+ }
75
+ return ctx;
76
+ }
77
+ // ─── Command Existence ───────────────────────────────────────────────────────
38
78
  /**
39
79
  * Check if a command exists on the system.
80
+ * Uses `where` on win32 and `which` on linux/wsl.
40
81
  */
41
- export function commandExists(cmd) {
82
+ export function commandExists(cmd, platform) {
83
+ const whichCmd = platform === "win32" ? "where" : "which";
42
84
  try {
43
- execSync(`which ${cmd}`, { stdio: ["pipe", "pipe", "pipe"] });
85
+ execSync(`${whichCmd} ${cmd}`, { stdio: ["pipe", "pipe", "pipe"] });
44
86
  return true;
45
87
  }
46
88
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,8BAA8B,EAAE;YACxD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,OAAO,GAAG,gBAAgB,QAAQ,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,8BAA8B,EAAE;YACxD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,OAAO,GAAG,gBAAgB,QAAQ,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAmB;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACjD,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAoC;IAEpC,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAEnD,MAAM,GAAG,GAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEnD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM;QACR,KAAK,KAAK;YACR,GAAG,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,cAAc,EAAE,CAAC;YACrD,MAAM;QACR,KAAK,OAAO;YACV,yBAAyB;YACzB,MAAM;IACV,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,QAAmB;IAC5D,MAAM,QAAQ,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // ─── Kanon Setup ───────────────────────────────────────────────────────────────
3
3
  import { Command } from "commander";
4
4
  import chalk from "chalk";
5
- import { isWsl, resolveWinHome } from "./detect.js";
5
+ import { buildPlatformContext } from "./detect.js";
6
6
  import { resolveAuth } from "./auth.js";
7
7
  import { detectTools, getToolByName } from "./registry.js";
8
8
  import { buildMcpEntry, mergeConfig, removeConfig, resolveMcpServerPath, resolveNodeBin, } from "./mcp-config.js";
@@ -43,14 +43,12 @@ program.action(async (options) => {
43
43
  async function run(options) {
44
44
  const removeMode = options.remove === true;
45
45
  const assetsDir = getAssetsDir();
46
- // ── WSL Detection ──────────────────────────────────────────────────
47
- const wslMode = isWsl();
48
- let winHome;
49
- if (wslMode) {
50
- winHome = resolveWinHome();
51
- if (winHome) {
46
+ // ── Platform Detection ─────────────────────────────────────────────
47
+ const ctx = await buildPlatformContext();
48
+ if (ctx.platform === "wsl") {
49
+ if (ctx.winHome) {
52
50
  console.log(chalk.cyan("[info]") +
53
- ` WSL detected — Windows home: ${chalk.bold(winHome)}`);
51
+ ` WSL detected — Windows home: ${chalk.bold(ctx.winHome)}`);
54
52
  }
55
53
  else {
56
54
  console.log(chalk.yellow("[warn]") +
@@ -64,17 +62,21 @@ async function run(options) {
64
62
  if (!tool) {
65
63
  throw new Error(`Unknown tool: '${options.tool}'. Supported: claude-code, cursor, antigravity`);
66
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
+ }
67
69
  selectedTools = [tool];
68
70
  }
69
71
  else if (options.all) {
70
- selectedTools = await detectTools(wslMode, winHome);
72
+ selectedTools = await detectTools(ctx);
71
73
  if (selectedTools.length === 0) {
72
74
  throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
73
75
  }
74
76
  }
75
77
  else {
76
78
  // Detect and show what's available
77
- selectedTools = await detectTools(wslMode, winHome);
79
+ selectedTools = await detectTools(ctx);
78
80
  if (selectedTools.length === 0) {
79
81
  throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
80
82
  }
@@ -110,11 +112,18 @@ async function run(options) {
110
112
  console.log("");
111
113
  let successCount = 0;
112
114
  for (const tool of selectedTools) {
113
- const useWslPaths = wslMode && tool.isWindowsNative;
114
- const pathArg = useWslPaths ? winHome : undefined;
115
+ const platformPaths = tool.platforms[ctx.platform];
116
+ if (!platformPaths) {
117
+ console.log(chalk.yellow(" ⚠") +
118
+ ` ${tool.displayName} is not supported on ${ctx.platform} — skipping`);
119
+ console.log("");
120
+ continue;
121
+ }
122
+ const configPath = platformPaths.config(ctx);
123
+ const skillDir = platformPaths.skills(ctx);
124
+ const templatePath = platformPaths.template(ctx);
115
125
  if (removeMode) {
116
126
  // ── Remove Mode ──────────────────────────────────────────────
117
- const configPath = tool.configPath(pathArg);
118
127
  const removed = removeConfig(configPath, tool.rootKey);
119
128
  if (removed) {
120
129
  console.log(chalk.green(" ✓") +
@@ -125,22 +134,20 @@ async function run(options) {
125
134
  ` MCP config not found for ${tool.displayName} — nothing to remove`);
126
135
  }
127
136
  // Remove skills
128
- const skillDir = tool.skillDest(pathArg);
129
137
  const removedSkills = removeSkills(skillDir);
130
138
  if (removedSkills.length > 0) {
131
139
  console.log(chalk.green(" ✓") +
132
140
  ` Removed ${removedSkills.length} skills from ${chalk.bold(tool.displayName)}`);
133
141
  }
134
142
  // Remove template
135
- const templatePath = tool.templateTarget(pathArg);
136
143
  const removedTemplate = removeTemplate(templatePath, tool.templateMode);
137
144
  if (removedTemplate) {
138
145
  console.log(chalk.green(" ✓") +
139
146
  ` Removed template from ${chalk.bold(tool.displayName)}`);
140
147
  }
141
148
  // Remove workflows
142
- if (tool.workflowDest) {
143
- const wfDir = tool.workflowDest(pathArg);
149
+ if (platformPaths.workflows) {
150
+ const wfDir = platformPaths.workflows(ctx);
144
151
  const removedWfs = removeWorkflows(wfDir);
145
152
  if (removedWfs.length > 0) {
146
153
  console.log(chalk.green(" ✓") +
@@ -151,27 +158,24 @@ async function run(options) {
151
158
  }
152
159
  else {
153
160
  // ── Install Mode ─────────────────────────────────────────────
154
- const configPath = tool.configPath(pathArg);
155
- const entry = buildMcpEntry(mcpResolution, apiUrl, apiKey, wslMode, tool.isWindowsNative, nodeBin);
161
+ const entry = buildMcpEntry(mcpResolution, apiUrl, apiKey, ctx, platformPaths.mcpMode, nodeBin);
156
162
  // 1. MCP config
157
163
  mergeConfig(configPath, tool.rootKey, entry);
158
164
  console.log(chalk.green(" ✓") +
159
165
  ` Configured MCP for ${chalk.bold(tool.displayName)} (${configPath})`);
160
166
  // 2. Skills
161
- const skillDir = tool.skillDest(pathArg);
162
167
  const installedSkills = installSkills(skillDir, assetsDir);
163
168
  if (installedSkills.length > 0) {
164
169
  console.log(chalk.green(" ✓") +
165
170
  ` Installed ${installedSkills.length} skills to ${chalk.cyan(skillDir)}`);
166
171
  }
167
172
  // 3. Template
168
- const templatePath = tool.templateTarget(pathArg);
169
173
  installTemplate(templatePath, tool.templateSource, assetsDir, tool.templateMode);
170
174
  console.log(chalk.green(" ✓") +
171
175
  ` Installed template for ${chalk.bold(tool.displayName)} (${templatePath})`);
172
176
  // 4. Workflows
173
- if (tool.workflowDest) {
174
- const wfDir = tool.workflowDest(pathArg);
177
+ if (platformPaths.workflows) {
178
+ const wfDir = platformPaths.workflows(ctx);
175
179
  const installedWfs = installWorkflows(wfDir, assetsDir);
176
180
  if (installedWfs.length > 0) {
177
181
  console.log(chalk.green(" ✓") +
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { McpServerEntry } from "./types.js";
1
+ import type { McpServerEntry, McpMode, PlatformContext } from "./types.js";
2
2
  /**
3
3
  * Merge a Kanon MCP server entry into a tool's JSON config file.
4
4
  * Creates the file and parent directories if they don't exist.
@@ -18,10 +18,12 @@ export type McpResolution = {
18
18
  };
19
19
  /**
20
20
  * Build the MCP server entry for Kanon.
21
- * In WSL mode for Windows-native tools, uses "wsl" as command.
22
- * When resolution mode is "npx", uses npx to invoke @kanon/mcp dynamically.
21
+ *
22
+ * Uses PlatformContext + McpMode to determine the entry format:
23
+ * - 'direct': linux, wsl-native tools, or win32 — uses node/npx directly
24
+ * - 'wsl-bridge': Windows-side tools invoked from WSL — uses `wsl` wrapper
23
25
  */
24
- export declare function buildMcpEntry(resolution: McpResolution, apiUrl: string, apiKey: string, wslMode: boolean, isWindowsNative: boolean, nodeBin: string): McpServerEntry;
26
+ export declare function buildMcpEntry(resolution: McpResolution, apiUrl: string, apiKey: string, ctx: PlatformContext, mcpMode: McpMode, nodeBin: string): McpServerEntry;
25
27
  /**
26
28
  * Resolve how to invoke the Kanon MCP server.
27
29
  * When running from the monorepo or with @kanon/mcp installed locally,
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;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;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,OAAO,EACxB,OAAO,EAAE,MAAM,GACd,cAAc,CAuChB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAuBpD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
1
+ {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;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"}
@@ -1,6 +1,7 @@
1
1
  // ─── MCP Config Merger ───────────────────────────────────────────────────────
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
4
5
  /**
5
6
  * Merge a Kanon MCP server entry into a tool's JSON config file.
6
7
  * Creates the file and parent directories if they don't exist.
@@ -52,13 +53,15 @@ export function removeConfig(configPath, rootKey) {
52
53
  }
53
54
  /**
54
55
  * Build the MCP server entry for Kanon.
55
- * In WSL mode for Windows-native tools, uses "wsl" as command.
56
- * When resolution mode is "npx", uses npx to invoke @kanon/mcp dynamically.
56
+ *
57
+ * Uses PlatformContext + McpMode to determine the entry format:
58
+ * - 'direct': linux, wsl-native tools, or win32 — uses node/npx directly
59
+ * - 'wsl-bridge': Windows-side tools invoked from WSL — uses `wsl` wrapper
57
60
  */
58
- export function buildMcpEntry(resolution, apiUrl, apiKey, wslMode, isWindowsNative, nodeBin) {
61
+ export function buildMcpEntry(resolution, apiUrl, apiKey, ctx, mcpMode, nodeBin) {
59
62
  const isNpx = resolution.mode === "npx";
60
- if (wslMode && isWindowsNative) {
61
- // Windows-native tools invoke via WSL
63
+ if (mcpMode === "wsl-bridge") {
64
+ // Windows-side tools invoked via WSL wrapper
62
65
  const envArgs = [`KANON_API_URL=${apiUrl}`];
63
66
  if (apiKey) {
64
67
  envArgs.push(`KANON_API_KEY=${apiKey}`);
@@ -74,6 +77,7 @@ export function buildMcpEntry(resolution, apiUrl, apiKey, wslMode, isWindowsNati
74
77
  args: ["env", ...envArgs, nodeBin, resolution.path],
75
78
  };
76
79
  }
80
+ // Direct mode (linux, wsl-native tools, or win32)
77
81
  const env = { KANON_API_URL: apiUrl };
78
82
  if (apiKey) {
79
83
  env["KANON_API_KEY"] = apiKey;
@@ -98,7 +102,8 @@ export function buildMcpEntry(resolution, apiUrl, apiKey, wslMode, isWindowsNati
98
102
  */
99
103
  export function resolveMcpServerPath() {
100
104
  // Try to find the local monorepo MCP dist
101
- const scriptDir = new URL(".", import.meta.url).pathname;
105
+ // Use fileURLToPath() instead of .pathname to handle Windows drive letters correctly
106
+ const scriptDir = path.dirname(fileURLToPath(import.meta.url));
102
107
  const localMcp = path.resolve(scriptDir, "../../mcp/dist/index.js");
103
108
  if (fs.existsSync(localMcp)) {
104
109
  return { mode: "local", path: localMcp };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../src/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import type { ToolDefinition } from "./types.js";
1
+ import type { ToolDefinition, PlatformContext } from "./types.js";
2
2
  export declare const toolRegistry: ToolDefinition[];
3
3
  /**
4
4
  * Detect which tools are available on the system.
5
- * In WSL mode, Windows-native tools are detected via their wslDetect method.
5
+ * Uses the per-platform paths map to check support and run detection.
6
6
  */
7
- export declare function detectTools(wslMode: boolean, winHome?: string): Promise<ToolDefinition[]>;
7
+ export declare function detectTools(ctx: PlatformContext): Promise<ToolDefinition[]>;
8
8
  /**
9
9
  * Find a tool by name from the registry.
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,eAAO,MAAM,YAAY,EAAE,cAAc,EA8ExC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAkB3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlE,eAAO,MAAM,YAAY,EAAE,cAAc,EA2HxC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE"}
package/dist/registry.js CHANGED
@@ -1,99 +1,125 @@
1
1
  // ─── Tool Registry ───────────────────────────────────────────────────────────
2
2
  import fs from "node:fs";
3
- import os from "node:os";
4
3
  import { commandExists } from "./detect.js";
5
- const home = os.homedir();
6
4
  export const toolRegistry = [
7
5
  // ── Claude Code ──────────────────────────────────────────────────────
8
6
  {
9
7
  name: "claude-code",
10
8
  displayName: "Claude Code",
11
- configPath: () => `${home}/.claude.json`,
12
9
  rootKey: "mcpServers",
13
- detect: async () => {
14
- return fs.existsSync(`${home}/.claude`) || commandExists("claude");
15
- },
16
- skillDest: () => `${home}/.claude/skills`,
17
- workflowDest: () => `${home}/.claude/workflows`,
18
10
  templateSource: "claude-code-snippet.md",
19
- templateTarget: () => `${home}/.claude/CLAUDE.md`,
20
11
  templateMode: "marker-inject",
21
- isWindowsNative: false,
12
+ platforms: {
13
+ // Claude Code is NOT supported on win32 — no entry
14
+ wsl: {
15
+ detect: async (ctx) => fs.existsSync(`${ctx.homedir}/.claude`) ||
16
+ commandExists("claude", ctx.platform),
17
+ config: (ctx) => `${ctx.homedir}/.claude.json`,
18
+ skills: (ctx) => `${ctx.homedir}/.claude/skills`,
19
+ workflows: (ctx) => `${ctx.homedir}/.claude/workflows`,
20
+ template: (ctx) => `${ctx.homedir}/.claude/CLAUDE.md`,
21
+ mcpMode: "direct",
22
+ },
23
+ linux: {
24
+ detect: async (ctx) => fs.existsSync(`${ctx.homedir}/.claude`) ||
25
+ commandExists("claude", ctx.platform),
26
+ config: (ctx) => `${ctx.homedir}/.claude.json`,
27
+ skills: (ctx) => `${ctx.homedir}/.claude/skills`,
28
+ workflows: (ctx) => `${ctx.homedir}/.claude/workflows`,
29
+ template: (ctx) => `${ctx.homedir}/.claude/CLAUDE.md`,
30
+ mcpMode: "direct",
31
+ },
32
+ },
22
33
  },
23
34
  // ── Cursor ───────────────────────────────────────────────────────────
24
35
  {
25
36
  name: "cursor",
26
37
  displayName: "Cursor",
27
- configPath: (winHome) => {
28
- const base = winHome || home;
29
- return `${base}/.cursor/mcp.json`;
30
- },
31
38
  rootKey: "mcpServers",
32
- detect: async () => {
33
- return fs.existsSync(`${home}/.cursor`);
34
- },
35
- wslDetect: async (winHome) => {
36
- return fs.existsSync(`${winHome}/.cursor`);
37
- },
38
- skillDest: (winHome) => {
39
- const base = winHome || home;
40
- return `${base}/.cursor/skills`;
41
- },
42
- // Cursor has no global workflows
43
39
  templateSource: "cursor-rules.mdc",
44
- templateTarget: (winHome) => {
45
- const base = winHome || home;
46
- return `${base}/.cursor/rules/kanon.mdc`;
47
- },
48
40
  templateMode: "file-copy",
49
- isWindowsNative: true,
41
+ platforms: {
42
+ win32: {
43
+ detect: async (ctx) => {
44
+ const appData = ctx.appDataDir;
45
+ return !!appData && fs.existsSync(`${appData}\\Cursor\\User`);
46
+ },
47
+ config: (ctx) => {
48
+ const appData = ctx.appDataDir;
49
+ return `${appData}\\Cursor\\User\\mcp.json`;
50
+ },
51
+ skills: (ctx) => `${ctx.homedir}\\.cursor\\skills`,
52
+ template: (ctx) => `${ctx.homedir}\\.cursor\\rules\\kanon.mdc`,
53
+ mcpMode: "direct",
54
+ },
55
+ wsl: {
56
+ detect: async (ctx) => {
57
+ return !!ctx.winHome && fs.existsSync(`${ctx.winHome}/.cursor`);
58
+ },
59
+ config: (ctx) => `${ctx.winHome}/.cursor/mcp.json`,
60
+ skills: (ctx) => `${ctx.winHome}/.cursor/skills`,
61
+ template: (ctx) => `${ctx.winHome}/.cursor/rules/kanon.mdc`,
62
+ mcpMode: "wsl-bridge",
63
+ },
64
+ linux: {
65
+ detect: async (ctx) => fs.existsSync(`${ctx.homedir}/.cursor`),
66
+ config: (ctx) => `${ctx.homedir}/.cursor/mcp.json`,
67
+ skills: (ctx) => `${ctx.homedir}/.cursor/skills`,
68
+ template: (ctx) => `${ctx.homedir}/.cursor/rules/kanon.mdc`,
69
+ mcpMode: "direct",
70
+ },
71
+ },
50
72
  },
51
73
  // ── Antigravity (Gemini) ─────────────────────────────────────────────
52
74
  {
53
75
  name: "antigravity",
54
76
  displayName: "Antigravity",
55
- configPath: (winHome) => {
56
- const base = winHome || home;
57
- return `${base}/.gemini/antigravity/mcp_config.json`;
58
- },
59
77
  rootKey: "mcpServers",
60
- detect: async () => {
61
- return fs.existsSync(`${home}/.gemini`);
62
- },
63
- wslDetect: async (winHome) => {
64
- return fs.existsSync(`${winHome}/.gemini`);
65
- },
66
- skillDest: (winHome) => {
67
- const base = winHome || home;
68
- return `${base}/.gemini/antigravity/skills`;
69
- },
70
- workflowDest: (winHome) => {
71
- const base = winHome || home;
72
- return `${base}/.gemini/antigravity/global_workflows`;
73
- },
74
78
  templateSource: "gemini-instructions.md",
75
- templateTarget: (winHome) => {
76
- const base = winHome || home;
77
- return `${base}/.gemini/GEMINI.md`;
78
- },
79
79
  templateMode: "marker-inject",
80
- isWindowsNative: true,
80
+ platforms: {
81
+ win32: {
82
+ detect: async (ctx) => fs.existsSync(`${ctx.homedir}\\.gemini`),
83
+ config: (ctx) => `${ctx.homedir}\\.gemini\\antigravity\\mcp_config.json`,
84
+ skills: (ctx) => `${ctx.homedir}\\.gemini\\antigravity\\skills`,
85
+ workflows: (ctx) => `${ctx.homedir}\\.gemini\\antigravity\\global_workflows`,
86
+ template: (ctx) => `${ctx.homedir}\\.gemini\\GEMINI.md`,
87
+ mcpMode: "direct",
88
+ },
89
+ wsl: {
90
+ detect: async (ctx) => {
91
+ return !!ctx.winHome && fs.existsSync(`${ctx.winHome}/.gemini`);
92
+ },
93
+ config: (ctx) => `${ctx.winHome}/.gemini/antigravity/mcp_config.json`,
94
+ skills: (ctx) => `${ctx.winHome}/.gemini/antigravity/skills`,
95
+ workflows: (ctx) => `${ctx.winHome}/.gemini/antigravity/global_workflows`,
96
+ template: (ctx) => `${ctx.winHome}/.gemini/GEMINI.md`,
97
+ mcpMode: "wsl-bridge",
98
+ },
99
+ linux: {
100
+ detect: async (ctx) => fs.existsSync(`${ctx.homedir}/.gemini`),
101
+ config: (ctx) => `${ctx.homedir}/.gemini/antigravity/mcp_config.json`,
102
+ skills: (ctx) => `${ctx.homedir}/.gemini/antigravity/skills`,
103
+ workflows: (ctx) => `${ctx.homedir}/.gemini/antigravity/global_workflows`,
104
+ template: (ctx) => `${ctx.homedir}/.gemini/GEMINI.md`,
105
+ mcpMode: "direct",
106
+ },
107
+ },
81
108
  },
82
109
  ];
83
110
  /**
84
111
  * Detect which tools are available on the system.
85
- * In WSL mode, Windows-native tools are detected via their wslDetect method.
112
+ * Uses the per-platform paths map to check support and run detection.
86
113
  */
87
- export async function detectTools(wslMode, winHome) {
114
+ export async function detectTools(ctx) {
88
115
  const detected = [];
89
116
  for (const tool of toolRegistry) {
90
- let found = false;
91
- if (wslMode && tool.isWindowsNative && tool.wslDetect && winHome) {
92
- found = await tool.wslDetect(winHome);
93
- }
94
- else if (!tool.isWindowsNative || !wslMode) {
95
- found = await tool.detect();
117
+ const platformPaths = tool.platforms[ctx.platform];
118
+ if (!platformPaths) {
119
+ // Tool doesn't support this platform — skip silently
120
+ continue;
96
121
  }
122
+ const found = await platformPaths.detect(ctx);
97
123
  if (found) {
98
124
  detected.push(tool);
99
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,24 +1,26 @@
1
+ export type Platform = "win32" | "wsl" | "linux";
2
+ export interface PlatformContext {
3
+ platform: Platform;
4
+ homedir: string;
5
+ winHome?: string;
6
+ appDataDir?: string;
7
+ }
8
+ export type McpMode = "direct" | "wsl-bridge";
9
+ export interface PlatformPaths {
10
+ detect: (ctx: PlatformContext) => Promise<boolean>;
11
+ config: (ctx: PlatformContext) => string;
12
+ skills: (ctx: PlatformContext) => string;
13
+ workflows?: (ctx: PlatformContext) => string;
14
+ template: (ctx: PlatformContext) => string;
15
+ mcpMode: McpMode;
16
+ }
1
17
  export interface ToolDefinition {
2
18
  name: string;
3
19
  displayName: string;
4
- configPath: (winHome?: string) => string;
5
20
  rootKey: string;
6
- detect: () => Promise<boolean>;
7
- wslDetect?: (winHome: string) => Promise<boolean>;
8
- skillDest: (winHome?: string) => string;
9
- workflowDest?: (winHome?: string) => string;
10
21
  templateSource: string;
11
- templateTarget: (winHome?: string) => string;
12
22
  templateMode: "marker-inject" | "file-copy";
13
- isWindowsNative: boolean;
14
- }
15
- export interface SetupOptions {
16
- apiUrl: string;
17
- apiKey: string;
18
- tools: ToolDefinition[];
19
- remove: boolean;
20
- wslMode: boolean;
21
- winHome?: string;
23
+ platforms: Partial<Record<Platform, PlatformPaths>>;
22
24
  }
23
25
  export interface McpServerEntry {
24
26
  command: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,YAAY,EAAE,eAAe,GAAG,WAAW,CAAC;IAC5C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanon-pm/setup",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Setup and configure Kanon AI tool integrations (Claude Code, Cursor, Antigravity)",
6
6
  "bin": {