@jafreck/lore 0.3.7 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -122
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +63 -29
- package/dist/cli.js.map +1 -1
- package/dist/db/read-only.d.ts +22 -43
- package/dist/db/read-only.d.ts.map +1 -1
- package/dist/db/read-only.js +80 -156
- package/dist/db/read-only.js.map +1 -1
- package/dist/db/schema.d.ts +9 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +164 -85
- package/dist/db/schema.js.map +1 -1
- package/dist/discovery/poller.d.ts +6 -16
- package/dist/discovery/poller.d.ts.map +1 -1
- package/dist/discovery/poller.js +21 -52
- package/dist/discovery/poller.js.map +1 -1
- package/dist/discovery/scip-flush.d.ts +44 -0
- package/dist/discovery/scip-flush.d.ts.map +1 -0
- package/dist/discovery/scip-flush.js +67 -0
- package/dist/discovery/scip-flush.js.map +1 -0
- package/dist/discovery/watcher.d.ts +6 -16
- package/dist/discovery/watcher.d.ts.map +1 -1
- package/dist/discovery/watcher.js +22 -54
- package/dist/discovery/watcher.js.map +1 -1
- package/dist/docs/docs.d.ts +0 -2
- package/dist/docs/docs.d.ts.map +1 -1
- package/dist/docs/docs.js +0 -27
- package/dist/docs/docs.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/indexer/index.d.ts +19 -10
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +99 -24
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/pipeline.d.ts +25 -14
- package/dist/indexer/pipeline.d.ts.map +1 -1
- package/dist/indexer/pipeline.js +8 -7
- package/dist/indexer/pipeline.js.map +1 -1
- package/dist/indexer/stages/docs-index.d.ts +1 -3
- package/dist/indexer/stages/docs-index.d.ts.map +1 -1
- package/dist/indexer/stages/docs-index.js +1 -25
- package/dist/indexer/stages/docs-index.js.map +1 -1
- package/dist/indexer/stages/index.d.ts +4 -2
- package/dist/indexer/stages/index.d.ts.map +1 -1
- package/dist/indexer/stages/index.js +3 -2
- package/dist/indexer/stages/index.js.map +1 -1
- package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -1
- package/dist/indexer/stages/lsp-enrichment.js +20 -1
- package/dist/indexer/stages/lsp-enrichment.js.map +1 -1
- package/dist/indexer/stages/overlay-cleanup.d.ts +31 -0
- package/dist/indexer/stages/overlay-cleanup.d.ts.map +1 -0
- package/dist/indexer/stages/overlay-cleanup.js +64 -0
- package/dist/indexer/stages/overlay-cleanup.js.map +1 -0
- package/dist/indexer/stages/reverse-deps.d.ts +13 -0
- package/dist/indexer/stages/reverse-deps.d.ts.map +1 -0
- package/dist/indexer/stages/reverse-deps.js +81 -0
- package/dist/indexer/stages/reverse-deps.js.map +1 -0
- package/dist/indexer/stages/{scip-source.d.ts → scip-indexer.d.ts} +38 -9
- package/dist/indexer/stages/scip-indexer.d.ts.map +1 -0
- package/dist/indexer/stages/{scip-source.js → scip-indexer.js} +350 -91
- package/dist/indexer/stages/scip-indexer.js.map +1 -0
- package/dist/indexer/stages/source-index.d.ts +3 -3
- package/dist/indexer/stages/source-index.d.ts.map +1 -1
- package/dist/indexer/stages/source-index.js +116 -69
- package/dist/indexer/stages/source-index.js.map +1 -1
- package/dist/lsp/enrichment.d.ts.map +1 -1
- package/dist/lsp/enrichment.js +1 -18
- package/dist/lsp/enrichment.js.map +1 -1
- package/dist/parsing/extractors/go.d.ts.map +1 -1
- package/dist/parsing/extractors/go.js +0 -38
- package/dist/parsing/extractors/go.js.map +1 -1
- package/dist/parsing/extractors/javascript.d.ts.map +1 -1
- package/dist/parsing/extractors/javascript.js +0 -47
- package/dist/parsing/extractors/javascript.js.map +1 -1
- package/dist/parsing/extractors/python.d.ts.map +1 -1
- package/dist/parsing/extractors/python.js +0 -22
- package/dist/parsing/extractors/python.js.map +1 -1
- package/dist/parsing/extractors/types.d.ts +0 -16
- package/dist/parsing/extractors/types.d.ts.map +1 -1
- package/dist/parsing/extractors/types.js +1 -1
- package/dist/parsing/extractors/types.js.map +1 -1
- package/dist/parsing/extractors/typescript.js +2 -2
- package/dist/parsing/extractors/typescript.js.map +1 -1
- package/dist/resolution/call-graph.d.ts +3 -1
- package/dist/resolution/call-graph.d.ts.map +1 -1
- package/dist/resolution/call-graph.js +15 -13
- package/dist/resolution/call-graph.js.map +1 -1
- package/dist/resolution/resolution-method.d.ts +1 -1
- package/dist/resolution/resolution-method.d.ts.map +1 -1
- package/dist/resolution/resolution-method.js +2 -0
- package/dist/resolution/resolution-method.js.map +1 -1
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scip/compdb.d.ts +38 -0
- package/dist/scip/compdb.d.ts.map +1 -0
- package/dist/scip/compdb.js +138 -0
- package/dist/scip/compdb.js.map +1 -0
- package/dist/scip/enrichment.d.ts +6 -1
- package/dist/scip/enrichment.d.ts.map +1 -1
- package/dist/scip/enrichment.js +59 -2
- package/dist/scip/enrichment.js.map +1 -1
- package/dist/scip/installer.d.ts +59 -0
- package/dist/scip/installer.d.ts.map +1 -0
- package/dist/scip/installer.js +302 -0
- package/dist/scip/installer.js.map +1 -0
- package/dist/scip/registry.d.ts +1 -1
- package/dist/scip/registry.d.ts.map +1 -1
- package/dist/scip/registry.js +33 -5
- package/dist/scip/registry.js.map +1 -1
- package/dist/server/server.d.ts +2 -6
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +6 -56
- package/dist/server/server.js.map +1 -1
- package/dist/server/tool-registry.d.ts +2 -2
- package/dist/server/tool-registry.d.ts.map +1 -1
- package/dist/server/tool-registry.js +41 -20
- package/dist/server/tool-registry.js.map +1 -1
- package/dist/server/tools/cohesion.d.ts +46 -0
- package/dist/server/tools/cohesion.d.ts.map +1 -0
- package/dist/server/tools/cohesion.js +100 -0
- package/dist/server/tools/cohesion.js.map +1 -0
- package/dist/server/tools/dependents.d.ts +139 -0
- package/dist/server/tools/dependents.d.ts.map +1 -0
- package/dist/server/tools/dependents.js +354 -0
- package/dist/server/tools/dependents.js.map +1 -0
- package/dist/server/tools/diff.d.ts +73 -0
- package/dist/server/tools/diff.d.ts.map +1 -0
- package/dist/server/tools/diff.js +157 -0
- package/dist/server/tools/diff.js.map +1 -0
- package/dist/server/tools/structure.d.ts +77 -0
- package/dist/server/tools/structure.d.ts.map +1 -0
- package/dist/server/tools/structure.js +309 -0
- package/dist/server/tools/structure.js.map +1 -0
- package/dist/server/tools/test-map.d.ts +7 -0
- package/dist/server/tools/test-map.d.ts.map +1 -1
- package/dist/server/tools/test-map.js +18 -1
- package/dist/server/tools/test-map.js.map +1 -1
- package/dist/server/tools/trace.d.ts +84 -0
- package/dist/server/tools/trace.d.ts.map +1 -0
- package/dist/server/tools/trace.js +317 -0
- package/dist/server/tools/trace.js.map +1 -0
- package/dist/testing/coverage.d.ts +11 -0
- package/dist/testing/coverage.d.ts.map +1 -1
- package/dist/testing/coverage.js +34 -2
- package/dist/testing/coverage.js.map +1 -1
- package/dist/testing/test-mapper.d.ts +1 -1
- package/dist/testing/test-mapper.d.ts.map +1 -1
- package/dist/testing/test-mapper.js +1 -0
- package/dist/testing/test-mapper.js.map +1 -1
- package/package.json +3 -1
- package/dist/indexer/stages/scip-enrichment.d.ts +0 -43
- package/dist/indexer/stages/scip-enrichment.d.ts.map +0 -1
- package/dist/indexer/stages/scip-enrichment.js +0 -172
- package/dist/indexer/stages/scip-enrichment.js.map +0 -1
- package/dist/indexer/stages/scip-source.d.ts.map +0 -1
- package/dist/indexer/stages/scip-source.js.map +0 -1
- package/dist/server/tools/notes.d.ts +0 -165
- package/dist/server/tools/notes.d.ts.map +0 -1
- package/dist/server/tools/notes.js +0 -214
- package/dist/server/tools/notes.js.map +0 -1
- package/dist/server/tools/routes.d.ts +0 -38
- package/dist/server/tools/routes.d.ts.map +0 -1
- package/dist/server/tools/routes.js +0 -38
- package/dist/server/tools/routes.js.map +0 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module scip/installer
|
|
3
|
+
*
|
|
4
|
+
* Auto-download and manage SCIP indexer binaries.
|
|
5
|
+
*
|
|
6
|
+
* Lore can automatically fetch pre-built SCIP indexers so users don't need
|
|
7
|
+
* to install them separately. Binaries are stored in `~/.lore/bin/` and
|
|
8
|
+
* the registry resolution checks that directory.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync, chmodSync, createWriteStream, unlinkSync } from 'node:fs';
|
|
11
|
+
import { join, dirname } from 'node:path';
|
|
12
|
+
import { homedir, platform, arch } from 'node:os';
|
|
13
|
+
import { pipeline } from 'node:stream/promises';
|
|
14
|
+
import { execFile } from 'node:child_process';
|
|
15
|
+
import * as childProcess from 'node:child_process';
|
|
16
|
+
import { promisify } from 'node:util';
|
|
17
|
+
import { getLogger } from '../logger.js';
|
|
18
|
+
const execFileAsync = promisify(execFile);
|
|
19
|
+
// ─── Default I/O ──────────────────────────────────────────────────────────────
|
|
20
|
+
export function getLoreBinDir() {
|
|
21
|
+
return join(homedir(), '.lore', 'bin');
|
|
22
|
+
}
|
|
23
|
+
async function defaultDownloadFile(url, destPath) {
|
|
24
|
+
const response = await fetch(url, {
|
|
25
|
+
headers: { 'User-Agent': 'lore-scip-installer' },
|
|
26
|
+
redirect: 'follow',
|
|
27
|
+
});
|
|
28
|
+
if (!response.ok || !response.body) {
|
|
29
|
+
throw new Error(`Failed to download ${url}: ${response.status} ${response.statusText}`);
|
|
30
|
+
}
|
|
31
|
+
mkdirSync(dirname(destPath), { recursive: true });
|
|
32
|
+
const fileStream = createWriteStream(destPath);
|
|
33
|
+
await pipeline(response.body, fileStream);
|
|
34
|
+
}
|
|
35
|
+
function defaultIsCommandAvailable(command) {
|
|
36
|
+
try {
|
|
37
|
+
childProcess.execSync(`which ${command}`, { stdio: 'ignore' });
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function defaultFindNpmBinPath(command) {
|
|
45
|
+
const candidates = [
|
|
46
|
+
join(dirname(new URL(import.meta.url).pathname), '..', '..', 'node_modules', '.bin', command),
|
|
47
|
+
join(dirname(process.execPath), command),
|
|
48
|
+
];
|
|
49
|
+
for (const candidate of candidates) {
|
|
50
|
+
if (existsSync(candidate))
|
|
51
|
+
return candidate;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
async function defaultGetLatestGitHubReleaseTag(repo) {
|
|
56
|
+
try {
|
|
57
|
+
const url = `https://api.github.com/repos/${repo}/releases/latest`;
|
|
58
|
+
const response = await fetch(url, {
|
|
59
|
+
headers: { Accept: 'application/vnd.github.v3+json', 'User-Agent': 'lore-scip-installer' },
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok)
|
|
62
|
+
return null;
|
|
63
|
+
const data = (await response.json());
|
|
64
|
+
return data.tag_name ?? null;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function createDefaultIO() {
|
|
71
|
+
return {
|
|
72
|
+
existsSync,
|
|
73
|
+
mkdirSync: (p, o) => mkdirSync(p, o),
|
|
74
|
+
chmodSync,
|
|
75
|
+
downloadFile: defaultDownloadFile,
|
|
76
|
+
execFileAsync: (cmd, args, opts) => execFileAsync(cmd, args, opts),
|
|
77
|
+
isCommandAvailable: defaultIsCommandAvailable,
|
|
78
|
+
findNpmBinPath: defaultFindNpmBinPath,
|
|
79
|
+
getLatestGitHubReleaseTag: defaultGetLatestGitHubReleaseTag,
|
|
80
|
+
unlinkSync,
|
|
81
|
+
getPlatformArch: () => ({ os: platform(), cpu: arch() }),
|
|
82
|
+
getLoreBinDir,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ─── Install specs ────────────────────────────────────────────────────────────
|
|
86
|
+
export function buildInstallSpecs(io = { getPlatformArch: () => ({ os: platform(), cpu: arch() }) }) {
|
|
87
|
+
return [
|
|
88
|
+
{ command: 'scip-typescript', languages: ['typescript'], method: 'npm-bundled', manualInstructions: 'npm install -g @sourcegraph/scip-typescript' },
|
|
89
|
+
{
|
|
90
|
+
command: 'scip-clang', languages: ['c', 'cpp'], method: 'github-binary', repo: 'sourcegraph/scip-clang',
|
|
91
|
+
assetName: () => {
|
|
92
|
+
const { os, cpu } = io.getPlatformArch();
|
|
93
|
+
if (os === 'darwin' && cpu === 'arm64')
|
|
94
|
+
return 'scip-clang-arm64-darwin';
|
|
95
|
+
if (os === 'linux' && cpu === 'x64')
|
|
96
|
+
return 'scip-clang-x86_64-linux';
|
|
97
|
+
return null;
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
command: 'scip-go', languages: ['go'], method: 'github-tarball', repo: 'sourcegraph/scip-go',
|
|
102
|
+
assetName: (tag) => {
|
|
103
|
+
const { os, cpu } = io.getPlatformArch();
|
|
104
|
+
const version = tag.replace(/^v/, '');
|
|
105
|
+
const osMap = { darwin: 'darwin', linux: 'linux', win32: 'windows' };
|
|
106
|
+
const cpuMap = { arm64: 'arm64', x64: 'amd64' };
|
|
107
|
+
const osName = osMap[os];
|
|
108
|
+
const cpuName = cpuMap[cpu];
|
|
109
|
+
if (!osName || !cpuName)
|
|
110
|
+
return null;
|
|
111
|
+
return `scip-go_${version}_${osName}_${cpuName}.tar.gz`;
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{ command: 'scip-python', languages: ['python'], method: 'npm-bundled', manualInstructions: 'npm install -g @sourcegraph/scip-python' },
|
|
115
|
+
{
|
|
116
|
+
command: 'scip-ruby', languages: ['ruby'], method: 'github-binary', repo: 'sourcegraph/scip-ruby',
|
|
117
|
+
assetName: () => {
|
|
118
|
+
const { os, cpu } = io.getPlatformArch();
|
|
119
|
+
if (os === 'darwin' && cpu === 'arm64')
|
|
120
|
+
return 'scip-ruby-arm64-darwin';
|
|
121
|
+
if (os === 'linux' && cpu === 'x64')
|
|
122
|
+
return 'scip-ruby-x86_64-linux';
|
|
123
|
+
return null;
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{ command: 'scip-dotnet', languages: ['csharp'], method: 'dotnet-tool', packageName: 'scip-dotnet', manualInstructions: 'dotnet tool install --global scip-dotnet' },
|
|
127
|
+
{ command: 'scip-java', languages: ['java', 'scala', 'kotlin'], method: 'coursier', manualInstructions: 'cs install scip-java (requires Coursier: https://get-coursier.io)' },
|
|
128
|
+
{ command: 'rust-analyzer', languages: ['rust'], method: 'manual', manualInstructions: 'Install via rustup: rustup component add rust-analyzer' },
|
|
129
|
+
{ command: 'scip-php', languages: ['php'], method: 'manual', manualInstructions: 'See https://github.com/nicovank/scip-php for installation' },
|
|
130
|
+
{ command: 'scip-dart', languages: ['dart'], method: 'manual', manualInstructions: 'See https://github.com/nicovank/scip-dart for installation' },
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
export const SCIP_INSTALL_SPECS = buildInstallSpecs();
|
|
134
|
+
// ─── Core install logic ───────────────────────────────────────────────────────
|
|
135
|
+
export async function installScipIndexer(spec, io = createDefaultIO()) {
|
|
136
|
+
const binDir = io.getLoreBinDir();
|
|
137
|
+
switch (spec.method) {
|
|
138
|
+
case 'npm-bundled': return installNpmBundled(spec, io);
|
|
139
|
+
case 'github-binary': return installGitHubBinary(spec, binDir, io);
|
|
140
|
+
case 'github-tarball': return installGitHubTarball(spec, binDir, io);
|
|
141
|
+
case 'pip': return installViaPip(spec, io);
|
|
142
|
+
case 'gem': return installViaGem(spec, io);
|
|
143
|
+
case 'dotnet-tool': return installViaDotnetTool(spec, io);
|
|
144
|
+
case 'coursier': return installViaCoursier(spec, io);
|
|
145
|
+
case 'manual': return { command: spec.command, installed: false, path: null, error: `Manual install required: ${spec.manualInstructions}` };
|
|
146
|
+
default: return { command: spec.command, installed: false, path: null, error: `Unknown install method: ${spec.method}` };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export async function installAllMissing(options = {}) {
|
|
150
|
+
const log = getLogger();
|
|
151
|
+
const io = options.io ?? createDefaultIO();
|
|
152
|
+
const results = [];
|
|
153
|
+
const seen = new Set();
|
|
154
|
+
for (const spec of SCIP_INSTALL_SPECS) {
|
|
155
|
+
if (seen.has(spec.command))
|
|
156
|
+
continue;
|
|
157
|
+
seen.add(spec.command);
|
|
158
|
+
if (options.languages && !spec.languages.some((l) => options.languages.includes(l)))
|
|
159
|
+
continue;
|
|
160
|
+
if (io.isCommandAvailable(spec.command)) {
|
|
161
|
+
if (!options.quiet)
|
|
162
|
+
log.indexing(`scip-install: ${spec.command} already available`);
|
|
163
|
+
results.push({ command: spec.command, installed: true, path: spec.command });
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (!options.quiet)
|
|
167
|
+
log.indexing(`scip-install: installing ${spec.command}...`);
|
|
168
|
+
const result = await installScipIndexer(spec, io);
|
|
169
|
+
results.push(result);
|
|
170
|
+
if (!options.quiet) {
|
|
171
|
+
if (result.installed)
|
|
172
|
+
log.indexing(`scip-install: ${spec.command} installed at ${result.path}`);
|
|
173
|
+
else
|
|
174
|
+
log.indexing(`scip-install: ${spec.command} not installed: ${result.error ?? 'unknown error'}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
export function getSpecForCommand(command) {
|
|
180
|
+
return SCIP_INSTALL_SPECS.find((s) => s.command === command);
|
|
181
|
+
}
|
|
182
|
+
export function getSpecsForLanguage(language) {
|
|
183
|
+
return SCIP_INSTALL_SPECS.filter((s) => s.languages.includes(language));
|
|
184
|
+
}
|
|
185
|
+
// ─── Install methods (internal, using io seam) ──────────────────────────────
|
|
186
|
+
async function installNpmBundled(spec, io) {
|
|
187
|
+
try {
|
|
188
|
+
const binPath = io.findNpmBinPath(spec.command);
|
|
189
|
+
if (binPath)
|
|
190
|
+
return { command: spec.command, installed: true, path: binPath };
|
|
191
|
+
return { command: spec.command, installed: false, path: null, error: `${spec.command} not found in node_modules` };
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return { command: spec.command, installed: false, path: null, error: `Failed to resolve npm-bundled ${spec.command}` };
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function installGitHubBinary(spec, binDir, io) {
|
|
198
|
+
if (!spec.repo || !spec.assetName)
|
|
199
|
+
return { command: spec.command, installed: false, path: null, error: 'Missing repo or assetName config' };
|
|
200
|
+
try {
|
|
201
|
+
const tag = await io.getLatestGitHubReleaseTag(spec.repo);
|
|
202
|
+
if (!tag)
|
|
203
|
+
return { command: spec.command, installed: false, path: null, error: `No releases found for ${spec.repo}` };
|
|
204
|
+
const assetName = spec.assetName(tag);
|
|
205
|
+
if (!assetName) {
|
|
206
|
+
const { os, cpu } = io.getPlatformArch();
|
|
207
|
+
return { command: spec.command, installed: false, path: null, error: `No binary available for ${os}-${cpu}` };
|
|
208
|
+
}
|
|
209
|
+
const url = `https://github.com/${spec.repo}/releases/download/${tag}/${assetName}`;
|
|
210
|
+
const destPath = join(binDir, spec.command);
|
|
211
|
+
io.mkdirSync(binDir, { recursive: true });
|
|
212
|
+
await io.downloadFile(url, destPath);
|
|
213
|
+
io.chmodSync(destPath, 0o755);
|
|
214
|
+
return { command: spec.command, installed: true, path: destPath };
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
async function installGitHubTarball(spec, binDir, io) {
|
|
221
|
+
if (!spec.repo || !spec.assetName)
|
|
222
|
+
return { command: spec.command, installed: false, path: null, error: 'Missing repo or assetName config' };
|
|
223
|
+
try {
|
|
224
|
+
const tag = await io.getLatestGitHubReleaseTag(spec.repo);
|
|
225
|
+
if (!tag)
|
|
226
|
+
return { command: spec.command, installed: false, path: null, error: `No releases found for ${spec.repo}` };
|
|
227
|
+
const assetName = spec.assetName(tag);
|
|
228
|
+
if (!assetName) {
|
|
229
|
+
const { os, cpu } = io.getPlatformArch();
|
|
230
|
+
return { command: spec.command, installed: false, path: null, error: `No binary available for ${os}-${cpu}` };
|
|
231
|
+
}
|
|
232
|
+
const url = `https://github.com/${spec.repo}/releases/download/${tag}/${assetName}`;
|
|
233
|
+
const tmpPath = join(binDir, `${spec.command}.tar.gz`);
|
|
234
|
+
const destPath = join(binDir, spec.command);
|
|
235
|
+
io.mkdirSync(binDir, { recursive: true });
|
|
236
|
+
await io.downloadFile(url, tmpPath);
|
|
237
|
+
await io.execFileAsync('tar', ['xzf', tmpPath, '-C', binDir]);
|
|
238
|
+
try {
|
|
239
|
+
io.unlinkSync(tmpPath);
|
|
240
|
+
}
|
|
241
|
+
catch { /* ignore */ }
|
|
242
|
+
if (io.existsSync(destPath))
|
|
243
|
+
io.chmodSync(destPath, 0o755);
|
|
244
|
+
return { command: spec.command, installed: io.existsSync(destPath), path: io.existsSync(destPath) ? destPath : null };
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function installViaPip(spec, io) {
|
|
251
|
+
if (!spec.packageName)
|
|
252
|
+
return { command: spec.command, installed: false, path: null, error: 'Missing pip package name' };
|
|
253
|
+
const pipCmd = io.isCommandAvailable('pip3') ? 'pip3' : io.isCommandAvailable('pip') ? 'pip' : null;
|
|
254
|
+
if (!pipCmd)
|
|
255
|
+
return { command: spec.command, installed: false, path: null, error: `pip not found` };
|
|
256
|
+
try {
|
|
257
|
+
await io.execFileAsync(pipCmd, ['install', '--user', spec.packageName], { timeout: 120_000 });
|
|
258
|
+
return { command: spec.command, installed: true, path: spec.command };
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async function installViaGem(spec, io) {
|
|
265
|
+
if (!spec.packageName)
|
|
266
|
+
return { command: spec.command, installed: false, path: null, error: 'Missing gem package name' };
|
|
267
|
+
if (!io.isCommandAvailable('gem'))
|
|
268
|
+
return { command: spec.command, installed: false, path: null, error: 'gem not found' };
|
|
269
|
+
try {
|
|
270
|
+
await io.execFileAsync('gem', ['install', spec.packageName, '--user-install'], { timeout: 120_000 });
|
|
271
|
+
return { command: spec.command, installed: true, path: spec.command };
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async function installViaDotnetTool(spec, io) {
|
|
278
|
+
if (!spec.packageName)
|
|
279
|
+
return { command: spec.command, installed: false, path: null, error: 'Missing dotnet package name' };
|
|
280
|
+
if (!io.isCommandAvailable('dotnet'))
|
|
281
|
+
return { command: spec.command, installed: false, path: null, error: 'dotnet not found' };
|
|
282
|
+
try {
|
|
283
|
+
await io.execFileAsync('dotnet', ['tool', 'install', '--global', spec.packageName], { timeout: 120_000 });
|
|
284
|
+
return { command: spec.command, installed: true, path: spec.command };
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function installViaCoursier(spec, io) {
|
|
291
|
+
const csCmd = io.isCommandAvailable('cs') ? 'cs' : io.isCommandAvailable('coursier') ? 'coursier' : null;
|
|
292
|
+
if (!csCmd)
|
|
293
|
+
return { command: spec.command, installed: false, path: null, error: 'Coursier not found' };
|
|
294
|
+
try {
|
|
295
|
+
await io.execFileAsync(csCmd, ['install', spec.command], { timeout: 120_000 });
|
|
296
|
+
return { command: spec.command, installed: true, path: spec.command };
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
return { command: spec.command, installed: false, path: null, error: error instanceof Error ? error.message : String(error) };
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/scip/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/scip/registry.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type ScipIndexerRegistryOverrides = Partial<Record<string, Partial<ScipIn
|
|
|
31
31
|
*
|
|
32
32
|
* | Language group | Indexer |
|
|
33
33
|
* |-------------------------|---------------------|
|
|
34
|
-
* | TypeScript
|
|
34
|
+
* | TypeScript | scip-typescript |
|
|
35
35
|
* | Python | scip-python |
|
|
36
36
|
* | Java, Scala, Kotlin | scip-java |
|
|
37
37
|
* | Rust | rust-analyzer scip |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAIhG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAc3C,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,aAAsD,CAAC;AAI5F,wBAAgB,6BAA6B,IAAI,mBAAmB,CAMnE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,4BAAiC,GAAG,mBAAmB,CAmB1G;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,mBAAmD,EAC7D,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAqB5C"}
|
package/dist/scip/registry.js
CHANGED
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
* to LSP enrichment (and ultimately to tree-sitter-only resolution).
|
|
10
10
|
*/
|
|
11
11
|
import { accessSync, constants } from 'node:fs';
|
|
12
|
-
import { delimiter, isAbsolute, join } from 'node:path';
|
|
12
|
+
import { delimiter, dirname, isAbsolute, join } from 'node:path';
|
|
13
|
+
import { homedir } from 'node:os';
|
|
13
14
|
// ─── Default registry ─────────────────────────────────────────────────────────
|
|
14
15
|
/**
|
|
15
16
|
* Languages with known, actively-maintained SCIP indexers.
|
|
16
17
|
*
|
|
17
18
|
* | Language group | Indexer |
|
|
18
19
|
* |-------------------------|---------------------|
|
|
19
|
-
* | TypeScript
|
|
20
|
+
* | TypeScript | scip-typescript |
|
|
20
21
|
* | Python | scip-python |
|
|
21
22
|
* | Java, Scala, Kotlin | scip-java |
|
|
22
23
|
* | Rust | rust-analyzer scip |
|
|
@@ -29,14 +30,13 @@ import { delimiter, isAbsolute, join } from 'node:path';
|
|
|
29
30
|
*/
|
|
30
31
|
export const DEFAULT_SCIP_INDEXER_REGISTRY = {
|
|
31
32
|
typescript: { command: 'scip-typescript', args: ['index', '--output', '{output}'] },
|
|
32
|
-
javascript: { command: 'scip-typescript', args: ['index', '--infer-tsconfig', '--output', '{output}'] },
|
|
33
33
|
python: { command: 'scip-python', args: ['index', '.', '--project-name', 'project', '--output', '{output}'] },
|
|
34
34
|
java: { command: 'scip-java', args: ['index', '--output', '{output}'] },
|
|
35
35
|
scala: { command: 'scip-java', args: ['index', '--output', '{output}'] },
|
|
36
36
|
kotlin: { command: 'scip-java', args: ['index', '--output', '{output}'] },
|
|
37
37
|
rust: { command: 'rust-analyzer', args: ['scip', '.'] },
|
|
38
|
-
c: { command: 'scip-clang', args: ['--index-output-path={output}'] },
|
|
39
|
-
cpp: { command: 'scip-clang', args: ['--index-output-path={output}'] },
|
|
38
|
+
c: { command: 'scip-clang', args: ['--compdb-path={compdb}', '--index-output-path={output}'] },
|
|
39
|
+
cpp: { command: 'scip-clang', args: ['--compdb-path={compdb}', '--index-output-path={output}'] },
|
|
40
40
|
csharp: { command: 'scip-dotnet', args: ['index', '.', '--output', '{output}'] },
|
|
41
41
|
ruby: { command: 'scip-ruby', args: ['--output', '{output}'] },
|
|
42
42
|
php: { command: 'scip-php', args: ['index', '--output', '{output}'] },
|
|
@@ -97,12 +97,40 @@ export function resolveScipIndexerRegistry(registry = DEFAULT_SCIP_INDEXER_REGIS
|
|
|
97
97
|
return resolved;
|
|
98
98
|
}
|
|
99
99
|
// ─── PATH resolution (shared with LSP registry pattern) ──────────────────────
|
|
100
|
+
/** Directory where Lore stores managed SCIP indexer binaries. */
|
|
101
|
+
function getLoreBinDir() {
|
|
102
|
+
return join(homedir(), '.lore', 'bin');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve an npm-bundled binary (e.g. scip-typescript shipped as an npm dep).
|
|
106
|
+
* Checks node_modules/.bin relative to the Lore package root.
|
|
107
|
+
*/
|
|
108
|
+
function resolveNpmBundledBinary(command) {
|
|
109
|
+
// Lore package root is two levels up from dist/scip/
|
|
110
|
+
const candidates = [
|
|
111
|
+
join(dirname(new URL(import.meta.url).pathname), '..', '..', 'node_modules', '.bin', command),
|
|
112
|
+
];
|
|
113
|
+
for (const candidate of candidates) {
|
|
114
|
+
if (isExecutable(candidate))
|
|
115
|
+
return candidate;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
100
119
|
function resolveExecutableOnPath(command, env = process.env) {
|
|
101
120
|
if (!command.trim())
|
|
102
121
|
return null;
|
|
103
122
|
if (command.includes('/') || command.includes('\\') || isAbsolute(command)) {
|
|
104
123
|
return isExecutable(command) ? command : null;
|
|
105
124
|
}
|
|
125
|
+
// 1. Check Lore managed bin directory (~/.lore/bin/)
|
|
126
|
+
const loreBin = join(getLoreBinDir(), command);
|
|
127
|
+
if (isExecutable(loreBin))
|
|
128
|
+
return loreBin;
|
|
129
|
+
// 2. Check npm-bundled binaries (node_modules/.bin/)
|
|
130
|
+
const npmBin = resolveNpmBundledBinary(command);
|
|
131
|
+
if (npmBin)
|
|
132
|
+
return npmBin;
|
|
133
|
+
// 3. Check system PATH
|
|
106
134
|
const pathValue = env.PATH ?? '';
|
|
107
135
|
if (!pathValue)
|
|
108
136
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/scip/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/server/server.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* lore_blame — git blame metadata for file lines
|
|
17
17
|
* lore_metrics — aggregate code metrics
|
|
18
18
|
* lore_history — git commit history queries
|
|
19
|
+
* lore_diff — exported symbol diff between branches
|
|
19
20
|
*
|
|
20
21
|
* Standalone usage:
|
|
21
22
|
* node dist/lore-server/server.js --db <path-to-lore.db>
|
|
@@ -41,10 +42,5 @@ export interface LoreServerOptions {
|
|
|
41
42
|
* @param embedder Optional live embedding provider for semantic/fused search.
|
|
42
43
|
* @param options Optional server configuration (e.g. search observer).
|
|
43
44
|
*/
|
|
44
|
-
export declare function createLoreMcpServer(db: Database.Database, dbPath: string, embedder?: EmbeddingProvider, options?: LoreServerOptions): McpServer
|
|
45
|
-
/**
|
|
46
|
-
* Async version of `createLoreMcpServer` that properly awaits dynamic tool
|
|
47
|
-
* module imports. Preferred for new call-sites.
|
|
48
|
-
*/
|
|
49
|
-
export declare function createLoreMcpServerAsync(db: Database.Database, dbPath: string, embedder?: EmbeddingProvider, options?: LoreServerOptions): Promise<McpServer>;
|
|
45
|
+
export declare function createLoreMcpServer(db: Database.Database, dbPath: string, embedder?: EmbeddingProvider, options?: LoreServerOptions): Promise<McpServer>;
|
|
50
46
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAEL,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,qEAAqE;IACrE,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAID;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,SAAS,CAAC,CAYpB"}
|
package/dist/server/server.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* lore_blame — git blame metadata for file lines
|
|
17
17
|
* lore_metrics — aggregate code metrics
|
|
18
18
|
* lore_history — git commit history queries
|
|
19
|
+
* lore_diff — exported symbol diff between branches
|
|
19
20
|
*
|
|
20
21
|
* Standalone usage:
|
|
21
22
|
* node dist/lore-server/server.js --db <path-to-lore.db>
|
|
@@ -24,22 +25,12 @@
|
|
|
24
25
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
25
26
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
26
27
|
import { fileURLToPath } from 'url';
|
|
28
|
+
import { realpathSync } from 'fs';
|
|
27
29
|
import { openReadOnly, } from '../db/read-only.js';
|
|
28
30
|
import { getLoreMeta } from '../db/schema.js';
|
|
29
31
|
import { LazyEmbeddingProvider } from '../embeddings/embedder.js';
|
|
30
32
|
import { getLogger } from '../logger.js';
|
|
31
33
|
import { buildToolModules, registerTools } from './tool-registry.js';
|
|
32
|
-
import * as lookup from './tools/lookup.js';
|
|
33
|
-
import * as graph from './tools/graph.js';
|
|
34
|
-
import * as search from './tools/search.js';
|
|
35
|
-
import * as docsMod from './tools/docs.js';
|
|
36
|
-
import * as routes from './tools/routes.js';
|
|
37
|
-
import * as notes from './tools/notes.js';
|
|
38
|
-
import * as testMap from './tools/test-map.js';
|
|
39
|
-
import * as snippet from './tools/snippet.js';
|
|
40
|
-
import * as blame from './tools/blame.js';
|
|
41
|
-
import * as metrics from './tools/metrics.js';
|
|
42
|
-
import * as history from './tools/history.js';
|
|
43
34
|
// ─── Server factory ───────────────────────────────────────────────────────────
|
|
44
35
|
/**
|
|
45
36
|
* Create and return a fully-configured `McpServer` with all Lore tools registered.
|
|
@@ -49,55 +40,13 @@ import * as history from './tools/history.js';
|
|
|
49
40
|
* @param embedder Optional live embedding provider for semantic/fused search.
|
|
50
41
|
* @param options Optional server configuration (e.g. search observer).
|
|
51
42
|
*/
|
|
52
|
-
export function createLoreMcpServer(db, dbPath, embedder, options) {
|
|
53
|
-
const log = options?.logger ?? getLogger();
|
|
54
|
-
const server = new McpServer({ name: 'lore-server', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
55
|
-
// The tool modules are built synchronously from eagerly-imported tool files
|
|
56
|
-
// at startup, then registered via the data-driven registry loop.
|
|
57
|
-
// NOTE: `buildToolModules()` is async but only because it uses dynamic
|
|
58
|
-
// imports. The synchronous variant `createLoreMcpServerAsync()` should be
|
|
59
|
-
// preferred for new code. For backward-compat we register eagerly here
|
|
60
|
-
// using a self-invoking async helper that blocks the server from being
|
|
61
|
-
// ready until registration completes.
|
|
62
|
-
//
|
|
63
|
-
// However, McpServer.tool() is synchronous, so we need to register modules
|
|
64
|
-
// synchronously. We import tool modules eagerly at module scope instead.
|
|
65
|
-
const toolModules = buildToolModulesSync();
|
|
66
|
-
registerTools(server, toolModules, { db, dbPath, embedder, searchObserver: options?.searchObserver, logger: log });
|
|
67
|
-
return server;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Async version of `createLoreMcpServer` that properly awaits dynamic tool
|
|
71
|
-
* module imports. Preferred for new call-sites.
|
|
72
|
-
*/
|
|
73
|
-
export async function createLoreMcpServerAsync(db, dbPath, embedder, options) {
|
|
43
|
+
export async function createLoreMcpServer(db, dbPath, embedder, options) {
|
|
74
44
|
const log = options?.logger ?? getLogger();
|
|
75
45
|
const server = new McpServer({ name: 'lore-server', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
76
46
|
const toolModules = await buildToolModules();
|
|
77
47
|
registerTools(server, toolModules, { db, dbPath, embedder, searchObserver: options?.searchObserver, logger: log });
|
|
78
48
|
return server;
|
|
79
49
|
}
|
|
80
|
-
// ─── Synchronous tool module builder ──────────────────────────────────────────
|
|
81
|
-
/**
|
|
82
|
-
* Eagerly import all tool modules and build the registration list.
|
|
83
|
-
* Used by the synchronous `createLoreMcpServer()` for backward compatibility.
|
|
84
|
-
*/
|
|
85
|
-
function buildToolModulesSync() {
|
|
86
|
-
return [
|
|
87
|
-
{ def: lookup.toolDef, handlerFactory: (deps) => (args) => lookup.handler(deps.db, args, deps.embedder) },
|
|
88
|
-
{ def: graph.toolDef, handlerFactory: (deps) => (args) => graph.handler(deps.db, args) },
|
|
89
|
-
{ def: search.toolDef, handlerFactory: (deps) => (args) => search.handler(deps.db, args, deps.embedder, deps.searchObserver) },
|
|
90
|
-
{ def: docsMod.toolDef, handlerFactory: (deps) => (args) => docsMod.handler(deps.db, args, deps.embedder) },
|
|
91
|
-
{ def: routes.toolDef, handlerFactory: (deps) => (args) => routes.handler(deps.db, args) },
|
|
92
|
-
{ def: notes.writeToolDef, handlerFactory: (deps) => (args) => notes.writeHandler(deps.dbPath, args) },
|
|
93
|
-
{ def: notes.readToolDef, handlerFactory: (deps) => (args) => notes.readHandler(deps.db, args) },
|
|
94
|
-
{ def: testMap.toolDef, handlerFactory: (deps) => (args) => testMap.handler(deps.db, args) },
|
|
95
|
-
{ def: snippet.toolDef, handlerFactory: (deps) => (args) => snippet.handler(deps.db, args) },
|
|
96
|
-
{ def: blame.toolDef, handlerFactory: (deps) => (args) => blame.handler(deps.db, args) },
|
|
97
|
-
{ def: metrics.toolDef, handlerFactory: (deps) => (args) => metrics.handler(deps.db, args ?? {}) },
|
|
98
|
-
{ def: history.toolDef, handlerFactory: (deps) => (args) => history.handler(deps.db, args, deps.embedder) },
|
|
99
|
-
];
|
|
100
|
-
}
|
|
101
50
|
// ─── Embedding helper ─────────────────────────────────────────────────────────
|
|
102
51
|
/**
|
|
103
52
|
* Read the embedding model stored in `lore_meta` at index time and create a
|
|
@@ -127,7 +76,7 @@ async function main() {
|
|
|
127
76
|
const { dbPath } = parseArgs();
|
|
128
77
|
const db = openReadOnly(dbPath);
|
|
129
78
|
const embedder = await buildEmbedder(db);
|
|
130
|
-
const server = createLoreMcpServer(db, dbPath, embedder);
|
|
79
|
+
const server = await createLoreMcpServer(db, dbPath, embedder);
|
|
131
80
|
// Connect via stdio transport (standalone/debug mode).
|
|
132
81
|
const transport = new StdioServerTransport();
|
|
133
82
|
await server.connect(transport);
|
|
@@ -135,7 +84,8 @@ async function main() {
|
|
|
135
84
|
process.stderr.write('READY\n');
|
|
136
85
|
}
|
|
137
86
|
// Only run when executed as a standalone script, not when imported as a module.
|
|
138
|
-
|
|
87
|
+
// Use realpathSync to handle macOS /var → /private/var symlink.
|
|
88
|
+
if (process.argv[1] && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url))) {
|
|
139
89
|
main().catch((err) => {
|
|
140
90
|
console.error('Lore server fatal error:', err);
|
|
141
91
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* ## ToolModule contract
|
|
10
10
|
*
|
|
11
11
|
* Every tool file must export **at least**:
|
|
12
|
-
* - `toolDef`
|
|
13
|
-
* - `handler(db, args, ...)`
|
|
12
|
+
* - `toolDef` containing `name`, `description`, and `inputSchema`
|
|
13
|
+
* - `handler(db, args, ...)`
|
|
14
14
|
*
|
|
15
15
|
* The registry iterates over a list of declared `ToolModule` descriptors and
|
|
16
16
|
* calls `server.tool()` for each, using a standard `loggedHandler` wrapper.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/server/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAK,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/server/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAK,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD;;;;;;;GAOG;AAEH,2DAA2D;AAC3D,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8DAA8D;AAC9D,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,eAAe,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,cAAc,CAAC;IACpB;;;OAGG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvF;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC;CACpB;AAgDD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBtF;AAsDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EAAE,EACrB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAWN;AAID;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CA4F9D"}
|