@prom.codes/context-mcp 0.3.0 → 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/dist/bin.js +125 -34
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// dist/bin.js
|
|
4
|
+
import { McpServer as McpServer2 } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
6
|
|
|
6
7
|
// ../indexer/dist/languages.js
|
|
@@ -3486,17 +3487,52 @@ var SENSITIVE_PATH_ERROR = "path matches the sensitive-file deny-list";
|
|
|
3486
3487
|
// ../shared/dist/index.js
|
|
3487
3488
|
var PROMETHEUS_VERSION = "0.1.0";
|
|
3488
3489
|
|
|
3489
|
-
// ../indexer/dist/
|
|
3490
|
-
var
|
|
3491
|
-
/
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3490
|
+
// ../indexer/dist/ignore.js
|
|
3491
|
+
var IGNORED_DIR_NAMES = [
|
|
3492
|
+
// VCS + JS/TS
|
|
3493
|
+
".git",
|
|
3494
|
+
"node_modules",
|
|
3495
|
+
"dist",
|
|
3496
|
+
"build",
|
|
3497
|
+
"out",
|
|
3498
|
+
".turbo",
|
|
3499
|
+
".next",
|
|
3500
|
+
"coverage",
|
|
3501
|
+
"bower_components",
|
|
3502
|
+
".yarn",
|
|
3503
|
+
".pnpm-store",
|
|
3504
|
+
".svelte-kit",
|
|
3505
|
+
".nuxt",
|
|
3506
|
+
".output",
|
|
3507
|
+
".expo",
|
|
3508
|
+
".vercel",
|
|
3509
|
+
".nyc_output",
|
|
3510
|
+
// Python
|
|
3511
|
+
".venv",
|
|
3512
|
+
"venv",
|
|
3513
|
+
"__pycache__",
|
|
3514
|
+
".tox",
|
|
3515
|
+
".mypy_cache",
|
|
3516
|
+
".pytest_cache",
|
|
3517
|
+
".ruff_cache",
|
|
3518
|
+
".ipynb_checkpoints",
|
|
3519
|
+
// Rust / Java / JVM / native deps
|
|
3520
|
+
"target",
|
|
3521
|
+
"vendor",
|
|
3522
|
+
".gradle",
|
|
3523
|
+
"Pods",
|
|
3524
|
+
// Generic caches / IDE / temp
|
|
3525
|
+
".cache",
|
|
3526
|
+
".parcel-cache",
|
|
3527
|
+
".idea",
|
|
3528
|
+
"tmp",
|
|
3529
|
+
".tmp"
|
|
3499
3530
|
];
|
|
3531
|
+
var RELATIVE_IGNORED_PATTERNS = IGNORED_DIR_NAMES.map((name) => new RegExp(`(^|/)${name.replace(/\./g, "\\.")}(/|$)`));
|
|
3532
|
+
var WATCHER_IGNORED_PATTERNS = IGNORED_DIR_NAMES.map((name) => new RegExp(`(^|[/\\\\])${name.replace(/\./g, "\\.")}([/\\\\]|$)`));
|
|
3533
|
+
|
|
3534
|
+
// ../indexer/dist/watcher.js
|
|
3535
|
+
var DEFAULT_IGNORED = WATCHER_IGNORED_PATTERNS;
|
|
3500
3536
|
function toRelative(absoluteRoot, abs) {
|
|
3501
3537
|
const root = absoluteRoot.endsWith(sep) ? absoluteRoot : absoluteRoot + sep;
|
|
3502
3538
|
const rel = abs.startsWith(root) ? abs.slice(root.length) : abs;
|
|
@@ -3766,16 +3802,7 @@ function toRelative2(absoluteRoot, abs) {
|
|
|
3766
3802
|
const rel = abs.startsWith(root) ? abs.slice(root.length) : abs;
|
|
3767
3803
|
return rel.split(sep2).join("/");
|
|
3768
3804
|
}
|
|
3769
|
-
var DEFAULT_IGNORED_PATTERNS =
|
|
3770
|
-
/(^|\/)\.git(\/|$)/,
|
|
3771
|
-
/(^|\/)node_modules(\/|$)/,
|
|
3772
|
-
/(^|\/)dist(\/|$)/,
|
|
3773
|
-
/(^|\/)build(\/|$)/,
|
|
3774
|
-
/(^|\/)out(\/|$)/,
|
|
3775
|
-
/(^|\/)\.turbo(\/|$)/,
|
|
3776
|
-
/(^|\/)\.next(\/|$)/,
|
|
3777
|
-
/(^|\/)coverage(\/|$)/
|
|
3778
|
-
];
|
|
3805
|
+
var DEFAULT_IGNORED_PATTERNS = RELATIVE_IGNORED_PATTERNS;
|
|
3779
3806
|
var WorkspaceIndexer = class {
|
|
3780
3807
|
#root;
|
|
3781
3808
|
#storage;
|
|
@@ -8301,7 +8328,9 @@ function discoverStorageBackend(env, regionMode, options = {}) {
|
|
|
8301
8328
|
}
|
|
8302
8329
|
async function composeFromEnv(opts) {
|
|
8303
8330
|
const env = opts.env;
|
|
8304
|
-
const
|
|
8331
|
+
const override = (opts.workspaceRootOverride ?? "").trim();
|
|
8332
|
+
const envRoot = (env.PROMETHEUS_WORKSPACE_ROOT ?? "").trim();
|
|
8333
|
+
const workspaceRoot = override !== "" ? override : envRoot !== "" ? envRoot : process.cwd();
|
|
8305
8334
|
const workspaceId = (env.PROMETHEUS_WORKSPACE_ID ?? "") !== "" ? env.PROMETHEUS_WORKSPACE_ID : workspaceRoot;
|
|
8306
8335
|
const workspaceName = (env.PROMETHEUS_WORKSPACE_NAME ?? "") !== "" ? env.PROMETHEUS_WORKSPACE_NAME : basename5(workspaceRoot) || workspaceRoot;
|
|
8307
8336
|
const { id: providerId, provider: embedder, regionMode } = discoverEmbeddingProvider(env, opts.fetch);
|
|
@@ -8341,6 +8370,36 @@ async function composeFromEnv(opts) {
|
|
|
8341
8370
|
};
|
|
8342
8371
|
}
|
|
8343
8372
|
|
|
8373
|
+
// dist/roots.js
|
|
8374
|
+
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
8375
|
+
async function rootFromClient(server, timeoutMs = 2500) {
|
|
8376
|
+
let supportsRoots = false;
|
|
8377
|
+
try {
|
|
8378
|
+
supportsRoots = server.getClientCapabilities()?.roots != null;
|
|
8379
|
+
} catch {
|
|
8380
|
+
return null;
|
|
8381
|
+
}
|
|
8382
|
+
if (!supportsRoots)
|
|
8383
|
+
return null;
|
|
8384
|
+
let res;
|
|
8385
|
+
try {
|
|
8386
|
+
res = await server.listRoots(void 0, { timeout: timeoutMs });
|
|
8387
|
+
} catch {
|
|
8388
|
+
return null;
|
|
8389
|
+
}
|
|
8390
|
+
const roots = res?.roots ?? [];
|
|
8391
|
+
for (const r of roots) {
|
|
8392
|
+
const uri = typeof r?.uri === "string" ? r.uri : "";
|
|
8393
|
+
if (uri.startsWith("file://")) {
|
|
8394
|
+
try {
|
|
8395
|
+
return fileURLToPath2(uri);
|
|
8396
|
+
} catch {
|
|
8397
|
+
}
|
|
8398
|
+
}
|
|
8399
|
+
}
|
|
8400
|
+
return null;
|
|
8401
|
+
}
|
|
8402
|
+
|
|
8344
8403
|
// dist/server.js
|
|
8345
8404
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8346
8405
|
|
|
@@ -8886,13 +8945,6 @@ var SERVER_IDENTITY = {
|
|
|
8886
8945
|
version: PROMETHEUS_VERSION,
|
|
8887
8946
|
title: "prom.codes Context"
|
|
8888
8947
|
};
|
|
8889
|
-
function createServer(deps, options = {}) {
|
|
8890
|
-
const identity = { ...SERVER_IDENTITY, ...options.identity ?? {} };
|
|
8891
|
-
const capabilities = options.capabilities ?? { tools: {} };
|
|
8892
|
-
const server = new McpServer(identity, { capabilities });
|
|
8893
|
-
registerTools(server, deps);
|
|
8894
|
-
return server;
|
|
8895
|
-
}
|
|
8896
8948
|
|
|
8897
8949
|
// dist/bin.js
|
|
8898
8950
|
function errMessage(err) {
|
|
@@ -8930,12 +8982,12 @@ function startManagedIndexing(composed) {
|
|
|
8930
8982
|
return indexer;
|
|
8931
8983
|
}
|
|
8932
8984
|
async function main() {
|
|
8933
|
-
const
|
|
8934
|
-
|
|
8935
|
-
`);
|
|
8936
|
-
const server = createServer(composed);
|
|
8985
|
+
const env = process.env;
|
|
8986
|
+
const explicitRoot = (env.PROMETHEUS_WORKSPACE_ROOT ?? "").trim();
|
|
8937
8987
|
const transport = new StdioServerTransport();
|
|
8938
|
-
const
|
|
8988
|
+
const server = new McpServer2(SERVER_IDENTITY, { capabilities: { tools: {} } });
|
|
8989
|
+
let composed = null;
|
|
8990
|
+
let managedIndexer = null;
|
|
8939
8991
|
const shutdown = async (signal) => {
|
|
8940
8992
|
process.stderr.write(`prometheus-context-mcp: received ${signal}, shutting down
|
|
8941
8993
|
`);
|
|
@@ -8948,13 +9000,52 @@ async function main() {
|
|
|
8948
9000
|
} catch {
|
|
8949
9001
|
}
|
|
8950
9002
|
}
|
|
8951
|
-
|
|
9003
|
+
if (composed !== null)
|
|
9004
|
+
await composed.close();
|
|
8952
9005
|
process.exit(0);
|
|
8953
9006
|
}
|
|
8954
9007
|
};
|
|
8955
9008
|
process.once("SIGINT", shutdown);
|
|
8956
9009
|
process.once("SIGTERM", shutdown);
|
|
9010
|
+
const boot = async (override, via) => {
|
|
9011
|
+
composed = await composeFromEnv({
|
|
9012
|
+
env,
|
|
9013
|
+
...override !== void 0 && override !== "" ? { workspaceRootOverride: override } : {}
|
|
9014
|
+
});
|
|
9015
|
+
process.stderr.write(`prometheus-context-mcp: storage=${composed.storageBackend} provider=${composed.providerId} region-mode=${composed.regionMode} managed=${composed.managed} workspace=${composed.workspaceRoot} (via ${via})${composed.dbPath !== null ? ` db=${composed.dbPath}` : ""}
|
|
9016
|
+
`);
|
|
9017
|
+
registerTools(server, composed);
|
|
9018
|
+
if (composed.managed)
|
|
9019
|
+
managedIndexer = startManagedIndexing(composed);
|
|
9020
|
+
};
|
|
9021
|
+
if (explicitRoot !== "") {
|
|
9022
|
+
await boot(void 0, "PROMETHEUS_WORKSPACE_ROOT");
|
|
9023
|
+
await server.connect(transport);
|
|
9024
|
+
return;
|
|
9025
|
+
}
|
|
9026
|
+
let booted = false;
|
|
9027
|
+
const resolveAndBoot = async () => {
|
|
9028
|
+
if (booted)
|
|
9029
|
+
return;
|
|
9030
|
+
booted = true;
|
|
9031
|
+
try {
|
|
9032
|
+
const fromRoots = await rootFromClient(server.server);
|
|
9033
|
+
if (fromRoots !== null)
|
|
9034
|
+
await boot(fromRoots, "MCP roots");
|
|
9035
|
+
else
|
|
9036
|
+
await boot(process.cwd(), "cwd fallback (client advertised no roots)");
|
|
9037
|
+
} catch (err) {
|
|
9038
|
+
process.stderr.write(`prometheus-context-mcp: fatal during boot: ${errMessage(err)}
|
|
9039
|
+
`);
|
|
9040
|
+
process.exit(1);
|
|
9041
|
+
}
|
|
9042
|
+
};
|
|
9043
|
+
server.server.oninitialized = () => {
|
|
9044
|
+
void resolveAndBoot();
|
|
9045
|
+
};
|
|
8957
9046
|
await server.connect(transport);
|
|
9047
|
+
const t = setTimeout(() => void resolveAndBoot(), 5e3);
|
|
9048
|
+
t.unref?.();
|
|
8958
9049
|
}
|
|
8959
9050
|
main().catch((err) => {
|
|
8960
9051
|
const message = err instanceof Error ? err.message : String(err);
|