@thantos66/claude-context-mcp 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +1 -0
- package/dist/proxy.js +208 -0
- package/dist/proxy.js.map +1 -0
- package/dist/tools/meta.js +250 -0
- package/dist/tools/meta.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21,10 +21,16 @@ import { registerPermissionsTools } from "./tools/permissions.js";
|
|
|
21
21
|
import { registerAgentTools } from "./tools/agents.js";
|
|
22
22
|
import { registerSkillTools } from "./tools/skills.js";
|
|
23
23
|
import { registerMetaTools } from "./tools/meta.js";
|
|
24
|
+
import { runProxy } from "./proxy.js";
|
|
24
25
|
async function main() {
|
|
26
|
+
// Subcommand: proxy mode — sanitize tool schemas from an external MCP server
|
|
27
|
+
if (process.argv[2] === "proxy") {
|
|
28
|
+
runProxy(process.argv.slice(3));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
25
31
|
const server = new McpServer({
|
|
26
32
|
name: "claude-context-mcp",
|
|
27
|
-
version: "0.
|
|
33
|
+
version: "0.2.0",
|
|
28
34
|
});
|
|
29
35
|
registerMcpTools(server);
|
|
30
36
|
registerPermissionsTools(server);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,KAAK,UAAU,IAAI;IACjB,6EAA6E;IAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAChE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAAgC,GAAa,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/proxy.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runProxy(childArgs: string[]): void;
|
package/dist/proxy.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema-sanitizing MCP stdio proxy.
|
|
3
|
+
*
|
|
4
|
+
* Sits between Claude Code and any MCP server. Transparently passes all
|
|
5
|
+
* JSON-RPC messages, but intercepts `tools/list` responses and flattens
|
|
6
|
+
* `oneOf`, `anyOf`, and `allOf` in tool input schemas — which the Claude
|
|
7
|
+
* API rejects.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node dist/index.js proxy <command> [args...]
|
|
11
|
+
* npx @thantos66/claude-context-mcp proxy npx -y @stripe/mcp
|
|
12
|
+
*
|
|
13
|
+
* Security: The proxy never touches secrets or data payloads — only schema
|
|
14
|
+
* metadata in tools/list responses. The child process inherits env as-is.
|
|
15
|
+
*/
|
|
16
|
+
import { spawn } from "node:child_process";
|
|
17
|
+
import { createInterface } from "node:readline";
|
|
18
|
+
// ── Schema sanitization ─────────────────────────────────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Recursively walk a JSON Schema node and flatten any oneOf/anyOf/allOf
|
|
21
|
+
* by merging all branch properties into a single object schema.
|
|
22
|
+
*/
|
|
23
|
+
function sanitizeSchema(schema) {
|
|
24
|
+
if (schema === null || typeof schema !== "object" || Array.isArray(schema)) {
|
|
25
|
+
return schema;
|
|
26
|
+
}
|
|
27
|
+
const result = { ...schema };
|
|
28
|
+
// Handle top-level or nested oneOf/anyOf/allOf
|
|
29
|
+
for (const keyword of ["oneOf", "anyOf", "allOf"]) {
|
|
30
|
+
if (Array.isArray(result[keyword])) {
|
|
31
|
+
const branches = result[keyword];
|
|
32
|
+
const merged = mergeBranches(branches);
|
|
33
|
+
// Remove the keyword and merge the result
|
|
34
|
+
delete result[keyword];
|
|
35
|
+
Object.assign(result, merged);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Ensure we have type: "object" if we have properties
|
|
39
|
+
if (result.properties && !result.type) {
|
|
40
|
+
result.type = "object";
|
|
41
|
+
}
|
|
42
|
+
// Recurse into properties
|
|
43
|
+
if (result.properties && typeof result.properties === "object") {
|
|
44
|
+
const props = result.properties;
|
|
45
|
+
const sanitized = {};
|
|
46
|
+
for (const [key, value] of Object.entries(props)) {
|
|
47
|
+
sanitized[key] =
|
|
48
|
+
value && typeof value === "object" && !Array.isArray(value)
|
|
49
|
+
? sanitizeSchema(value)
|
|
50
|
+
: value;
|
|
51
|
+
}
|
|
52
|
+
result.properties = sanitized;
|
|
53
|
+
}
|
|
54
|
+
// Recurse into items (array schemas)
|
|
55
|
+
if (result.items && typeof result.items === "object" && !Array.isArray(result.items)) {
|
|
56
|
+
result.items = sanitizeSchema(result.items);
|
|
57
|
+
}
|
|
58
|
+
// Recurse into additionalProperties if it's a schema
|
|
59
|
+
if (result.additionalProperties &&
|
|
60
|
+
typeof result.additionalProperties === "object" &&
|
|
61
|
+
!Array.isArray(result.additionalProperties)) {
|
|
62
|
+
result.additionalProperties = sanitizeSchema(result.additionalProperties);
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Merge multiple JSON Schema branch objects into a single flat object schema.
|
|
68
|
+
* Properties from all branches are collected; required arrays are unioned.
|
|
69
|
+
*/
|
|
70
|
+
function mergeBranches(branches) {
|
|
71
|
+
const mergedProps = {};
|
|
72
|
+
const mergedRequired = new Set();
|
|
73
|
+
let hasProperties = false;
|
|
74
|
+
for (const branch of branches) {
|
|
75
|
+
if (branch === null || typeof branch !== "object")
|
|
76
|
+
continue;
|
|
77
|
+
// Recursively sanitize each branch first
|
|
78
|
+
const clean = sanitizeSchema(branch);
|
|
79
|
+
if (clean.properties && typeof clean.properties === "object") {
|
|
80
|
+
hasProperties = true;
|
|
81
|
+
const props = clean.properties;
|
|
82
|
+
for (const [key, value] of Object.entries(props)) {
|
|
83
|
+
// First branch wins for conflicting property definitions
|
|
84
|
+
if (!(key in mergedProps)) {
|
|
85
|
+
mergedProps[key] = value;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (Array.isArray(clean.required)) {
|
|
90
|
+
for (const r of clean.required) {
|
|
91
|
+
if (typeof r === "string")
|
|
92
|
+
mergedRequired.add(r);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const result = { type: "object" };
|
|
97
|
+
if (hasProperties) {
|
|
98
|
+
result.properties = mergedProps;
|
|
99
|
+
}
|
|
100
|
+
// Only include required fields that actually exist in merged properties
|
|
101
|
+
const validRequired = [...mergedRequired].filter((r) => r in mergedProps);
|
|
102
|
+
if (validRequired.length > 0) {
|
|
103
|
+
result.required = validRequired;
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if a schema (or any nested part) contains oneOf/anyOf/allOf.
|
|
109
|
+
*/
|
|
110
|
+
function schemaHasUnion(schema) {
|
|
111
|
+
if (schema === null || typeof schema !== "object" || Array.isArray(schema)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const obj = schema;
|
|
115
|
+
if (obj.oneOf || obj.anyOf || obj.allOf)
|
|
116
|
+
return true;
|
|
117
|
+
// Check nested properties
|
|
118
|
+
if (obj.properties && typeof obj.properties === "object") {
|
|
119
|
+
for (const value of Object.values(obj.properties)) {
|
|
120
|
+
if (schemaHasUnion(value))
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (obj.items && typeof obj.items === "object") {
|
|
125
|
+
if (schemaHasUnion(obj.items))
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
if (obj.additionalProperties && typeof obj.additionalProperties === "object") {
|
|
129
|
+
if (schemaHasUnion(obj.additionalProperties))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
// ── JSON-RPC message processing ─────────────────────────────────────
|
|
135
|
+
/**
|
|
136
|
+
* Process a JSON-RPC response. If it's a tools/list result, sanitize
|
|
137
|
+
* tool input schemas. Returns the (possibly modified) message string.
|
|
138
|
+
*/
|
|
139
|
+
function processMessage(line) {
|
|
140
|
+
let msg;
|
|
141
|
+
try {
|
|
142
|
+
msg = JSON.parse(line);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return line; // Not JSON — pass through
|
|
146
|
+
}
|
|
147
|
+
// Only process JSON-RPC responses that have a result with tools array
|
|
148
|
+
if (!msg.result || typeof msg.result !== "object")
|
|
149
|
+
return line;
|
|
150
|
+
const result = msg.result;
|
|
151
|
+
if (!Array.isArray(result.tools))
|
|
152
|
+
return line;
|
|
153
|
+
// This is a tools/list response — sanitize each tool's inputSchema
|
|
154
|
+
const tools = result.tools;
|
|
155
|
+
const patched = [];
|
|
156
|
+
for (const tool of tools) {
|
|
157
|
+
if (!tool.inputSchema || typeof tool.inputSchema !== "object")
|
|
158
|
+
continue;
|
|
159
|
+
const schema = tool.inputSchema;
|
|
160
|
+
if (schemaHasUnion(schema)) {
|
|
161
|
+
const name = tool.name || "(unknown)";
|
|
162
|
+
tool.inputSchema = sanitizeSchema(schema);
|
|
163
|
+
patched.push(name);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (patched.length > 0) {
|
|
167
|
+
process.stderr.write(`[claude-context-mcp proxy] sanitized ${patched.length} tool schema(s): ${patched.join(", ")}\n`);
|
|
168
|
+
}
|
|
169
|
+
return JSON.stringify(msg);
|
|
170
|
+
}
|
|
171
|
+
// ── Main proxy logic ────────────────────────────────────────────────
|
|
172
|
+
export function runProxy(childArgs) {
|
|
173
|
+
if (childArgs.length === 0) {
|
|
174
|
+
process.stderr.write("[claude-context-mcp proxy] error: no command specified\n" +
|
|
175
|
+
"Usage: claude-context-mcp proxy <command> [args...]\n");
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
const [command, ...args] = childArgs;
|
|
179
|
+
const child = spawn(command, args, {
|
|
180
|
+
stdio: ["pipe", "pipe", "inherit"], // stdin: pipe, stdout: pipe, stderr: inherit
|
|
181
|
+
env: process.env,
|
|
182
|
+
});
|
|
183
|
+
child.on("error", (err) => {
|
|
184
|
+
process.stderr.write(`[claude-context-mcp proxy] failed to spawn "${command}": ${err.message}\n`);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
});
|
|
187
|
+
child.on("exit", (code, signal) => {
|
|
188
|
+
if (signal) {
|
|
189
|
+
process.stderr.write(`[claude-context-mcp proxy] child killed by signal ${signal}\n`);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
process.exit(code ?? 0);
|
|
193
|
+
});
|
|
194
|
+
// stdin → child stdin (pass through, no processing needed)
|
|
195
|
+
process.stdin.pipe(child.stdin);
|
|
196
|
+
// child stdout → process stdout (intercept and sanitize)
|
|
197
|
+
const rl = createInterface({ input: child.stdout, crlfDelay: Infinity });
|
|
198
|
+
rl.on("line", (line) => {
|
|
199
|
+
const processed = processMessage(line);
|
|
200
|
+
process.stdout.write(processed + "\n");
|
|
201
|
+
});
|
|
202
|
+
// Handle parent stdin closing
|
|
203
|
+
process.stdin.on("end", () => {
|
|
204
|
+
child.stdin.end();
|
|
205
|
+
});
|
|
206
|
+
process.stderr.write(`[claude-context-mcp proxy] proxying: ${command} ${args.join(" ")}\n`);
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/meta.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import fs from "node:fs/promises";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
3
4
|
import { allPlatformPaths } from "../services/paths.js";
|
|
4
5
|
import { loadMcpConfig } from "../services/mcp-config.js";
|
|
5
6
|
import { loadSettings } from "../services/permissions.js";
|
|
6
7
|
import { backupFile } from "../services/backup.js";
|
|
8
|
+
import { getServer } from "../services/mcp-config.js";
|
|
9
|
+
import { isStdioServer } from "../schemas/mcp-config.js";
|
|
7
10
|
import { handle, okResponse } from "./helpers.js";
|
|
8
11
|
export function registerMetaTools(server) {
|
|
9
12
|
// ------------------------------------------------------------------
|
|
@@ -75,5 +78,252 @@ export function registerMetaTools(server) {
|
|
|
75
78
|
}, (result) => result.backup
|
|
76
79
|
? okResponse(`backed up ${result.filePath} -> ${result.backup}`, result)
|
|
77
80
|
: okResponse(`no-op: ${result.filePath} did not exist`, result)));
|
|
81
|
+
// ------------------------------------------------------------------
|
|
82
|
+
// meta_check_server_health
|
|
83
|
+
// ------------------------------------------------------------------
|
|
84
|
+
server.registerTool("meta_check_server_health", {
|
|
85
|
+
title: "Check if an MCP server can start",
|
|
86
|
+
description: "Spawn a stdio MCP server, send an initialize request, and check " +
|
|
87
|
+
"if it responds within a timeout. Reports: ok, failed, or timeout. " +
|
|
88
|
+
"Provide either (scope + name) to look up the config, or (command + args) directly.",
|
|
89
|
+
inputSchema: {
|
|
90
|
+
scope: z.enum(["desktop", "user", "project"]).optional(),
|
|
91
|
+
name: z.string().optional().describe("Server name to look up in config."),
|
|
92
|
+
command: z.string().optional().describe("Command to spawn directly (alternative to scope+name)."),
|
|
93
|
+
args: z.array(z.string()).optional(),
|
|
94
|
+
projectPath: z.string().optional(),
|
|
95
|
+
timeoutMs: z.number().optional().describe("Timeout in ms (default 10000)."),
|
|
96
|
+
},
|
|
97
|
+
annotations: {
|
|
98
|
+
readOnlyHint: true,
|
|
99
|
+
destructiveHint: false,
|
|
100
|
+
idempotentHint: true,
|
|
101
|
+
openWorldHint: true,
|
|
102
|
+
},
|
|
103
|
+
}, async (input) => handle(async () => {
|
|
104
|
+
let cmd;
|
|
105
|
+
let cmdArgs = [];
|
|
106
|
+
let env;
|
|
107
|
+
if (input.command) {
|
|
108
|
+
cmd = input.command;
|
|
109
|
+
cmdArgs = input.args ?? [];
|
|
110
|
+
}
|
|
111
|
+
else if (input.scope && input.name) {
|
|
112
|
+
const entry = await getServer({
|
|
113
|
+
scope: input.scope,
|
|
114
|
+
name: input.name,
|
|
115
|
+
projectPath: input.projectPath,
|
|
116
|
+
revealSecrets: true,
|
|
117
|
+
});
|
|
118
|
+
if (!entry) {
|
|
119
|
+
return { status: "not_found", message: `Server "${input.name}" not found in ${input.scope} scope.` };
|
|
120
|
+
}
|
|
121
|
+
if (!isStdioServer(entry.entry)) {
|
|
122
|
+
return { status: "skip", message: `Server "${input.name}" is HTTP-based, not stdio.` };
|
|
123
|
+
}
|
|
124
|
+
cmd = entry.entry.command;
|
|
125
|
+
cmdArgs = entry.entry.args ?? [];
|
|
126
|
+
env = entry.entry.env;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
throw new Error("Provide either (scope + name) or (command + args).");
|
|
130
|
+
}
|
|
131
|
+
const timeout = input.timeoutMs ?? 10000;
|
|
132
|
+
return await checkServerHealth(cmd, cmdArgs, env, timeout);
|
|
133
|
+
}, (result) => okResponse(`status: ${result.status}\n${result.message ?? ""}`, result)));
|
|
134
|
+
// ------------------------------------------------------------------
|
|
135
|
+
// meta_env_template
|
|
136
|
+
// ------------------------------------------------------------------
|
|
137
|
+
server.registerTool("meta_env_template", {
|
|
138
|
+
title: "Manage a secrets env template",
|
|
139
|
+
description: "Create, read, or validate a secrets .env file. When action=create, " +
|
|
140
|
+
"writes a template with placeholder comments (chmod 600). When " +
|
|
141
|
+
"action=validate, checks that all keys have non-empty, non-placeholder values.",
|
|
142
|
+
inputSchema: {
|
|
143
|
+
action: z.enum(["create", "read", "validate"]),
|
|
144
|
+
filePath: z.string().describe("Absolute path to the .env file."),
|
|
145
|
+
entries: z
|
|
146
|
+
.array(z.object({
|
|
147
|
+
key: z.string(),
|
|
148
|
+
comment: z.string().optional(),
|
|
149
|
+
}))
|
|
150
|
+
.optional()
|
|
151
|
+
.describe("Key definitions for create action. Each entry becomes KEY= with optional # comment."),
|
|
152
|
+
header: z.string().optional().describe("Header comment block for create action."),
|
|
153
|
+
},
|
|
154
|
+
annotations: {
|
|
155
|
+
readOnlyHint: false,
|
|
156
|
+
destructiveHint: false,
|
|
157
|
+
idempotentHint: true,
|
|
158
|
+
openWorldHint: false,
|
|
159
|
+
},
|
|
160
|
+
}, async (input) => handle(async () => {
|
|
161
|
+
if (input.action === "create") {
|
|
162
|
+
const lines = [];
|
|
163
|
+
if (input.header) {
|
|
164
|
+
for (const line of input.header.split("\n")) {
|
|
165
|
+
lines.push(`# ${line}`);
|
|
166
|
+
}
|
|
167
|
+
lines.push("");
|
|
168
|
+
}
|
|
169
|
+
for (const entry of input.entries ?? []) {
|
|
170
|
+
if (entry.comment) {
|
|
171
|
+
lines.push(`# ${entry.comment}`);
|
|
172
|
+
}
|
|
173
|
+
lines.push(`${entry.key}=`);
|
|
174
|
+
}
|
|
175
|
+
lines.push(""); // trailing newline
|
|
176
|
+
const content = lines.join("\n");
|
|
177
|
+
await fs.writeFile(input.filePath, content, { mode: 0o600 });
|
|
178
|
+
return {
|
|
179
|
+
action: "create",
|
|
180
|
+
filePath: input.filePath,
|
|
181
|
+
keys: (input.entries ?? []).map((e) => e.key),
|
|
182
|
+
message: `Created template at ${input.filePath} (chmod 600) with ${(input.entries ?? []).length} key(s).`,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (input.action === "read") {
|
|
186
|
+
let content;
|
|
187
|
+
try {
|
|
188
|
+
content = await fs.readFile(input.filePath, "utf8");
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
if (err.code === "ENOENT") {
|
|
192
|
+
return { action: "read", filePath: input.filePath, exists: false, message: "File does not exist." };
|
|
193
|
+
}
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
const parsed = parseEnvFile(content);
|
|
197
|
+
return { action: "read", filePath: input.filePath, exists: true, keys: parsed };
|
|
198
|
+
}
|
|
199
|
+
// validate
|
|
200
|
+
let content;
|
|
201
|
+
try {
|
|
202
|
+
content = await fs.readFile(input.filePath, "utf8");
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (err.code === "ENOENT") {
|
|
206
|
+
return { action: "validate", filePath: input.filePath, valid: false, message: "File does not exist." };
|
|
207
|
+
}
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
210
|
+
const parsed = parseEnvFile(content);
|
|
211
|
+
const issues = [];
|
|
212
|
+
for (const { key, value } of parsed) {
|
|
213
|
+
if (!value || value.trim() === "") {
|
|
214
|
+
issues.push(`${key}: empty`);
|
|
215
|
+
}
|
|
216
|
+
else if (/^<YOUR_.*>$/i.test(value.trim())) {
|
|
217
|
+
issues.push(`${key}: placeholder value`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
action: "validate",
|
|
222
|
+
filePath: input.filePath,
|
|
223
|
+
valid: issues.length === 0,
|
|
224
|
+
total: parsed.length,
|
|
225
|
+
filled: parsed.length - issues.length,
|
|
226
|
+
issues,
|
|
227
|
+
message: issues.length === 0
|
|
228
|
+
? `All ${parsed.length} key(s) are filled.`
|
|
229
|
+
: `${issues.length} of ${parsed.length} key(s) need attention: ${issues.join(", ")}`,
|
|
230
|
+
};
|
|
231
|
+
}, (result) => okResponse(result.message ?? JSON.stringify(result), result)));
|
|
232
|
+
}
|
|
233
|
+
// ── Helpers ──────────────────────────────────────────────────────────
|
|
234
|
+
function parseEnvFile(content) {
|
|
235
|
+
const results = [];
|
|
236
|
+
for (const line of content.split("\n")) {
|
|
237
|
+
const trimmed = line.trim();
|
|
238
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
239
|
+
continue;
|
|
240
|
+
const eqIdx = trimmed.indexOf("=");
|
|
241
|
+
if (eqIdx === -1)
|
|
242
|
+
continue;
|
|
243
|
+
results.push({
|
|
244
|
+
key: trimmed.slice(0, eqIdx),
|
|
245
|
+
value: trimmed.slice(eqIdx + 1),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return results;
|
|
249
|
+
}
|
|
250
|
+
function checkServerHealth(command, args, env, timeoutMs) {
|
|
251
|
+
return new Promise((resolve) => {
|
|
252
|
+
const childEnv = env ? { ...process.env, ...env } : process.env;
|
|
253
|
+
let child;
|
|
254
|
+
try {
|
|
255
|
+
child = spawn(command, args, {
|
|
256
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
257
|
+
env: childEnv,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
resolve({
|
|
262
|
+
status: "failed",
|
|
263
|
+
message: `Failed to spawn "${command}": ${err.message}`,
|
|
264
|
+
});
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
let stdout = "";
|
|
268
|
+
let stderr = "";
|
|
269
|
+
let settled = false;
|
|
270
|
+
const timer = setTimeout(() => {
|
|
271
|
+
if (!settled) {
|
|
272
|
+
settled = true;
|
|
273
|
+
child.kill("SIGTERM");
|
|
274
|
+
resolve({
|
|
275
|
+
status: "timeout",
|
|
276
|
+
message: `Server did not respond within ${timeoutMs}ms.`,
|
|
277
|
+
stderr: stderr.slice(0, 500),
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}, timeoutMs);
|
|
281
|
+
child.stdout.on("data", (chunk) => {
|
|
282
|
+
stdout += chunk.toString();
|
|
283
|
+
// Check if we got a valid JSON-RPC response
|
|
284
|
+
if (!settled && stdout.includes('"result"')) {
|
|
285
|
+
settled = true;
|
|
286
|
+
clearTimeout(timer);
|
|
287
|
+
child.kill("SIGTERM");
|
|
288
|
+
resolve({ status: "ok", message: "Server responded to initialize." });
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
child.stderr.on("data", (chunk) => {
|
|
292
|
+
stderr += chunk.toString();
|
|
293
|
+
});
|
|
294
|
+
child.on("error", (err) => {
|
|
295
|
+
if (!settled) {
|
|
296
|
+
settled = true;
|
|
297
|
+
clearTimeout(timer);
|
|
298
|
+
resolve({
|
|
299
|
+
status: "failed",
|
|
300
|
+
message: `Spawn error: ${err.message}`,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
child.on("exit", (code) => {
|
|
305
|
+
if (!settled) {
|
|
306
|
+
settled = true;
|
|
307
|
+
clearTimeout(timer);
|
|
308
|
+
resolve({
|
|
309
|
+
status: "failed",
|
|
310
|
+
message: `Server exited with code ${code} before responding.`,
|
|
311
|
+
stderr: stderr.slice(0, 500),
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
// Send an initialize request
|
|
316
|
+
const initRequest = JSON.stringify({
|
|
317
|
+
jsonrpc: "2.0",
|
|
318
|
+
id: 1,
|
|
319
|
+
method: "initialize",
|
|
320
|
+
params: {
|
|
321
|
+
protocolVersion: "2025-03-26",
|
|
322
|
+
capabilities: {},
|
|
323
|
+
clientInfo: { name: "health-check", version: "1.0" },
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
child.stdin.write(initRequest + "\n");
|
|
327
|
+
});
|
|
78
328
|
}
|
|
79
329
|
//# sourceMappingURL=meta.js.map
|
package/dist/tools/meta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED