builder-doctor 1.0.18 → 1.0.21
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/README.md +44 -1
- package/dist/fetch.d.ts +2 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +75 -0
- package/dist/fetch.js.map +1 -1
- package/dist/index.js +47 -2
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +1 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +3 -2
- package/dist/install.js.map +1 -1
- package/dist/mcp.d.ts +8 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +134 -0
- package/dist/mcp.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ builder-doctor [options] [commands]
|
|
|
24
24
|
|
|
25
25
|
- `--verbose` - Show detailed output for each check
|
|
26
26
|
- `--source <owner/repo>` - Override the install source repository for `install-skill`, `skills`, and `install-plugin`
|
|
27
|
+
- `--agent <name>` - Set the target agent folder for `install-skill` (e.g. `github` -> `.github`, `claude` -> `.claude`). Defaults to `.builder`
|
|
27
28
|
- `BUILDER_SKILLS_SOURCE=<owner/repo>` - Environment variable to set the default source repository (overridden by `--source`)
|
|
28
29
|
- `--help, -h` - Show help message
|
|
29
30
|
|
|
@@ -122,9 +123,13 @@ Install a skill from `https://github.com/BuilderIO/builder-agent-skills` into `.
|
|
|
122
123
|
|
|
123
124
|
You can use `--source` or the environment variable `BUILDER_SKILLS_SOURCE` to override the source of skills/plugins.
|
|
124
125
|
|
|
126
|
+
Use `--agent <name>` to install into a different agent folder (e.g. `.github`, `.claude`, `.cursor`) instead of the default `.builder`.
|
|
127
|
+
|
|
125
128
|
```bash
|
|
126
129
|
npx builder-doctor install-skill skill-creator
|
|
127
130
|
npx builder-doctor install-skill skill-a skill-b
|
|
131
|
+
npx builder-doctor install-skill skill-creator --agent github # installs to .github/skills/skill-creator
|
|
132
|
+
npx builder-doctor install-skill skill-creator --agent claude # installs to .claude/skills/skill-creator
|
|
128
133
|
```
|
|
129
134
|
|
|
130
135
|
If files already exist for that skill, they are overwritten. Multiple skills can be installed at once.
|
|
@@ -149,6 +154,36 @@ npx builder-doctor install-plugin my-plugin
|
|
|
149
154
|
|
|
150
155
|
Plugin contents are extracted into the `.builder` root (for example: `skills`, `agents`, `rules`, etc).
|
|
151
156
|
|
|
157
|
+
### mcp
|
|
158
|
+
|
|
159
|
+
Add or remove the Builder MCP server entry in an agent's MCP configuration file.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx builder-doctor mcp add <agent>
|
|
163
|
+
npx builder-doctor mcp remove <agent>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Supported agents and the file each one writes to:
|
|
167
|
+
|
|
168
|
+
| Agent | File |
|
|
169
|
+
| ------------ | ------------------------------------- |
|
|
170
|
+
| `claude` | `~/.claude/settings.local.json` |
|
|
171
|
+
| `cursor` | `~/.cursor/mcp.json` |
|
|
172
|
+
| `copilot` | `.vscode/mcp.json` (project-local) |
|
|
173
|
+
| `code_puppy` | `~/.code_puppy/mcp_servers.json` |
|
|
174
|
+
| _(omitted)_ | `mcp.json` (project-local) |
|
|
175
|
+
|
|
176
|
+
`add` creates the file (and any missing parent directories) if it doesn't exist, and merges the `builder-mcp` entry into it without disturbing other settings. `remove` deletes only the `builder-mcp` entry.
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
npx builder-doctor mcp add claude # ~/.claude/settings.local.json
|
|
180
|
+
npx builder-doctor mcp add cursor # ~/.cursor/mcp.json
|
|
181
|
+
npx builder-doctor mcp add copilot # .vscode/mcp.json
|
|
182
|
+
npx builder-doctor mcp add code_puppy # ~/.code_puppy/mcp_servers.json
|
|
183
|
+
npx builder-doctor mcp add # ./mcp.json
|
|
184
|
+
npx builder-doctor mcp remove claude # remove from Claude
|
|
185
|
+
```
|
|
186
|
+
|
|
152
187
|
## Examples
|
|
153
188
|
|
|
154
189
|
```bash
|
|
@@ -158,11 +193,19 @@ builder-doctor rules # Run only rules checks
|
|
|
158
193
|
builder-doctor setup # Get project setup instructions
|
|
159
194
|
builder-doctor env # Display environment variables
|
|
160
195
|
builder-doctor install-skill skill-creator # Install a skill into .builder/skills
|
|
196
|
+
builder-doctor install-skill skill-creator --agent github # Install a skill into .github/skills
|
|
197
|
+
builder-doctor install-skill skill-creator --agent claude # Install a skill into .claude/skills
|
|
161
198
|
builder-doctor install-skill skill-creator --source myorg/myrepo # Install a skill from a custom source
|
|
162
199
|
builder-doctor skills # List available skills (requires SKILL.md)
|
|
163
200
|
builder-doctor skills --source myorg/myrepo # List available skills from a custom source
|
|
164
201
|
BUILDER_SKILLS_SOURCE=myorg/myrepo builder-doctor skills # Use env var as the default source
|
|
165
202
|
builder-doctor install-plugin my-plugin # Install a plugin into .builder
|
|
166
203
|
builder-doctor install-plugin my-plugin --source myorg/myrepo # Install a plugin from a custom source
|
|
204
|
+
builder-doctor mcp add claude # Add Builder MCP entry to ~/.claude/settings.local.json
|
|
205
|
+
builder-doctor mcp add cursor # Add Builder MCP entry to ~/.cursor/mcp.json
|
|
206
|
+
builder-doctor mcp add copilot # Add Builder MCP entry to .vscode/mcp.json
|
|
207
|
+
builder-doctor mcp add code_puppy # Add Builder MCP entry to ~/.code_puppy/mcp_servers.json
|
|
208
|
+
builder-doctor mcp add # Create or update a local mcp.json
|
|
209
|
+
builder-doctor mcp remove claude # Remove the Builder MCP entry for Claude
|
|
167
210
|
builder-doctor --verbose # Run all checks with detailed output
|
|
168
|
-
```
|
|
211
|
+
```
|
package/dist/fetch.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ declare function getAgent(_url?: string): Promise<Dispatcher>;
|
|
|
10
10
|
* Uses undici; respects NODE_TLS_REJECT_UNAUTHORIZED for TLS verification.
|
|
11
11
|
*/
|
|
12
12
|
export declare const safeFetch: (input: string | URL, init?: RequestInit) => ReturnType<typeof globalThis.fetch>;
|
|
13
|
+
export declare function getTlsCertErrorCode(error: unknown): string | undefined;
|
|
14
|
+
export declare function formatTlsCertErrorMessage(code: string): string;
|
|
13
15
|
export declare const __testing__: {
|
|
14
16
|
getAgent: typeof getAgent;
|
|
15
17
|
resetCache: () => void;
|
package/dist/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGhB,UAAU,EACX,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGhB,UAAU,EACX,MAAM,QAAQ,CAAC;AA4ChB;;;;GAIG;AACH,iBAAe,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAmC1D;AAoBD;;;GAGG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,MAAM,GAAG,GAAG,EACnB,OAAO,WAAW,KACjB,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAWpC,CAAC;AAWF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUtE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB9D;AAED,eAAO,MAAM,WAAW;;;CAKvB,CAAC"}
|
package/dist/fetch.js
CHANGED
|
@@ -4,16 +4,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.__testing__ = exports.safeFetch = void 0;
|
|
7
|
+
exports.getTlsCertErrorCode = getTlsCertErrorCode;
|
|
8
|
+
exports.formatTlsCertErrorMessage = formatTlsCertErrorMessage;
|
|
7
9
|
const undici_1 = require("undici");
|
|
8
10
|
const node_process_1 = __importDefault(require("node:process"));
|
|
11
|
+
const node_tls_1 = __importDefault(require("node:tls"));
|
|
9
12
|
const package_json_1 = require("../package.json");
|
|
10
13
|
let _agent;
|
|
14
|
+
let _systemCAsLoaded = false;
|
|
15
|
+
/**
|
|
16
|
+
* Merge the OS trust store into Node's default CA list so that requests trust
|
|
17
|
+
* certificates added at the system level (e.g. corporate root CAs deployed via
|
|
18
|
+
* MDM, Keychain, the Windows cert store, or /etc/ssl/certs).
|
|
19
|
+
*
|
|
20
|
+
* No-op on Node versions that lack tls.getCACertificates / setDefaultCACertificates
|
|
21
|
+
* (added in Node 22.15). Best-effort; failures are swallowed so an unusual
|
|
22
|
+
* system trust store cannot break fetches that would otherwise have worked.
|
|
23
|
+
*/
|
|
24
|
+
function ensureSystemCAsLoaded() {
|
|
25
|
+
if (_systemCAsLoaded)
|
|
26
|
+
return;
|
|
27
|
+
_systemCAsLoaded = true;
|
|
28
|
+
const t = node_tls_1.default;
|
|
29
|
+
if (typeof t.getCACertificates !== "function" ||
|
|
30
|
+
typeof t.setDefaultCACertificates !== "function") {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const system = t.getCACertificates("system");
|
|
35
|
+
if (!system || system.length === 0)
|
|
36
|
+
return;
|
|
37
|
+
const defaults = t.getCACertificates("default");
|
|
38
|
+
t.setDefaultCACertificates([...defaults, ...system]);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// best-effort — fall through to whatever default trust Node had
|
|
42
|
+
}
|
|
43
|
+
}
|
|
11
44
|
/**
|
|
12
45
|
* Get a dispatcher (Agent or ProxyAgent) for fetch requests.
|
|
13
46
|
* Respects HTTPS_PROXY, https_proxy, HTTP_PROXY, http_proxy.
|
|
14
47
|
* When no proxy is set, uses a plain Agent with optional TLS verification control.
|
|
15
48
|
*/
|
|
16
49
|
async function getAgent(_url) {
|
|
50
|
+
ensureSystemCAsLoaded();
|
|
17
51
|
const rejectUnauthorized = node_process_1.default.env.NODE_TLS_REJECT_UNAUTHORIZED !== "0";
|
|
18
52
|
const envProxyUrl = node_process_1.default.env.HTTPS_PROXY ||
|
|
19
53
|
node_process_1.default.env.https_proxy ||
|
|
@@ -74,6 +108,47 @@ const safeFetch = async (input, init) => {
|
|
|
74
108
|
});
|
|
75
109
|
};
|
|
76
110
|
exports.safeFetch = safeFetch;
|
|
111
|
+
const TLS_CERT_ERROR_CODES = new Set([
|
|
112
|
+
"SELF_SIGNED_CERT_IN_CHAIN",
|
|
113
|
+
"DEPTH_ZERO_SELF_SIGNED_CERT",
|
|
114
|
+
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
115
|
+
"UNABLE_TO_VERIFY_LEAF_SIGNATURE",
|
|
116
|
+
"CERT_UNTRUSTED",
|
|
117
|
+
"ERR_TLS_CERT_ALTNAME_INVALID",
|
|
118
|
+
]);
|
|
119
|
+
function getTlsCertErrorCode(error) {
|
|
120
|
+
let current = error;
|
|
121
|
+
for (let i = 0; i < 8 && current; i += 1) {
|
|
122
|
+
const code = current.code;
|
|
123
|
+
if (typeof code === "string" && TLS_CERT_ERROR_CODES.has(code)) {
|
|
124
|
+
return code;
|
|
125
|
+
}
|
|
126
|
+
current = current.cause;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
function formatTlsCertErrorMessage(code) {
|
|
131
|
+
return [
|
|
132
|
+
`Network request failed with TLS certificate error: ${code}.`,
|
|
133
|
+
"",
|
|
134
|
+
"This usually means your network is behind a corporate proxy or firewall that",
|
|
135
|
+
"intercepts HTTPS traffic with a custom certificate authority that Node.js does",
|
|
136
|
+
"not trust by default.",
|
|
137
|
+
"",
|
|
138
|
+
"To fix this, try one of the following (in order of preference):",
|
|
139
|
+
" 1. Point Node at your organization's root CA bundle (recommended):",
|
|
140
|
+
" export NODE_EXTRA_CA_CERTS=/path/to/your-org-ca.pem",
|
|
141
|
+
" Ask your IT team for the certificate file if you do not have it.",
|
|
142
|
+
"",
|
|
143
|
+
" 2. If you are behind an HTTP(S) proxy, make sure it is set:",
|
|
144
|
+
" export HTTPS_PROXY=http://your-proxy:port",
|
|
145
|
+
" export HTTP_PROXY=http://your-proxy:port",
|
|
146
|
+
"",
|
|
147
|
+
" 3. As a last resort (insecure, disables TLS verification), re-run with",
|
|
148
|
+
" the --acceptSelfSigned flag, or set:",
|
|
149
|
+
" export NODE_TLS_REJECT_UNAUTHORIZED=0",
|
|
150
|
+
].join("\n");
|
|
151
|
+
}
|
|
77
152
|
exports.__testing__ = {
|
|
78
153
|
getAgent,
|
|
79
154
|
resetCache: () => {
|
package/dist/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;;;;AA2IA,kDAUC;AAED,8DAqBC;AA5KD,mCAMgB;AAChB,gEAAmC;AACnC,wDAA2B;AAC3B,kDAAwD;AAExD,IAAI,MAA8B,CAAC;AACnC,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B;;;;;;;;GAQG;AACH,SAAS,qBAAqB;IAC5B,IAAI,gBAAgB;QAAE,OAAO;IAC7B,gBAAgB,GAAG,IAAI,CAAC;IAExB,MAAM,CAAC,GAAG,kBAKT,CAAC;IACF,IACE,OAAO,CAAC,CAAC,iBAAiB,KAAK,UAAU;QACzC,OAAO,CAAC,CAAC,wBAAwB,KAAK,UAAU,EAChD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC,wBAAwB,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,QAAQ,CAAC,IAAa;IACnC,qBAAqB,EAAE,CAAC;IAExB,MAAM,kBAAkB,GAAG,sBAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC;IAE5E,MAAM,WAAW,GACf,sBAAO,CAAC,GAAG,CAAC,WAAW;QACvB,sBAAO,CAAC,GAAG,CAAC,WAAW;QACvB,sBAAO,CAAC,GAAG,CAAC,UAAU;QACtB,sBAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEzB,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,mBAAU,CAAC;gBACtB,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE;oBACP,kBAAkB;iBACnB;gBACD,UAAU,EAAE;oBACV,kBAAkB;iBACnB;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,cAAK,CAAC;YACjB,OAAO,EAAE;gBACP,kBAAkB;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,WAAW,GAA2B;QAC1C,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,QAAQ;KACd,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,sBAAO,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IAC5D,MAAM,SAAS,GAAG,sBAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO;QACL,YAAY,EAAE,gBAAgB,QAAQ,GACpC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EACjC,oBAAoB,sBAAU,EAAE;QAChC,oBAAoB,EAAE,QAAQ;KAC/B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,MAAM,SAAS,GAAG,KAAK,EAC5B,KAAmB,EACnB,IAAkB,EACmB,EAAE;IACvC,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAA,cAAa,EAAC,KAAK,EAAE;QAC1B,GAAG,IAAI;QACP,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE;YACP,GAAG,IAAI,EAAE,OAAO;YAChB,GAAG,YAAY,EAAE;SAClB;KACF,CAAwC,CAAC;AAC5C,CAAC,CAAC;AAdW,QAAA,SAAS,aAcpB;AAEF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,2BAA2B;IAC3B,6BAA6B;IAC7B,mCAAmC;IACnC,iCAAiC;IACjC,gBAAgB;IAChB,8BAA8B;CAC/B,CAAC,CAAC;AAEH,SAAgB,mBAAmB,CAAC,KAAc;IAChD,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAC;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,yBAAyB,CAAC,IAAY;IACpD,OAAO;QACL,sDAAsD,IAAI,GAAG;QAC7D,EAAE;QACF,8EAA8E;QAC9E,gFAAgF;QAChF,uBAAuB;QACvB,EAAE;QACF,iEAAiE;QACjE,sEAAsE;QACtE,4DAA4D;QAC5D,uEAAuE;QACvE,EAAE;QACF,+DAA+D;QAC/D,kDAAkD;QAClD,iDAAiD;QACjD,EAAE;QACF,0EAA0E;QAC1E,2CAA2C;QAC3C,8CAA8C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,QAAQ;IACR,UAAU,EAAE,GAAG,EAAE;QACf,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;CACF,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,15 @@ const setup_1 = require("./setup");
|
|
|
6
6
|
const env_1 = require("./env");
|
|
7
7
|
const network_1 = require("./network");
|
|
8
8
|
const install_1 = require("./install");
|
|
9
|
+
const mcp_1 = require("./mcp");
|
|
10
|
+
const fetch_1 = require("./fetch");
|
|
9
11
|
const args = process.argv.slice(2);
|
|
10
12
|
const verbose = args.includes("--verbose");
|
|
13
|
+
const acceptSelfSigned = args.includes("--acceptSelfSigned");
|
|
14
|
+
if (acceptSelfSigned) {
|
|
15
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
16
|
+
console.warn("Warning: --acceptSelfSigned is set. TLS certificate verification is disabled for this run; only use on trusted networks.");
|
|
17
|
+
}
|
|
11
18
|
const rules = args.includes("rules");
|
|
12
19
|
const network = args.includes("network");
|
|
13
20
|
const setup = args.includes("setup");
|
|
@@ -25,7 +32,11 @@ if (installSkill) {
|
|
|
25
32
|
const installPlugin = args[0] === "install-plugin";
|
|
26
33
|
const installPluginName = installPlugin ? args[1] : undefined;
|
|
27
34
|
const skills = args[0] === "skills";
|
|
35
|
+
const mcp = args[0] === "mcp";
|
|
36
|
+
const mcpActionRaw = mcp ? args[1] : undefined;
|
|
37
|
+
const mcpAgent = mcp && args[2] && !args[2].startsWith("--") ? args[2] : undefined;
|
|
28
38
|
const source = getOptionValue("--source");
|
|
39
|
+
const agent = getOptionValue("--agent");
|
|
29
40
|
const all = !rules &&
|
|
30
41
|
!network &&
|
|
31
42
|
!setup &&
|
|
@@ -33,7 +44,8 @@ const all = !rules &&
|
|
|
33
44
|
!showHelp &&
|
|
34
45
|
!installSkill &&
|
|
35
46
|
!installPlugin &&
|
|
36
|
-
!skills
|
|
47
|
+
!skills &&
|
|
48
|
+
!mcp;
|
|
37
49
|
const help = `
|
|
38
50
|
builder-doctor - A CLI tool for Builder.io diagnostics
|
|
39
51
|
|
|
@@ -45,13 +57,18 @@ Commands:
|
|
|
45
57
|
setup Run Builder.io agent to analyze project and provide setup instructions
|
|
46
58
|
env Display all environment variables sorted alphabetically
|
|
47
59
|
install-skill <skill-name...> Install one or more skills from BuilderIO/builder-agent-skills
|
|
60
|
+
Use --agent <name> to change the install folder (e.g. github, claude, cursor)
|
|
48
61
|
skills List available skills
|
|
49
62
|
install-plugin <plugin-name> Install a plugin from BuilderIO/builder-agent-plugins
|
|
63
|
+
mcp <add|remove> [agent] Add or remove the Builder MCP server entry
|
|
64
|
+
Agents: claude, cursor, copilot, code_puppy. Omit agent to write a local mcp.json.
|
|
50
65
|
help Show this help message
|
|
51
66
|
|
|
52
67
|
Options:
|
|
53
68
|
--verbose Show detailed output for each check
|
|
54
69
|
--source <owner/repo> Override source repository (GitHub owner/repository). Overrides BUILDER_SKILLS_SOURCE
|
|
70
|
+
--agent <name> Set the target agent folder (e.g. github -> .github, claude -> .claude). Default: .builder
|
|
71
|
+
--acceptSelfSigned Trust self-signed / untrusted TLS certificates for this run (insecure; only use on trusted networks)
|
|
55
72
|
--help, -h Show this help message
|
|
56
73
|
|
|
57
74
|
Examples:
|
|
@@ -62,12 +79,19 @@ Examples:
|
|
|
62
79
|
builder-doctor setup Get project setup instructions from Builder.io agent
|
|
63
80
|
builder-doctor env Display environment variables
|
|
64
81
|
builder-doctor install-skill skill-creator Install a skill into .builder/skills
|
|
82
|
+
builder-doctor install-skill skill-creator --agent github Install a skill into .github/skills
|
|
65
83
|
builder-doctor install-skill skill-a skill-b Install multiple skills at once
|
|
66
84
|
builder-doctor skills List available skills
|
|
67
85
|
builder-doctor skills --source myorg/myrepo List available skills from a custom source
|
|
68
86
|
builder-doctor install-skill skill-creator --source myorg/myrepo Install a skill from a custom source
|
|
69
87
|
builder-doctor install-plugin my-plugin Install a plugin into .builder
|
|
70
88
|
builder-doctor install-plugin my-plugin --source myorg/myrepo Install a plugin from a custom source
|
|
89
|
+
builder-doctor mcp add claude Add Builder MCP entry to ~/.claude/settings.local.json
|
|
90
|
+
builder-doctor mcp add cursor Add Builder MCP entry to ~/.cursor/mcp.json
|
|
91
|
+
builder-doctor mcp add copilot Add Builder MCP entry to .vscode/mcp.json
|
|
92
|
+
builder-doctor mcp add code_puppy Add Builder MCP entry to ~/.code_puppy/mcp_servers.json
|
|
93
|
+
builder-doctor mcp add Create or update a local mcp.json
|
|
94
|
+
builder-doctor mcp remove claude Remove the Builder MCP entry for Claude
|
|
71
95
|
builder-doctor --verbose Run rules and network checks with detailed output
|
|
72
96
|
`;
|
|
73
97
|
const nonInteractive = !process.stdin.isTTY || !process.stdout.isTTY;
|
|
@@ -113,6 +137,7 @@ async function main() {
|
|
|
113
137
|
await (0, install_1.runInstallSkill)({
|
|
114
138
|
skillName,
|
|
115
139
|
source,
|
|
140
|
+
agent,
|
|
116
141
|
verbose,
|
|
117
142
|
});
|
|
118
143
|
}
|
|
@@ -134,9 +159,29 @@ async function main() {
|
|
|
134
159
|
verbose,
|
|
135
160
|
});
|
|
136
161
|
}
|
|
162
|
+
if (mcp) {
|
|
163
|
+
if (mcpActionRaw !== "add" && mcpActionRaw !== "remove") {
|
|
164
|
+
console.error("Invalid MCP action. Usage: builder-doctor mcp <add|remove> [agent]");
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
await (0, mcp_1.runMcp)({
|
|
168
|
+
action: mcpActionRaw,
|
|
169
|
+
agent: mcpAgent,
|
|
170
|
+
verbose,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
137
173
|
}
|
|
138
174
|
catch (error) {
|
|
139
|
-
|
|
175
|
+
const tlsErrorCode = (0, fetch_1.getTlsCertErrorCode)(error);
|
|
176
|
+
if (tlsErrorCode) {
|
|
177
|
+
console.error((0, fetch_1.formatTlsCertErrorMessage)(tlsErrorCode));
|
|
178
|
+
if (verbose) {
|
|
179
|
+
console.error("\nOriginal error:", error);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.error("An error occurred:", error);
|
|
184
|
+
}
|
|
140
185
|
process.exit(1);
|
|
141
186
|
}
|
|
142
187
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AACrC,mCAAmC;AACnC,+BAA+B;AAC/B,uCAAuC;AACvC,uCAA6E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AACrC,mCAAmC;AACnC,+BAA+B;AAC/B,uCAAuC;AACvC,uCAA6E;AAC7E,+BAA0C;AAC1C,mCAAyE;AAEzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC7D,IAAI,gBAAgB,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC;IAC/C,OAAO,CAAC,IAAI,CACV,0HAA0H,CAC3H,CAAC;AACJ,CAAC;AACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;AACjD,MAAM,iBAAiB,GAAa,EAAE,CAAC;AACvC,IAAI,YAAY,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM;QACpC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AACD,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;AACnD,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AACxC,MAAM,GAAG,GACP,CAAC,KAAK;IACN,CAAC,OAAO;IACR,CAAC,KAAK;IACN,CAAC,GAAG;IACJ,CAAC,QAAQ;IACT,CAAC,YAAY;IACb,CAAC,aAAa;IACd,CAAC,MAAM;IACP,CAAC,GAAG,CAAC;AAEP,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CZ,CAAC;AACF,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrE,MAAM,qBAAqB,GACzB,0KAA0K;IAC1K,0EAA0E;IAC1E,6IAA6I;IAC7I,0HAA0H;IAC1H,kDAAkD;IAClD,OAAO,IAAI,EAAE,CAAC;AAEhB,IAAI,QAAQ,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,IAAA,oBAAU,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,MAAM,IAAA,kBAAU,EAAC;gBACf,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,IAAA,YAAM,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CACX,yEAAyE,CAC1E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,MAAM,IAAA,yBAAe,EAAC;oBACpB,SAAS;oBACT,MAAM;oBACN,KAAK;oBACL,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAA,uBAAa,EAAC;gBAClB,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CACX,yEAAyE,CAC1E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAA,0BAAgB,EAAC;gBACrB,UAAU,EAAE,iBAAiB;gBAC7B,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACxD,OAAO,CAAC,KAAK,CACX,oEAAoE,CACrE,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAA,YAAM,EAAC;gBACX,MAAM,EAAE,YAAyB;gBACjC,KAAK,EAAE,QAAQ;gBACf,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;QAChD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,IAAA,iCAAyB,EAAC,YAAY,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC;AAEP,SAAS,cAAc,CAAC,UAAkB;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,qBAAqB,UAAU,YAAY,UAAU,eAAe,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/install.d.ts
CHANGED
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAcD,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
package/dist/install.js
CHANGED
|
@@ -51,11 +51,12 @@ const DEFAULT_PLUGINS_SOURCE = "BuilderIO/builder-agent-plugins";
|
|
|
51
51
|
const SOURCE_ENV_VAR = "BUILDER_SKILLS_SOURCE";
|
|
52
52
|
const GITHUB_TARBALL_BASE_URL = "https://codeload.github.com";
|
|
53
53
|
async function runInstallSkill(options) {
|
|
54
|
-
const { skillName, source, verbose = false } = options;
|
|
54
|
+
const { skillName, source, agent, verbose = false } = options;
|
|
55
55
|
const sourceRepo = resolveSourceRepository(source);
|
|
56
56
|
validateInstallItemName(skillName, "skill");
|
|
57
|
+
const agentFolder = agent ? `.${agent}` : ".builder";
|
|
57
58
|
const escapedSkillName = escapeRegExp(skillName);
|
|
58
|
-
const destinationPath = node_path_1.default.join(
|
|
59
|
+
const destinationPath = node_path_1.default.join(agentFolder, "skills", skillName);
|
|
59
60
|
await runInstallFromTarball({
|
|
60
61
|
itemType: "Skill",
|
|
61
62
|
itemName: skillName,
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAaD,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runMcp = runMcp;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const SERVER_KEY = "builder-mcp";
|
|
11
|
+
const SERVER_COMMAND = "npx";
|
|
12
|
+
const SERVER_ARGS = ["@builder.io/dev-tools@latest", "mcp"];
|
|
13
|
+
async function runMcp(options) {
|
|
14
|
+
const { action, agent, verbose = false } = options;
|
|
15
|
+
const target = resolveTarget(agent);
|
|
16
|
+
if (verbose) {
|
|
17
|
+
console.log(`${action === "add" ? "Adding" : "Removing"} ${SERVER_KEY} ${action === "add" ? "to" : "from"} ${target.filePath}`);
|
|
18
|
+
}
|
|
19
|
+
if (action === "add") {
|
|
20
|
+
addServer(target);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
removeServer(target);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function resolveTarget(agent) {
|
|
27
|
+
const standardEntry = {
|
|
28
|
+
command: SERVER_COMMAND,
|
|
29
|
+
args: [...SERVER_ARGS],
|
|
30
|
+
};
|
|
31
|
+
if (!agent) {
|
|
32
|
+
return {
|
|
33
|
+
agentLabel: "local",
|
|
34
|
+
filePath: node_path_1.default.join(process.cwd(), "mcp.json"),
|
|
35
|
+
containerKey: "mcpServers",
|
|
36
|
+
serverEntry: standardEntry,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
switch (agent) {
|
|
40
|
+
case "claude":
|
|
41
|
+
return {
|
|
42
|
+
agentLabel: "Claude",
|
|
43
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".claude", "settings.local.json"),
|
|
44
|
+
containerKey: "mcpServers",
|
|
45
|
+
serverEntry: standardEntry,
|
|
46
|
+
};
|
|
47
|
+
case "cursor":
|
|
48
|
+
return {
|
|
49
|
+
agentLabel: "Cursor",
|
|
50
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".cursor", "mcp.json"),
|
|
51
|
+
containerKey: "mcpServers",
|
|
52
|
+
serverEntry: standardEntry,
|
|
53
|
+
};
|
|
54
|
+
case "copilot":
|
|
55
|
+
return {
|
|
56
|
+
agentLabel: "Copilot",
|
|
57
|
+
filePath: node_path_1.default.join(process.cwd(), ".vscode", "mcp.json"),
|
|
58
|
+
containerKey: "servers",
|
|
59
|
+
serverEntry: {
|
|
60
|
+
type: "stdio",
|
|
61
|
+
command: SERVER_COMMAND,
|
|
62
|
+
args: [...SERVER_ARGS],
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
case "code_puppy":
|
|
66
|
+
return {
|
|
67
|
+
agentLabel: "Code Puppy",
|
|
68
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".code_puppy", "mcp_servers.json"),
|
|
69
|
+
containerKey: "mcp_servers",
|
|
70
|
+
serverEntry: {
|
|
71
|
+
type: "stdio",
|
|
72
|
+
command: SERVER_COMMAND,
|
|
73
|
+
args: [...SERVER_ARGS],
|
|
74
|
+
enabled: true,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Unknown MCP agent "${agent}". Supported: claude, cursor, copilot, code_puppy, or omit for a local mcp.json.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function addServer(target) {
|
|
82
|
+
const config = readJsonFile(target.filePath);
|
|
83
|
+
const existingContainer = config[target.containerKey];
|
|
84
|
+
const container = existingContainer && typeof existingContainer === "object" && !Array.isArray(existingContainer)
|
|
85
|
+
? existingContainer
|
|
86
|
+
: {};
|
|
87
|
+
container[SERVER_KEY] = target.serverEntry;
|
|
88
|
+
config[target.containerKey] = container;
|
|
89
|
+
writeJsonFile(target.filePath, config);
|
|
90
|
+
console.log(`MCP support added for Builder to ${target.agentLabel} in ${target.filePath}`);
|
|
91
|
+
}
|
|
92
|
+
function removeServer(target) {
|
|
93
|
+
if (!(0, node_fs_1.existsSync)(target.filePath)) {
|
|
94
|
+
console.log(`No MCP configuration found for ${target.agentLabel} at ${target.filePath}`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const config = readJsonFile(target.filePath);
|
|
98
|
+
const container = config[target.containerKey];
|
|
99
|
+
if (!container ||
|
|
100
|
+
typeof container !== "object" ||
|
|
101
|
+
Array.isArray(container) ||
|
|
102
|
+
!(SERVER_KEY in container)) {
|
|
103
|
+
console.log(`MCP support for Builder was not present in ${target.filePath}`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
delete container[SERVER_KEY];
|
|
107
|
+
writeJsonFile(target.filePath, config);
|
|
108
|
+
console.log(`MCP support removed for Builder from ${target.agentLabel} in ${target.filePath}`);
|
|
109
|
+
}
|
|
110
|
+
function readJsonFile(filePath) {
|
|
111
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
112
|
+
return {};
|
|
113
|
+
}
|
|
114
|
+
const raw = (0, node_fs_1.readFileSync)(filePath, "utf8").trim();
|
|
115
|
+
if (!raw) {
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
const parsed = JSON.parse(raw);
|
|
120
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
121
|
+
return parsed;
|
|
122
|
+
}
|
|
123
|
+
throw new Error(`Expected a JSON object in ${filePath}`);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
127
|
+
throw new Error(`Failed to parse JSON in ${filePath}: ${message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function writeJsonFile(filePath, data) {
|
|
131
|
+
(0, node_fs_1.mkdirSync)(node_path_1.default.dirname(filePath), { recursive: true });
|
|
132
|
+
(0, node_fs_1.writeFileSync)(filePath, JSON.stringify(data, null, 2) + "\n", "utf8");
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED