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 +26 -0
- package/README.md +15 -11
- package/datasource-funifier-docs/.coverage.json +1 -1
- package/dist/cli/config-writers.d.ts +1 -3
- package/dist/cli/config-writers.d.ts.map +1 -1
- package/dist/cli/config-writers.js +20 -11
- package/dist/cli/config-writers.js.map +1 -1
- package/dist/cli/config-writers.test.js +25 -18
- package/dist/cli/config-writers.test.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +37 -36
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/init.test.js +51 -17
- package/dist/cli/init.test.js.map +1 -1
- package/dist/cli/prompts.d.ts +1 -0
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +9 -0
- package/dist/cli/prompts.js.map +1 -1
- package/dist/mcp/bundle.js +94 -94
- package/package.json +1 -1
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.
|
|
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": "
|
|
54
|
-
"args": ["
|
|
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 = "
|
|
70
|
-
args = ["
|
|
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": ["
|
|
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
|
|
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
|
```
|
|
@@ -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,
|
|
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,
|
|
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
|
|
16
|
+
function tomlStringArray(items) {
|
|
17
|
+
return `[${items.map(tomlString).join(", ")}]`;
|
|
18
|
+
}
|
|
19
|
+
function renderCodexConfig({ projectDir, creds }) {
|
|
11
20
|
return `[mcp_servers.funifier]
|
|
12
|
-
command =
|
|
13
|
-
args =
|
|
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
|
-
|
|
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: [
|
|
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:
|
|
51
|
-
args:
|
|
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:
|
|
63
|
-
args:
|
|
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":";;
|
|
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)("
|
|
16
|
-
const out = (0, config_writers_1.renderCodexConfig)({ projectDir,
|
|
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 = "
|
|
19
|
-
(0, vitest_1.expect)(out).toContain(
|
|
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
|
|
41
|
-
const out = JSON.parse((0, config_writers_1.renderOpencodeConfig)({ projectDir,
|
|
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(["
|
|
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
|
|
52
|
-
const out = JSON.parse((0, config_writers_1.renderCursorConfig)({ projectDir,
|
|
53
|
-
(0, vitest_1.expect)(out.mcpServers.funifier.command).toBe("
|
|
54
|
-
(0, vitest_1.expect)(out.mcpServers.funifier.args).toEqual([
|
|
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":";;AAAA,mCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"config-writers.test.js","sourceRoot":"","sources":["../../src/cli/config-writers.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
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(
|
|
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,
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
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
|
|
207
|
-
|
|
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
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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(
|
|
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 --
|
|
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.");
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|