@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 @@
1
+ {"version":3,"file":"polyglot-code.js","sourceRoot":"","sources":["../../src/adapters/polyglot-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type AdapterDiscovery } from "./types.js";
2
+ export type ParsedRemoteTarget = {
3
+ kind: "github" | "openapi-url" | "local";
4
+ owner?: string;
5
+ repo?: string;
6
+ url?: string;
7
+ path?: string;
8
+ };
9
+ export type RemoteResolveOptions = {
10
+ cacheDir?: string;
11
+ fetchImpl?: typeof fetch;
12
+ };
13
+ export type ResolvedRemoteTarget = {
14
+ localPath: string;
15
+ kind: string;
16
+ };
17
+ export declare function assertSafeFetchUrl(urlString: string, opts?: {
18
+ allowGitHubHosts?: boolean;
19
+ }): Promise<URL>;
20
+ export declare function parseRemoteTarget(input: string): ParsedRemoteTarget;
21
+ export declare function resolveRemoteTarget(input: string, opts?: RemoteResolveOptions): Promise<ResolvedRemoteTarget>;
22
+ export declare function discoverFromRemote(input: string, opts?: RemoteResolveOptions): Promise<{
23
+ root: string;
24
+ kind: string;
25
+ }>;
26
+ /**
27
+ * Remote materialization has no standalone MCP tools; other adapters run on `root`.
28
+ */
29
+ export declare function discoverRemoteTarget(_materializedRoot: string): AdapterDiscovery;
30
+ //# sourceMappingURL=remote-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-target.d.ts","sourceRoot":"","sources":["../../src/adapters/remote-target.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AA6BF,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,GAAG,CAAC,CAsBd;AA4BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAsDnE;AAmZD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAsC/B;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAGzC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,CAmChF"}
@@ -0,0 +1,559 @@
1
+ import { createHash } from "node:crypto";
2
+ import { spawn, spawnSync } from "node:child_process";
3
+ import { lookup as dnsLookup } from "node:dns/promises";
4
+ import { createWriteStream, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "node:fs";
5
+ import { mkdtemp, rm } from "node:fs/promises";
6
+ import { tmpdir } from "node:os";
7
+ import { basename, dirname, join, resolve, sep } from "node:path";
8
+ import { inflateRawSync } from "node:zlib";
9
+ import { emptyDiscovery } from "./types.js";
10
+ const REMOTE_MARKER = ".repomcp-remote-target.json";
11
+ const GITHUB_OWNER_REPO_RE = /^[a-zA-Z0-9](?:[a-zA-Z0-9._-]*[a-zA-Z0-9])?$/;
12
+ const MAX_DOWNLOAD_BYTES = 256 * 1024 * 1024;
13
+ const GITHUB_HOSTS = new Set(["github.com", "www.github.com", "api.github.com", "codeload.github.com"]);
14
+ function isPrivateOrReservedIp(address) {
15
+ if (address === "::1")
16
+ return true;
17
+ if (address.startsWith("fc") || address.startsWith("fd")) {
18
+ const first = parseInt(address.slice(0, 2), 16);
19
+ if (first >= 0xfc && first <= 0xfd)
20
+ return true;
21
+ }
22
+ if (address.includes(":")) {
23
+ const lower = address.toLowerCase();
24
+ if (lower.startsWith("fe80:"))
25
+ return true;
26
+ return false;
27
+ }
28
+ const parts = address.split(".").map((p) => Number.parseInt(p, 10));
29
+ if (parts.length !== 4 || parts.some((n) => !Number.isFinite(n)))
30
+ return true;
31
+ const [a, b] = parts;
32
+ if (a === 127)
33
+ return true;
34
+ if (a === 10)
35
+ return true;
36
+ if (a === 172 && b >= 16 && b <= 31)
37
+ return true;
38
+ if (a === 192 && b === 168)
39
+ return true;
40
+ if (a === 169 && b === 254)
41
+ return true;
42
+ return false;
43
+ }
44
+ export async function assertSafeFetchUrl(urlString, opts) {
45
+ let url;
46
+ try {
47
+ url = new URL(urlString);
48
+ }
49
+ catch {
50
+ throw new Error(`Invalid URL: ${urlString}`);
51
+ }
52
+ const host = url.hostname.toLowerCase();
53
+ const allowGitHub = opts?.allowGitHubHosts ?? false;
54
+ if (allowGitHub && GITHUB_HOSTS.has(host)) {
55
+ return url;
56
+ }
57
+ if (url.protocol !== "https:") {
58
+ throw new Error(`Only https URLs are allowed for remote fetch: ${urlString}`);
59
+ }
60
+ const results = await dnsLookup(host, { all: true });
61
+ for (const entry of results) {
62
+ if (isPrivateOrReservedIp(entry.address)) {
63
+ throw new Error(`SSRF blocked: ${host} resolves to disallowed address ${entry.address}`);
64
+ }
65
+ }
66
+ return url;
67
+ }
68
+ function defaultCacheDir() {
69
+ return join(tmpdir(), "repomcp-remote-cache");
70
+ }
71
+ function cacheKey(input) {
72
+ return createHash("sha256").update(input).digest("hex").slice(0, 24);
73
+ }
74
+ function isGitHubOwnerRepoSegment(segment) {
75
+ return (segment.length > 0 &&
76
+ segment.length <= 100 &&
77
+ GITHUB_OWNER_REPO_RE.test(segment));
78
+ }
79
+ function parseGitHubPath(pathParts) {
80
+ if (pathParts.length < 2)
81
+ return null;
82
+ const owner = pathParts[0];
83
+ const repo = pathParts[1].replace(/\.git$/i, "");
84
+ if (!isGitHubOwnerRepoSegment(owner) || !isGitHubOwnerRepoSegment(repo)) {
85
+ return null;
86
+ }
87
+ return { owner, repo };
88
+ }
89
+ export function parseRemoteTarget(input) {
90
+ const trimmed = input.trim();
91
+ if (!trimmed) {
92
+ return { kind: "local", path: trimmed };
93
+ }
94
+ const lower = trimmed.toLowerCase();
95
+ if (lower.startsWith("github:")) {
96
+ const rest = trimmed.slice("github:".length).replace(/^\/+/, "");
97
+ const slash = rest.indexOf("/");
98
+ if (slash > 0) {
99
+ const owner = rest.slice(0, slash);
100
+ const repo = rest.slice(slash + 1).replace(/\.git$/i, "").replace(/\/+$/, "");
101
+ if (isGitHubOwnerRepoSegment(owner) && isGitHubOwnerRepoSegment(repo)) {
102
+ return { kind: "github", owner, repo };
103
+ }
104
+ }
105
+ }
106
+ if (/^https:\/\//i.test(trimmed)) {
107
+ try {
108
+ const url = new URL(trimmed);
109
+ const host = url.hostname.toLowerCase();
110
+ if (GITHUB_HOSTS.has(host) || host === "github.com" || host === "www.github.com") {
111
+ const parts = url.pathname.split("/").filter(Boolean);
112
+ const gh = parseGitHubPath(parts);
113
+ if (gh) {
114
+ return { kind: "github", owner: gh.owner, repo: gh.repo };
115
+ }
116
+ }
117
+ return { kind: "openapi-url", url: trimmed };
118
+ }
119
+ catch {
120
+ return { kind: "local", path: trimmed };
121
+ }
122
+ }
123
+ if (/^http:\/\//i.test(trimmed)) {
124
+ try {
125
+ const url = new URL(trimmed);
126
+ const host = url.hostname.toLowerCase();
127
+ if (host === "github.com" || host === "www.github.com") {
128
+ const parts = url.pathname.split("/").filter(Boolean);
129
+ const gh = parseGitHubPath(parts);
130
+ if (gh) {
131
+ return { kind: "github", owner: gh.owner, repo: gh.repo };
132
+ }
133
+ }
134
+ }
135
+ catch {
136
+ return { kind: "local", path: trimmed };
137
+ }
138
+ throw new Error(`Only https URLs are allowed for remote OpenAPI fetch: ${trimmed}`);
139
+ }
140
+ return { kind: "local", path: trimmed };
141
+ }
142
+ function safeJoinUnder(root, ...segments) {
143
+ const resolvedRoot = resolve(root);
144
+ const target = resolve(resolvedRoot, ...segments);
145
+ const rootWithSep = resolvedRoot.endsWith(sep) ? resolvedRoot : resolvedRoot + sep;
146
+ if (target !== resolvedRoot && !target.startsWith(rootWithSep)) {
147
+ throw new Error(`Path escapes cache root: ${segments.join("/")}`);
148
+ }
149
+ return target;
150
+ }
151
+ function assertZipEntryPath(entryName) {
152
+ const normalized = entryName.replace(/\\/g, "/");
153
+ if (normalized.startsWith("/") ||
154
+ normalized.includes("../") ||
155
+ normalized.startsWith("..")) {
156
+ throw new Error(`Unsafe archive entry path: ${entryName}`);
157
+ }
158
+ return normalized;
159
+ }
160
+ function extractZipBuffer(zip, destDir) {
161
+ mkdirSync(destDir, { recursive: true });
162
+ const eocdOffset = findEndOfCentralDirectory(zip);
163
+ if (eocdOffset < 0) {
164
+ throw new Error("Invalid zip archive");
165
+ }
166
+ const entryCount = zip.readUInt16LE(eocdOffset + 10);
167
+ const centralDirOffset = zip.readUInt32LE(eocdOffset + 16);
168
+ let offset = centralDirOffset;
169
+ for (let i = 0; i < entryCount; i++) {
170
+ if (zip.readUInt32LE(offset) !== 0x02014b50) {
171
+ throw new Error("Invalid zip central directory");
172
+ }
173
+ const compression = zip.readUInt16LE(offset + 10);
174
+ const compressedSize = zip.readUInt32LE(offset + 20);
175
+ const uncompressedSize = zip.readUInt32LE(offset + 24);
176
+ const nameLen = zip.readUInt16LE(offset + 28);
177
+ const extraLen = zip.readUInt16LE(offset + 30);
178
+ const commentLen = zip.readUInt16LE(offset + 32);
179
+ const localHeaderOffset = zip.readUInt32LE(offset + 42);
180
+ const nameRaw = zip.subarray(offset + 46, offset + 46 + nameLen).toString("utf8");
181
+ const name = assertZipEntryPath(nameRaw);
182
+ offset += 46 + nameLen + extraLen + commentLen;
183
+ if (name.endsWith("/")) {
184
+ mkdirSync(safeJoinUnder(destDir, name), { recursive: true });
185
+ continue;
186
+ }
187
+ const local = localHeaderOffset;
188
+ if (zip.readUInt32LE(local) !== 0x04034b50) {
189
+ throw new Error("Invalid zip local header");
190
+ }
191
+ const localNameLen = zip.readUInt16LE(local + 26);
192
+ const localExtraLen = zip.readUInt16LE(local + 28);
193
+ const dataStart = local + 30 + localNameLen + localExtraLen;
194
+ const compressed = zip.subarray(dataStart, dataStart + compressedSize);
195
+ let payload;
196
+ if (compression === 0) {
197
+ payload = compressed;
198
+ }
199
+ else if (compression === 8) {
200
+ payload = inflateRawSync(compressed);
201
+ }
202
+ else {
203
+ throw new Error(`Unsupported zip compression method: ${compression}`);
204
+ }
205
+ if (payload.length !== uncompressedSize) {
206
+ throw new Error("Zip size mismatch after decompress");
207
+ }
208
+ const outPath = safeJoinUnder(destDir, name);
209
+ mkdirSync(dirname(outPath), { recursive: true });
210
+ writeFileSync(outPath, payload);
211
+ }
212
+ }
213
+ function findEndOfCentralDirectory(zip) {
214
+ const minEocd = 22;
215
+ const maxComment = 0xffff;
216
+ const start = Math.max(0, zip.length - minEocd - maxComment);
217
+ for (let i = zip.length - minEocd; i >= start; i--) {
218
+ if (zip.readUInt32LE(i) === 0x06054b50) {
219
+ return i;
220
+ }
221
+ }
222
+ return -1;
223
+ }
224
+ function spawnAsync(command, args) {
225
+ return new Promise((resolvePromise, reject) => {
226
+ const child = spawn(command, args, {
227
+ stdio: ["ignore", "pipe", "pipe"],
228
+ windowsHide: true,
229
+ });
230
+ let stdout = "";
231
+ let stderr = "";
232
+ child.stdout?.on("data", (chunk) => {
233
+ stdout += String(chunk);
234
+ });
235
+ child.stderr?.on("data", (chunk) => {
236
+ stderr += String(chunk);
237
+ });
238
+ child.on("error", reject);
239
+ child.on("close", (code) => {
240
+ resolvePromise({ code, stdout, stderr });
241
+ });
242
+ });
243
+ }
244
+ function gitAvailable() {
245
+ const result = spawnSync("git", ["--version"], {
246
+ encoding: "utf8",
247
+ windowsHide: true,
248
+ });
249
+ return result.status === 0;
250
+ }
251
+ function tarAvailable() {
252
+ const result = spawnSync("tar", ["--version"], {
253
+ encoding: "utf8",
254
+ windowsHide: true,
255
+ });
256
+ return result.status === 0;
257
+ }
258
+ async function downloadToBuffer(url, fetchImpl, ssrfOpts) {
259
+ await assertSafeFetchUrl(url, ssrfOpts);
260
+ const response = await fetchImpl(url, {
261
+ headers: {
262
+ Accept: "application/vnd.github+json",
263
+ "User-Agent": "repomcp-remote-target",
264
+ },
265
+ });
266
+ if (!response.ok) {
267
+ throw new Error(`Download failed (${response.status}): ${url}`);
268
+ }
269
+ const lengthHeader = response.headers.get("content-length");
270
+ if (lengthHeader) {
271
+ const len = Number.parseInt(lengthHeader, 10);
272
+ if (Number.isFinite(len) && len > MAX_DOWNLOAD_BYTES) {
273
+ throw new Error(`Download too large: ${len} bytes`);
274
+ }
275
+ }
276
+ const arrayBuffer = await response.arrayBuffer();
277
+ if (arrayBuffer.byteLength > MAX_DOWNLOAD_BYTES) {
278
+ throw new Error(`Download too large: ${arrayBuffer.byteLength} bytes`);
279
+ }
280
+ return Buffer.from(arrayBuffer);
281
+ }
282
+ async function downloadToFile(url, destFile, fetchImpl, ssrfOpts) {
283
+ await assertSafeFetchUrl(url, ssrfOpts);
284
+ const response = await fetchImpl(url, {
285
+ headers: { "User-Agent": "repomcp-remote-target" },
286
+ });
287
+ if (!response.ok) {
288
+ throw new Error(`Download failed (${response.status}): ${url}`);
289
+ }
290
+ if (!response.body) {
291
+ const buf = Buffer.from(await response.arrayBuffer());
292
+ if (buf.length > MAX_DOWNLOAD_BYTES) {
293
+ throw new Error(`Download too large: ${buf.length} bytes`);
294
+ }
295
+ writeFileSync(destFile, buf);
296
+ return;
297
+ }
298
+ mkdirSync(dirname(destFile), { recursive: true });
299
+ const file = createWriteStream(destFile);
300
+ let total = 0;
301
+ for await (const chunk of response.body) {
302
+ total += chunk.length;
303
+ if (total > MAX_DOWNLOAD_BYTES) {
304
+ file.close();
305
+ await rm(destFile, { force: true });
306
+ throw new Error(`Download too large: ${total} bytes`);
307
+ }
308
+ file.write(chunk);
309
+ }
310
+ await new Promise((resolveEnd, rejectEnd) => {
311
+ file.end(() => resolveEnd());
312
+ file.on("error", rejectEnd);
313
+ });
314
+ }
315
+ function writeRemoteMarker(root, payload) {
316
+ const markerPath = join(root, REMOTE_MARKER);
317
+ writeFileSync(markerPath, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
318
+ }
319
+ function readCompleteMarker(dir) {
320
+ return existsSync(join(dir, ".repomcp-complete"));
321
+ }
322
+ function markComplete(dir) {
323
+ writeFileSync(join(dir, ".repomcp-complete"), "ok\n", "utf8");
324
+ }
325
+ function findSingleRootDir(extractDir) {
326
+ const entries = readdirSync(extractDir);
327
+ const dirs = entries.filter((name) => {
328
+ try {
329
+ return statSync(join(extractDir, name)).isDirectory();
330
+ }
331
+ catch {
332
+ return false;
333
+ }
334
+ });
335
+ if (dirs.length === 1) {
336
+ return join(extractDir, dirs[0]);
337
+ }
338
+ return extractDir;
339
+ }
340
+ async function materializeGitHubFromZip(owner, repo, dest, cacheDir, fetchImpl) {
341
+ const zipUrl = `https://api.github.com/repos/${owner}/${repo}/zipball/HEAD`;
342
+ const zipBuf = await downloadToBuffer(zipUrl, fetchImpl, { allowGitHubHosts: true });
343
+ const staging = await mkdtemp(join(cacheDir, "github-staging-"));
344
+ try {
345
+ extractZipBuffer(zipBuf, staging);
346
+ const root = findSingleRootDir(staging);
347
+ mkdirSync(dest, { recursive: true });
348
+ copyDirectoryRecursive(root, dest);
349
+ }
350
+ finally {
351
+ await rm(staging, { recursive: true, force: true });
352
+ }
353
+ }
354
+ async function resolveGitHub(owner, repo, cacheDir, fetchImpl) {
355
+ const dest = join(cacheDir, "github", `${owner}--${repo}`);
356
+ if (readCompleteMarker(dest)) {
357
+ return dest;
358
+ }
359
+ if (existsSync(dest)) {
360
+ await rm(dest, { recursive: true, force: true });
361
+ }
362
+ mkdirSync(dirname(dest), { recursive: true });
363
+ const cloneUrl = `https://github.com/${owner}/${repo}.git`;
364
+ if (gitAvailable()) {
365
+ const { code } = await spawnAsync("git", [
366
+ "clone",
367
+ "--depth",
368
+ "1",
369
+ cloneUrl,
370
+ dest,
371
+ ]);
372
+ if (code === 0) {
373
+ markComplete(dest);
374
+ writeRemoteMarker(dest, {
375
+ kind: "github",
376
+ owner,
377
+ repo,
378
+ method: "git-shallow",
379
+ });
380
+ return dest;
381
+ }
382
+ await rm(dest, { recursive: true, force: true }).catch(() => undefined);
383
+ }
384
+ await materializeGitHubFromZip(owner, repo, dest, cacheDir, fetchImpl);
385
+ markComplete(dest);
386
+ writeRemoteMarker(dest, {
387
+ kind: "github",
388
+ owner,
389
+ repo,
390
+ method: "zipball",
391
+ });
392
+ return dest;
393
+ }
394
+ function copyDirectoryRecursive(src, dest) {
395
+ mkdirSync(dest, { recursive: true });
396
+ for (const entry of readdirSync(src, { withFileTypes: true })) {
397
+ const from = join(src, entry.name);
398
+ const to = join(dest, entry.name);
399
+ if (entry.isDirectory()) {
400
+ copyDirectoryRecursive(from, to);
401
+ }
402
+ else if (entry.isFile()) {
403
+ writeFileSync(to, readFileSync(from));
404
+ }
405
+ }
406
+ }
407
+ async function resolveGitHubTarballFallback(owner, repo, dest, cacheDir, fetchImpl) {
408
+ if (!tarAvailable()) {
409
+ throw new Error("git clone and zip extraction failed; tar unavailable");
410
+ }
411
+ const tarUrl = `https://codeload.github.com/${owner}/${repo}/tar.gz/HEAD`;
412
+ const tarFile = join(cacheDir, "downloads", `${owner}--${repo}.tar.gz`);
413
+ mkdirSync(dirname(tarFile), { recursive: true });
414
+ await downloadToFile(tarUrl, tarFile, fetchImpl, { allowGitHubHosts: true });
415
+ mkdirSync(dest, { recursive: true });
416
+ const { code, stderr } = await spawnAsync("tar", [
417
+ "-xzf",
418
+ tarFile,
419
+ "-C",
420
+ dest,
421
+ "--strip-components=1",
422
+ ]);
423
+ if (code !== 0) {
424
+ throw new Error(`tar extract failed: ${stderr.trim() || code}`);
425
+ }
426
+ }
427
+ async function resolveGitHubTarget(owner, repo, cacheDir, fetchImpl) {
428
+ try {
429
+ return await resolveGitHub(owner, repo, cacheDir, fetchImpl);
430
+ }
431
+ catch {
432
+ const dest = join(cacheDir, "github", `${owner}--${repo}`);
433
+ if (existsSync(dest)) {
434
+ await rm(dest, { recursive: true, force: true });
435
+ }
436
+ mkdirSync(dest, { recursive: true });
437
+ await resolveGitHubTarballFallback(owner, repo, dest, cacheDir, fetchImpl);
438
+ markComplete(dest);
439
+ writeRemoteMarker(dest, {
440
+ kind: "github",
441
+ owner,
442
+ repo,
443
+ method: "tarball",
444
+ });
445
+ return dest;
446
+ }
447
+ }
448
+ async function resolveOpenApiUrl(url, cacheDir, fetchImpl) {
449
+ const key = cacheKey(url);
450
+ const dir = join(cacheDir, "openapi", key);
451
+ const fileName = safeOpenApiFileName(url);
452
+ const destFile = join(dir, fileName);
453
+ if (existsSync(join(dir, ".repomcp-complete"))) {
454
+ return destFile;
455
+ }
456
+ mkdirSync(dir, { recursive: true });
457
+ await downloadToFile(url, destFile, fetchImpl);
458
+ markComplete(dir);
459
+ writeRemoteMarker(dir, { kind: "openapi-url", url, file: fileName });
460
+ return destFile;
461
+ }
462
+ function safeOpenApiFileName(url) {
463
+ try {
464
+ const parsed = new URL(url);
465
+ const base = basename(parsed.pathname);
466
+ if (base && /^[a-zA-Z0-9._-]+$/.test(base)) {
467
+ return base;
468
+ }
469
+ }
470
+ catch {
471
+ // ignore
472
+ }
473
+ return "openapi.json";
474
+ }
475
+ function resolveLocalPath(pathInput) {
476
+ const abs = resolve(pathInput);
477
+ if (!existsSync(abs)) {
478
+ throw new Error(`Local path does not exist: ${pathInput}`);
479
+ }
480
+ return abs;
481
+ }
482
+ export async function resolveRemoteTarget(input, opts) {
483
+ const parsed = parseRemoteTarget(input);
484
+ const cacheDir = opts?.cacheDir ?? defaultCacheDir();
485
+ const fetchImpl = opts?.fetchImpl ?? globalThis.fetch;
486
+ if (!fetchImpl) {
487
+ throw new Error("fetch is not available; pass fetchImpl in options");
488
+ }
489
+ mkdirSync(cacheDir, { recursive: true });
490
+ switch (parsed.kind) {
491
+ case "github": {
492
+ if (!parsed.owner || !parsed.repo) {
493
+ throw new Error(`Invalid github target: ${input}`);
494
+ }
495
+ const localPath = await resolveGitHubTarget(parsed.owner, parsed.repo, cacheDir, fetchImpl);
496
+ return { localPath, kind: "github" };
497
+ }
498
+ case "openapi-url": {
499
+ if (!parsed.url) {
500
+ throw new Error(`Invalid openapi URL target: ${input}`);
501
+ }
502
+ const localPath = await resolveOpenApiUrl(parsed.url, cacheDir, fetchImpl);
503
+ return { localPath, kind: "openapi-url" };
504
+ }
505
+ case "local": {
506
+ const localPath = resolveLocalPath(parsed.path ?? input);
507
+ return { localPath, kind: "local" };
508
+ }
509
+ default: {
510
+ const _exhaustive = parsed.kind;
511
+ throw new Error(`Unhandled remote target kind: ${String(_exhaustive)}`);
512
+ }
513
+ }
514
+ }
515
+ export async function discoverFromRemote(input, opts) {
516
+ const resolved = await resolveRemoteTarget(input, opts);
517
+ return { root: resolved.localPath, kind: resolved.kind };
518
+ }
519
+ /**
520
+ * Remote materialization has no standalone MCP tools; other adapters run on `root`.
521
+ */
522
+ export function discoverRemoteTarget(_materializedRoot) {
523
+ const markerPath = join(_materializedRoot, REMOTE_MARKER);
524
+ if (!existsSync(markerPath)) {
525
+ return emptyDiscovery();
526
+ }
527
+ let meta = {};
528
+ try {
529
+ meta = JSON.parse(readFileSync(markerPath, "utf8"));
530
+ }
531
+ catch {
532
+ return emptyDiscovery();
533
+ }
534
+ const toolName = "remote_target_info";
535
+ return {
536
+ tools: [
537
+ {
538
+ name: toolName,
539
+ description: "Metadata for a materialized remote target (github/openapi-url).",
540
+ inputSchema: {
541
+ type: "object",
542
+ properties: {},
543
+ additionalProperties: false,
544
+ },
545
+ mutates: false,
546
+ annotations: {
547
+ readOnlyHint: true,
548
+ destructiveHint: false,
549
+ idempotentHint: true,
550
+ openWorldHint: false,
551
+ },
552
+ },
553
+ ],
554
+ handlers: {
555
+ [toolName]: async () => meta,
556
+ },
557
+ };
558
+ }
559
+ //# sourceMappingURL=remote-target.js.map