@codemem/mcp 0.47.0-beta.3 → 0.47.0-beta.4
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/http.d.ts.map +1 -1
- package/dist/http.js +76 -74
- package/dist/http.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{server-C-Z_tmAr.js → server-igIo9ay0.js} +21 -16
- package/dist/{server-C-Z_tmAr.js.map → server-igIo9ay0.js.map} +1 -1
- package/dist/stdio.js +33 -16
- package/dist/stdio.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/package.json +4 -3
package/dist/stdio.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as e } from "./server-
|
|
2
|
+
import { t as e } from "./server-igIo9ay0.js";
|
|
3
3
|
import { MemoryStore as t, probeCodememViewerLiveness as n, resolveDbPath as r } from "@codemem/core";
|
|
4
4
|
import { existsSync as i } from "node:fs";
|
|
5
5
|
import { dirname as a, join as o } from "node:path";
|
|
@@ -60,25 +60,42 @@ async function g(e = {}) {
|
|
|
60
60
|
}
|
|
61
61
|
//#endregion
|
|
62
62
|
//#region src/stdio.ts
|
|
63
|
-
|
|
64
|
-
let
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
let
|
|
63
|
+
function _(e) {
|
|
64
|
+
let t, n = 0;
|
|
65
|
+
return (r) => {
|
|
66
|
+
if (n = Math.max(n, r), t) return t;
|
|
67
|
+
let i = setTimeout(() => process.exit(1), 3e4);
|
|
68
|
+
return i.unref(), t = Promise.resolve().then(async () => {
|
|
68
69
|
try {
|
|
69
|
-
|
|
70
|
-
} catch {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
await e();
|
|
71
|
+
} catch {
|
|
72
|
+
n = 1;
|
|
73
|
+
} finally {
|
|
74
|
+
clearTimeout(i);
|
|
75
|
+
}
|
|
76
|
+
process.exit(n);
|
|
77
|
+
}), t;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async function v() {
|
|
81
|
+
let n = r(), i = new t(n), a, o, c = !1, l = _(() => o || (c = !0, o = (async () => {
|
|
75
82
|
try {
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
83
|
+
await a?.close();
|
|
84
|
+
} finally {
|
|
85
|
+
await i.closeAsync();
|
|
86
|
+
}
|
|
87
|
+
})(), o));
|
|
88
|
+
try {
|
|
89
|
+
g().catch(() => {}), a = e(i);
|
|
90
|
+
let t = new s();
|
|
91
|
+
a.server.onclose = () => {
|
|
92
|
+
c || l(0);
|
|
93
|
+
}, process.on("SIGINT", () => void l(0)), process.on("SIGTERM", () => void l(0)), process.stdin.once("end", () => void l(0)), process.stdin.once("error", () => void l(1)), await a.connect(t);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.error("codemem MCP server failed to start:", e), await l(1);
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
|
-
|
|
98
|
+
v().catch((e) => {
|
|
82
99
|
console.error("codemem MCP server failed to start:", e), process.exit(1);
|
|
83
100
|
});
|
|
84
101
|
//#endregion
|
package/dist/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","names":[],"sources":["../src/stdio-viewer.ts","../src/stdio.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { probeCodememViewerLiveness } from \"@codemem/core\";\n\nconst DEFAULT_VIEWER_HOST = \"127.0.0.1\";\nconst DEFAULT_VIEWER_PORT = \"38888\";\nconst VIEWER_PROBE_TIMEOUT_MS = 2_000;\nconst VIEWER_POLL_INTERVAL_MS = 1_000;\nconst VIEWER_POLL_ATTEMPTS = 5;\n\nexport interface ViewerChildProcess {\n\ton(event: \"error\", listener: () => void): unknown;\n\tunref(): void;\n}\n\nexport type SpawnViewerProcess = (\n\tcommand: string,\n\targs: string[],\n\toptions: {\n\t\tdetached: true;\n\t\tstdio: \"ignore\";\n\t\tenv: NodeJS.ProcessEnv;\n\t},\n) => ViewerChildProcess;\n\nexport interface ViewerProbeOptions {\n\thost?: string;\n\tport?: string;\n\tfetchImpl?: typeof fetch;\n}\n\nexport interface EnsureViewerOptions extends ViewerProbeOptions {\n\tenv?: NodeJS.ProcessEnv;\n\texecPath?: string;\n\tresolveCliPath?: () => string | null;\n\tsleep?: (milliseconds: number) => Promise<void>;\n\tspawnImpl?: SpawnViewerProcess;\n}\n\n/** Resolve the `codemem` CLI binary path. Checks package-local paths first, then PATH. */\nexport function resolveCliPath(): string | null {\n\tconst selfDir = dirname(import.meta.dirname ?? \".\");\n\tconst candidates = [\n\t\tjoin(selfDir, \"..\", \"cli\", \"dist\", \"index.js\"),\n\t\tjoin(selfDir, \"..\", \".bin\", \"codemem\"),\n\t\tjoin(selfDir, \"..\", \"..\", \".bin\", \"codemem\"),\n\t];\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate)) return candidate;\n\t}\n\treturn \"codemem\";\n}\n\n/** Check for a live CodeMem viewer via the shared core probe contract. */\nexport async function isViewerHealthy(options: ViewerProbeOptions = {}): Promise<boolean> {\n\tconst host = options.host ?? process.env.CODEMEM_VIEWER_HOST ?? DEFAULT_VIEWER_HOST;\n\tconst rawPort = options.port ?? process.env.CODEMEM_VIEWER_PORT ?? DEFAULT_VIEWER_PORT;\n\t// Strict parse: \"38888abc\" must not silently probe a different port than\n\t// the `--port` value forwarded to `serve start`.\n\tif (!/^\\d+$/.test(rawPort.trim())) return false;\n\tconst port = Number.parseInt(rawPort, 10);\n\tif (!Number.isInteger(port) || port <= 0 || port > 65_535) return false;\n\n\t// A degraded-but-live viewer must not trigger redundant detached starts.\n\tconst probe = await probeCodememViewerLiveness(\n\t\t{ host, port },\n\t\t{ fetch: options.fetchImpl ?? fetch, timeoutMs: VIEWER_PROBE_TIMEOUT_MS },\n\t);\n\treturn probe.state === \"live\";\n}\n\n/** Attempt to start the viewer as a detached, best-effort background process. */\nexport async function ensureViewer(options: EnsureViewerOptions = {}): Promise<void> {\n\tconst env = options.env ?? process.env;\n\tif (env.CODEMEM_VIEWER === \"0\" || env.CODEMEM_VIEWER_AUTO === \"0\") return;\n\n\tconst host = options.host ?? env.CODEMEM_VIEWER_HOST ?? DEFAULT_VIEWER_HOST;\n\tconst port = options.port ?? env.CODEMEM_VIEWER_PORT ?? DEFAULT_VIEWER_PORT;\n\tconst probeOptions = { host, port, fetchImpl: options.fetchImpl };\n\tif (await isViewerHealthy(probeOptions)) return;\n\n\tconst cli = (options.resolveCliPath ?? resolveCliPath)();\n\tif (!cli) return;\n\n\ttry {\n\t\tconst isJsFile = cli.endsWith(\".js\");\n\t\tconst command = isJsFile ? (options.execPath ?? process.execPath) : cli;\n\t\tconst args = isJsFile ? [cli, \"serve\", \"start\"] : [\"serve\", \"start\"];\n\t\tif (host !== DEFAULT_VIEWER_HOST) args.push(\"--host\", host);\n\t\tif (port !== DEFAULT_VIEWER_PORT) args.push(\"--port\", port);\n\n\t\tconst spawnImpl: SpawnViewerProcess =\n\t\t\toptions.spawnImpl ?? ((command, args, spawnOptions) => spawn(command, args, spawnOptions));\n\t\tconst child = spawnImpl(command, args, {\n\t\t\tdetached: true,\n\t\t\tstdio: \"ignore\",\n\t\t\tenv: { ...env, CODEMEM_PLUGIN_IGNORE: \"1\" },\n\t\t});\n\t\tchild.on(\"error\", () => {});\n\t\tchild.unref();\n\n\t\tconst sleep =\n\t\t\toptions.sleep ??\n\t\t\t((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));\n\t\tfor (let attempt = 0; attempt < VIEWER_POLL_ATTEMPTS; attempt++) {\n\t\t\tawait sleep(VIEWER_POLL_INTERVAL_MS);\n\t\t\tif (await isViewerHealthy(probeOptions)) return;\n\t\t}\n\t} catch {\n\t\t// Best effort — MCP server continues regardless.\n\t}\n}\n","#!/usr/bin/env node\n\n/**\n * @codemem/mcp — MCP stdio server bootstrap.\n *\n * Runs as a separate process spawned by the host (OpenCode/Claude).\n * Owns its own better-sqlite3 connection. Communicates via stdio JSON-RPC.\n */\n\nimport { MemoryStore, resolveDbPath } from \"@codemem/core\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { createCodememMcpServer } from \"./server.js\";\nimport { ensureViewer } from \"./stdio-viewer.js\";\n\
|
|
1
|
+
{"version":3,"file":"stdio.js","names":[],"sources":["../src/stdio-viewer.ts","../src/stdio.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { probeCodememViewerLiveness } from \"@codemem/core\";\n\nconst DEFAULT_VIEWER_HOST = \"127.0.0.1\";\nconst DEFAULT_VIEWER_PORT = \"38888\";\nconst VIEWER_PROBE_TIMEOUT_MS = 2_000;\nconst VIEWER_POLL_INTERVAL_MS = 1_000;\nconst VIEWER_POLL_ATTEMPTS = 5;\n\nexport interface ViewerChildProcess {\n\ton(event: \"error\", listener: () => void): unknown;\n\tunref(): void;\n}\n\nexport type SpawnViewerProcess = (\n\tcommand: string,\n\targs: string[],\n\toptions: {\n\t\tdetached: true;\n\t\tstdio: \"ignore\";\n\t\tenv: NodeJS.ProcessEnv;\n\t},\n) => ViewerChildProcess;\n\nexport interface ViewerProbeOptions {\n\thost?: string;\n\tport?: string;\n\tfetchImpl?: typeof fetch;\n}\n\nexport interface EnsureViewerOptions extends ViewerProbeOptions {\n\tenv?: NodeJS.ProcessEnv;\n\texecPath?: string;\n\tresolveCliPath?: () => string | null;\n\tsleep?: (milliseconds: number) => Promise<void>;\n\tspawnImpl?: SpawnViewerProcess;\n}\n\n/** Resolve the `codemem` CLI binary path. Checks package-local paths first, then PATH. */\nexport function resolveCliPath(): string | null {\n\tconst selfDir = dirname(import.meta.dirname ?? \".\");\n\tconst candidates = [\n\t\tjoin(selfDir, \"..\", \"cli\", \"dist\", \"index.js\"),\n\t\tjoin(selfDir, \"..\", \".bin\", \"codemem\"),\n\t\tjoin(selfDir, \"..\", \"..\", \".bin\", \"codemem\"),\n\t];\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate)) return candidate;\n\t}\n\treturn \"codemem\";\n}\n\n/** Check for a live CodeMem viewer via the shared core probe contract. */\nexport async function isViewerHealthy(options: ViewerProbeOptions = {}): Promise<boolean> {\n\tconst host = options.host ?? process.env.CODEMEM_VIEWER_HOST ?? DEFAULT_VIEWER_HOST;\n\tconst rawPort = options.port ?? process.env.CODEMEM_VIEWER_PORT ?? DEFAULT_VIEWER_PORT;\n\t// Strict parse: \"38888abc\" must not silently probe a different port than\n\t// the `--port` value forwarded to `serve start`.\n\tif (!/^\\d+$/.test(rawPort.trim())) return false;\n\tconst port = Number.parseInt(rawPort, 10);\n\tif (!Number.isInteger(port) || port <= 0 || port > 65_535) return false;\n\n\t// A degraded-but-live viewer must not trigger redundant detached starts.\n\tconst probe = await probeCodememViewerLiveness(\n\t\t{ host, port },\n\t\t{ fetch: options.fetchImpl ?? fetch, timeoutMs: VIEWER_PROBE_TIMEOUT_MS },\n\t);\n\treturn probe.state === \"live\";\n}\n\n/** Attempt to start the viewer as a detached, best-effort background process. */\nexport async function ensureViewer(options: EnsureViewerOptions = {}): Promise<void> {\n\tconst env = options.env ?? process.env;\n\tif (env.CODEMEM_VIEWER === \"0\" || env.CODEMEM_VIEWER_AUTO === \"0\") return;\n\n\tconst host = options.host ?? env.CODEMEM_VIEWER_HOST ?? DEFAULT_VIEWER_HOST;\n\tconst port = options.port ?? env.CODEMEM_VIEWER_PORT ?? DEFAULT_VIEWER_PORT;\n\tconst probeOptions = { host, port, fetchImpl: options.fetchImpl };\n\tif (await isViewerHealthy(probeOptions)) return;\n\n\tconst cli = (options.resolveCliPath ?? resolveCliPath)();\n\tif (!cli) return;\n\n\ttry {\n\t\tconst isJsFile = cli.endsWith(\".js\");\n\t\tconst command = isJsFile ? (options.execPath ?? process.execPath) : cli;\n\t\tconst args = isJsFile ? [cli, \"serve\", \"start\"] : [\"serve\", \"start\"];\n\t\tif (host !== DEFAULT_VIEWER_HOST) args.push(\"--host\", host);\n\t\tif (port !== DEFAULT_VIEWER_PORT) args.push(\"--port\", port);\n\n\t\tconst spawnImpl: SpawnViewerProcess =\n\t\t\toptions.spawnImpl ?? ((command, args, spawnOptions) => spawn(command, args, spawnOptions));\n\t\tconst child = spawnImpl(command, args, {\n\t\t\tdetached: true,\n\t\t\tstdio: \"ignore\",\n\t\t\tenv: { ...env, CODEMEM_PLUGIN_IGNORE: \"1\" },\n\t\t});\n\t\tchild.on(\"error\", () => {});\n\t\tchild.unref();\n\n\t\tconst sleep =\n\t\t\toptions.sleep ??\n\t\t\t((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));\n\t\tfor (let attempt = 0; attempt < VIEWER_POLL_ATTEMPTS; attempt++) {\n\t\t\tawait sleep(VIEWER_POLL_INTERVAL_MS);\n\t\t\tif (await isViewerHealthy(probeOptions)) return;\n\t\t}\n\t} catch {\n\t\t// Best effort — MCP server continues regardless.\n\t}\n}\n","#!/usr/bin/env node\n\n/**\n * @codemem/mcp — MCP stdio server bootstrap.\n *\n * Runs as a separate process spawned by the host (OpenCode/Claude).\n * Owns its own better-sqlite3 connection. Communicates via stdio JSON-RPC.\n */\n\nimport { MemoryStore, resolveDbPath } from \"@codemem/core\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { createCodememMcpServer } from \"./server.js\";\nimport { ensureViewer } from \"./stdio-viewer.js\";\n\nfunction createStdioShutdown(close: () => Promise<void>) {\n\tlet shutdownPromise: Promise<void> | undefined;\n\tlet shutdownExitCode = 0;\n\treturn (exitCode: number): Promise<void> => {\n\t\tshutdownExitCode = Math.max(shutdownExitCode, exitCode);\n\t\tif (shutdownPromise) return shutdownPromise;\n\t\t// Parent embedding work cannot be interrupted; forced exit must not close SQLite under it.\n\t\tconst deadline = setTimeout(() => process.exit(1), 30_000);\n\t\tdeadline.unref();\n\t\tshutdownPromise = Promise.resolve().then(async () => {\n\t\t\ttry {\n\t\t\t\tawait close();\n\t\t\t} catch {\n\t\t\t\tshutdownExitCode = 1;\n\t\t\t} finally {\n\t\t\t\tclearTimeout(deadline);\n\t\t\t}\n\t\t\tprocess.exit(shutdownExitCode);\n\t\t});\n\t\treturn shutdownPromise;\n\t};\n}\n\nasync function main() {\n\tconst dbPath = resolveDbPath();\n\tconst store = new MemoryStore(dbPath);\n\tlet server: ReturnType<typeof createCodememMcpServer> | undefined;\n\tlet closePromise: Promise<void> | undefined;\n\tlet closing = false;\n\tconst close = () => {\n\t\tif (closePromise) return closePromise;\n\t\tclosing = true;\n\t\tclosePromise = (async () => {\n\t\t\ttry {\n\t\t\t\t// Stop dispatch and cancel active MCP request signals before draining the store.\n\t\t\t\tawait server?.close();\n\t\t\t} finally {\n\t\t\t\tawait store.closeAsync();\n\t\t\t}\n\t\t})();\n\t\treturn closePromise;\n\t};\n\tconst shutdown = createStdioShutdown(close);\n\n\ttry {\n\t\t// Auto-start viewer in background (belt and suspenders with any hook-based start)\n\t\tensureViewer().catch(() => {});\n\n\t\tserver = createCodememMcpServer(store);\n\t\tconst transport = new StdioServerTransport();\n\t\tserver.server.onclose = () => {\n\t\t\tif (!closing) void shutdown(0);\n\t\t};\n\n\t\tprocess.on(\"SIGINT\", () => void shutdown(0));\n\t\tprocess.on(\"SIGTERM\", () => void shutdown(0));\n\t\tprocess.stdin.once(\"end\", () => void shutdown(0));\n\t\tprocess.stdin.once(\"error\", () => void shutdown(1));\n\n\t\tawait server.connect(transport);\n\t} catch (err) {\n\t\t// Preserve the startup error and exit code after transport and store cleanup.\n\t\tconsole.error(\"codemem MCP server failed to start:\", err);\n\t\tawait shutdown(1);\n\t}\n}\n\nmain().catch((err) => {\n\tconsole.error(\"codemem MCP server failed to start:\", err);\n\tprocess.exit(1);\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAoElE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,GAAG,IAAI,CA4M7F"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemem/mcp",
|
|
3
|
-
"version": "0.47.0-beta.
|
|
3
|
+
"version": "0.47.0-beta.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
"dist/"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@codemem/core": "^0.47.0-beta.
|
|
30
|
+
"@codemem/core": "^0.47.0-beta.4",
|
|
31
31
|
"@modelcontextprotocol/sdk": "^1.32.0",
|
|
32
32
|
"express": "^5.2.1",
|
|
33
33
|
"express-rate-limit": "^8.7.0",
|
|
34
|
-
"zod": "
|
|
34
|
+
"zod": "4.6.6"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
+
"@codemem/server": "^0.47.0-beta.4",
|
|
37
38
|
"@types/express": "^5.0.6",
|
|
38
39
|
"@types/node": "^24.12.4",
|
|
39
40
|
"typescript": "^7.0.2",
|