@reposkein/mcp 0.1.7 → 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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "reposkein-indexer-darwin-arm64": "ba185b79b5f587a950e09f75f48d0a670e07d2fc2fa5becee39de56ca0b0f073",
3
- "reposkein-indexer-linux-arm64": "0aae7dd003258d65213984b41a65e91fd47eb899a6aeb994e1a24fb89cc1b33a",
4
- "reposkein-indexer-linux-x64": "ed038f38e225f54ccdcdc8af7e8d1620648f104bf34941a4129e6ffe0aef50ea",
5
- "reposkein-indexer-win32-x64.exe": "57fdacae6167260b652b18bfd516806a0a35b8c8d78531e267fe7a64b6529e5f"
2
+ "reposkein-indexer-darwin-arm64": "509dff9a142ed098826abf98562c1d38abb04a04c290fa85eb6ca25f4c56b116",
3
+ "reposkein-indexer-linux-arm64": "418a7b7f602e0b96afe98100cac509432f6ad9cbb0d1198873e8b1ac12ab10d4",
4
+ "reposkein-indexer-linux-x64": "c3d94375802a0fe57feb3e33a3b05e9a54658c6c9eb9200885d674440a4bf44e",
5
+ "reposkein-indexer-win32-x64.exe": "65d0eab6ddb63611cbce45398b0db052d36c9955dcecf7b829982324b37b5d6b"
6
6
  }
@@ -0,0 +1,40 @@
1
+ import { type IncomingMessage, type ServerResponse } from "node:http";
2
+ /** The prebuilt viz/ SPA bundle, copied into the mcp package at build time
3
+ * (scripts/bundle-viz.mjs copies viz/dist -> mcp/dist/viz). */
4
+ export declare function vizDistDir(): string;
5
+ export interface ViewOptions {
6
+ port: number;
7
+ host: string;
8
+ open: boolean;
9
+ }
10
+ /** Builds the request handler. Exposed for tests (no listening socket). */
11
+ export declare function makeViewHandler(repoPath: string, repoId: string): (req: IncomingMessage, res: ServerResponse) => void;
12
+ /** `reposkein-mcp view [repoPath] [--port N] [--host H] [--no-open]`.
13
+ * Serves the prebuilt viz bundle + the repo's committed JSONL on 127.0.0.1.
14
+ * Read-only; no external services. Returns the process exit code. */
15
+ export declare function runView(repoPath: string, repoId: string, opts: ViewOptions): Promise<number>;
16
+ /** Parses `view` CLI args (after the `view` subcommand). When `--export <dir>`
17
+ * is present, returns `exportDir` set (and the server opts are ignored). */
18
+ export declare function parseViewArgs(argv: string[]): {
19
+ repoPath: string;
20
+ opts: ViewOptions;
21
+ exportDir: string | null;
22
+ };
23
+ /** Builds the contents of `graph-data.js` for a static export: a single
24
+ * assignment of `window.__REPOSKEIN_GRAPH__` with the manifest + the inlined
25
+ * JSONL text. The viewer's static-mode path parses this on the main thread.
26
+ *
27
+ * Pure (string in → string out) so the baked shape is unit-testable. The
28
+ * payload is a JSON.stringify'd object assigned in an external .js file (NOT
29
+ * inline HTML), so `</script>` sequences in the JSONL need no escaping. */
30
+ export declare function buildGraphDataJs(repoId: string, nodesText: string, edgesText: string): string;
31
+ /** Injects `<script src="./graph-data.js"></script>` into `html` BEFORE the
32
+ * first app bundle `<script ... src=...>` (or before </head> / </body> as a
33
+ * fallback) so the global is set prior to the app booting. Pure. Idempotent:
34
+ * returns `html` unchanged if the inject is already present. */
35
+ export declare function injectGraphDataScript(html: string): string;
36
+ /** `reposkein-mcp view --export <outDir> [repoPath]`.
37
+ * Writes a SELF-CONTAINED static site to `<outDir>`: the viz bundle plus the
38
+ * repo's graph baked into `graph-data.js`, so it loads with NO server (works
39
+ * from file:// and from any static-host subpath). Returns the exit code. */
40
+ export declare function runExport(repoPath: string, repoId: string, outDir: string): Promise<number>;
@@ -0,0 +1,334 @@
1
+ import { createServer } from "node:http";
2
+ import { readFileSync, existsSync, statSync, createReadStream, mkdirSync, cpSync, writeFileSync, } from "node:fs";
3
+ import { join, resolve, normalize, extname } from "node:path";
4
+ import { gzipSync } from "node:zlib";
5
+ import { spawn } from "node:child_process";
6
+ import { packageRoot } from "../indexer/fetchBinary.js";
7
+ import { getTemporal } from "../temporal/temporal.js";
8
+ /** The prebuilt viz/ SPA bundle, copied into the mcp package at build time
9
+ * (scripts/bundle-viz.mjs copies viz/dist -> mcp/dist/viz). */
10
+ export function vizDistDir() {
11
+ return join(packageRoot(), "dist", "viz");
12
+ }
13
+ const MIME = {
14
+ ".html": "text/html; charset=utf-8",
15
+ ".js": "text/javascript; charset=utf-8",
16
+ ".mjs": "text/javascript; charset=utf-8",
17
+ ".css": "text/css; charset=utf-8",
18
+ ".json": "application/json; charset=utf-8",
19
+ ".map": "application/json; charset=utf-8",
20
+ ".svg": "image/svg+xml",
21
+ ".png": "image/png",
22
+ ".ico": "image/x-icon",
23
+ ".woff2": "font/woff2",
24
+ };
25
+ /** Resolves a request path safely under `root`, rejecting traversal. Returns
26
+ * the absolute path or null if it escapes `root`. */
27
+ function safeJoin(root, urlPath) {
28
+ const decoded = decodeURIComponent(urlPath);
29
+ const rel = normalize(decoded).replace(/^(\.\.[/\\])+/, "");
30
+ const abs = resolve(root, "." + (rel.startsWith("/") ? rel : "/" + rel));
31
+ const rootAbs = resolve(root);
32
+ if (abs === rootAbs || abs.startsWith(rootAbs + "/"))
33
+ return abs;
34
+ return null;
35
+ }
36
+ function buildManifest(repoId, repoRoot) {
37
+ return JSON.stringify({
38
+ root: {
39
+ repoId,
40
+ // Absolute-from-origin (leading slash): these are fetched inside a Web
41
+ // Worker whose base URL is the worker script's location (/assets/...),
42
+ // not the document root — relative paths would resolve to /assets/api/...
43
+ // and hit the SPA catch-all (HTML), breaking JSON parsing.
44
+ nodesUrl: "/api/jsonl/nodes.jsonl",
45
+ edgesUrl: "/api/jsonl/edges.jsonl",
46
+ // Absolute path of the served repo root, so the viewer can build a
47
+ // vscode://file/<abs>:<line> "open in editor" link. Read-only metadata;
48
+ // the loopback-only server already trusts its caller (design §8).
49
+ repoRoot,
50
+ },
51
+ federated: [], // M1: single repo. Federation deferred to M3.
52
+ counts: { nodes: 0, edges: 0 }, // counts are advisory; the client re-derives.
53
+ });
54
+ }
55
+ /** Max lines a single /api/source request may return (cap, design §P3). */
56
+ const SOURCE_MAX_LINES = 400;
57
+ function sendGzip(res, body, contentType) {
58
+ const gz = gzipSync(Buffer.from(body, "utf8"));
59
+ res.writeHead(200, {
60
+ "Content-Type": contentType,
61
+ "Content-Encoding": "gzip",
62
+ "Cache-Control": "no-store",
63
+ });
64
+ res.end(gz);
65
+ }
66
+ function send404(res) {
67
+ res.writeHead(404, { "Content-Type": "text/plain" });
68
+ res.end("not found");
69
+ }
70
+ /** Opens a URL in the default browser cross-platform. Best-effort. */
71
+ function openBrowser(url) {
72
+ const platform = process.platform;
73
+ const cmd = platform === "darwin" ? "open" : platform === "win32" ? "cmd" : "xdg-open";
74
+ const args = platform === "win32" ? ["/c", "start", "", url] : [url];
75
+ try {
76
+ const child = spawn(cmd, args, { stdio: "ignore", detached: true });
77
+ child.unref();
78
+ }
79
+ catch {
80
+ /* ignore — the URL is printed regardless */
81
+ }
82
+ }
83
+ /** Builds the request handler. Exposed for tests (no listening socket). */
84
+ export function makeViewHandler(repoPath, repoId) {
85
+ const reposkeinDir = join(repoPath, ".reposkein");
86
+ const nodesPath = join(reposkeinDir, "nodes.jsonl");
87
+ const edgesPath = join(reposkeinDir, "edges.jsonl");
88
+ const distDir = vizDistDir();
89
+ const repoRoot = resolve(repoPath);
90
+ return function handler(req, res) {
91
+ const rawUrl = req.url ?? "/";
92
+ const qIdx = rawUrl.indexOf("?");
93
+ const url = (qIdx === -1 ? rawUrl : rawUrl.slice(0, qIdx)) || "/";
94
+ // --- API routes ---
95
+ if (url === "/api/graph") {
96
+ sendGzip(res, buildManifest(repoId, repoRoot), "application/json; charset=utf-8");
97
+ return;
98
+ }
99
+ // Read-only source slice (design §P3). Path-guarded by safeJoin (rejects
100
+ // traversal → 404); range clamped + capped at SOURCE_MAX_LINES. Returns
101
+ // JSON { path, start, end, lines: string[] }. NEVER 5xx: a missing file,
102
+ // bad params, or a directory all yield 404 so the panel degrades to "no
103
+ // source" instead of breaking.
104
+ if (url === "/api/source") {
105
+ try {
106
+ const params = new URLSearchParams(qIdx === -1 ? "" : rawUrl.slice(qIdx + 1));
107
+ const relPath = params.get("path");
108
+ if (!relPath)
109
+ return send404(res);
110
+ const abs = safeJoin(repoRoot, relPath); // traversal → null → 404
111
+ if (!abs || !existsSync(abs) || !statSync(abs).isFile())
112
+ return send404(res);
113
+ const total = readFileSync(abs, "utf8").split("\n");
114
+ // A trailing newline yields a phantom empty final element; drop it so
115
+ // line counts match the file's actual line count.
116
+ if (total.length > 0 && total[total.length - 1] === "")
117
+ total.pop();
118
+ // Lines are 1-based in the graph records; clamp to the file bounds.
119
+ const startReq = parseInt(params.get("start") ?? "1", 10);
120
+ const endReq = parseInt(params.get("end") ?? "0", 10);
121
+ const start = Math.max(1, Number.isFinite(startReq) ? startReq : 1);
122
+ let end = Number.isFinite(endReq) && endReq >= start ? endReq : start;
123
+ end = Math.min(end, total.length, start + SOURCE_MAX_LINES - 1);
124
+ const lines = total.slice(start - 1, end);
125
+ sendGzip(res, JSON.stringify({ path: relPath, start, end, lines }), "application/json; charset=utf-8");
126
+ }
127
+ catch {
128
+ // Defensive: any unexpected read error degrades to 404 (never 5xx).
129
+ send404(res);
130
+ }
131
+ return;
132
+ }
133
+ if (url === "/api/jsonl/nodes.jsonl" || url === "/api/jsonl/edges.jsonl") {
134
+ const file = url.endsWith("nodes.jsonl") ? nodesPath : edgesPath;
135
+ if (!existsSync(file))
136
+ return send404(res);
137
+ try {
138
+ sendGzip(res, readFileSync(file, "utf8"), "application/x-ndjson; charset=utf-8");
139
+ }
140
+ catch {
141
+ send404(res);
142
+ }
143
+ return;
144
+ }
145
+ // Temporal-coupling overlay (best-effort). Returns the git-derived
146
+ // file co-change map, or {} when git/temporal is unavailable. NEVER 5xx —
147
+ // the overlay is additive and must never break the structural render.
148
+ if (url === "/api/temporal") {
149
+ getTemporal(repoPath)
150
+ .then((result) => {
151
+ // getTemporal never throws; on unavailable we still answer 200 {}.
152
+ const cochange = "cochange" in result ? result.cochange : {};
153
+ sendGzip(res, JSON.stringify(cochange), "application/json; charset=utf-8");
154
+ })
155
+ .catch(() => {
156
+ // Defensive: should be unreachable (getTemporal is fail-safe).
157
+ sendGzip(res, "{}", "application/json; charset=utf-8");
158
+ });
159
+ return;
160
+ }
161
+ // --- Static SPA bundle ---
162
+ let rel = url === "/" ? "/index.html" : url;
163
+ let abs = safeJoin(distDir, rel);
164
+ // SPA fallback: unknown non-asset paths serve index.html.
165
+ if (!abs || !existsSync(abs) || statSync(abs).isDirectory()) {
166
+ rel = "/index.html";
167
+ abs = safeJoin(distDir, rel);
168
+ }
169
+ if (!abs || !existsSync(abs))
170
+ return send404(res);
171
+ const type = MIME[extname(abs)] ?? "application/octet-stream";
172
+ res.writeHead(200, { "Content-Type": type });
173
+ createReadStream(abs).pipe(res);
174
+ };
175
+ }
176
+ /** `reposkein-mcp view [repoPath] [--port N] [--host H] [--no-open]`.
177
+ * Serves the prebuilt viz bundle + the repo's committed JSONL on 127.0.0.1.
178
+ * Read-only; no external services. Returns the process exit code. */
179
+ export async function runView(repoPath, repoId, opts) {
180
+ const nodesPath = join(repoPath, ".reposkein", "nodes.jsonl");
181
+ if (!existsSync(nodesPath)) {
182
+ console.error(`reposkein: no .reposkein/nodes.jsonl at ${repoPath}.\n` +
183
+ " Build the graph first: `reposkein-mcp index` (or `reposkein-mcp init`).");
184
+ return 1;
185
+ }
186
+ const distDir = vizDistDir();
187
+ if (!existsSync(join(distDir, "index.html"))) {
188
+ console.error(`reposkein: the viewer bundle is missing (${distDir}).\n` +
189
+ " Rebuild the package: `npm run build` in mcp/ (which copies viz/dist).");
190
+ return 1;
191
+ }
192
+ const handler = makeViewHandler(repoPath, repoId);
193
+ const server = createServer(handler);
194
+ return await new Promise((resolvePromise) => {
195
+ server.on("error", (err) => {
196
+ console.error(`reposkein: view server error: ${err.message}`);
197
+ resolvePromise(1);
198
+ });
199
+ // Bind 127.0.0.1 only (loopback; no auth needed — design §8).
200
+ server.listen(opts.port, opts.host, () => {
201
+ const addr = server.address();
202
+ const port = typeof addr === "object" && addr ? addr.port : opts.port;
203
+ const link = `http://${opts.host}:${port}/`;
204
+ console.error(`reposkein: viewer serving ${repoId} at ${link} (Ctrl-C to stop)`);
205
+ if (opts.open)
206
+ openBrowser(link);
207
+ // Resolve is deferred until the process is killed; keep the server alive.
208
+ });
209
+ const shutdown = () => {
210
+ server.close(() => resolvePromise(0));
211
+ };
212
+ process.on("SIGINT", shutdown);
213
+ process.on("SIGTERM", shutdown);
214
+ });
215
+ }
216
+ /** Parses `view` CLI args (after the `view` subcommand). When `--export <dir>`
217
+ * is present, returns `exportDir` set (and the server opts are ignored). */
218
+ export function parseViewArgs(argv) {
219
+ let port = 4317;
220
+ let host = "127.0.0.1";
221
+ let open = true;
222
+ let exportDir = null;
223
+ const positional = [];
224
+ for (let i = 0; i < argv.length; i++) {
225
+ const a = argv[i];
226
+ if (a === "--no-open")
227
+ open = false;
228
+ else if (a === "--port")
229
+ port = parseInt(argv[++i] ?? "4317", 10) || 4317;
230
+ else if (a.startsWith("--port="))
231
+ port = parseInt(a.slice(7), 10) || 4317;
232
+ else if (a === "--host")
233
+ host = argv[++i] ?? "127.0.0.1";
234
+ else if (a.startsWith("--host="))
235
+ host = a.slice(7);
236
+ else if (a === "--export")
237
+ exportDir = argv[++i] ?? null;
238
+ else if (a.startsWith("--export="))
239
+ exportDir = a.slice(9);
240
+ else if (!a.startsWith("-"))
241
+ positional.push(a);
242
+ }
243
+ const repoPath = positional[0] ?? process.env.REPOSKEIN_REPO_PATH ?? ".";
244
+ return { repoPath, opts: { port, host, open }, exportDir };
245
+ }
246
+ /** Builds the contents of `graph-data.js` for a static export: a single
247
+ * assignment of `window.__REPOSKEIN_GRAPH__` with the manifest + the inlined
248
+ * JSONL text. The viewer's static-mode path parses this on the main thread.
249
+ *
250
+ * Pure (string in → string out) so the baked shape is unit-testable. The
251
+ * payload is a JSON.stringify'd object assigned in an external .js file (NOT
252
+ * inline HTML), so `</script>` sequences in the JSONL need no escaping. */
253
+ export function buildGraphDataJs(repoId, nodesText, edgesText) {
254
+ // Static export bakes a single repo (no federation) and intentionally OMITS
255
+ // repoRoot — the export is shared/hosted, so a local absolute path is both
256
+ // meaningless and a leak; server-only features degrade in the viewer.
257
+ const payload = {
258
+ manifest: {
259
+ root: {
260
+ repoId,
261
+ // These URLs are unused in static mode (the worker is skipped); kept
262
+ // for shape parity with the live manifest.
263
+ nodesUrl: "/api/jsonl/nodes.jsonl",
264
+ edgesUrl: "/api/jsonl/edges.jsonl",
265
+ },
266
+ federated: [],
267
+ counts: { nodes: 0, edges: 0 },
268
+ },
269
+ nodesText,
270
+ edgesText,
271
+ };
272
+ return `window.__REPOSKEIN_GRAPH__ = ${JSON.stringify(payload)};\n`;
273
+ }
274
+ /** Injects `<script src="./graph-data.js"></script>` into `html` BEFORE the
275
+ * first app bundle `<script ... src=...>` (or before </head> / </body> as a
276
+ * fallback) so the global is set prior to the app booting. Pure. Idempotent:
277
+ * returns `html` unchanged if the inject is already present. */
278
+ export function injectGraphDataScript(html) {
279
+ const tag = `<script src="./graph-data.js"></script>`;
280
+ if (html.includes("graph-data.js"))
281
+ return html;
282
+ // Vite emits a module script for the app bundle; inject before the first one.
283
+ const m = html.match(/<script\b[^>]*\bsrc=/i);
284
+ if (m && m.index !== undefined) {
285
+ return html.slice(0, m.index) + tag + "\n " + html.slice(m.index);
286
+ }
287
+ if (/<\/head>/i.test(html))
288
+ return html.replace(/<\/head>/i, ` ${tag}\n </head>`);
289
+ if (/<\/body>/i.test(html))
290
+ return html.replace(/<\/body>/i, ` ${tag}\n </body>`);
291
+ return html + tag;
292
+ }
293
+ /** `reposkein-mcp view --export <outDir> [repoPath]`.
294
+ * Writes a SELF-CONTAINED static site to `<outDir>`: the viz bundle plus the
295
+ * repo's graph baked into `graph-data.js`, so it loads with NO server (works
296
+ * from file:// and from any static-host subpath). Returns the exit code. */
297
+ export async function runExport(repoPath, repoId, outDir) {
298
+ const reposkeinDir = join(repoPath, ".reposkein");
299
+ const nodesPath = join(reposkeinDir, "nodes.jsonl");
300
+ const edgesPath = join(reposkeinDir, "edges.jsonl");
301
+ if (!existsSync(nodesPath)) {
302
+ console.error(`reposkein: no .reposkein/nodes.jsonl at ${repoPath}.\n` +
303
+ " Build the graph first: `reposkein-mcp index` (or `reposkein-mcp init`).");
304
+ return 1;
305
+ }
306
+ const distDir = vizDistDir();
307
+ if (!existsSync(join(distDir, "index.html"))) {
308
+ console.error(`reposkein: the viewer bundle is missing (${distDir}).\n` +
309
+ " Rebuild the package: `npm run build` in mcp/ (which copies viz/dist).");
310
+ return 1;
311
+ }
312
+ const absOut = resolve(outDir);
313
+ try {
314
+ // 1) Copy the prebuilt viz bundle into the output directory.
315
+ mkdirSync(absOut, { recursive: true });
316
+ cpSync(distDir, absOut, { recursive: true });
317
+ // 2) Bake the repo graph into graph-data.js.
318
+ const nodesText = readFileSync(nodesPath, "utf8");
319
+ const edgesText = existsSync(edgesPath) ? readFileSync(edgesPath, "utf8") : "";
320
+ writeFileSync(join(absOut, "graph-data.js"), buildGraphDataJs(repoId, nodesText, edgesText), "utf8");
321
+ // 3) Inject the graph-data.js script into index.html before the app bundle.
322
+ const indexPath = join(absOut, "index.html");
323
+ const html = readFileSync(indexPath, "utf8");
324
+ writeFileSync(indexPath, injectGraphDataScript(html), "utf8");
325
+ }
326
+ catch (err) {
327
+ console.error(`reposkein: export failed: ${err instanceof Error ? err.message : String(err)}`);
328
+ return 1;
329
+ }
330
+ console.error(`reposkein: exported static constellation for ${repoId} -> ${absOut}`);
331
+ console.error(` open ${join(absOut, "index.html")} or host this folder.`);
332
+ return 0;
333
+ }
334
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/cli/view.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { pathToFileURL } from "node:url";
2
2
  import { runInit, runIndex } from "./cli/init.js";
3
3
  import { runDoctor } from "./cli/doctor.js";
4
+ import { runView, runExport, parseViewArgs } from "./cli/view.js";
4
5
  import { existsSync } from "node:fs";
5
6
  import { join } from "node:path";
6
7
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -197,6 +198,16 @@ if (import.meta.url === pathToFileURL(process.argv[1]).href) {
197
198
  .then((code) => process.exit(code))
198
199
  .catch((err) => { console.error(err); process.exit(1); });
199
200
  }
201
+ else if (sub === "view") {
202
+ const { repoPath, opts, exportDir } = parseViewArgs(process.argv.slice(3));
203
+ const vRepoId = resolveRepoId(repoPath, process.env.REPOSKEIN_REPO_ID) ?? "repo";
204
+ const run = exportDir
205
+ ? runExport(repoPath, vRepoId, exportDir)
206
+ : runView(repoPath, vRepoId, opts);
207
+ run
208
+ .then((code) => process.exit(code))
209
+ .catch((err) => { console.error(err); process.exit(1); });
210
+ }
200
211
  else {
201
212
  main().catch((err) => { console.error(err); process.exit(1); });
202
213
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ function qt(t){let n;try{n=JSON.parse(t)}catch{return null}const e=n.id,i=n.labels;if(typeof e!="string"||!Array.isArray(i))return null;const r={...n};return delete r.id,delete r.labels,{id:e,labels:i.filter(o=>typeof o=="string"),props:r}}function Tt(t){let n;try{n=JSON.parse(t)}catch{return null}const e=n.from,i=n.type,r=n.to;if(typeof e!="string"||typeof i!="string"||typeof r!="string")return null;const o={...n};return delete o.from,delete o.type,delete o.to,{from:e,type:i,to:r,props:o}}function Ot(t){const n=[];for(const e of t.split(`
2
+ `)){if(e.trim()==="")continue;const i=qt(e);i&&n.push(i)}return n}function Pt(t){const n=[];for(const e of t.split(`
3
+ `)){if(e.trim()==="")continue;const i=Tt(e);i&&n.push(i)}return n}function at(t,n){return{nodes:Ot(t),edges:Pt(n)}}const Dt=new Set(["CALLS","IMPORTS","INSTANTIATES","IMPLEMENTS","INHERITS"]);function Ft(t){const n=t.resolution;if(n==="exact"||n==="name_match"||n==="ambiguous")return n;const e=typeof t.confidence=="number"?t.confidence:1;return e>=.95?"exact":e>=.5?"name_match":"ambiguous"}function I(t){return typeof t=="string"?t:null}function tt(t,n=0){return typeof t=="number"?t:n}const Lt=new Set(["Function","Class","Interface","Enum","Variable"]);function L(t){return t.labels[0]??""}function Q(t){const n=t.lastIndexOf("/");if(n<0)return".";const e=t.slice(0,n);return e===""?".":e}function W(t){if(t==="."||t==="")return".";const n=t.lastIndexOf("/");return n<0?t:t.slice(n+1)}function jt(t){for(const n of t.nodes)if(L(n)==="Repository"){const e=I(n.props.name);if(e)return e}for(const n of t.nodes){const e=n.id.split(":");if(e.length>=2&&e[0]==="rs1"&&e[1])return e[1]}return"repo"}function Rt(t){const n=jt(t),e=`galaxy:${n}`,i=new Map,r=c=>{const _=i.get(c.key);return _||(i.set(c.key,c),c)};r({key:e,kind:"galaxy",name:n,parent:null,children:[],nodeId:null});const o=c=>`dir:${n}:${c}`,s=c=>`file:${n}:${c}`,a=c=>{const _=o(c),x=i.get(_);if(x)return x;const g=c===".",h=g?null:Q(c),m=g?e:a(h).key;return r({key:_,kind:"dir",name:g?n:W(c),parent:m,children:[],nodeId:null})};for(const c of t.nodes){if(L(c)!=="Directory")continue;const _=I(c.props.path)??".",x=a(_);x.nodeId=c.id}const f=new Map;for(const c of t.nodes){if(L(c)!=="File")continue;const _=I(c.props.path)??I(c.props.file_path);if(_===null)continue;const x=a(Q(_)),g=s(_);r({key:g,kind:"file",name:W(_),parent:x.key,children:[],nodeId:c.id}),f.set(_,g)}const u=new Map;for(const c of t.nodes)Lt.has(L(c))&&u.set(c.id,c);const p=new Map;for(const c of t.nodes)if(L(c)==="File"){const _=I(c.props.path)??I(c.props.file_path);_!==null&&p.set(c.id,s(_))}const l=new Set,y=(c,_)=>{l.has(c.id)||(l.add(c.id),r({key:c.id,kind:"symbol",name:I(c.props.name)??I(c.props.qualified_name)??c.id,parent:_,children:[],nodeId:c.id,symbolKind:L(c)}))};for(const c of t.edges){if(c.type!=="DEFINES")continue;const _=u.get(c.to);if(!_)continue;const x=p.get(c.from);x&&i.has(x)&&y(_,x)}for(const c of u.values()){if(l.has(c.id))continue;const _=I(c.props.file_path);if(_===null)continue;let x=f.get(_);if(!x){const g=a(Q(_));x=s(_),r({key:x,kind:"file",name:W(_),parent:g.key,children:[],nodeId:null}),f.set(_,x)}y(c,x)}for(const c of i.values())if(c.parent){const _=i.get(c.parent);_&&_.children.push(c.key)}for(const c of i.values())c.children.sort();return{rootKey:e,byKey:i,repoId:n}}function Bt(t){const n=[],e=i=>{const r=t.byKey.get(i);if(r){n.push(r);for(const o of r.children)e(o)}};return e(t.rootKey),n}function Kt(t,n,e){var i,r=1;t==null&&(t=0),n==null&&(n=0),e==null&&(e=0);function o(){var s,a=i.length,f,u=0,p=0,l=0;for(s=0;s<a;++s)f=i[s],u+=f.x||0,p+=f.y||0,l+=f.z||0;for(u=(u/a-t)*r,p=(p/a-n)*r,l=(l/a-e)*r,s=0;s<a;++s)f=i[s],u&&(f.x-=u),p&&(f.y-=p),l&&(f.z-=l)}return o.initialize=function(s){i=s},o.x=function(s){return arguments.length?(t=+s,o):t},o.y=function(s){return arguments.length?(n=+s,o):n},o.z=function(s){return arguments.length?(e=+s,o):e},o.strength=function(s){return arguments.length?(r=+s,o):r},o}function Ct(t){const n=+this._x.call(null,t);return dt(this.cover(n),n,t)}function dt(t,n,e){if(isNaN(n))return t;var i,r=t._root,o={data:e},s=t._x0,a=t._x1,f,u,p,l,y;if(!r)return t._root=o,t;for(;r.length;)if((p=n>=(f=(s+a)/2))?s=f:a=f,i=r,!(r=r[l=+p]))return i[l]=o,t;if(u=+t._x.call(null,r.data),n===u)return o.next=r,i?i[l]=o:t._root=o,t;do i=i?i[l]=new Array(2):t._root=new Array(2),(p=n>=(f=(s+a)/2))?s=f:a=f;while((l=+p)==(y=+(u>=f)));return i[y]=r,i[l]=o,t}function Yt(t){Array.isArray(t)||(t=Array.from(t));const n=t.length,e=new Float64Array(n);let i=1/0,r=-1/0;for(let o=0,s;o<n;++o)isNaN(s=+this._x.call(null,t[o]))||(e[o]=s,s<i&&(i=s),s>r&&(r=s));if(i>r)return this;this.cover(i).cover(r);for(let o=0;o<n;++o)dt(this,e[o],t[o]);return this}function Ht(t){if(isNaN(t=+t))return this;var n=this._x0,e=this._x1;if(isNaN(n))e=(n=Math.floor(t))+1;else{for(var i=e-n||1,r=this._root,o,s;n>t||t>=e;)switch(s=+(t<n),o=new Array(2),o[s]=r,r=o,i*=2,s){case 0:e=n+i;break;case 1:n=e-i;break}this._root&&this._root.length&&(this._root=r)}return this._x0=n,this._x1=e,this}function Ut(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function Gt(t){return arguments.length?this.cover(+t[0][0]).cover(+t[1][0]):isNaN(this._x0)?void 0:[[this._x0],[this._x1]]}function D(t,n,e){this.node=t,this.x0=n,this.x1=e}function Xt(t,n){var e,i=this._x0,r,o,s=this._x1,a=[],f=this._root,u,p;for(f&&a.push(new D(f,i,s)),n==null?n=1/0:(i=t-n,s=t+n);u=a.pop();)if(!(!(f=u.node)||(r=u.x0)>s||(o=u.x1)<i))if(f.length){var l=(r+o)/2;a.push(new D(f[1],l,o),new D(f[0],r,l)),(p=+(t>=l))&&(u=a[a.length-1],a[a.length-1]=a[a.length-1-p],a[a.length-1-p]=u)}else{var y=Math.abs(t-+this._x.call(null,f.data));y<n&&(n=y,i=t-y,s=t+y,e=f.data)}return e}function Vt(t){if(isNaN(f=+this._x.call(null,t)))return this;var n,e=this._root,i,r,o,s=this._x0,a=this._x1,f,u,p,l,y;if(!e)return this;if(e.length)for(;;){if((p=f>=(u=(s+a)/2))?s=u:a=u,n=e,!(e=e[l=+p]))return this;if(!e.length)break;n[l+1&1]&&(i=n,y=l)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):n?(o?n[l]=o:delete n[l],(e=n[0]||n[1])&&e===(n[1]||n[0])&&!e.length&&(i?i[y]=e:this._root=e),this):(this._root=o,this)}function Jt(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function Qt(){return this._root}function Wt(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function Zt(t){var n=[],e,i=this._root,r,o,s;for(i&&n.push(new D(i,this._x0,this._x1));e=n.pop();)if(!t(i=e.node,o=e.x0,s=e.x1)&&i.length){var a=(o+s)/2;(r=i[1])&&n.push(new D(r,a,s)),(r=i[0])&&n.push(new D(r,o,a))}return this}function tn(t){var n=[],e=[],i;for(this._root&&n.push(new D(this._root,this._x0,this._x1));i=n.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.x1,f=(s+a)/2;(o=r[0])&&n.push(new D(o,s,f)),(o=r[1])&&n.push(new D(o,f,a))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.x1);return this}function nn(t){return t[0]}function en(t){return arguments.length?(this._x=t,this):this._x}function xt(t,n){var e=new it(n??nn,NaN,NaN);return t==null?e:e.addAll(t)}function it(t,n,e){this._x=t,this._x0=n,this._x1=e,this._root=void 0}function ft(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var q=xt.prototype=it.prototype;q.copy=function(){var t=new it(this._x,this._x0,this._x1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=ft(n),t;for(e=[{source:n,target:t._root=new Array(2)}];n=e.pop();)for(var r=0;r<2;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(2)}):n.target[r]=ft(i));return t};q.add=Ct;q.addAll=Yt;q.cover=Ht;q.data=Ut;q.extent=Gt;q.find=Xt;q.remove=Vt;q.removeAll=Jt;q.root=Qt;q.size=Wt;q.visit=Zt;q.visitAfter=tn;q.x=en;function rn(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return vt(this.cover(n,e),n,e,t)}function vt(t,n,e,i){if(isNaN(n)||isNaN(e))return t;var r,o=t._root,s={data:i},a=t._x0,f=t._y0,u=t._x1,p=t._y1,l,y,c,_,x,g,h,m;if(!o)return t._root=s,t;for(;o.length;)if((x=n>=(l=(a+u)/2))?a=l:u=l,(g=e>=(y=(f+p)/2))?f=y:p=y,r=o,!(o=o[h=g<<1|x]))return r[h]=s,t;if(c=+t._x.call(null,o.data),_=+t._y.call(null,o.data),n===c&&e===_)return s.next=o,r?r[h]=s:t._root=s,t;do r=r?r[h]=new Array(4):t._root=new Array(4),(x=n>=(l=(a+u)/2))?a=l:u=l,(g=e>=(y=(f+p)/2))?f=y:p=y;while((h=g<<1|x)===(m=(_>=y)<<1|c>=l));return r[m]=o,r[h]=s,t}function on(t){var n,e,i=t.length,r,o,s=new Array(i),a=new Array(i),f=1/0,u=1/0,p=-1/0,l=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(o=+this._y.call(null,n))||(s[e]=r,a[e]=o,r<f&&(f=r),r>p&&(p=r),o<u&&(u=o),o>l&&(l=o));if(f>p||u>l)return this;for(this.cover(f,u).cover(p,l),e=0;e<i;++e)vt(this,s[e],a[e],t[e]);return this}function sn(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,i=this._y0,r=this._x1,o=this._y1;if(isNaN(e))r=(e=Math.floor(t))+1,o=(i=Math.floor(n))+1;else{for(var s=r-e||1,a=this._root,f,u;e>t||t>=r||i>n||n>=o;)switch(u=(n<i)<<1|t<e,f=new Array(4),f[u]=a,a=f,s*=2,u){case 0:r=e+s,o=i+s;break;case 1:e=r-s,o=i+s;break;case 2:r=e+s,i=o-s;break;case 3:e=r-s,i=o-s;break}this._root&&this._root.length&&(this._root=a)}return this._x0=e,this._y0=i,this._x1=r,this._y1=o,this}function an(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function fn(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function $(t,n,e,i,r){this.node=t,this.x0=n,this.y0=e,this.x1=i,this.y1=r}function un(t,n,e){var i,r=this._x0,o=this._y0,s,a,f,u,p=this._x1,l=this._y1,y=[],c=this._root,_,x;for(c&&y.push(new $(c,r,o,p,l)),e==null?e=1/0:(r=t-e,o=n-e,p=t+e,l=n+e,e*=e);_=y.pop();)if(!(!(c=_.node)||(s=_.x0)>p||(a=_.y0)>l||(f=_.x1)<r||(u=_.y1)<o))if(c.length){var g=(s+f)/2,h=(a+u)/2;y.push(new $(c[3],g,h,f,u),new $(c[2],s,h,g,u),new $(c[1],g,a,f,h),new $(c[0],s,a,g,h)),(x=(n>=h)<<1|t>=g)&&(_=y[y.length-1],y[y.length-1]=y[y.length-1-x],y[y.length-1-x]=_)}else{var m=t-+this._x.call(null,c.data),v=n-+this._y.call(null,c.data),w=m*m+v*v;if(w<e){var d=Math.sqrt(e=w);r=t-d,o=n-d,p=t+d,l=n+d,i=c.data}}return i}function ln(t){if(isNaN(p=+this._x.call(null,t))||isNaN(l=+this._y.call(null,t)))return this;var n,e=this._root,i,r,o,s=this._x0,a=this._y0,f=this._x1,u=this._y1,p,l,y,c,_,x,g,h;if(!e)return this;if(e.length)for(;;){if((_=p>=(y=(s+f)/2))?s=y:f=y,(x=l>=(c=(a+u)/2))?a=c:u=c,n=e,!(e=e[g=x<<1|_]))return this;if(!e.length)break;(n[g+1&3]||n[g+2&3]||n[g+3&3])&&(i=n,h=g)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):n?(o?n[g]=o:delete n[g],(e=n[0]||n[1]||n[2]||n[3])&&e===(n[3]||n[2]||n[1]||n[0])&&!e.length&&(i?i[h]=e:this._root=e),this):(this._root=o,this)}function hn(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function cn(){return this._root}function pn(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function _n(t){var n=[],e,i=this._root,r,o,s,a,f;for(i&&n.push(new $(i,this._x0,this._y0,this._x1,this._y1));e=n.pop();)if(!t(i=e.node,o=e.x0,s=e.y0,a=e.x1,f=e.y1)&&i.length){var u=(o+a)/2,p=(s+f)/2;(r=i[3])&&n.push(new $(r,u,p,a,f)),(r=i[2])&&n.push(new $(r,o,p,u,f)),(r=i[1])&&n.push(new $(r,u,s,a,p)),(r=i[0])&&n.push(new $(r,o,s,u,p))}return this}function yn(t){var n=[],e=[],i;for(this._root&&n.push(new $(this._root,this._x0,this._y0,this._x1,this._y1));i=n.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.y0,f=i.x1,u=i.y1,p=(s+f)/2,l=(a+u)/2;(o=r[0])&&n.push(new $(o,s,a,p,l)),(o=r[1])&&n.push(new $(o,p,a,f,l)),(o=r[2])&&n.push(new $(o,s,l,p,u)),(o=r[3])&&n.push(new $(o,p,l,f,u))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.y0,i.x1,i.y1);return this}function gn(t){return t[0]}function dn(t){return arguments.length?(this._x=t,this):this._x}function xn(t){return t[1]}function vn(t){return arguments.length?(this._y=t,this):this._y}function wt(t,n,e){var i=new rt(n??gn,e??xn,NaN,NaN,NaN,NaN);return t==null?i:i.addAll(t)}function rt(t,n,e,i,r,o){this._x=t,this._y=n,this._x0=e,this._y0=i,this._x1=r,this._y1=o,this._root=void 0}function ut(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var E=wt.prototype=rt.prototype;E.copy=function(){var t=new rt(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=ut(n),t;for(e=[{source:n,target:t._root=new Array(4)}];n=e.pop();)for(var r=0;r<4;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(4)}):n.target[r]=ut(i));return t};E.add=rn;E.addAll=on;E.cover=sn;E.data=an;E.extent=fn;E.find=un;E.remove=ln;E.removeAll=hn;E.root=cn;E.size=pn;E.visit=_n;E.visitAfter=yn;E.x=dn;E.y=vn;function wn(t){const n=+this._x.call(null,t),e=+this._y.call(null,t),i=+this._z.call(null,t);return mt(this.cover(n,e,i),n,e,i,t)}function mt(t,n,e,i,r){if(isNaN(n)||isNaN(e)||isNaN(i))return t;var o,s=t._root,a={data:r},f=t._x0,u=t._y0,p=t._z0,l=t._x1,y=t._y1,c=t._z1,_,x,g,h,m,v,w,d,N,M,A;if(!s)return t._root=a,t;for(;s.length;)if((w=n>=(_=(f+l)/2))?f=_:l=_,(d=e>=(x=(u+y)/2))?u=x:y=x,(N=i>=(g=(p+c)/2))?p=g:c=g,o=s,!(s=s[M=N<<2|d<<1|w]))return o[M]=a,t;if(h=+t._x.call(null,s.data),m=+t._y.call(null,s.data),v=+t._z.call(null,s.data),n===h&&e===m&&i===v)return a.next=s,o?o[M]=a:t._root=a,t;do o=o?o[M]=new Array(8):t._root=new Array(8),(w=n>=(_=(f+l)/2))?f=_:l=_,(d=e>=(x=(u+y)/2))?u=x:y=x,(N=i>=(g=(p+c)/2))?p=g:c=g;while((M=N<<2|d<<1|w)===(A=(v>=g)<<2|(m>=x)<<1|h>=_));return o[A]=s,o[M]=a,t}function mn(t){Array.isArray(t)||(t=Array.from(t));const n=t.length,e=new Float64Array(n),i=new Float64Array(n),r=new Float64Array(n);let o=1/0,s=1/0,a=1/0,f=-1/0,u=-1/0,p=-1/0;for(let l=0,y,c,_,x;l<n;++l)isNaN(c=+this._x.call(null,y=t[l]))||isNaN(_=+this._y.call(null,y))||isNaN(x=+this._z.call(null,y))||(e[l]=c,i[l]=_,r[l]=x,c<o&&(o=c),c>f&&(f=c),_<s&&(s=_),_>u&&(u=_),x<a&&(a=x),x>p&&(p=x));if(o>f||s>u||a>p)return this;this.cover(o,s,a).cover(f,u,p);for(let l=0;l<n;++l)mt(this,e[l],i[l],r[l],t[l]);return this}function Nn(t,n,e){if(isNaN(t=+t)||isNaN(n=+n)||isNaN(e=+e))return this;var i=this._x0,r=this._y0,o=this._z0,s=this._x1,a=this._y1,f=this._z1;if(isNaN(i))s=(i=Math.floor(t))+1,a=(r=Math.floor(n))+1,f=(o=Math.floor(e))+1;else{for(var u=s-i||1,p=this._root,l,y;i>t||t>=s||r>n||n>=a||o>e||e>=f;)switch(y=(e<o)<<2|(n<r)<<1|t<i,l=new Array(8),l[y]=p,p=l,u*=2,y){case 0:s=i+u,a=r+u,f=o+u;break;case 1:i=s-u,a=r+u,f=o+u;break;case 2:s=i+u,r=a-u,f=o+u;break;case 3:i=s-u,r=a-u,f=o+u;break;case 4:s=i+u,a=r+u,o=f-u;break;case 5:i=s-u,a=r+u,o=f-u;break;case 6:s=i+u,r=a-u,o=f-u;break;case 7:i=s-u,r=a-u,o=f-u;break}this._root&&this._root.length&&(this._root=p)}return this._x0=i,this._y0=r,this._z0=o,this._x1=s,this._y1=a,this._z1=f,this}function Mn(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function An(t){return arguments.length?this.cover(+t[0][0],+t[0][1],+t[0][2]).cover(+t[1][0],+t[1][1],+t[1][2]):isNaN(this._x0)?void 0:[[this._x0,this._y0,this._z0],[this._x1,this._y1,this._z1]]}function b(t,n,e,i,r,o,s){this.node=t,this.x0=n,this.y0=e,this.z0=i,this.x1=r,this.y1=o,this.z1=s}function bn(t,n,e,i){var r,o=this._x0,s=this._y0,a=this._z0,f,u,p,l,y,c,_=this._x1,x=this._y1,g=this._z1,h=[],m=this._root,v,w;for(m&&h.push(new b(m,o,s,a,_,x,g)),i==null?i=1/0:(o=t-i,s=n-i,a=e-i,_=t+i,x=n+i,g=e+i,i*=i);v=h.pop();)if(!(!(m=v.node)||(f=v.x0)>_||(u=v.y0)>x||(p=v.z0)>g||(l=v.x1)<o||(y=v.y1)<s||(c=v.z1)<a))if(m.length){var d=(f+l)/2,N=(u+y)/2,M=(p+c)/2;h.push(new b(m[7],d,N,M,l,y,c),new b(m[6],f,N,M,d,y,c),new b(m[5],d,u,M,l,N,c),new b(m[4],f,u,M,d,N,c),new b(m[3],d,N,p,l,y,M),new b(m[2],f,N,p,d,y,M),new b(m[1],d,u,p,l,N,M),new b(m[0],f,u,p,d,N,M)),(w=(e>=M)<<2|(n>=N)<<1|t>=d)&&(v=h[h.length-1],h[h.length-1]=h[h.length-1-w],h[h.length-1-w]=v)}else{var A=t-+this._x.call(null,m.data),T=n-+this._y.call(null,m.data),O=e-+this._z.call(null,m.data),S=A*A+T*T+O*O;if(S<i){var z=Math.sqrt(i=S);o=t-z,s=n-z,a=e-z,_=t+z,x=n+z,g=e+z,r=m.data}}return r}const zn=(t,n,e,i,r,o)=>Math.sqrt((t-i)**2+(n-r)**2+(e-o)**2);function In(t,n,e,i){const r=[],o=t-i,s=n-i,a=e-i,f=t+i,u=n+i,p=e+i;return this.visit((l,y,c,_,x,g,h)=>{if(!l.length)do{const m=l.data;zn(t,n,e,this._x(m),this._y(m),this._z(m))<=i&&r.push(m)}while(l=l.next);return y>f||c>u||_>p||x<o||g<s||h<a}),r}function kn(t){if(isNaN(y=+this._x.call(null,t))||isNaN(c=+this._y.call(null,t))||isNaN(_=+this._z.call(null,t)))return this;var n,e=this._root,i,r,o,s=this._x0,a=this._y0,f=this._z0,u=this._x1,p=this._y1,l=this._z1,y,c,_,x,g,h,m,v,w,d,N;if(!e)return this;if(e.length)for(;;){if((m=y>=(x=(s+u)/2))?s=x:u=x,(v=c>=(g=(a+p)/2))?a=g:p=g,(w=_>=(h=(f+l)/2))?f=h:l=h,n=e,!(e=e[d=w<<2|v<<1|m]))return this;if(!e.length)break;(n[d+1&7]||n[d+2&7]||n[d+3&7]||n[d+4&7]||n[d+5&7]||n[d+6&7]||n[d+7&7])&&(i=n,N=d)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):n?(o?n[d]=o:delete n[d],(e=n[0]||n[1]||n[2]||n[3]||n[4]||n[5]||n[6]||n[7])&&e===(n[7]||n[6]||n[5]||n[4]||n[3]||n[2]||n[1]||n[0])&&!e.length&&(i?i[N]=e:this._root=e),this):(this._root=o,this)}function $n(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function En(){return this._root}function Sn(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function qn(t){var n=[],e,i=this._root,r,o,s,a,f,u,p;for(i&&n.push(new b(i,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));e=n.pop();)if(!t(i=e.node,o=e.x0,s=e.y0,a=e.z0,f=e.x1,u=e.y1,p=e.z1)&&i.length){var l=(o+f)/2,y=(s+u)/2,c=(a+p)/2;(r=i[7])&&n.push(new b(r,l,y,c,f,u,p)),(r=i[6])&&n.push(new b(r,o,y,c,l,u,p)),(r=i[5])&&n.push(new b(r,l,s,c,f,y,p)),(r=i[4])&&n.push(new b(r,o,s,c,l,y,p)),(r=i[3])&&n.push(new b(r,l,y,a,f,u,c)),(r=i[2])&&n.push(new b(r,o,y,a,l,u,c)),(r=i[1])&&n.push(new b(r,l,s,a,f,y,c)),(r=i[0])&&n.push(new b(r,o,s,a,l,y,c))}return this}function Tn(t){var n=[],e=[],i;for(this._root&&n.push(new b(this._root,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));i=n.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.y0,f=i.z0,u=i.x1,p=i.y1,l=i.z1,y=(s+u)/2,c=(a+p)/2,_=(f+l)/2;(o=r[0])&&n.push(new b(o,s,a,f,y,c,_)),(o=r[1])&&n.push(new b(o,y,a,f,u,c,_)),(o=r[2])&&n.push(new b(o,s,c,f,y,p,_)),(o=r[3])&&n.push(new b(o,y,c,f,u,p,_)),(o=r[4])&&n.push(new b(o,s,a,_,y,c,l)),(o=r[5])&&n.push(new b(o,y,a,_,u,c,l)),(o=r[6])&&n.push(new b(o,s,c,_,y,p,l)),(o=r[7])&&n.push(new b(o,y,c,_,u,p,l))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.y0,i.z0,i.x1,i.y1,i.z1);return this}function On(t){return t[0]}function Pn(t){return arguments.length?(this._x=t,this):this._x}function Dn(t){return t[1]}function Fn(t){return arguments.length?(this._y=t,this):this._y}function Ln(t){return t[2]}function jn(t){return arguments.length?(this._z=t,this):this._z}function Nt(t,n,e,i){var r=new ot(n??On,e??Dn,i??Ln,NaN,NaN,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function ot(t,n,e,i,r,o,s,a,f){this._x=t,this._y=n,this._z=e,this._x0=i,this._y0=r,this._z0=o,this._x1=s,this._y1=a,this._z1=f,this._root=void 0}function lt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var k=Nt.prototype=ot.prototype;k.copy=function(){var t=new ot(this._x,this._y,this._z,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=lt(n),t;for(e=[{source:n,target:t._root=new Array(8)}];n=e.pop();)for(var r=0;r<8;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(8)}):n.target[r]=lt(i));return t};k.add=wn;k.addAll=mn;k.cover=Nn;k.data=Mn;k.extent=An;k.find=bn;k.findAllWithinRadius=In;k.remove=kn;k.removeAll=$n;k.root=En;k.size=Sn;k.visit=qn;k.visitAfter=Tn;k.x=Pn;k.y=Fn;k.z=jn;function Y(t){return function(){return t}}function P(t){return(t()-.5)*1e-6}function Rn(t){return t.index}function ht(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}function Bn(t){var n=Rn,e=y,i,r=Y(30),o,s,a,f,u,p,l=1;t==null&&(t=[]);function y(h){return 1/Math.min(f[h.source.index],f[h.target.index])}function c(h){for(var m=0,v=t.length;m<l;++m)for(var w=0,d,N,M,A=0,T=0,O=0,S,z;w<v;++w)d=t[w],N=d.source,M=d.target,A=M.x+M.vx-N.x-N.vx||P(p),a>1&&(T=M.y+M.vy-N.y-N.vy||P(p)),a>2&&(O=M.z+M.vz-N.z-N.vz||P(p)),S=Math.sqrt(A*A+T*T+O*O),S=(S-o[w])/S*h*i[w],A*=S,T*=S,O*=S,M.vx-=A*(z=u[w]),a>1&&(M.vy-=T*z),a>2&&(M.vz-=O*z),N.vx+=A*(z=1-z),a>1&&(N.vy+=T*z),a>2&&(N.vz+=O*z)}function _(){if(s){var h,m=s.length,v=t.length,w=new Map(s.map((N,M)=>[n(N,M,s),N])),d;for(h=0,f=new Array(m);h<v;++h)d=t[h],d.index=h,typeof d.source!="object"&&(d.source=ht(w,d.source)),typeof d.target!="object"&&(d.target=ht(w,d.target)),f[d.source.index]=(f[d.source.index]||0)+1,f[d.target.index]=(f[d.target.index]||0)+1;for(h=0,u=new Array(v);h<v;++h)d=t[h],u[h]=f[d.source.index]/(f[d.source.index]+f[d.target.index]);i=new Array(v),x(),o=new Array(v),g()}}function x(){if(s)for(var h=0,m=t.length;h<m;++h)i[h]=+e(t[h],h,t)}function g(){if(s)for(var h=0,m=t.length;h<m;++h)o[h]=+r(t[h],h,t)}return c.initialize=function(h,...m){s=h,p=m.find(v=>typeof v=="function")||Math.random,a=m.find(v=>[1,2,3].includes(v))||2,_()},c.links=function(h){return arguments.length?(t=h,_(),c):t},c.id=function(h){return arguments.length?(n=h,c):n},c.iterations=function(h){return arguments.length?(l=+h,c):l},c.strength=function(h){return arguments.length?(e=typeof h=="function"?h:Y(+h),x(),c):e},c.distance=function(h){return arguments.length?(r=typeof h=="function"?h:Y(+h),g(),c):r},c}var Kn={value:()=>{}};function Mt(){for(var t=0,n=arguments.length,e={},i;t<n;++t){if(!(i=arguments[t]+"")||i in e||/[\s.]/.test(i))throw new Error("illegal type: "+i);e[i]=[]}return new G(e)}function G(t){this._=t}function Cn(t,n){return t.trim().split(/^|\s+/).map(function(e){var i="",r=e.indexOf(".");if(r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:i}})}G.prototype=Mt.prototype={constructor:G,on:function(t,n){var e=this._,i=Cn(t+"",e),r,o=-1,s=i.length;if(arguments.length<2){for(;++o<s;)if((r=(t=i[o]).type)&&(r=Yn(e[r],t.name)))return r;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<s;)if(r=(t=i[o]).type)e[r]=ct(e[r],t.name,n);else if(n==null)for(r in e)e[r]=ct(e[r],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new G(t)},call:function(t,n){if((r=arguments.length-2)>0)for(var e=new Array(r),i=0,r,o;i<r;++i)e[i]=arguments[i+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],i=0,r=o.length;i<r;++i)o[i].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],r=0,o=i.length;r<o;++r)i[r].value.apply(n,e)}};function Yn(t,n){for(var e=0,i=t.length,r;e<i;++e)if((r=t[e]).name===n)return r.value}function ct(t,n,e){for(var i=0,r=t.length;i<r;++i)if(t[i].name===n){t[i]=Kn,t=t.slice(0,i).concat(t.slice(i+1));break}return e!=null&&t.push({name:n,value:e}),t}var j=0,K=0,B=0,At=1e3,X,C,V=0,F=0,J=0,H=typeof performance=="object"&&performance.now?performance:Date,bt=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function zt(){return F||(bt(Hn),F=H.now()+J)}function Hn(){F=0}function nt(){this._call=this._time=this._next=null}nt.prototype=It.prototype={constructor:nt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?zt():+e)+(n==null?0:+n),!this._next&&C!==this&&(C?C._next=this:X=this,C=this),this._call=t,this._time=e,et()},stop:function(){this._call&&(this._call=null,this._time=1/0,et())}};function It(t,n,e){var i=new nt;return i.restart(t,n,e),i}function Un(){zt(),++j;for(var t=X,n;t;)(n=F-t._time)>=0&&t._call.call(void 0,n),t=t._next;--j}function pt(){F=(V=H.now())+J,j=K=0;try{Un()}finally{j=0,Xn(),F=0}}function Gn(){var t=H.now(),n=t-V;n>At&&(J-=n,V=t)}function Xn(){for(var t,n=X,e,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:X=e);C=t,et(i)}function et(t){if(!j){K&&(K=clearTimeout(K));var n=t-F;n>24?(t<1/0&&(K=setTimeout(pt,t-H.now()-J)),B&&(B=clearInterval(B))):(B||(V=H.now(),B=setInterval(Gn,At)),j=1,bt(pt))}}const Vn=1664525,Jn=1013904223,_t=4294967296;function Qn(){let t=1;return()=>(t=(Vn*t+Jn)%_t)/_t}var yt=3;function Z(t){return t.x}function gt(t){return t.y}function Wn(t){return t.z}var Zn=10,te=Math.PI*(3-Math.sqrt(5)),ne=Math.PI*20/(9+Math.sqrt(221));function ee(t,n){n=n||2;var e=Math.min(yt,Math.max(1,Math.round(n))),i,r=1,o=.001,s=1-Math.pow(o,1/300),a=0,f=.6,u=new Map,p=It(c),l=Mt("tick","end"),y=Qn();t==null&&(t=[]);function c(){_(),l.call("tick",i),r<o&&(p.stop(),l.call("end",i))}function _(h){var m,v=t.length,w;h===void 0&&(h=1);for(var d=0;d<h;++d)for(r+=(a-r)*s,u.forEach(function(N){N(r)}),m=0;m<v;++m)w=t[m],w.fx==null?w.x+=w.vx*=f:(w.x=w.fx,w.vx=0),e>1&&(w.fy==null?w.y+=w.vy*=f:(w.y=w.fy,w.vy=0)),e>2&&(w.fz==null?w.z+=w.vz*=f:(w.z=w.fz,w.vz=0));return i}function x(){for(var h=0,m=t.length,v;h<m;++h){if(v=t[h],v.index=h,v.fx!=null&&(v.x=v.fx),v.fy!=null&&(v.y=v.fy),v.fz!=null&&(v.z=v.fz),isNaN(v.x)||e>1&&isNaN(v.y)||e>2&&isNaN(v.z)){var w=Zn*(e>2?Math.cbrt(.5+h):e>1?Math.sqrt(.5+h):h),d=h*te,N=h*ne;e===1?v.x=w:e===2?(v.x=w*Math.cos(d),v.y=w*Math.sin(d)):(v.x=w*Math.sin(d)*Math.cos(N),v.y=w*Math.cos(d),v.z=w*Math.sin(d)*Math.sin(N))}(isNaN(v.vx)||e>1&&isNaN(v.vy)||e>2&&isNaN(v.vz))&&(v.vx=0,e>1&&(v.vy=0),e>2&&(v.vz=0))}}function g(h){return h.initialize&&h.initialize(t,y,e),h}return x(),i={tick:_,restart:function(){return p.restart(c),i},stop:function(){return p.stop(),i},numDimensions:function(h){return arguments.length?(e=Math.min(yt,Math.max(1,Math.round(h))),u.forEach(g),i):e},nodes:function(h){return arguments.length?(t=h,x(),u.forEach(g),i):t},alpha:function(h){return arguments.length?(r=+h,i):r},alphaMin:function(h){return arguments.length?(o=+h,i):o},alphaDecay:function(h){return arguments.length?(s=+h,i):+s},alphaTarget:function(h){return arguments.length?(a=+h,i):a},velocityDecay:function(h){return arguments.length?(f=1-h,i):1-f},randomSource:function(h){return arguments.length?(y=h,u.forEach(g),i):y},force:function(h,m){return arguments.length>1?(m==null?u.delete(h):u.set(h,g(m)),i):u.get(h)},find:function(){var h=Array.prototype.slice.call(arguments),m=h.shift()||0,v=(e>1?h.shift():null)||0,w=(e>2?h.shift():null)||0,d=h.shift()||1/0,N=0,M=t.length,A,T,O,S,z,st;for(d*=d,N=0;N<M;++N)z=t[N],A=m-z.x,T=v-(z.y||0),O=w-(z.z||0),S=A*A+T*T+O*O,S<d&&(st=z,d=S);return st},on:function(h,m){return arguments.length>1?(l.on(h,m),i):l.on(h)}}}function ie(){var t,n,e,i,r,o=Y(-30),s,a=1,f=1/0,u=.81;function p(_){var x,g=t.length,h=(n===1?xt(t,Z):n===2?wt(t,Z,gt):n===3?Nt(t,Z,gt,Wn):null).visitAfter(y);for(r=_,x=0;x<g;++x)e=t[x],h.visit(c)}function l(){if(t){var _,x=t.length,g;for(s=new Array(x),_=0;_<x;++_)g=t[_],s[g.index]=+o(g,_,t)}}function y(_){var x=0,g,h,m=0,v,w,d,N,M=_.length;if(M){for(v=w=d=N=0;N<M;++N)(g=_[N])&&(h=Math.abs(g.value))&&(x+=g.value,m+=h,v+=h*(g.x||0),w+=h*(g.y||0),d+=h*(g.z||0));x*=Math.sqrt(4/M),_.x=v/m,n>1&&(_.y=w/m),n>2&&(_.z=d/m)}else{g=_,g.x=g.data.x,n>1&&(g.y=g.data.y),n>2&&(g.z=g.data.z);do x+=s[g.data.index];while(g=g.next)}_.value=x}function c(_,x,g,h,m){if(!_.value)return!0;var v=[g,h,m][n-1],w=_.x-e.x,d=n>1?_.y-e.y:0,N=n>2?_.z-e.z:0,M=v-x,A=w*w+d*d+N*N;if(M*M/u<A)return A<f&&(w===0&&(w=P(i),A+=w*w),n>1&&d===0&&(d=P(i),A+=d*d),n>2&&N===0&&(N=P(i),A+=N*N),A<a&&(A=Math.sqrt(a*A)),e.vx+=w*_.value*r/A,n>1&&(e.vy+=d*_.value*r/A),n>2&&(e.vz+=N*_.value*r/A)),!0;if(_.length||A>=f)return;(_.data!==e||_.next)&&(w===0&&(w=P(i),A+=w*w),n>1&&d===0&&(d=P(i),A+=d*d),n>2&&N===0&&(N=P(i),A+=N*N),A<a&&(A=Math.sqrt(a*A)));do _.data!==e&&(M=s[_.data.index]*r/A,e.vx+=w*M,n>1&&(e.vy+=d*M),n>2&&(e.vz+=N*M));while(_=_.next)}return p.initialize=function(_,...x){t=_,i=x.find(g=>typeof g=="function")||Math.random,n=x.find(g=>[1,2,3].includes(g))||2,l()},p.strength=function(_){return arguments.length?(o=typeof _=="function"?_:Y(+_),l(),p):o},p.distanceMin=function(_){return arguments.length?(a=_*_,p):Math.sqrt(a)},p.distanceMax=function(_){return arguments.length?(f=_*_,p):Math.sqrt(f)},p.theta=function(_){return arguments.length?(u=_*_,p):Math.sqrt(u)},p}function kt(t){let n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619);return n>>>0}function $t(t){let n=t>>>0;return function(){n|=0,n=n+1831565813|0;let e=Math.imul(n^n>>>15,1|n);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}function re(t,n=42){const e=$t(kt(t)),i=e(),r=e(),o=2*Math.PI*i,s=Math.acos(2*r-1),a=n*Math.cbrt(e()),f=a*Math.sin(s)*Math.cos(o),u=a*Math.sin(s)*Math.sin(o),p=a*Math.cos(s);return[f,u,p]}function Et(t){let n=2166136261;for(const e of t){for(let i=0;i<e.length;i++)n^=e.charCodeAt(i),n=Math.imul(n,16777619);n^=10,n=Math.imul(n,16777619)}return(n>>>0).toString(16)}const oe=1592594996,se=1;function ae(t){const n=[...t].sort();return Et([`v${se}`,`n${n.length}`,...n])}function fe(t){return t<=2e3?200:t<=5e3?150:t<=1e4?100:70}function ue(t,n){const e=Bt(t),i=e.map(l=>l.key),r=new Map;if(i.forEach((l,y)=>r.set(l,y)),n&&n.length===i.length*3)return{keys:i,positions:n.slice(),indexByKey:r};const o=e.map(l=>{const[y,c,_]=re(l.key);return{key:l.key,x:y,y:c,z:_}}),s=e.filter(l=>l.parent!==null).map(l=>({source:l.parent,target:l.key})),a=$t(kt("randomSource")^oe),f=ee(o,3).force("charge",ie().strength(-7)).force("link",Bn(s).id(l=>l.key).distance(5).strength(.85)).force("center",Kt(0,0,0)).stop(),u=f;typeof u.randomSource=="function"&&u.randomSource(a),f.tick(fe(o.length));const p=new Float32Array(o.length*3);for(let l=0;l<o.length;l++){const y=o[l];p[l*3]=y.x??0,p[l*3+1]=y.y??0,p[l*3+2]=y.z??0}return{keys:i,positions:p,indexByKey:r}}function le(t,n){const e=I(t.props.name)??"";return{id:t.id,name:e,qualifiedName:I(t.props.qualified_name)??e,kind:t.labels[0]??"",filePath:I(t.props.file_path)??I(t.props.path)??"",startLine:tt(t.props.start_line),endLine:tt(t.props.end_line),language:I(t.props.language)??"",role:I(t.props.role)??"",semanticSummary:I(t.props.semantic_summary),summaryOfHash:I(t.props.summary_of_hash),contentHash:I(t.props.content_hash),degree:n}}function he(t,n){const e=Rt(t),i=ue(e,n?.cachedPositions),r=[],o=new Map,s=p=>o.set(p,(o.get(p)??0)+1);for(const p of t.edges){if(!Dt.has(p.type))continue;const l=p.from.split(":"),y=p.to.split(":"),c=l[0]==="rs1"&&y[0]==="rs1"&&l[1]!==y[1];r.push({from:p.from,to:p.to,type:p.type,resolution:Ft(p.props),confidence:tt(p.props.confidence,1),crossRepo:c}),s(p.from),s(p.to)}const a=new Map;for(const p of t.nodes)a.set(p.id,le(p,o.get(p.id)??0));const f=[];for(const p of t.nodes)f.push(p.id,I(p.props.content_hash)??"");const u=Et(f);return{tree:e,layout:i,drawEdges:r,records:a,degree:o,fingerprint:u}}const ce="reposkein-layout-cache",R="positions",pe=1;function _e(){try{if(typeof indexedDB<"u")return indexedDB}catch{}return null}function St(){const t=_e();return t?new Promise(n=>{let e;try{e=t.open(ce,pe)}catch{n(null);return}e.onupgradeneeded=()=>{const i=e.result;i.objectStoreNames.contains(R)||i.createObjectStore(R)},e.onsuccess=()=>n(e.result),e.onerror=()=>n(null),e.onblocked=()=>n(null)}):Promise.resolve(null)}async function ye(t){const n=await St();return n?new Promise(e=>{let i=!1;const r=o=>{i||(i=!0,n.close(),e(o))};try{const o=n.transaction(R,"readonly"),s=o.objectStore(R).get(t);s.onsuccess=()=>{const a=s.result;a&&a.byteLength>0&&a.byteLength%12===0?r(new Float32Array(a)):r(null)},s.onerror=()=>r(null),o.onerror=()=>r(null),o.onabort=()=>r(null)}catch{r(null)}}):null}async function ge(t,n){const e=await St();if(e)return new Promise(i=>{let r=!1;const o=()=>{r||(r=!0,e.close(),i())};try{const s=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength),a=e.transaction(R,"readwrite");a.objectStore(R).put(s,t),a.oncomplete=o,a.onerror=o,a.onabort=o}catch{o()}})}async function de(){const t=await fetch("/api/graph");if(!t.ok)throw new Error(`GET /api/graph -> ${t.status}`);return await t.json()}async function U(t){const n=await fetch(t);if(!n.ok)throw new Error(`GET ${t} -> ${n.status}`);return await n.text()}async function xe(){const t=u=>self.postMessage(u);t({type:"progress",phase:"fetching manifest"});const n=await de();t({type:"progress",phase:"fetching graph"});const[e,i]=await Promise.all([U(n.root.nodesUrl),U(n.root.edgesUrl)]);t({type:"progress",phase:"parsing"});const r=at(e,i);if(n.federated&&n.federated.length>0){t({type:"progress",phase:"fetching federated repos"});for(const u of n.federated){const[p,l]=await Promise.all([U(u.nodesUrl),U(u.edgesUrl)]),y=at(p,l);r.nodes.push(...y.nodes),r.edges.push(...y.edges)}}const o=ae(r.nodes.map(u=>u.id)),s=await ye(o);t({type:"progress",phase:s?"restoring layout":"charting the sky"});const a=he(r,{cachedPositions:s??void 0});s||ge(o,a.layout.positions.slice());const f={type:"result",repoId:a.tree.repoId,rootKey:a.tree.rootKey,clusters:[...a.tree.byKey.values()],keys:a.layout.keys,positions:a.layout.positions,drawEdges:a.drawEdges,records:[...a.records.entries()],fingerprint:a.fingerprint,counts:{nodes:r.nodes.length,edges:r.edges.length},repoRoot:n.root.repoRoot??null};self.postMessage(f,[f.positions.buffer])}self.onmessage=t=>{t.data?.cmd==="load"&&xe().catch(n=>{const e={type:"error",message:n instanceof Error?n.message:String(n)};self.postMessage(e)})};