@kanon-pm/setup 0.3.0 → 0.5.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/agents.js ADDED
@@ -0,0 +1,61 @@
1
+ // ─── Agent Installer ─────────────────────────────────────────────────────────
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ /**
5
+ * Install agent files from assets to the tool's agent directory.
6
+ * Only for tools that support agents (have an agentDest).
7
+ * Creates parent directories if needed. Idempotent — overwrites on re-run.
8
+ */
9
+ export function installAgents(agentDest, assetsDir) {
10
+ const agentsSource = path.join(assetsDir, "agents");
11
+ if (!fs.existsSync(agentsSource)) {
12
+ return [];
13
+ }
14
+ const installed = [];
15
+ fs.mkdirSync(agentDest, { recursive: true });
16
+ // Clean stale kanon agents not in the current source set
17
+ const sourceFiles = fs.readdirSync(agentsSource).filter((f) => f.startsWith("kanon") && f.endsWith(".md"));
18
+ const sourceSet = new Set(sourceFiles);
19
+ if (fs.existsSync(agentDest)) {
20
+ const existing = fs.readdirSync(agentDest).filter((f) => f.startsWith("kanon") && f.endsWith(".md"));
21
+ for (const file of existing) {
22
+ if (!sourceSet.has(file)) {
23
+ fs.rmSync(path.join(agentDest, file));
24
+ }
25
+ }
26
+ }
27
+ const files = fs.readdirSync(agentsSource);
28
+ for (const file of files) {
29
+ if (!file.startsWith("kanon") || !file.endsWith(".md"))
30
+ continue;
31
+ const srcFile = path.join(agentsSource, file);
32
+ const destFile = path.join(agentDest, file);
33
+ if (fs.statSync(srcFile).isFile()) {
34
+ fs.copyFileSync(srcFile, destFile);
35
+ installed.push(file);
36
+ }
37
+ }
38
+ return installed;
39
+ }
40
+ /**
41
+ * Remove Kanon agent files from the tool's agent directory.
42
+ * Returns the list of agent files that were removed.
43
+ */
44
+ export function removeAgents(agentDest) {
45
+ if (!fs.existsSync(agentDest)) {
46
+ return [];
47
+ }
48
+ const removed = [];
49
+ const files = fs.readdirSync(agentDest);
50
+ for (const file of files) {
51
+ if (!file.startsWith("kanon") || !file.endsWith(".md"))
52
+ continue;
53
+ const filePath = path.join(agentDest, file);
54
+ if (fs.statSync(filePath).isFile()) {
55
+ fs.rmSync(filePath);
56
+ removed.push(file);
57
+ }
58
+ }
59
+ return removed;
60
+ }
61
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/dist/auth.d.ts CHANGED
@@ -1,14 +1,28 @@
1
- interface AuthResult {
2
- apiUrl: string;
3
- apiKey: string;
4
- }
1
+ import type { AuthResult, AuthDeps, PlatformContext } from "./types.js";
5
2
  /**
6
- * Resolve API URL and key with precedence: CLI flags > env vars > interactive prompt.
7
- * apiUrl is required; apiKey is optional (some setups don't need it).
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
- }): Promise<AuthResult>;
13
- export {};
26
+ yes?: boolean;
27
+ }, ctx: PlatformContext, deps?: AuthDeps): Promise<AuthResult>;
14
28
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBtB"}
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 readline from "node:readline";
2
+ import { input, password } from "@inquirer/prompts";
3
+ import { extractExistingAuth } from "./mcp-config.js";
3
4
  /**
4
- * Resolve API URL and key with precedence: CLI flags > env vars > interactive prompt.
5
- * apiUrl is required; apiKey is optional (some setups don't need it).
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 async function resolveAuth(options) {
8
- let apiUrl = options.apiUrl || process.env["KANON_API_URL"] || "";
9
- let apiKey = options.apiKey || process.env["KANON_API_KEY"] || "";
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
- apiUrl = await prompt("Kanon API URL: ");
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
- apiKey = await prompt("Kanon API Key (press Enter to skip): ");
139
+ const existing = _extractExisting(ctx);
140
+ if (existing.apiKey) {
141
+ apiKey = existing.apiKey;
142
+ keySource = "existing-config";
143
+ }
18
144
  }
19
- return { apiUrl, apiKey };
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
- function prompt(question) {
22
- const rl = readline.createInterface({
23
- input: process.stdin,
24
- output: process.stdout,
164
+ // ── Default prompt implementations ──────────────────────────────────────────
165
+ async function defaultPromptUrl() {
166
+ return input({
167
+ message: "Kanon API URL:",
168
+ default: "http://localhost:3000",
25
169
  });
26
- return new Promise((resolve) => {
27
- rl.question(question, (answer) => {
28
- rl.close();
29
- resolve(answer.trim());
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,eAAe,CAAC;AAOrC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAGjC;IACC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAClE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAElE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,OAAO,CACL,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,KAAK;YACd,IAAI,KAAK,OAAO;YAChB,IAAI,KAAK,SAAS,CACnB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,UAAmC,UAAU,CAAC,KAAK;IAEnD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,iBAAiB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,WAAW;aACzB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAExC,CAAC;QACF,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,MAAM,mBAAmB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;SACpD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAwB,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA4D,EAC5D,GAAoB,EACpB,IAAe;IAEf,MAAM,gBAAgB,GAAG,IAAI,EAAE,eAAe,IAAI,mBAAmB,CAAC;IACtE,MAAM,gBAAgB,GAAG,IAAI,EAAE,eAAe,IAAI,kBAAkB,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,EAAE,SAAS,IAAI,gBAAgB,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAEnD,IAAI,MAA0B,CAAC;IAC/B,IAAI,SAAS,GAA4B,MAAM,CAAC;IAEhD,sEAAsE;IAEtE,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACxB,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;IACd,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtC,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,SAAS,GAAG,iBAAiB,CAAC;QAChC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,8BAA8B,CAAC,CAAC;YAClE,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,GAAG,uBAAuB,CAAC;gBACjC,SAAS,GAAG,gBAAgB,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,+CAA+C;gBAC7C,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAC5B,SAAS,GAAG,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,sEAAsE;IAEtE,IAAI,MAA0B,CAAC;IAC/B,IAAI,SAAS,GAA4B,MAAM,CAAC;IAEhD,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACxB,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;IACd,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtC,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,SAAS,GAAG,iBAAiB,CAAC;QAChC,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,SAAS,CAAC;YACnB,SAAS,GAAG,gBAAgB,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,+CAA+C;gBAC7C,sDAAsD,CACzD,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAC5B,SAAS,GAAG,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAChE,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,gBAAgB;IAC7B,OAAO,KAAK,CAAC;QACX,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;AACL,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,22 @@
1
1
  #!/usr/bin/env node
2
- export {};
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
@@ -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":";AAoBA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AAoT9E;;;;;;;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";
@@ -9,6 +10,7 @@ import { buildMcpEntry, mergeConfig, removeConfig, resolveMcpServerPath, resolve
9
10
  import { installSkills, removeSkills } from "./skills.js";
10
11
  import { installTemplate, removeTemplate } from "./templates.js";
11
12
  import { installWorkflows, removeWorkflows } from "./workflows.js";
13
+ import { installAgents, removeAgents } from "./agents.js";
12
14
  import path from "node:path";
13
15
  import { fileURLToPath } from "node:url";
14
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -29,7 +31,8 @@ program
29
31
  .option("--api-key <key>", "Kanon API key")
30
32
  .option("--tool <name>", "Target a specific tool (claude-code, cursor, antigravity)")
31
33
  .option("--all", "Configure all detected tools")
32
- .option("--remove", "Remove Kanon configuration from tools");
34
+ .option("--remove", "Remove Kanon configuration from tools")
35
+ .option("-y, --yes", "Accept all defaults without interactive prompts");
33
36
  program.action(async (options) => {
34
37
  try {
35
38
  await run(options);
@@ -43,58 +46,35 @@ program.action(async (options) => {
43
46
  async function run(options) {
44
47
  const removeMode = options.remove === true;
45
48
  const assetsDir = getAssetsDir();
46
- // ── Platform Detection ─────────────────────────────────────────────
49
+ const isInteractive = !options.yes && !options.tool && !options.all && !!process.stdin.isTTY;
50
+ // ── 1. Platform Detection ──────────────────────────────────────────
47
51
  const ctx = await buildPlatformContext();
52
+ const platformLabel = ctx.platform === "wsl" ? "WSL2" : ctx.platform.charAt(0).toUpperCase() + ctx.platform.slice(1);
53
+ console.log(chalk.cyan("[info]") + ` Detected platform: ${chalk.bold(platformLabel)}`);
48
54
  if (ctx.platform === "wsl") {
49
55
  if (ctx.winHome) {
50
56
  console.log(chalk.cyan("[info]") +
51
- ` WSL detected — Windows home: ${chalk.bold(ctx.winHome)}`);
57
+ ` Windows home: ${chalk.bold(ctx.winHome)}`);
52
58
  }
53
59
  else {
54
60
  console.log(chalk.yellow("[warn]") +
55
61
  " WSL detected but could not resolve Windows home directory");
56
62
  }
57
63
  }
58
- // ── Tool Detection & Selection ─────────────────────────────────────
59
- let selectedTools;
60
- if (options.tool) {
61
- const tool = getToolByName(options.tool);
62
- if (!tool) {
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) ────────────────────────────
64
+ // ── 2. Detect all tools ────────────────────────────────────────────
65
+ const detectedTools = await detectTools(ctx);
66
+ // ── 3. Select tools (interactive or flag-based) ────────────────────
67
+ const selectedTools = await selectTools(detectedTools, { tool: options.tool, all: options.all, yes: options.yes }, isInteractive, ctx);
68
+ // ── 4. Auth Resolution (skip for --remove) ─────────────────────────
91
69
  let apiUrl = "";
92
70
  let apiKey = "";
71
+ let auth;
93
72
  if (!removeMode) {
94
- const auth = await resolveAuth({
73
+ auth = await resolveAuth({
95
74
  apiUrl: options.apiUrl,
96
75
  apiKey: options.apiKey,
97
- });
76
+ yes: options.yes,
77
+ }, ctx);
98
78
  apiUrl = auth.apiUrl;
99
79
  apiKey = auth.apiKey;
100
80
  }
@@ -154,6 +134,15 @@ async function run(options) {
154
134
  ` Removed ${removedWfs.length} workflows from ${chalk.bold(tool.displayName)}`);
155
135
  }
156
136
  }
137
+ // Remove agents
138
+ if (platformPaths.agents) {
139
+ const agentDir = platformPaths.agents(ctx);
140
+ const removedAgents = removeAgents(agentDir);
141
+ if (removedAgents.length > 0) {
142
+ console.log(chalk.green(" ✓") +
143
+ ` Removed ${removedAgents.length} agents from ${chalk.bold(tool.displayName)}`);
144
+ }
145
+ }
157
146
  successCount++;
158
147
  }
159
148
  else {
@@ -182,23 +171,88 @@ async function run(options) {
182
171
  ` Installed ${installedWfs.length} workflows to ${chalk.cyan(wfDir)}`);
183
172
  }
184
173
  }
174
+ // 5. Agents
175
+ if (platformPaths.agents) {
176
+ const agentDir = platformPaths.agents(ctx);
177
+ const installedAgents = installAgents(agentDir, assetsDir);
178
+ if (installedAgents.length > 0) {
179
+ console.log(chalk.green(" ✓") +
180
+ ` Installed ${installedAgents.length} agents to ${chalk.cyan(agentDir)}`);
181
+ }
182
+ }
185
183
  successCount++;
186
184
  }
187
185
  console.log("");
188
186
  }
189
- // ── Summary ────────────────────────────────────────────────────────
187
+ // ── 6. Summary ─────────────────────────────────────────────────────
190
188
  if (removeMode) {
191
189
  console.log(chalk.green(`✓ Removed Kanon configuration from ${successCount} tool(s).`));
192
190
  }
193
191
  else {
194
- console.log(chalk.green(`✓ Kanon configured for ${successCount} tool(s)!`));
192
+ console.log(chalk.green(`✓ Configured ${successCount} tool(s)!`));
195
193
  console.log("");
196
- console.log(` API URL: ${chalk.cyan(apiUrl)}`);
197
- console.log(` MCP: ${chalk.cyan(mcpResolution.mode === "local" ? mcpResolution.path : "npx @kanon/mcp")}`);
194
+ if (auth) {
195
+ const maskKey = (key) => key.length > 4 ? "****" + key.slice(-4) : "****";
196
+ console.log(` API URL: ${chalk.cyan(apiUrl)} ${chalk.dim(`(from ${auth.urlSource})`)}`);
197
+ console.log(` API Key: ${chalk.cyan(maskKey(apiKey))} ${chalk.dim(`(${auth.keySource})`)}`);
198
+ }
198
199
  console.log("");
199
200
  console.log(chalk.yellow(" Restart your AI coding tool(s) to pick up the new configuration."));
200
201
  }
201
202
  console.log("");
202
203
  }
204
+ // ─── Tool Selection ──────────────────────────────────────────────────────────
205
+ /**
206
+ * Select which tools to configure based on flags or interactive checkbox.
207
+ *
208
+ * - --tool <name> → single tool (validated against registry)
209
+ * - --all or --yes → all detected tools
210
+ * - interactive (TTY, no flags) → checkbox with all pre-selected
211
+ * - non-interactive (no TTY, no flags) → all detected tools
212
+ */
213
+ export async function selectTools(detected, flags, isInteractive, ctx, deps) {
214
+ // --tool flag: single tool by name
215
+ if (flags.tool) {
216
+ const tool = getToolByName(flags.tool);
217
+ if (!tool) {
218
+ throw new Error(`Unknown tool: '${flags.tool}'. Supported: claude-code, cursor, antigravity`);
219
+ }
220
+ if (!tool.platforms[ctx.platform]) {
221
+ throw new Error(`${tool.displayName} is not supported on ${ctx.platform}`);
222
+ }
223
+ return [tool];
224
+ }
225
+ // No tools detected → error
226
+ if (detected.length === 0) {
227
+ throw new Error("No supported tools detected. Install at least one supported AI coding tool.");
228
+ }
229
+ // --all or --yes → all detected
230
+ if (flags.all || flags.yes) {
231
+ return detected;
232
+ }
233
+ // Non-interactive (no TTY) → all detected
234
+ if (!isInteractive) {
235
+ return detected;
236
+ }
237
+ // Interactive → checkbox with all pre-selected
238
+ const _promptTools = deps?.promptTools ?? defaultPromptTools;
239
+ console.log("");
240
+ const selectedNames = await _promptTools(detected.map((t) => ({
241
+ name: t.displayName,
242
+ value: t.name,
243
+ checked: true,
244
+ })));
245
+ if (selectedNames.length === 0) {
246
+ console.log(chalk.yellow("No tools selected — nothing to do."));
247
+ process.exit(0);
248
+ }
249
+ return detected.filter((t) => selectedNames.includes(t.name));
250
+ }
251
+ async function defaultPromptTools(choices) {
252
+ return checkbox({
253
+ message: "Select tools to configure:",
254
+ choices,
255
+ });
256
+ }
203
257
  program.parse();
204
258
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +1 @@
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
+ {"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"}