funifier-mcp 0.3.22 → 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/CHANGELOG.md CHANGED
@@ -3,6 +3,32 @@
3
3
  All notable changes to `funifier-mcp` are documented here. Format loosely follows
4
4
  [Keep a Changelog](https://keepachangelog.com/); versions follow semver.
5
5
 
6
+ ## [0.4.0]
7
+
8
+ Setup now runs the MCP via `npx` instead of installing it into your project — eliminates the
9
+ dependency conflicts that `npm install funifier-mcp --save` caused in Node.js apps.
10
+
11
+ ### Changed
12
+ - **`funifier-mcp init` no longer installs the package into the consumer project.** The old flow
13
+ ran `npm install funifier-mcp@latest --save` (and `npm init -y`), mutating the project's
14
+ `package.json`, lockfile, and `node_modules` — so the MCP's own deps (`axios`, `zod`,
15
+ `@modelcontextprotocol/sdk`, `@inquirer/prompts`) collided with the host app's pinned versions.
16
+ Setup is now zero-install.
17
+ - **Generated MCP configs run the server via `npx`.** All platforms (Claude Code, Cursor,
18
+ Antigravity, Codex, OpenCode, Kimi) now emit `command: "npx"`, `args: ["-y", "funifier-mcp@latest"]`
19
+ instead of `command: "node"` + an absolute `node_modules/.../bundle.js` path. npx caches the
20
+ package in its own store (`~/.npm/_npx`) and never touches the project. Matches the
21
+ industry-standard stdio MCP distribution pattern (official MCP docs, `@modelcontextprotocol/server-*`).
22
+ - **Dropped the hardcoded `FUNIFIER_DOCS_PATH` from generated configs.** The server auto-resolves
23
+ its bundled docs from the running package, so the env var is no longer written.
24
+
25
+ ### Migration
26
+ - Re-running `funifier-mcp init` over an existing setup rewrites the configs to the npx form and,
27
+ when it detects a project-local `funifier-mcp` (in `package.json` or `node_modules`), offers to
28
+ run `npm uninstall funifier-mcp` to clean up the stale dependency.
29
+ - **Requirement:** Node.js with `npx` on `PATH` (ships with npm). Windows clients that can't find
30
+ `npx` can use `npx.cmd`; air-gapped setups can point `command`/`args` at a local install (see README).
31
+
6
32
  ## [0.3.22]
7
33
 
8
34
  New MCP tool `funifier_db_explain` and a full-replace warning on `funifier_database` updates.
package/README.md CHANGED
@@ -42,7 +42,7 @@ Once the MCP server is connected, agents discover and read docs through MCP tool
42
42
 
43
43
  ## MCP Server Setup
44
44
 
45
- The MCP server exposes Funifier as tools in any MCP-compatible AI client. `npx funifier-mcp@latest init` configures it automatically. For manual setup, install the package first (`npm install funifier-mcp`) then configure your client:
45
+ The MCP server exposes Funifier as tools in any MCP-compatible AI client. `npx funifier-mcp@latest init` configures it automatically. The server runs via **`npx`** — it is never installed into your project, so there are no dependency conflicts with your app's `package.json`/lockfile. The only requirement is **Node.js with `npx` on your `PATH`** (npx ships with npm). For manual setup, add the block below to your client config:
46
46
 
47
47
  ### Claude Code / Cursor / Antigravity (`.mcp.json`)
48
48
 
@@ -50,8 +50,8 @@ The MCP server exposes Funifier as tools in any MCP-compatible AI client. `npx f
50
50
  {
51
51
  "mcpServers": {
52
52
  "funifier": {
53
- "command": "node",
54
- "args": ["/absolute/path/to/node_modules/funifier-mcp/dist/mcp/bundle.js"],
53
+ "command": "npx",
54
+ "args": ["-y", "funifier-mcp@latest"],
55
55
  "env": {
56
56
  "FUNIFIER_API_KEY": "your-api-key",
57
57
  "FUNIFIER_SECRET_KEY": "your-secret-key",
@@ -66,8 +66,8 @@ The MCP server exposes Funifier as tools in any MCP-compatible AI client. `npx f
66
66
 
67
67
  ```toml
68
68
  [mcp_servers.funifier]
69
- command = "node"
70
- args = ["/absolute/path/to/node_modules/funifier-mcp/dist/mcp/bundle.js"]
69
+ command = "npx"
70
+ args = ["-y", "funifier-mcp@latest"]
71
71
  enabled = true
72
72
 
73
73
  [mcp_servers.funifier.env]
@@ -83,7 +83,7 @@ FUNIFIER_SERVER_URL = "https://your-instance.funifier.com"
83
83
  "mcp": {
84
84
  "funifier": {
85
85
  "type": "local",
86
- "command": ["node", "/absolute/path/to/node_modules/funifier-mcp/dist/mcp/bundle.js"],
86
+ "command": ["npx", "-y", "funifier-mcp@latest"],
87
87
  "environment": {
88
88
  "FUNIFIER_API_KEY": "your-api-key",
89
89
  "FUNIFIER_SECRET_KEY": "your-secret-key",
@@ -94,6 +94,10 @@ FUNIFIER_SERVER_URL = "https://your-instance.funifier.com"
94
94
  }
95
95
  ```
96
96
 
97
+ > **Windows:** if your client can't find `npx`, set `"command": "npx.cmd"` (or wrap it as `"command": "cmd", "args": ["/c", "npx", "-y", "funifier-mcp@latest"]`).
98
+ >
99
+ > **Air-gapped / offline:** npx needs network access on first run to fetch the package. Where that isn't possible, install `funifier-mcp` anywhere you like and point the client at its bin directly — e.g. `"command": "node", "args": ["/path/to/funifier-mcp/dist/mcp/index.js"]`.
100
+
97
101
  ### Runtime connection
98
102
 
99
103
  If no config is provided at startup, use the `funifier_connect` tool to connect:
@@ -149,12 +153,12 @@ Restore refuses cross-server application when the snapshot's `serverUrl` differs
149
153
 
150
154
  ## Skills and Instructions
151
155
 
152
- `npx funifier-mcp@latest init` copies the right files for each platform automatically. For manual setup, install first (`npm install funifier-mcp`) then copy:
156
+ `npx funifier-mcp@latest init` copies the right files for each platform automatically (recommended). For manual copying, use `npm install --no-save` so nothing is added to your project's `package.json`/lockfile:
153
157
 
154
158
  ### Claude Code
155
159
 
156
160
  ```bash
157
- npm install funifier-mcp
161
+ npm install --no-save funifier-mcp
158
162
  cp -r node_modules/funifier-mcp/skills/* .claude/skills/
159
163
  ```
160
164
 
@@ -167,7 +171,7 @@ Start with `/funifier` in Claude Code — the router skill routes to the right w
167
171
  ### Codex CLI / OpenCode
168
172
 
169
173
  ```bash
170
- npm install funifier-mcp
174
+ npm install --no-save funifier-mcp
171
175
  cp node_modules/funifier-mcp/AGENTS.md .
172
176
  ```
173
177
 
@@ -176,7 +180,7 @@ The `AGENTS.md` is the entry point for Codex, OpenCode, and any agent that reads
176
180
  ### GitHub Copilot / Continue
177
181
 
178
182
  ```bash
179
- npm install funifier-mcp
183
+ npm install --no-save funifier-mcp
180
184
  mkdir -p .github
181
185
  cp node_modules/funifier-mcp/.github/copilot-instructions.md .github/
182
186
  ```
@@ -186,7 +190,7 @@ Copilot and Continue automatically apply `.github/copilot-instructions.md`.
186
190
  ### Cursor IDE
187
191
 
188
192
  ```bash
189
- npm install funifier-mcp
193
+ npm install --no-save funifier-mcp
190
194
  mkdir -p .cursor/rules
191
195
  cp node_modules/funifier-mcp/.cursor/rules/funifier.mdc .cursor/rules/
192
196
  ```
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-07-01T15:34:00.000Z",
2
+ "generatedAt": "2026-07-01T20:31:00.000Z",
3
3
  "docsRoot": "datasource-funifier-docs/",
4
4
  "docs": {
5
5
  "knowledge/guides/aggregates.md": {
@@ -5,11 +5,9 @@ export interface Credentials {
5
5
  }
6
6
  export interface ConfigInput {
7
7
  projectDir: string;
8
- bundlePath: string;
9
- docsPath: string;
10
8
  creds: Credentials;
11
9
  }
12
- export declare function renderCodexConfig({ projectDir, bundlePath, docsPath, creds }: ConfigInput): string;
10
+ export declare function renderCodexConfig({ projectDir, creds }: ConfigInput): string;
13
11
  export declare function renderOpencodeConfig(input: ConfigInput): string;
14
12
  export declare function renderCursorConfig(input: ConfigInput): string;
15
13
  export declare function renderKimiConfig(input: ConfigInput): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config-writers.d.ts","sourceRoot":"","sources":["../../src/cli/config-writers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACpB;AAMD,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,GAAG,MAAM,CAclG;AAYD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe/D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe7D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe3D"}
1
+ {"version":3,"file":"config-writers.d.ts","sourceRoot":"","sources":["../../src/cli/config-writers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACpB;AAiBD,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,WAAW,GAAG,MAAM,CAa5E;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe/D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe7D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAe3D"}
@@ -4,13 +4,22 @@ exports.renderCodexConfig = renderCodexConfig;
4
4
  exports.renderOpencodeConfig = renderOpencodeConfig;
5
5
  exports.renderCursorConfig = renderCursorConfig;
6
6
  exports.renderKimiConfig = renderKimiConfig;
7
+ // The MCP server ships as an npm package with an npx-ready bin. Every client runs it via
8
+ // `npx -y funifier-mcp@latest` so nothing is installed into the consumer's project —
9
+ // no package.json/lockfile/node_modules mutation, no dependency conflicts. `@latest`
10
+ // keeps clients current on each cold start (npx caches in ~/.npm/_npx).
11
+ const NPX_COMMAND = "npx";
12
+ const NPX_ARGS = ["-y", "funifier-mcp@latest"];
7
13
  function tomlString(v) {
8
14
  return `"${v.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
9
15
  }
10
- function renderCodexConfig({ projectDir, bundlePath, docsPath, creds }) {
16
+ function tomlStringArray(items) {
17
+ return `[${items.map(tomlString).join(", ")}]`;
18
+ }
19
+ function renderCodexConfig({ projectDir, creds }) {
11
20
  return `[mcp_servers.funifier]
12
- command = "node"
13
- args = [${tomlString(bundlePath)}]
21
+ command = ${tomlString(NPX_COMMAND)}
22
+ args = ${tomlStringArray(NPX_ARGS)}
14
23
  cwd = ${tomlString(projectDir)}
15
24
  enabled = true
16
25
 
@@ -18,16 +27,16 @@ enabled = true
18
27
  FUNIFIER_API_KEY = ${tomlString(creds.apiKey)}
19
28
  FUNIFIER_SECRET_KEY = ${tomlString(creds.secretKey)}
20
29
  FUNIFIER_SERVER_URL = ${tomlString(creds.serverUrl)}
21
- FUNIFIER_DOCS_PATH = ${tomlString(docsPath)}
22
30
  FUNIFIER_PROJECT_ROOT = ${tomlString(projectDir)}
23
31
  `;
24
32
  }
25
- function funifierEnv({ projectDir, docsPath, creds }) {
33
+ // The server auto-resolves its bundled docs from the running package (see
34
+ // resolveDocsPath in resources/documentation.ts), so no FUNIFIER_DOCS_PATH is needed.
35
+ function funifierEnv({ projectDir, creds }) {
26
36
  return {
27
37
  FUNIFIER_API_KEY: creds.apiKey,
28
38
  FUNIFIER_SECRET_KEY: creds.secretKey,
29
39
  FUNIFIER_SERVER_URL: creds.serverUrl,
30
- FUNIFIER_DOCS_PATH: docsPath,
31
40
  FUNIFIER_PROJECT_ROOT: projectDir,
32
41
  };
33
42
  }
@@ -36,7 +45,7 @@ function renderOpencodeConfig(input) {
36
45
  mcp: {
37
46
  funifier: {
38
47
  type: "local",
39
- command: ["node", input.bundlePath],
48
+ command: [NPX_COMMAND, ...NPX_ARGS],
40
49
  cwd: input.projectDir,
41
50
  environment: funifierEnv(input),
42
51
  },
@@ -47,8 +56,8 @@ function renderCursorConfig(input) {
47
56
  return JSON.stringify({
48
57
  mcpServers: {
49
58
  funifier: {
50
- command: "node",
51
- args: [input.bundlePath],
59
+ command: NPX_COMMAND,
60
+ args: NPX_ARGS,
52
61
  cwd: input.projectDir,
53
62
  env: funifierEnv(input),
54
63
  },
@@ -59,8 +68,8 @@ function renderKimiConfig(input) {
59
68
  return JSON.stringify({
60
69
  mcpServers: {
61
70
  funifier: {
62
- command: "node",
63
- args: [input.bundlePath],
71
+ command: NPX_COMMAND,
72
+ args: NPX_ARGS,
64
73
  cwd: input.projectDir,
65
74
  env: funifierEnv(input),
66
75
  },
@@ -1 +1 @@
1
- {"version":3,"file":"config-writers.js","sourceRoot":"","sources":["../../src/cli/config-writers.ts"],"names":[],"mappings":";;AAiBA,8CAcC;AAYD,oDAeC;AAED,gDAeC;AAED,4CAeC;AA/ED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe;IACxF,OAAO;;UAEC,UAAU,CAAC,UAAU,CAAC;QACxB,UAAU,CAAC,UAAU,CAAC;;;;qBAIT,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;wBACrB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;wBAC3B,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;uBAC5B,UAAU,CAAC,QAAQ,CAAC;0BACjB,UAAU,CAAC,UAAU,CAAC;CAC/C,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe;IAC/D,OAAO;QACL,gBAAgB,EAAE,KAAK,CAAC,MAAM;QAC9B,mBAAmB,EAAE,KAAK,CAAC,SAAS;QACpC,mBAAmB,EAAE,KAAK,CAAC,SAAS;QACpC,kBAAkB,EAAE,QAAQ;QAC5B,qBAAqB,EAAE,UAAU;KAClC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAkB;IACrD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,GAAG,EAAE;YACH,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;gBACnC,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC;aAChC;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAkB;IACnD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;gBACxB,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;aACxB;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAkB;IACjD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;gBACxB,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;aACxB;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config-writers.js","sourceRoot":"","sources":["../../src/cli/config-writers.ts"],"names":[],"mappings":";;AA0BA,8CAaC;AAaD,oDAeC;AAED,gDAeC;AAED,4CAeC;AA1FD,yFAAyF;AACzF,qFAAqF;AACrF,qFAAqF;AACrF,wEAAwE;AACxE,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;AAE/C,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAe;IAClE,OAAO;YACG,UAAU,CAAC,WAAW,CAAC;SAC1B,eAAe,CAAC,QAAQ,CAAC;QAC1B,UAAU,CAAC,UAAU,CAAC;;;;qBAIT,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;wBACrB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;wBAC3B,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;0BACzB,UAAU,CAAC,UAAU,CAAC;CAC/C,CAAC;AACF,CAAC;AAED,0EAA0E;AAC1E,sFAAsF;AACtF,SAAS,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAe;IACrD,OAAO;QACL,gBAAgB,EAAE,KAAK,CAAC,MAAM;QAC9B,mBAAmB,EAAE,KAAK,CAAC,SAAS;QACpC,mBAAmB,EAAE,KAAK,CAAC,SAAS;QACpC,qBAAqB,EAAE,UAAU;KAClC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAkB;IACrD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,GAAG,EAAE;YACH,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;gBACnC,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC;aAChC;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAkB;IACnD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;aACxB;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAkB;IACjD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;aACxB;SACF;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -7,54 +7,61 @@ const creds = {
7
7
  secretKey: "SK",
8
8
  serverUrl: "https://acme.funifier.com",
9
9
  };
10
- const pkgRoot = "/pkg/root";
11
10
  const projectDir = "/proj";
12
- const bundlePath = "/pkg/root/dist/mcp/bundle.js";
13
- const docsPath = "/pkg/root/datasource-funifier-docs/knowledge";
14
11
  (0, vitest_1.describe)("renderCodexConfig", () => {
15
- (0, vitest_1.it)("produces valid TOML with command, args, cwd, and env", () => {
16
- const out = (0, config_writers_1.renderCodexConfig)({ projectDir, bundlePath, docsPath, creds });
12
+ (0, vitest_1.it)("runs the server via npx with command, args, cwd, and env", () => {
13
+ const out = (0, config_writers_1.renderCodexConfig)({ projectDir, creds });
17
14
  (0, vitest_1.expect)(out).toContain("[mcp_servers.funifier]");
18
- (0, vitest_1.expect)(out).toContain('command = "node"');
19
- (0, vitest_1.expect)(out).toContain(`args = ["${bundlePath}"]`);
15
+ (0, vitest_1.expect)(out).toContain('command = "npx"');
16
+ (0, vitest_1.expect)(out).toContain('args = ["-y", "funifier-mcp@latest"]');
20
17
  (0, vitest_1.expect)(out).toContain(`cwd = "${projectDir}"`);
21
18
  (0, vitest_1.expect)(out).toContain("enabled = true");
22
19
  (0, vitest_1.expect)(out).toContain("[mcp_servers.funifier.env]");
23
20
  (0, vitest_1.expect)(out).toContain('FUNIFIER_API_KEY = "AK"');
24
21
  (0, vitest_1.expect)(out).toContain('FUNIFIER_SECRET_KEY = "SK"');
25
22
  (0, vitest_1.expect)(out).toContain('FUNIFIER_SERVER_URL = "https://acme.funifier.com"');
26
- (0, vitest_1.expect)(out).toContain(`FUNIFIER_DOCS_PATH = "${docsPath}"`);
27
23
  (0, vitest_1.expect)(out).toContain(`FUNIFIER_PROJECT_ROOT = "${projectDir}"`);
24
+ // No project-local install coupling.
25
+ (0, vitest_1.expect)(out).not.toContain("bundle.js");
26
+ (0, vitest_1.expect)(out).not.toContain("FUNIFIER_DOCS_PATH");
28
27
  });
29
28
  (0, vitest_1.it)("escapes double quotes in values", () => {
30
29
  const out = (0, config_writers_1.renderCodexConfig)({
31
30
  projectDir,
32
- bundlePath,
33
- docsPath,
34
31
  creds: { ...creds, apiKey: 'has"quote' },
35
32
  });
36
33
  (0, vitest_1.expect)(out).toContain('FUNIFIER_API_KEY = "has\\"quote"');
37
34
  });
38
35
  });
39
36
  (0, vitest_1.describe)("renderOpencodeConfig", () => {
40
- (0, vitest_1.it)("produces valid JSON with mcp.funifier.command array, cwd, and environment", () => {
41
- const out = JSON.parse((0, config_writers_1.renderOpencodeConfig)({ projectDir, bundlePath, docsPath, creds }));
37
+ (0, vitest_1.it)("produces valid JSON with an npx command array, cwd, and environment", () => {
38
+ const out = JSON.parse((0, config_writers_1.renderOpencodeConfig)({ projectDir, creds }));
42
39
  (0, vitest_1.expect)(out.mcp.funifier.type).toBe("local");
43
- (0, vitest_1.expect)(out.mcp.funifier.command).toEqual(["node", bundlePath]);
40
+ (0, vitest_1.expect)(out.mcp.funifier.command).toEqual(["npx", "-y", "funifier-mcp@latest"]);
44
41
  (0, vitest_1.expect)(out.mcp.funifier.cwd).toBe(projectDir);
45
42
  (0, vitest_1.expect)(out.mcp.funifier.environment.FUNIFIER_API_KEY).toBe("AK");
46
- (0, vitest_1.expect)(out.mcp.funifier.environment.FUNIFIER_DOCS_PATH).toBe(docsPath);
47
43
  (0, vitest_1.expect)(out.mcp.funifier.environment.FUNIFIER_PROJECT_ROOT).toBe(projectDir);
44
+ (0, vitest_1.expect)(out.mcp.funifier.environment.FUNIFIER_DOCS_PATH).toBeUndefined();
48
45
  });
49
46
  });
50
47
  (0, vitest_1.describe)("renderCursorConfig", () => {
51
- (0, vitest_1.it)("produces valid JSON with mcpServers.funifier.command/args/cwd/env", () => {
52
- const out = JSON.parse((0, config_writers_1.renderCursorConfig)({ projectDir, bundlePath, docsPath, creds }));
53
- (0, vitest_1.expect)(out.mcpServers.funifier.command).toBe("node");
54
- (0, vitest_1.expect)(out.mcpServers.funifier.args).toEqual([bundlePath]);
48
+ (0, vitest_1.it)("produces valid JSON with npx command/args/cwd/env", () => {
49
+ const out = JSON.parse((0, config_writers_1.renderCursorConfig)({ projectDir, creds }));
50
+ (0, vitest_1.expect)(out.mcpServers.funifier.command).toBe("npx");
51
+ (0, vitest_1.expect)(out.mcpServers.funifier.args).toEqual(["-y", "funifier-mcp@latest"]);
55
52
  (0, vitest_1.expect)(out.mcpServers.funifier.cwd).toBe(projectDir);
56
53
  (0, vitest_1.expect)(out.mcpServers.funifier.env.FUNIFIER_SECRET_KEY).toBe("SK");
57
54
  (0, vitest_1.expect)(out.mcpServers.funifier.env.FUNIFIER_PROJECT_ROOT).toBe(projectDir);
55
+ (0, vitest_1.expect)(out.mcpServers.funifier.env.FUNIFIER_DOCS_PATH).toBeUndefined();
56
+ });
57
+ });
58
+ (0, vitest_1.describe)("renderKimiConfig", () => {
59
+ (0, vitest_1.it)("produces valid JSON with npx command/args/cwd/env", () => {
60
+ const out = JSON.parse((0, config_writers_1.renderKimiConfig)({ projectDir, creds }));
61
+ (0, vitest_1.expect)(out.mcpServers.funifier.command).toBe("npx");
62
+ (0, vitest_1.expect)(out.mcpServers.funifier.args).toEqual(["-y", "funifier-mcp@latest"]);
63
+ (0, vitest_1.expect)(out.mcpServers.funifier.cwd).toBe(projectDir);
64
+ (0, vitest_1.expect)(out.mcpServers.funifier.env.FUNIFIER_API_KEY).toBe("AK");
58
65
  });
59
66
  });
60
67
  //# sourceMappingURL=config-writers.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-writers.test.js","sourceRoot":"","sources":["../../src/cli/config-writers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-writers.test.js","sourceRoot":"","sources":["../../src/cli/config-writers.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,qDAM0B;AAE1B,MAAM,KAAK,GAAgB;IACzB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,2BAA2B;CACvC,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,GAAG,GAAG,IAAA,kCAAiB,EAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,UAAU,GAAG,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACjD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4BAA4B,UAAU,GAAG,CAAC,CAAC;QACjE,qCAAqC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,IAAA,kCAAiB,EAAC;YAC5B,UAAU;YACV,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;SACzC,CAAC,CAAC;QACH,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,WAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,qCAAoB,EAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC/E,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAA,eAAM,EAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,mCAAkB,EAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClE,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC5E,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iCAAgB,EAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC5E,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AA8OA,wBAA8B,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDzF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmPA,wBAA8B,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CzF"}
package/dist/cli/init.js CHANGED
@@ -47,13 +47,6 @@ const PLACEHOLDER_CREDS = {
47
47
  secretKey: "your-secret-key",
48
48
  serverUrl: "https://your-instance.funifier.com",
49
49
  };
50
- function ensurePackageJson(projectDir) {
51
- if (!fs.existsSync(path.join(projectDir, "package.json"))) {
52
- console.log("📋 No package.json found — running `npm init -y`...");
53
- (0, child_process_1.execSync)("npm init -y", { cwd: projectDir, stdio: "inherit" });
54
- console.log("");
55
- }
56
- }
57
50
  function requireTty() {
58
51
  if (!process.stdout.isTTY || !process.stdin.isTTY) {
59
52
  console.error("❌ funifier-mcp init requires an interactive terminal.");
@@ -173,15 +166,13 @@ async function copyPlatformFiles(pkgRoot, projectDir, platforms, resolver) {
173
166
  }
174
167
  }
175
168
  }
176
- function writePlatformConfigs(pkgRoot, projectDir, platforms, creds) {
177
- const bundlePath = path.join(pkgRoot, "dist", "mcp", "bundle.js");
178
- const docsPath = path.join(pkgRoot, "datasource-funifier-docs", "knowledge");
169
+ function writePlatformConfigs(projectDir, platforms, creds) {
179
170
  for (const platform of platforms) {
180
171
  if (!platform.configFile)
181
172
  continue;
182
173
  const target = path.join(projectDir, platform.configFile.dest);
183
174
  fs.mkdirSync(path.dirname(target), { recursive: true });
184
- const content = platform.configFile.render({ projectDir, bundlePath, docsPath, creds });
175
+ const content = platform.configFile.render({ projectDir, creds });
185
176
  fs.writeFileSync(target, content);
186
177
  console.log(` ✓ ${platform.configFile.dest}`);
187
178
  }
@@ -196,24 +187,38 @@ function removeLegacyFunifierSkills(skillsDir) {
196
187
  }
197
188
  }
198
189
  }
199
- function installFunifierMcp(projectDir) {
200
- // Detect update mode: funifier-mcp already installed means any failure strands the user on the old version.
201
- const isUpdate = fs.existsSync(path.join(projectDir, "node_modules", "funifier-mcp"));
202
- console.log("📥 Installing funifier-mcp@latest locally...");
190
+ // The MCP now runs via npx (see config-writers.ts), so a project-local install is dead weight
191
+ // and the classic source of dependency conflicts. Detect a legacy install and offer to remove it.
192
+ function hasLegacyLocalInstall(projectDir) {
193
+ if (fs.existsSync(path.join(projectDir, "node_modules", "funifier-mcp")))
194
+ return true;
195
+ const pkgJsonPath = path.join(projectDir, "package.json");
196
+ if (!fs.existsSync(pkgJsonPath))
197
+ return false;
203
198
  try {
204
- (0, child_process_1.execSync)("npm install funifier-mcp@latest --save", { cwd: projectDir, stdio: "inherit" });
199
+ const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
200
+ return Boolean(pkg.dependencies?.["funifier-mcp"] || pkg.devDependencies?.["funifier-mcp"]);
205
201
  }
206
- catch (err) {
207
- if (isUpdate) {
208
- throw new Error("npm install funifier-mcp@latest failed — existing installation was not updated. " +
209
- "Fix the npm error above and re-run init.");
210
- }
211
- console.warn(" ⚠ npm install failed — continuing with bundled package");
202
+ catch {
203
+ return false;
212
204
  }
213
205
  }
214
- function resolveEffectivePkgRoot(projectDir) {
215
- const local = path.join(projectDir, "node_modules", "funifier-mcp");
216
- return fs.existsSync(local) ? local : (0, paths_1.resolvePackageRoot)();
206
+ async function cleanupLegacyInstall(projectDir) {
207
+ if (!hasLegacyLocalInstall(projectDir))
208
+ return;
209
+ console.log("\nℹ funifier-mcp is installed as a project dependency. The MCP now runs via npx —" +
210
+ " the local install is no longer needed.");
211
+ if (!(await (0, prompts_1.askUninstallLegacy)())) {
212
+ console.log(" – kept the local funifier-mcp install (safe to remove: `npm uninstall funifier-mcp`)");
213
+ return;
214
+ }
215
+ try {
216
+ (0, child_process_1.execSync)("npm uninstall funifier-mcp", { cwd: projectDir, stdio: "inherit" });
217
+ console.log(" ✗ removed local funifier-mcp dependency");
218
+ }
219
+ catch {
220
+ console.warn(" ⚠ `npm uninstall funifier-mcp` failed — remove it manually if conflicts persist");
221
+ }
217
222
  }
218
223
  /**
219
224
  * Build the TF-IDF search index from the docs directory and write it to disk.
@@ -253,16 +258,11 @@ async function main(targetDir, devPkgRoot) {
253
258
  console.log("📦 Funifier MCP Setup\n");
254
259
  const projectDir = targetDir ? path.resolve(targetDir) : process.cwd();
255
260
  requireTty();
256
- ensurePackageJson(projectDir);
257
- let pkgRoot;
258
- if (devPkgRoot) {
261
+ // Run the MCP straight from the package that hosts this `init` command (npx cache in prod,
262
+ // the checked-out repo in dev). Nothing is installed into the consumer project.
263
+ const pkgRoot = devPkgRoot ?? (0, paths_1.resolvePackageRoot)();
264
+ if (devPkgRoot)
259
265
  console.log(`🔧 Dev mode — using local package at ${devPkgRoot}\n`);
260
- pkgRoot = devPkgRoot;
261
- }
262
- else {
263
- installFunifierMcp(projectDir);
264
- pkgRoot = resolveEffectivePkgRoot(projectDir);
265
- }
266
266
  const platforms = await (0, prompts_1.selectPlatforms)();
267
267
  const creds = await (0, prompts_1.askCredentials)(projectDir);
268
268
  console.log("");
@@ -271,10 +271,11 @@ async function main(targetDir, devPkgRoot) {
271
271
  const resolver = makeConflictResolver();
272
272
  await copyPlatformFiles(pkgRoot, projectDir, platforms, resolver);
273
273
  await cleanupLegacyDocsCopy(projectDir);
274
+ await cleanupLegacyInstall(projectDir);
274
275
  ensurePersonaSection(projectDir, platforms);
275
276
  writeFunifierJson(projectDir, creds);
276
277
  ensureGitignoreEntries(projectDir, !!creds);
277
- writePlatformConfigs(pkgRoot, projectDir, platforms, creds ?? PLACEHOLDER_CREDS);
278
+ writePlatformConfigs(projectDir, platforms, creds ?? PLACEHOLDER_CREDS);
278
279
  console.log("\n✅ Setup complete.");
279
280
  if (platforms.some((p) => p.key === "claude-code")) {
280
281
  console.log(" Claude Code: type /funifier to start.");
@@ -289,7 +290,7 @@ async function main(targetDir, devPkgRoot) {
289
290
  const homeDir = process.env.USERPROFILE || process.env.HOME || "~";
290
291
  const globalConfigPath = path.join(homeDir, ".kimi", "mcp.json");
291
292
  console.log(` Kimi: merge .kimi/mcp.json into ${globalConfigPath}`);
292
- console.log(" Or: run `kimi mcp add --transport stdio funifier -- node <path-to-bundle.js>`");
293
+ console.log(" Or: run `kimi mcp add --transport stdio funifier -- npx -y funifier-mcp@latest`");
293
294
  }
294
295
  if (!creds) {
295
296
  console.log(" ⚠ Fill in funifier.json.example and rename to funifier.json before using the MCP.");
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8OA,uBAiDC;AA/RD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,mCAA6C;AAE7C,iCAA6D;AAC7D,uCAA8F;AAE9F,uCAA8D;AAC9D,6CAA+D;AAE/D,MAAM,iBAAiB,GAAgB;IACrC,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,oCAAoC;CAChD,CAAC;AAEF,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAA,wBAAQ,EAAC,aAAa,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,IAAI,YAAY;YAAE,OAAO,WAAW,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,KAAyB;IACtE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACtD,yEAAyE;QACzE,6EAA6E;QAC7E,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB,EAAE,mBAA4B;IAC9E,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACvG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,gBAAgB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,kCAAkC,EAAE,wBAAwB,CAAC,CAAC;AAExF,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO,CAAC,QAAQ,CAAC,0BAAgB,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB,EAAE,eAAwB;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,iBAAiB,CAAC,OAAO,CAAC;YAAE,OAAO;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,yBAAe,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,eAAe,EAAE,CAAC;QAC3B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,yBAAe,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,+BAA+B,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,SAAqB;IACrE,kFAAkF;IAClF,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/D,6EAA6E;IAC7E,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;QACnD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,wFAAwF;AACxF,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO;IACnC,IAAI,MAAM,IAAA,6BAAmB,GAAE,EAAE,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAe,EACf,UAAkB,EAClB,SAAqB,EACrB,QAA0B;IAE1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,kCAAkC,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;oBAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC;gBAC5D,MAAM,IAAA,cAAO,EAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAA,eAAQ,EAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAe,EACf,UAAkB,EAClB,SAAqB,EACrB,KAAkB;IAElB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;IAC7E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,SAAS;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,SAAiB;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IACtC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,4GAA4G;IAC5G,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,kFAAkF;gBAClF,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAkB;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACpE,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,0BAAkB,GAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;IAEvF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;QAC3C,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAChE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAgB,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC;IAC7C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAEc,KAAK,UAAU,IAAI,CAAC,SAAkB,EAAE,UAAmB;IACxE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACvE,UAAU,EAAE,CAAC;IACb,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAE9B,IAAI,OAAe,CAAC;IACpB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,IAAI,CAAC,CAAC;QACpE,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAe,GAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAc,EAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,4EAA4E;IAC5E,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACxC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE5C,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,sBAAsB,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5C,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,iBAAiB,CAAC,CAAC;IAEjF,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;QACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,2DAA2D,gBAAgB,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;QACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,sCAAsC,gBAAgB,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACtG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}