@kanchingyg/repomcp 0.0.0-stage → 0.1.1

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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -2
  3. package/SKILL.md +10 -0
  4. package/dist/adapters/api-routes.d.ts +31 -0
  5. package/dist/adapters/api-routes.d.ts.map +1 -0
  6. package/dist/adapters/api-routes.js +680 -0
  7. package/dist/adapters/api-routes.js.map +1 -0
  8. package/dist/adapters/cli-crawler.d.ts +28 -0
  9. package/dist/adapters/cli-crawler.d.ts.map +1 -0
  10. package/dist/adapters/cli-crawler.js +467 -0
  11. package/dist/adapters/cli-crawler.js.map +1 -0
  12. package/dist/adapters/data-sources.d.ts +6 -0
  13. package/dist/adapters/data-sources.d.ts.map +1 -0
  14. package/dist/adapters/data-sources.js +672 -0
  15. package/dist/adapters/data-sources.js.map +1 -0
  16. package/dist/adapters/docs-bm25.d.ts +50 -0
  17. package/dist/adapters/docs-bm25.d.ts.map +1 -0
  18. package/dist/adapters/docs-bm25.js +484 -0
  19. package/dist/adapters/docs-bm25.js.map +1 -0
  20. package/dist/adapters/index.d.ts +18 -0
  21. package/dist/adapters/index.d.ts.map +1 -0
  22. package/dist/adapters/index.js +66 -0
  23. package/dist/adapters/index.js.map +1 -0
  24. package/dist/adapters/polyglot-code.d.ts +65 -0
  25. package/dist/adapters/polyglot-code.d.ts.map +1 -0
  26. package/dist/adapters/polyglot-code.js +691 -0
  27. package/dist/adapters/polyglot-code.js.map +1 -0
  28. package/dist/adapters/remote-target.d.ts +30 -0
  29. package/dist/adapters/remote-target.d.ts.map +1 -0
  30. package/dist/adapters/remote-target.js +559 -0
  31. package/dist/adapters/remote-target.js.map +1 -0
  32. package/dist/adapters/task-runners.d.ts +8 -0
  33. package/dist/adapters/task-runners.d.ts.map +1 -0
  34. package/dist/adapters/task-runners.js +468 -0
  35. package/dist/adapters/task-runners.js.map +1 -0
  36. package/dist/adapters/types.d.ts +9 -0
  37. package/dist/adapters/types.d.ts.map +1 -0
  38. package/dist/adapters/types.js +21 -0
  39. package/dist/adapters/types.js.map +1 -0
  40. package/dist/bridge.d.ts +136 -0
  41. package/dist/bridge.d.ts.map +1 -0
  42. package/dist/bridge.js +488 -0
  43. package/dist/bridge.js.map +1 -0
  44. package/dist/checkpoints.d.ts +41 -0
  45. package/dist/checkpoints.d.ts.map +1 -0
  46. package/dist/checkpoints.js +208 -0
  47. package/dist/checkpoints.js.map +1 -0
  48. package/dist/cli.d.ts +3 -0
  49. package/dist/cli.d.ts.map +1 -0
  50. package/dist/cli.js +124 -0
  51. package/dist/cli.js.map +1 -0
  52. package/dist/dirty-parser.d.ts +10 -0
  53. package/dist/dirty-parser.d.ts.map +1 -0
  54. package/dist/dirty-parser.js +220 -0
  55. package/dist/dirty-parser.js.map +1 -0
  56. package/dist/harnesses.d.ts +74 -0
  57. package/dist/harnesses.d.ts.map +1 -0
  58. package/dist/harnesses.js +204 -0
  59. package/dist/harnesses.js.map +1 -0
  60. package/dist/introspect.d.ts +18 -0
  61. package/dist/introspect.d.ts.map +1 -0
  62. package/dist/introspect.js +125 -0
  63. package/dist/introspect.js.map +1 -0
  64. package/dist/path-containment.d.ts +2 -0
  65. package/dist/path-containment.d.ts.map +1 -0
  66. package/dist/path-containment.js +20 -0
  67. package/dist/path-containment.js.map +1 -0
  68. package/dist/providers.d.ts +17 -0
  69. package/dist/providers.d.ts.map +1 -0
  70. package/dist/providers.js +127 -0
  71. package/dist/providers.js.map +1 -0
  72. package/dist/types.d.ts +58 -0
  73. package/dist/types.d.ts.map +1 -0
  74. package/dist/types.js +2 -0
  75. package/dist/types.js.map +1 -0
  76. package/jsr.json +24 -0
  77. package/package.json +57 -4
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env node
2
+ import { type IncomingMessage, type Server, type ServerResponse } from "node:http";
3
+ import type { RepomcpTool } from "./types.js";
4
+ export type { JsonSchemaProperty, JsonSchema, ToolAnnotations, RepomcpTool, InitOptions, DirtyToolCall, ChatMessage, ReasoningState, ProviderId } from "./types.js";
5
+ export type { IntrospectFullOptions, IntrospectFullResult } from "./introspect.js";
6
+ export type { NCtxProbeResult } from "./checkpoints.js";
7
+ export type { HarnessTarget } from "./harnesses.js";
8
+ /** Configuration and data shape for `GuardOptions` (guard options). */
9
+ export type GuardOptions = {
10
+ allowWrite?: boolean;
11
+ dryRun?: boolean;
12
+ };
13
+ /** Configuration and data shape for `FinalizeMcpToolTextOptions` (finalize mcp tool text options). */
14
+ export type FinalizeMcpToolTextOptions = {
15
+ nCtx?: number;
16
+ toWsl?: boolean;
17
+ };
18
+ /** Configuration and data shape for `EmbedLock` (embed lock). */
19
+ export type EmbedLock = {
20
+ provider: string;
21
+ model: string;
22
+ dimension: number;
23
+ };
24
+ /** Configuration and data shape for `ToolHandler` (tool handler). */
25
+ export type ToolHandler = (args: Record<string, unknown>) => Promise<unknown> | unknown;
26
+ /** Configuration and data shape for `McpDispatchOptions` (mcp dispatch options). */
27
+ export type McpDispatchOptions = {
28
+ repoRoot?: string;
29
+ tools?: RepomcpTool[];
30
+ handlers?: Record<string, ToolHandler>;
31
+ pathToWsl?: boolean;
32
+ nCtx?: number;
33
+ };
34
+ /** Configuration and data shape for `JsonRpcMessage` (json rpc message). */
35
+ export type JsonRpcMessage = {
36
+ jsonrpc?: string;
37
+ id?: string | number;
38
+ method?: string;
39
+ params?: {
40
+ name?: string;
41
+ arguments?: Record<string, unknown>;
42
+ };
43
+ };
44
+ /** Configuration and data shape for `EmbedUpstream` (embed upstream). */
45
+ export type EmbedUpstream = {
46
+ name: string;
47
+ maxBatch: number;
48
+ embed: (input: string[], model: string, dimensions?: number) => Promise<number[][]>;
49
+ };
50
+ /** Configuration and data shape for `EmbedServerOptions` (embed server options). */
51
+ export type EmbedServerOptions = {
52
+ port: number;
53
+ repoRoot: string;
54
+ upstream: EmbedUpstream;
55
+ defaultModel: string;
56
+ };
57
+ export { headTailTruncate, probeNCtx, truncateToolOutput, buildRecencyAnchor, anchorPromptTail, DEFAULT_N_CTX, } from "./checkpoints.js";
58
+ export { parseDirtyToolCall, stripRedactedThinking } from "./dirty-parser.js";
59
+ export { introspectRepo, introspectRepoFull } from "./introspect.js";
60
+ export { emitOmpHostToolsFrame } from "./harnesses.js";
61
+ export { initHarness } from "./harnesses.js";
62
+ export { applyReasoningContentPolicy, createReasoningState, sanitizeRequestBody, normalizeToolChoice, detectProvider, } from "./providers.js";
63
+ /** Executes `setGuards` to set guards in `repomcp`. */
64
+ export declare function setGuards(opts: GuardOptions): void;
65
+ /** Executes `canonicalizeJson` to canonicalize json in `repomcp`. */
66
+ export declare function canonicalizeJson(value: unknown): string;
67
+ /** Executes `loopBreakerHash` to loop breaker hash in `repomcp`. */
68
+ export declare function loopBreakerHash(toolName: string, args: unknown): string;
69
+ /** Executes `resetLoopBreaker` to reset loop breaker in `repomcp`. */
70
+ export declare function resetLoopBreaker(): void;
71
+ /** Executes `checkLoopBreaker` to check loop breaker in `repomcp`. */
72
+ export declare function checkLoopBreaker(toolName: string, args: unknown): string | null;
73
+ /** Executes `guardMutatingTool` to guard mutating tool in `repomcp`. */
74
+ export declare function guardMutatingTool(tool: RepomcpTool): {
75
+ blocked: boolean;
76
+ reason?: string;
77
+ };
78
+ /** Executes `windowsToWsl` to windows to wsl in `repomcp`. */
79
+ export declare function windowsToWsl(p: string): string;
80
+ /** Executes `wslToWindows` to wsl to windows in `repomcp`. */
81
+ export declare function wslToWindows(p: string): string;
82
+ /** Executes `normalizePathsDeep` to normalize paths deep in `repomcp`. */
83
+ export declare function normalizePathsDeep(value: unknown, toWsl: boolean): unknown;
84
+ /** Executes `redactSecrets` to redact secrets in `repomcp`. */
85
+ export declare function redactSecrets(text: string): string;
86
+ /** Executes `finalizeMcpToolText` to finalize mcp tool text in `repomcp`. */
87
+ export declare function finalizeMcpToolText(text: string, opts?: FinalizeMcpToolTextOptions): unknown;
88
+ /** Executes `hijackStdoutForMcp` to hijack stdout for mcp in `repomcp`. */
89
+ export declare function hijackStdoutForMcp(): void;
90
+ /** Constant `jsonRpcFrameLog` defining json rpc frame log. */
91
+ export declare const jsonRpcFrameLog: string[];
92
+ /** Executes `writeJsonRpcFrame` to write json rpc frame in `repomcp`. */
93
+ export declare function writeJsonRpcFrame(obj: Record<string, unknown>): void;
94
+ /** Executes `startMcpServer` to start mcp server in `repomcp`. */
95
+ export declare function startMcpServer(opts?: McpDispatchOptions): void;
96
+ /** Executes `dispatchMcpMessage` to dispatch mcp message in `repomcp`. */
97
+ export declare function dispatchMcpMessage(msg: JsonRpcMessage, opts?: McpDispatchOptions): void;
98
+ /** Constant `EMBED_LOCK` defining embed lock. */
99
+ export declare const EMBED_LOCK = ".repomcp-embed-lock.json";
100
+ /** Constant `KNOWN_DIMENSIONS` defining known dimensions. */
101
+ export declare const KNOWN_DIMENSIONS: number[];
102
+ /** Executes `readEmbedLock` to read embed lock in `repomcp`. */
103
+ export declare function readEmbedLock(repoRoot: string): EmbedLock | null;
104
+ /** Executes `writeEmbedLock` to write embed lock in `repomcp`. */
105
+ export declare function writeEmbedLock(repoRoot: string, lock: EmbedLock): void;
106
+ /** Executes `assertDimensionFingerprint` to assert dimension fingerprint in `repomcp`. */
107
+ export declare function assertDimensionFingerprint(lock: EmbedLock | null, dim: number): void;
108
+ /** Executes `l2Normalize` to l2 normalize in `repomcp`. */
109
+ export declare function l2Normalize(vec: number[]): number[];
110
+ /** Executes `mrlSlice` to mrl slice in `repomcp`. */
111
+ export declare function mrlSlice(vec: number[], dimensions: number): number[];
112
+ /** Executes `floatArrayToBase64` to float array to base64 in `repomcp`. */
113
+ export declare function floatArrayToBase64(vec: number[]): string;
114
+ /** Executes `base64ToFloatArray` to base64 to float array in `repomcp`. */
115
+ export declare function base64ToFloatArray(b64: string): number[];
116
+ /** Executes `chunkArray` to chunk array in `repomcp`. */
117
+ export declare function chunkArray<T>(arr: T[], size: number): T[][];
118
+ /** Executes `normalizeEmbedBatch` to normalize embed batch in `repomcp`. */
119
+ export declare function normalizeEmbedBatch(inputs: string[], options: {
120
+ dimensions?: number;
121
+ upstream: EmbedUpstream;
122
+ model: string;
123
+ lock?: EmbedLock | null;
124
+ }): Promise<{
125
+ embeddings: number[][];
126
+ indices: number[];
127
+ }>;
128
+ /** Executes `createEmbedRequestHandler` to create embed request handler in `repomcp`. */
129
+ export declare function createEmbedRequestHandler(opts: EmbedServerOptions): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
130
+ /** Executes `startEmbedServer` to start embed server in `repomcp`. */
131
+ export declare function startEmbedServer(opts: EmbedServerOptions): Server;
132
+ /** Executes `createDashScopeUpstream` to create dash scope upstream in `repomcp`. */
133
+ export declare function createDashScopeUpstream(fetchImpl?: typeof fetch, opts?: {
134
+ apiKey?: string;
135
+ }): EmbedUpstream;
136
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
package/dist/bridge.js ADDED
@@ -0,0 +1,488 @@
1
+ #!/usr/bin/env node
2
+ import { createHash } from "node:crypto";
3
+ import { createServer } from "node:http";
4
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ import { introspectRepo } from "./introspect.js";
7
+ import { truncateToolOutput, DEFAULT_N_CTX } from "./checkpoints.js";
8
+ export { headTailTruncate, probeNCtx, truncateToolOutput, buildRecencyAnchor, anchorPromptTail, DEFAULT_N_CTX, } from "./checkpoints.js";
9
+ export { parseDirtyToolCall, stripRedactedThinking } from "./dirty-parser.js";
10
+ export { introspectRepo, introspectRepoFull } from "./introspect.js";
11
+ export { emitOmpHostToolsFrame } from "./harnesses.js";
12
+ export { initHarness } from "./harnesses.js";
13
+ export { applyReasoningContentPolicy, createReasoningState, sanitizeRequestBody, normalizeToolChoice, detectProvider, } from "./providers.js";
14
+ let allowWrite = false;
15
+ let dryRun = false;
16
+ /** Executes `setGuards` to set guards in `repomcp`. */
17
+ export function setGuards(opts) {
18
+ if (opts.allowWrite !== undefined)
19
+ allowWrite = Boolean(opts.allowWrite);
20
+ if (opts.dryRun !== undefined)
21
+ dryRun = Boolean(opts.dryRun);
22
+ }
23
+ /** Executes `canonicalizeJson` to canonicalize json in `repomcp`. */
24
+ export function canonicalizeJson(value) {
25
+ if (value === null || value === undefined)
26
+ return "null";
27
+ if (typeof value !== "object")
28
+ return JSON.stringify(value);
29
+ if (Array.isArray(value)) {
30
+ return `[${value.map((v) => canonicalizeJson(v)).join(",")}]`;
31
+ }
32
+ const obj = value;
33
+ const keys = Object.keys(obj).sort();
34
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalizeJson(obj[k])}`).join(",")}}`;
35
+ }
36
+ /** Executes `loopBreakerHash` to loop breaker hash in `repomcp`. */
37
+ export function loopBreakerHash(toolName, args) {
38
+ return createHash("sha256")
39
+ .update(`${toolName}:${canonicalizeJson(args)}`)
40
+ .digest("hex");
41
+ }
42
+ const loopState = { lastHash: "", repeatCount: 0 };
43
+ /** Executes `resetLoopBreaker` to reset loop breaker in `repomcp`. */
44
+ export function resetLoopBreaker() {
45
+ loopState.lastHash = "";
46
+ loopState.repeatCount = 0;
47
+ }
48
+ /** Executes `checkLoopBreaker` to check loop breaker in `repomcp`. */
49
+ export function checkLoopBreaker(toolName, args) {
50
+ const h = loopBreakerHash(toolName, args);
51
+ if (h === loopState.lastHash) {
52
+ loopState.repeatCount++;
53
+ }
54
+ else {
55
+ loopState.lastHash = h;
56
+ loopState.repeatCount = 1;
57
+ }
58
+ if (loopState.repeatCount >= 3) {
59
+ return "LOOP_BREAKER: Identical tool call repeated 2 times consecutively. Stop calling tools and return your final synthesis.";
60
+ }
61
+ return null;
62
+ }
63
+ /** Executes `guardMutatingTool` to guard mutating tool in `repomcp`. */
64
+ export function guardMutatingTool(tool) {
65
+ if (!tool.mutates)
66
+ return { blocked: false };
67
+ if (dryRun) {
68
+ return {
69
+ blocked: true,
70
+ reason: `[dry-run] Would call mutating tool ${tool.name}; pass --allow-write and omit --dry-run to execute.`,
71
+ };
72
+ }
73
+ if (!allowWrite) {
74
+ return {
75
+ blocked: true,
76
+ reason: "Read-only mode: pass --allow-write to enable mutating tools.",
77
+ };
78
+ }
79
+ return { blocked: false };
80
+ }
81
+ const WIN_DRIVE_RE = /^([A-Za-z]):\\(.*)$/;
82
+ const WSL_RE = /^\/mnt\/([a-z])\/(.*)$/i;
83
+ /** Executes `windowsToWsl` to windows to wsl in `repomcp`. */
84
+ export function windowsToWsl(p) {
85
+ const m = p.match(WIN_DRIVE_RE);
86
+ if (!m)
87
+ return p;
88
+ const rest = m[2].replace(/\\/g, "/");
89
+ return `/mnt/${m[1].toLowerCase()}/${rest}`;
90
+ }
91
+ /** Executes `wslToWindows` to wsl to windows in `repomcp`. */
92
+ export function wslToWindows(p) {
93
+ const m = p.match(WSL_RE);
94
+ if (!m)
95
+ return p;
96
+ const rest = m[2].replace(/\//g, "\\");
97
+ return `${m[1].toUpperCase()}:\\${rest}`;
98
+ }
99
+ /** Executes `normalizePathsDeep` to normalize paths deep in `repomcp`. */
100
+ export function normalizePathsDeep(value, toWsl) {
101
+ if (typeof value === "string") {
102
+ if (toWsl && WIN_DRIVE_RE.test(value))
103
+ return windowsToWsl(value);
104
+ if (!toWsl && WSL_RE.test(value))
105
+ return wslToWindows(value);
106
+ if (value.startsWith("file:///")) {
107
+ const raw = value.slice(8).replace(/\//g, "\\");
108
+ return (toWsl ? windowsToWsl(raw) : raw);
109
+ }
110
+ return value;
111
+ }
112
+ if (Array.isArray(value)) {
113
+ return value.map((v) => normalizePathsDeep(v, toWsl));
114
+ }
115
+ if (value && typeof value === "object") {
116
+ const out = {};
117
+ for (const [k, v] of Object.entries(value)) {
118
+ out[k] = normalizePathsDeep(v, toWsl);
119
+ }
120
+ return out;
121
+ }
122
+ return value;
123
+ }
124
+ /** Executes `redactSecrets` to redact secrets in `repomcp`. */
125
+ export function redactSecrets(text) {
126
+ return String(text)
127
+ .replace(/(api[_-]?key|token|password|secret)\s*[=:]\s*[^\s]+/gi, "$1=[REDACTED]")
128
+ .replace(/Bearer\s+[A-Za-z0-9._-]+/gi, "Bearer [REDACTED]")
129
+ .replace(/sk-[A-Za-z0-9]{20,}/g, "[REDACTED]");
130
+ }
131
+ /** Executes `finalizeMcpToolText` to finalize mcp tool text in `repomcp`. */
132
+ export function finalizeMcpToolText(text, opts) {
133
+ const nCtx = opts?.nCtx ?? DEFAULT_N_CTX;
134
+ const toWsl = opts?.toWsl ?? false;
135
+ return normalizePathsDeep(redactSecrets(truncateToolOutput(String(text), nCtx)), !toWsl);
136
+ }
137
+ let jsonRpcWrite = null;
138
+ let stdoutHijacked = false;
139
+ /** Executes `hijackStdoutForMcp` to hijack stdout for mcp in `repomcp`. */
140
+ export function hijackStdoutForMcp() {
141
+ if (stdoutHijacked)
142
+ return;
143
+ stdoutHijacked = true;
144
+ const native = process.stdout.write.bind(process.stdout);
145
+ jsonRpcWrite = (line) => {
146
+ native(line);
147
+ };
148
+ process.stdout.write = ((chunk, encoding, cb) => {
149
+ const str = typeof chunk === "string" ? chunk : Buffer.from(chunk).toString();
150
+ if (jsonRpcWrite && str.trim().startsWith("{") && str.includes('"jsonrpc"')) {
151
+ if (typeof encoding === "function") {
152
+ return native(chunk, encoding);
153
+ }
154
+ return native(chunk, encoding, cb);
155
+ }
156
+ process.stderr.write(str);
157
+ return true;
158
+ });
159
+ }
160
+ /** Constant `jsonRpcFrameLog` defining json rpc frame log. */
161
+ export const jsonRpcFrameLog = [];
162
+ /** Executes `writeJsonRpcFrame` to write json rpc frame in `repomcp`. */
163
+ export function writeJsonRpcFrame(obj) {
164
+ const line = JSON.stringify(obj) + "\n";
165
+ jsonRpcFrameLog.push(line);
166
+ if (jsonRpcWrite)
167
+ jsonRpcWrite(line);
168
+ else
169
+ process.stdout.write(line);
170
+ }
171
+ /** Executes `startMcpServer` to start mcp server in `repomcp`. */
172
+ export function startMcpServer(opts = {}) {
173
+ hijackStdoutForMcp();
174
+ const repoRoot = opts.repoRoot ?? process.cwd();
175
+ const tools = opts.tools ?? introspectRepo(repoRoot);
176
+ const handlers = opts.handlers ?? {};
177
+ const toWsl = opts.pathToWsl ?? process.env.REPOMCP_PATH_WSL === "1";
178
+ const stdin = process.stdin;
179
+ stdin.setEncoding("utf8");
180
+ let buffer = "";
181
+ stdin.on("data", (chunk) => {
182
+ buffer += chunk;
183
+ let idx;
184
+ while ((idx = buffer.indexOf("\n")) >= 0) {
185
+ const line = buffer.slice(0, idx).trim();
186
+ buffer = buffer.slice(idx + 1);
187
+ if (!line)
188
+ continue;
189
+ let msg;
190
+ try {
191
+ msg = JSON.parse(line);
192
+ }
193
+ catch {
194
+ continue;
195
+ }
196
+ dispatchMcpMessage(msg, { repoRoot, tools, handlers, pathToWsl: toWsl, nCtx: opts.nCtx });
197
+ }
198
+ });
199
+ }
200
+ /** Executes `dispatchMcpMessage` to dispatch mcp message in `repomcp`. */
201
+ export function dispatchMcpMessage(msg, opts = {}) {
202
+ const repoRoot = opts.repoRoot ?? process.cwd();
203
+ const tools = opts.tools ?? introspectRepo(repoRoot);
204
+ const handlers = opts.handlers ?? {};
205
+ const toWsl = opts.pathToWsl ?? process.env.REPOMCP_PATH_WSL === "1";
206
+ const nCtx = opts.nCtx ?? DEFAULT_N_CTX;
207
+ handleMessage(msg, tools, handlers, toWsl, nCtx);
208
+ }
209
+ function handleMessage(msg, tools, handlers, toWsl, nCtx) {
210
+ const { id, method, params } = msg;
211
+ if (method === "initialize") {
212
+ writeJsonRpcFrame({
213
+ jsonrpc: "2.0",
214
+ id,
215
+ result: {
216
+ protocolVersion: "2024-11-05",
217
+ capabilities: { tools: {} },
218
+ serverInfo: { name: "repomcp", version: "0.1.0" },
219
+ },
220
+ });
221
+ return;
222
+ }
223
+ if (method === "notifications/initialized")
224
+ return;
225
+ if (method === "tools/list") {
226
+ writeJsonRpcFrame({
227
+ jsonrpc: "2.0",
228
+ id,
229
+ result: {
230
+ tools: tools.map((t) => ({
231
+ name: t.name,
232
+ description: t.description,
233
+ inputSchema: t.inputSchema,
234
+ annotations: t.annotations,
235
+ })),
236
+ },
237
+ });
238
+ return;
239
+ }
240
+ if (method === "tools/call") {
241
+ const name = params?.name ?? "";
242
+ const args = normalizePathsDeep(params?.arguments ?? {}, toWsl);
243
+ const tool = tools.find((t) => t.name === name);
244
+ const loopErr = checkLoopBreaker(name, args);
245
+ if (loopErr) {
246
+ writeJsonRpcFrame({
247
+ jsonrpc: "2.0",
248
+ id,
249
+ result: { content: [{ type: "text", text: loopErr }], isError: true },
250
+ });
251
+ return;
252
+ }
253
+ if (tool) {
254
+ const guard = guardMutatingTool(tool);
255
+ if (guard.blocked) {
256
+ writeJsonRpcFrame({
257
+ jsonrpc: "2.0",
258
+ id,
259
+ result: {
260
+ content: [{ type: "text", text: guard.reason ?? "blocked" }],
261
+ isError: true,
262
+ },
263
+ });
264
+ return;
265
+ }
266
+ }
267
+ const handler = handlers[name];
268
+ void (async () => {
269
+ try {
270
+ if (!handler) {
271
+ writeJsonRpcFrame({
272
+ jsonrpc: "2.0",
273
+ id,
274
+ result: {
275
+ content: [{ type: "text", text: "no handler" }],
276
+ isError: true,
277
+ },
278
+ });
279
+ return;
280
+ }
281
+ let result = await handler(args);
282
+ const text = typeof result === "string" ? result : JSON.stringify(result, null, 2);
283
+ writeJsonRpcFrame({
284
+ jsonrpc: "2.0",
285
+ id,
286
+ result: {
287
+ content: [{ type: "text", text: finalizeMcpToolText(text, { nCtx, toWsl }) }],
288
+ },
289
+ });
290
+ }
291
+ catch (e) {
292
+ writeJsonRpcFrame({
293
+ jsonrpc: "2.0",
294
+ id,
295
+ result: {
296
+ content: [{ type: "text", text: finalizeMcpToolText(String(e), { nCtx, toWsl }) }],
297
+ isError: true,
298
+ },
299
+ });
300
+ }
301
+ })();
302
+ return;
303
+ }
304
+ if (id !== undefined) {
305
+ writeJsonRpcFrame({
306
+ jsonrpc: "2.0",
307
+ id,
308
+ error: { code: -32601, message: `Method not found: ${method}` },
309
+ });
310
+ }
311
+ }
312
+ /** Constant `EMBED_LOCK` defining embed lock. */
313
+ export const EMBED_LOCK = ".repomcp-embed-lock.json";
314
+ /** Constant `KNOWN_DIMENSIONS` defining known dimensions. */
315
+ export const KNOWN_DIMENSIONS = [384, 768, 1024, 1536, 2560, 3072, 4096];
316
+ /** Executes `readEmbedLock` to read embed lock in `repomcp`. */
317
+ export function readEmbedLock(repoRoot) {
318
+ const p = join(repoRoot, EMBED_LOCK);
319
+ if (!existsSync(p))
320
+ return null;
321
+ return JSON.parse(readFileSync(p, "utf8"));
322
+ }
323
+ /** Executes `writeEmbedLock` to write embed lock in `repomcp`. */
324
+ export function writeEmbedLock(repoRoot, lock) {
325
+ writeFileSync(join(repoRoot, EMBED_LOCK), JSON.stringify(lock, null, 2));
326
+ }
327
+ /** Executes `assertDimensionFingerprint` to assert dimension fingerprint in `repomcp`. */
328
+ export function assertDimensionFingerprint(lock, dim) {
329
+ if (!lock)
330
+ return;
331
+ if (lock.dimension !== dim) {
332
+ throw new Error(`Dimension fingerprint mismatch: lock expects ${lock.dimension}, got ${dim}`);
333
+ }
334
+ }
335
+ /** Executes `l2Normalize` to l2 normalize in `repomcp`. */
336
+ export function l2Normalize(vec) {
337
+ let sum = 0;
338
+ for (const v of vec)
339
+ sum += v * v;
340
+ const norm = Math.sqrt(sum) || 1;
341
+ return vec.map((v) => v / norm);
342
+ }
343
+ /** Executes `mrlSlice` to mrl slice in `repomcp`. */
344
+ export function mrlSlice(vec, dimensions) {
345
+ const sliced = vec.slice(0, dimensions);
346
+ return l2Normalize(sliced);
347
+ }
348
+ /** Executes `floatArrayToBase64` to float array to base64 in `repomcp`. */
349
+ export function floatArrayToBase64(vec) {
350
+ const buf = Buffer.alloc(vec.length * 4);
351
+ for (let i = 0; i < vec.length; i++)
352
+ buf.writeFloatLE(vec[i], i * 4);
353
+ return buf.toString("base64");
354
+ }
355
+ /** Executes `base64ToFloatArray` to base64 to float array in `repomcp`. */
356
+ export function base64ToFloatArray(b64) {
357
+ const buf = Buffer.from(b64, "base64");
358
+ const out = [];
359
+ for (let i = 0; i < buf.length; i += 4) {
360
+ out.push(buf.readFloatLE(i));
361
+ }
362
+ return out;
363
+ }
364
+ /** Executes `chunkArray` to chunk array in `repomcp`. */
365
+ export function chunkArray(arr, size) {
366
+ const out = [];
367
+ for (let i = 0; i < arr.length; i += size)
368
+ out.push(arr.slice(i, i + size));
369
+ return out;
370
+ }
371
+ /** Executes `normalizeEmbedBatch` to normalize embed batch in `repomcp`. */
372
+ export async function normalizeEmbedBatch(inputs, options) {
373
+ const dimensions = options.dimensions;
374
+ const indexed = inputs.map((text, i) => ({ text, i }));
375
+ const nonEmpty = indexed.filter((x) => x.text.trim().length > 0);
376
+ const batches = chunkArray(nonEmpty, options.upstream.maxBatch);
377
+ const vectors = new Map();
378
+ for (const batch of batches) {
379
+ const texts = batch.map((b) => b.text);
380
+ const got = await options.upstream.embed(texts, options.model, dimensions);
381
+ for (let j = 0; j < batch.length; j++) {
382
+ let vec = got[j] ?? [];
383
+ if (dimensions && vec.length > dimensions)
384
+ vec = mrlSlice(vec, dimensions);
385
+ else if (dimensions && vec.length === dimensions)
386
+ vec = l2Normalize(vec);
387
+ if (dimensions)
388
+ assertDimensionFingerprint(options.lock ?? null, vec.length);
389
+ vectors.set(batch[j].i, vec);
390
+ }
391
+ }
392
+ const dim = dimensions ?? (vectors.values().next().value?.length ?? 0);
393
+ const embeddings = [];
394
+ const indices = [];
395
+ for (let i = 0; i < inputs.length; i++) {
396
+ indices.push(i);
397
+ embeddings.push(vectors.get(i) ?? new Array(dim).fill(0));
398
+ }
399
+ return { embeddings, indices };
400
+ }
401
+ /** Executes `createEmbedRequestHandler` to create embed request handler in `repomcp`. */
402
+ export function createEmbedRequestHandler(opts) {
403
+ return async (req, res) => {
404
+ if (req.method !== "POST" || !req.url?.startsWith("/v1/embeddings")) {
405
+ res.writeHead(404);
406
+ res.end();
407
+ return;
408
+ }
409
+ const body = await readBody(req);
410
+ let parsed;
411
+ try {
412
+ parsed = JSON.parse(body);
413
+ }
414
+ catch {
415
+ res.writeHead(400);
416
+ res.end("Invalid JSON");
417
+ return;
418
+ }
419
+ const input = Array.isArray(parsed.input)
420
+ ? parsed.input
421
+ : parsed.input
422
+ ? [parsed.input]
423
+ : [];
424
+ const lock = readEmbedLock(opts.repoRoot);
425
+ try {
426
+ const { embeddings } = await normalizeEmbedBatch(input, {
427
+ dimensions: parsed.dimensions,
428
+ upstream: opts.upstream,
429
+ model: parsed.model ?? opts.defaultModel,
430
+ lock,
431
+ });
432
+ if (parsed.dimensions && !lock) {
433
+ writeEmbedLock(opts.repoRoot, {
434
+ provider: opts.upstream.name,
435
+ model: parsed.model ?? opts.defaultModel,
436
+ dimension: parsed.dimensions,
437
+ });
438
+ }
439
+ const data = embeddings.map((embedding, index) => {
440
+ if (parsed.encoding_format === "base64") {
441
+ return { object: "embedding", index, embedding: floatArrayToBase64(embedding) };
442
+ }
443
+ return { object: "embedding", index, embedding };
444
+ });
445
+ res.writeHead(200, { "Content-Type": "application/json" });
446
+ res.end(JSON.stringify({ object: "list", data, model: parsed.model, usage: {} }));
447
+ }
448
+ catch (e) {
449
+ res.writeHead(400);
450
+ res.end(String(e));
451
+ }
452
+ };
453
+ }
454
+ function readBody(req) {
455
+ return new Promise((resolve, reject) => {
456
+ const chunks = [];
457
+ req.on("data", (c) => chunks.push(c));
458
+ req.on("end", () => resolve(Buffer.concat(chunks).toString()));
459
+ req.on("error", reject);
460
+ });
461
+ }
462
+ /** Executes `startEmbedServer` to start embed server in `repomcp`. */
463
+ export function startEmbedServer(opts) {
464
+ const server = createServer(createEmbedRequestHandler(opts));
465
+ server.listen(opts.port, "127.0.0.1");
466
+ return server;
467
+ }
468
+ /** Executes `createDashScopeUpstream` to create dash scope upstream in `repomcp`. */
469
+ export function createDashScopeUpstream(fetchImpl = fetch, opts) {
470
+ return {
471
+ name: "dashscope",
472
+ maxBatch: 10,
473
+ embed: async (input, model, dimensions) => {
474
+ const key = opts?.apiKey ?? process.env.DASHSCOPE_API_KEY;
475
+ if (!key) {
476
+ throw new Error("DASHSCOPE_API_KEY is required for DashScope embed upstream");
477
+ }
478
+ const res = await fetchImpl("https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings", {
479
+ method: "POST",
480
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${key}` },
481
+ body: JSON.stringify({ model, input, dimensions }),
482
+ });
483
+ const j = (await res.json());
484
+ return (j.data ?? []).map((d) => d.embedding);
485
+ },
486
+ };
487
+ }
488
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}