codesearch-mcp 0.2.2-alpha → 0.3.0-alpha
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/CHANGELOG.md +65 -1
- package/README.md +60 -33
- package/dist/app.js +46 -22
- package/dist/src/chunking/AstChunker.d.ts +12 -0
- package/dist/src/chunking/AstChunker.js +30 -0
- package/dist/src/chunking/CharacterChunkStrategy.d.ts +8 -0
- package/dist/src/chunking/CharacterChunkStrategy.js +15 -0
- package/dist/src/chunking/DeclarationChunkStrategy.d.ts +15 -0
- package/dist/src/chunking/DeclarationChunkStrategy.js +87 -0
- package/dist/src/chunking/FragmentMerger.d.ts +11 -0
- package/dist/src/chunking/FragmentMerger.js +61 -0
- package/dist/src/chunking/ImportOnlyFilter.d.ts +5 -0
- package/dist/src/chunking/ImportOnlyFilter.js +14 -0
- package/dist/src/chunking/LangchainTextSplitter.d.ts +21 -0
- package/dist/src/chunking/LangchainTextSplitter.js +133 -0
- package/dist/src/chunking/MinSizeSplitPolicy.d.ts +9 -0
- package/dist/src/chunking/MinSizeSplitPolicy.js +18 -0
- package/dist/src/chunking/RunPacker.d.ts +12 -0
- package/dist/src/chunking/RunPacker.js +84 -0
- package/dist/src/chunking/create-chunker.d.ts +3 -0
- package/dist/src/chunking/create-chunker.js +15 -0
- package/dist/src/chunking/interfaces.d.ts +27 -0
- package/dist/src/chunking/interfaces.js +2 -0
- package/dist/src/commands/ConfigCommand.js +1 -9
- package/dist/src/commands/EvalCommand.d.ts +11 -0
- package/dist/src/commands/EvalCommand.js +264 -0
- package/dist/src/commands/IndexCommand.js +70 -66
- package/dist/src/commands/McpCommand.js +2 -8
- package/dist/src/commands/WebCommand.js +2 -5
- package/dist/src/config-error.d.ts +0 -4
- package/dist/src/config-error.js +0 -4
- package/dist/src/config-store.d.ts +1 -54
- package/dist/src/config-store.js +8 -69
- package/dist/src/config.d.ts +8 -17
- package/dist/src/config.js +35 -34
- package/dist/src/constants.d.ts +2 -28
- package/dist/src/constants.js +6 -28
- package/dist/src/container.d.ts +6 -0
- package/dist/src/container.js +12 -3
- package/dist/src/db/index.d.ts +1 -1
- package/dist/src/db/index.js +1 -2
- package/dist/src/db/schema.d.ts +22 -29
- package/dist/src/db/schema.js +3 -14
- package/dist/src/declarations/DeclarationTree.d.ts +19 -0
- package/dist/src/declarations/DeclarationTree.js +66 -0
- package/dist/src/declarations/DeclarationTreeBuilder.d.ts +22 -0
- package/dist/src/declarations/DeclarationTreeBuilder.js +179 -0
- package/dist/src/declarations/SourceLines.d.ts +37 -0
- package/dist/src/declarations/SourceLines.js +415 -0
- package/dist/src/dependency-traversal.d.ts +10 -0
- package/dist/src/dependency-traversal.js +39 -0
- package/dist/src/enriched-prompt.d.ts +0 -5
- package/dist/src/enriched-prompt.js +0 -5
- package/dist/src/error-record.d.ts +12 -0
- package/dist/src/error-record.js +248 -0
- package/dist/src/eval-corpus.d.ts +16 -0
- package/dist/src/eval-corpus.js +169 -0
- package/dist/src/eval-results.d.ts +15 -0
- package/dist/src/eval-results.js +397 -0
- package/dist/src/file-utils.d.ts +10 -0
- package/dist/src/file-utils.js +19 -1
- package/dist/src/graph.d.ts +0 -25
- package/dist/src/graph.js +0 -28
- package/dist/src/help.js +4 -1
- package/dist/src/hnsw-settings.d.ts +3 -0
- package/dist/src/hnsw-settings.js +24 -0
- package/dist/src/interfaces/IAstParser.d.ts +5 -30
- package/dist/src/interfaces/IChunker.d.ts +3 -12
- package/dist/src/interfaces/ICorpusInspector.d.ts +7 -0
- package/dist/src/interfaces/ICorpusInspector.js +2 -0
- package/dist/src/interfaces/IDatabase.d.ts +2 -36
- package/dist/src/interfaces/IEmbedder.d.ts +0 -9
- package/dist/src/interfaces/ILogger.d.ts +1 -11
- package/dist/src/interfaces/IMcpToolHandler.d.ts +0 -5
- package/dist/src/interfaces/IMonorepoResolver.d.ts +0 -22
- package/dist/src/interfaces/IProjectDiscovery.d.ts +0 -17
- package/dist/src/interfaces/IRetrievalEvaluator.d.ts +216 -0
- package/dist/src/interfaces/IRetrievalEvaluator.js +2 -0
- package/dist/src/interfaces/ISearcher.d.ts +26 -20
- package/dist/src/interfaces/index.d.ts +1 -0
- package/dist/src/interrupt.js +0 -2
- package/dist/src/owner-path.d.ts +9 -10
- package/dist/src/owner-path.js +11 -23
- package/dist/src/project-scope.d.ts +7 -0
- package/dist/src/project-scope.js +37 -0
- package/dist/src/project-selector.d.ts +1 -0
- package/dist/src/project-selector.js +13 -6
- package/dist/src/retrieval-eval.d.ts +24 -0
- package/dist/src/retrieval-eval.js +500 -0
- package/dist/src/search/result-shaping.d.ts +4 -0
- package/dist/src/search/result-shaping.js +19 -0
- package/dist/src/services/AstParserService.d.ts +28 -23
- package/dist/src/services/AstParserService.js +391 -98
- package/dist/src/services/DatabaseService.d.ts +2 -19
- package/dist/src/services/DatabaseService.js +44 -81
- package/dist/src/services/EmbedderFactory.d.ts +0 -4
- package/dist/src/services/EmbedderFactory.js +0 -5
- package/dist/src/services/IndexerService.d.ts +2 -10
- package/dist/src/services/IndexerService.js +29 -45
- package/dist/src/services/InfinityEmbedder.d.ts +0 -21
- package/dist/src/services/InfinityEmbedder.js +0 -15
- package/dist/src/services/LoggerService.d.ts +7 -5
- package/dist/src/services/LoggerService.js +37 -41
- package/dist/src/services/McpServer.d.ts +25 -10
- package/dist/src/services/McpServer.js +101 -64
- package/dist/src/services/MonorepoAwareDiscoveryService.d.ts +1 -45
- package/dist/src/services/MonorepoAwareDiscoveryService.js +1 -51
- package/dist/src/services/NxMonorepoResolver.d.ts +0 -29
- package/dist/src/services/NxMonorepoResolver.js +5 -56
- package/dist/src/services/OpenAICompatibleEmbedder.d.ts +0 -6
- package/dist/src/services/OpenAICompatibleEmbedder.js +1 -14
- package/dist/src/services/ProjectDiscoveryService.d.ts +0 -4
- package/dist/src/services/ProjectDiscoveryService.js +0 -4
- package/dist/src/services/SearcherService.d.ts +127 -70
- package/dist/src/services/SearcherService.js +526 -305
- package/dist/src/services/VoyageEmbedder.d.ts +0 -6
- package/dist/src/services/VoyageEmbedder.js +0 -6
- package/dist/src/services/WebServerService.d.ts +1 -53
- package/dist/src/services/WebServerService.js +11 -57
- package/dist/src/services/http-retry.d.ts +0 -7
- package/dist/src/services/http-retry.js +1 -10
- package/dist/src/services/infinity-provisioning.d.ts +0 -74
- package/dist/src/services/infinity-provisioning.js +5 -88
- package/dist/src/services/legacy-ollama-index.d.ts +0 -16
- package/dist/src/services/legacy-ollama-index.js +0 -23
- package/dist/src/services/reranker.d.ts +0 -9
- package/dist/src/services/reranker.js +46 -12
- package/dist/src/setup.d.ts +11 -23
- package/dist/src/setup.js +98 -71
- package/dist/src/symbol-name.d.ts +0 -12
- package/dist/src/symbol-name.js +0 -13
- package/dist/src/symbol-rows.d.ts +2 -11
- package/dist/src/symbol-rows.js +5 -13
- package/dist/src/tool-call-log.d.ts +2 -0
- package/dist/src/tool-call-log.js +24 -0
- package/dist/src/tools/FindSymbolTool.js +14 -5
- package/dist/src/tools/GetCallersTool.d.ts +3 -1
- package/dist/src/tools/GetCallersTool.js +16 -6
- package/dist/src/tools/GetDependenciesTool.d.ts +3 -1
- package/dist/src/tools/GetDependenciesTool.js +15 -8
- package/dist/src/tools/GetDependentsTool.d.ts +3 -1
- package/dist/src/tools/GetDependentsTool.js +31 -16
- package/dist/src/tools/ListFilesTool.d.ts +3 -1
- package/dist/src/tools/ListFilesTool.js +14 -12
- package/dist/src/tools/ListProjectsTool.js +5 -1
- package/dist/src/tools/ReadFileRangeTool.d.ts +3 -1
- package/dist/src/tools/ReadFileRangeTool.js +12 -11
- package/dist/src/tools/ReadFileTool.d.ts +3 -1
- package/dist/src/tools/ReadFileTool.js +12 -10
- package/dist/src/tools/SearchCodebaseTool.js +7 -2
- package/dist/src/tools/format-helpers.d.ts +10 -1
- package/dist/src/tools/format-helpers.js +145 -8
- package/dist/src/web/dashboard.d.ts +0 -8
- package/dist/src/web/dashboard.js +7 -10
- package/package.json +10 -9
- package/dist/src/services/AstChunker.d.ts +0 -42
- package/dist/src/services/AstChunker.js +0 -158
- package/docs/web-dashboard.md +0 -206
package/dist/src/config-store.js
CHANGED
|
@@ -54,11 +54,7 @@ exports.CONFIG_DIR = path.join(os.homedir(), '.config', 'codesearch-mcp');
|
|
|
54
54
|
exports.CONFIG_FILE = path.join(exports.CONFIG_DIR, 'config.json');
|
|
55
55
|
exports.SCHEMA_FILE = path.join(exports.CONFIG_DIR, 'config.schema.json');
|
|
56
56
|
exports.ENV_FILE = path.join(exports.CONFIG_DIR, '.env');
|
|
57
|
-
// Relative $schema reference written into config.json so editors resolve the
|
|
58
|
-
// sibling schema file for autocomplete / inline validation.
|
|
59
57
|
const SCHEMA_REF = './config.schema.json';
|
|
60
|
-
// All fields optional — defaults live in config.ts. The file stays minimal.
|
|
61
|
-
// Descriptions surface as tooltips in schema-aware editors (VS Code, JetBrains).
|
|
62
58
|
const jsonSchema = zod_1.z.object({
|
|
63
59
|
db: zod_1.z.object({
|
|
64
60
|
host: zod_1.z.string().describe('PostgreSQL host').optional(),
|
|
@@ -88,11 +84,11 @@ const jsonSchema = zod_1.z.object({
|
|
|
88
84
|
maxLimit: zod_1.z.number().int().describe('Hard cap on results (default 20)').optional(),
|
|
89
85
|
}).optional(),
|
|
90
86
|
reranker: zod_1.z.object({
|
|
91
|
-
enabled: zod_1.z.boolean().describe('Enable cross-encoder reranking
|
|
92
|
-
provider: zod_1.z.enum(['openai-compatible']).describe('Rerank backend
|
|
93
|
-
baseURL: zod_1.z.string().describe('Rerank server base URL (
|
|
94
|
-
apiKey: zod_1.z.string().describe('API key, or env:VAR_NAME. Empty for local servers.').optional(),
|
|
95
|
-
model: zod_1.z.string().describe('Reranker model name (
|
|
87
|
+
enabled: zod_1.z.boolean().describe('Enable cross-encoder reranking (default true with infinity embedding or when reranker.provider/baseURL/url is set, else false)').optional(),
|
|
88
|
+
provider: zod_1.z.enum(['openai-compatible', 'voyage']).describe('Rerank backend: openai-compatible /rerank servers (Infinity, vLLM) or voyage (Voyage AI, requires reranker.apiKey) (default openai-compatible)').optional(),
|
|
89
|
+
baseURL: zod_1.z.string().describe('Rerank server base URL (default embedding.baseURL for openai-compatible — Infinity serves both; https://api.voyageai.com/v1 for voyage)').optional(),
|
|
90
|
+
apiKey: zod_1.z.string().describe('API key, or env:VAR_NAME. Empty for local servers; required for voyage.').optional(),
|
|
91
|
+
model: zod_1.z.string().describe('Reranker model name (default mixedbread-ai/mxbai-rerank-xsmall-v1 for openai-compatible, rerank-3 for voyage)').optional(),
|
|
96
92
|
url: zod_1.z.string().describe('Full URL of the rerank endpoint (default derived from provider + baseURL)').optional(),
|
|
97
93
|
overfetch: zod_1.z.number().int().min(1).max(20).describe('Candidate multiplier before reranking (limit × N, default 5)').optional(),
|
|
98
94
|
candidateFloor: zod_1.z.number().int().min(1).describe('Minimum candidate pool fed to the reranker regardless of limit; fetchLimit = min(max(limit × overfetch, candidateFloor), 200) (default 80)').optional(),
|
|
@@ -100,7 +96,6 @@ const jsonSchema = zod_1.z.object({
|
|
|
100
96
|
logging: zod_1.z.object({
|
|
101
97
|
level: zod_1.z.enum(['debug', 'info', 'warn', 'error']).describe('File log level (default error)').optional(),
|
|
102
98
|
dir: zod_1.z.string().describe('Base log directory; "false" to disable file logging').optional(),
|
|
103
|
-
searchMetrics: zod_1.z.boolean().describe('Emit one structured search-tuning line (info level) per search, independent of level (default false)').optional(),
|
|
104
99
|
}).optional(),
|
|
105
100
|
workspaceRoot: zod_1.z.string().describe('Full path to the directory containing all your projects').optional(),
|
|
106
101
|
});
|
|
@@ -134,22 +129,9 @@ const FIELD_TYPES = {
|
|
|
134
129
|
'reranker.candidateFloor': 'number',
|
|
135
130
|
'logging.level': 'string',
|
|
136
131
|
'logging.dir': 'string',
|
|
137
|
-
'logging.searchMetrics': 'boolean',
|
|
138
132
|
'workspaceRoot': 'string',
|
|
139
133
|
};
|
|
140
134
|
exports.ALL_KEYS = Object.keys(FIELD_TYPES);
|
|
141
|
-
/**
|
|
142
|
-
* Single source of truth for built-in defaults, keyed by raw config.json dotted
|
|
143
|
-
* key. Consumed both by the web dashboard (`GET /api/defaults`) and by
|
|
144
|
-
* `resolvedSchema` in `src/config.ts`, whose `.default(...)` calls reference
|
|
145
|
-
* these values — so the runtime default and the dashboard-displayed default
|
|
146
|
-
* cannot diverge. `as const` keeps the literal types so those `.default()`
|
|
147
|
-
* lookups stay type-safe. Keys omitted here have no static default: required
|
|
148
|
-
* fields (db.host/user/password) and values derived at runtime — db.name →
|
|
149
|
-
* rag_<user>, and the provider-dependent URLs (embedding.baseURL,
|
|
150
|
-
* reranker.baseURL, reranker.url), which are computed in the `Config`
|
|
151
|
-
* constructor per provider rather than through a schema `.default(...)`.
|
|
152
|
-
*/
|
|
153
135
|
exports.CONFIG_DEFAULTS = {
|
|
154
136
|
'db.port': 5433,
|
|
155
137
|
'embedding.provider': 'infinity',
|
|
@@ -171,7 +153,6 @@ exports.CONFIG_DEFAULTS = {
|
|
|
171
153
|
'reranker.overfetch': 5,
|
|
172
154
|
'reranker.candidateFloor': 80,
|
|
173
155
|
'logging.level': 'error',
|
|
174
|
-
'logging.searchMetrics': false,
|
|
175
156
|
};
|
|
176
157
|
function readConfigJson() {
|
|
177
158
|
if (!fs.existsSync(exports.CONFIG_FILE))
|
|
@@ -181,7 +162,7 @@ function readConfigJson() {
|
|
|
181
162
|
raw = fs.readFileSync(exports.CONFIG_FILE, 'utf-8');
|
|
182
163
|
}
|
|
183
164
|
catch (e) {
|
|
184
|
-
throw new Error(`Cannot read ${exports.CONFIG_FILE}: ${e.message}
|
|
165
|
+
throw new Error(`Cannot read ${exports.CONFIG_FILE}: ${e.message}`, { cause: e });
|
|
185
166
|
}
|
|
186
167
|
let parsed;
|
|
187
168
|
try {
|
|
@@ -189,7 +170,7 @@ function readConfigJson() {
|
|
|
189
170
|
}
|
|
190
171
|
catch (e) {
|
|
191
172
|
throw new Error(`Invalid JSON in ${exports.CONFIG_FILE}: ${e.message}\n` +
|
|
192
|
-
`Fix the file manually or delete it and run: rag-setup
|
|
173
|
+
`Fix the file manually or delete it and run: rag-setup`, { cause: e });
|
|
193
174
|
}
|
|
194
175
|
return parseConfig(parsed, exports.CONFIG_FILE);
|
|
195
176
|
}
|
|
@@ -198,19 +179,9 @@ const OLLAMA_MIGRATION_REMEDY = 'The "ollama" embedding provider has been remove
|
|
|
198
179
|
'and embedding.baseURL to "http://localhost:11434/v1" — via `rag-config edit` (or by ' +
|
|
199
180
|
'editing the config file directly) or by re-running `rag-setup`. After switching, rebuild ' +
|
|
200
181
|
'the index with `rag-index --reindex`.';
|
|
201
|
-
/** Strip a trailing `:tag` (Docker-style) from a model name, if present. */
|
|
202
182
|
function stripModelTag(model) {
|
|
203
183
|
return model.replace(/:[^:]*$/, '');
|
|
204
184
|
}
|
|
205
|
-
/**
|
|
206
|
-
* Detect a raw (pre-migration) config object that still selects the removed
|
|
207
|
-
* `ollama` embedding provider — explicitly, via a legacy top-level `ollama`
|
|
208
|
-
* block, or implicitly (no `provider` set, but `baseURL`/`model` point at
|
|
209
|
-
* Ollama's defaults) — and throw a `ConfigError` with migration guidance
|
|
210
|
-
* instead of letting it validate under a silently reinterpreted provider.
|
|
211
|
-
* Runs before `migrateRawConfig` so a legacy `ollama.*` block is never
|
|
212
|
-
* converted into an `embedding` block first. Pure — never mutates `raw`.
|
|
213
|
-
*/
|
|
214
185
|
function detectFormerOllamaConfig(raw) {
|
|
215
186
|
if (raw == null || typeof raw !== 'object')
|
|
216
187
|
return;
|
|
@@ -227,7 +198,7 @@ function detectFormerOllamaConfig(raw) {
|
|
|
227
198
|
try {
|
|
228
199
|
port = new URL(e.baseURL).port;
|
|
229
200
|
}
|
|
230
|
-
catch {
|
|
201
|
+
catch { }
|
|
231
202
|
if (port === '11434') {
|
|
232
203
|
throw new config_error_1.ConfigError(`Config's embedding.baseURL targets Ollama's default port (11434) with no embedding.provider set. ${OLLAMA_MIGRATION_REMEDY}`);
|
|
233
204
|
}
|
|
@@ -242,21 +213,6 @@ function detectFormerOllamaConfig(raw) {
|
|
|
242
213
|
throw new config_error_1.ConfigError(`Config has a legacy "ollama" configuration block. ${OLLAMA_MIGRATION_REMEDY}`);
|
|
243
214
|
}
|
|
244
215
|
}
|
|
245
|
-
/**
|
|
246
|
-
* Migrate a legacy raw config object to the current shape, in place of a
|
|
247
|
-
* versioned migration system. Pure — returns a new object, never mutates input.
|
|
248
|
-
*
|
|
249
|
-
* - Removed translation keys (`search.autoTranslate`, `search.translateModel`)
|
|
250
|
-
* are dropped so they neither validate-fail nor take effect.
|
|
251
|
-
* - Legacy `reranker.provider: 'ollama'` (a dead value — Ollama has no rerank
|
|
252
|
-
* API) is rewritten to `openai-compatible`, and a stale `/api/rerank` URL is
|
|
253
|
-
* dropped so it re-derives to `/rerank`. Otherwise the tightened enum would
|
|
254
|
-
* fail validation on existing configs and lock the user out.
|
|
255
|
-
*
|
|
256
|
-
* A legacy top-level `ollama` block reaches here only when `detectFormerOllamaConfig`
|
|
257
|
-
* did not already reject it (i.e. an `embedding` block is also present); it is
|
|
258
|
-
* dropped rather than merged. Exported for unit testing.
|
|
259
|
-
*/
|
|
260
216
|
function migrateRawConfig(raw) {
|
|
261
217
|
if (raw == null || typeof raw !== 'object')
|
|
262
218
|
return raw;
|
|
@@ -274,16 +230,6 @@ function migrateRawConfig(raw) {
|
|
|
274
230
|
}
|
|
275
231
|
return obj;
|
|
276
232
|
}
|
|
277
|
-
/**
|
|
278
|
-
* Validate a raw (pre-migration) config object against the Zod schema: first
|
|
279
|
-
* `detectFormerOllamaConfig` (a `ConfigError` on a former-Ollama config takes
|
|
280
|
-
* priority over both migration and the regular Zod enum rejection), then
|
|
281
|
-
* `migrateRawConfig`, then the schema itself. Unknown keys (e.g. the "$schema"
|
|
282
|
-
* editor reference) are stripped. Throws with a caller-friendly message on
|
|
283
|
-
* validation failure. The single entry point for both `readConfigJson` and
|
|
284
|
-
* `PUT /api/config`, so both apply identical rules with an identical message.
|
|
285
|
-
* Pure — no file I/O.
|
|
286
|
-
*/
|
|
287
233
|
function parseConfig(raw, source = exports.CONFIG_FILE) {
|
|
288
234
|
detectFormerOllamaConfig(raw);
|
|
289
235
|
const migrated = migrateRawConfig(raw);
|
|
@@ -295,7 +241,6 @@ function parseConfig(raw, source = exports.CONFIG_FILE) {
|
|
|
295
241
|
}
|
|
296
242
|
return result.data;
|
|
297
243
|
}
|
|
298
|
-
/** Build the JSON Schema object generated from the Zod config schema. Pure. */
|
|
299
244
|
function buildJsonSchema() {
|
|
300
245
|
return {
|
|
301
246
|
$id: 'https://github.com/oleksandr-antoniuk/RAG/config.schema.json',
|
|
@@ -306,15 +251,9 @@ function buildJsonSchema() {
|
|
|
306
251
|
function writeConfigJson(data) {
|
|
307
252
|
fs.mkdirSync(exports.CONFIG_DIR, { recursive: true });
|
|
308
253
|
writeSchemaFile();
|
|
309
|
-
// $schema first so editors pick it up; readConfigJson strips it on validation.
|
|
310
254
|
const withSchema = { $schema: SCHEMA_REF, ...data };
|
|
311
255
|
fs.writeFileSync(exports.CONFIG_FILE, JSON.stringify(withSchema, null, 2) + '\n', { mode: 0o600 });
|
|
312
256
|
}
|
|
313
|
-
/**
|
|
314
|
-
* Generate a JSON Schema from the Zod config schema and write it next to
|
|
315
|
-
* config.json. Editors resolve it via the "$schema" reference and provide
|
|
316
|
-
* key autocomplete, type hints, and inline validation while editing.
|
|
317
|
-
*/
|
|
318
257
|
function writeSchemaFile() {
|
|
319
258
|
fs.mkdirSync(exports.CONFIG_DIR, { recursive: true });
|
|
320
259
|
fs.writeFileSync(exports.SCHEMA_FILE, JSON.stringify(buildJsonSchema(), null, 2) + '\n');
|
package/dist/src/config.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
+
import { type JsonConfig } from './config-store';
|
|
1
2
|
import { ConfigError } from './config-error';
|
|
2
3
|
export { ConfigError };
|
|
3
|
-
/**
|
|
4
|
-
* Resolve a config value that may reference an environment variable. A value of
|
|
5
|
-
* the form `env:VAR_NAME` resolves to `process.env.VAR_NAME`; any other string
|
|
6
|
-
* (including empty) is returned verbatim. A referenced-but-unset variable throws
|
|
7
|
-
* a clear error naming the variable and the `.env` file. Pure aside from the
|
|
8
|
-
* injected env map. See `src/app.ts` for how `.env` is loaded into the process.
|
|
9
|
-
*/
|
|
10
4
|
export declare function resolveEnvRef(value: string, env?: NodeJS.ProcessEnv): string;
|
|
5
|
+
export declare function rerankContext(raw: JsonConfig): {
|
|
6
|
+
wanted: boolean;
|
|
7
|
+
missingKey: boolean;
|
|
8
|
+
model: string;
|
|
9
|
+
};
|
|
11
10
|
export declare class Config {
|
|
12
11
|
private readonly data;
|
|
13
12
|
get db(): {
|
|
@@ -17,13 +16,6 @@ export declare class Config {
|
|
|
17
16
|
password: string;
|
|
18
17
|
database: string;
|
|
19
18
|
};
|
|
20
|
-
/**
|
|
21
|
-
* Embedding config. `apiKey` is returned **raw** (possibly an `env:VAR` ref) —
|
|
22
|
-
* callers resolve it lazily via `resolveEnvRef` at the moment they build a
|
|
23
|
-
* request, so an unset referenced variable fails only when the key is actually
|
|
24
|
-
* needed (during embed/search) rather than crashing container construction and
|
|
25
|
-
* locking the user out of `rag-web`/`rag-mcp`.
|
|
26
|
-
*/
|
|
27
19
|
get embedding(): {
|
|
28
20
|
provider: "openai-compatible" | "voyage" | "infinity";
|
|
29
21
|
baseURL: string;
|
|
@@ -32,14 +24,14 @@ export declare class Config {
|
|
|
32
24
|
dimensions: number | null;
|
|
33
25
|
batchSize: number;
|
|
34
26
|
};
|
|
35
|
-
/** Reranker config. `apiKey` is raw — resolve lazily with `resolveEnvRef`. */
|
|
36
27
|
get reranker(): {
|
|
37
28
|
enabled: boolean;
|
|
38
|
-
provider: "openai-compatible";
|
|
29
|
+
provider: "openai-compatible" | "voyage";
|
|
39
30
|
baseURL: string;
|
|
40
31
|
apiKey: string;
|
|
41
32
|
model: string;
|
|
42
33
|
url: string;
|
|
34
|
+
missingApiKey: boolean;
|
|
43
35
|
overfetch: number;
|
|
44
36
|
candidateFloor: number;
|
|
45
37
|
};
|
|
@@ -57,7 +49,6 @@ export declare class Config {
|
|
|
57
49
|
};
|
|
58
50
|
get logging(): {
|
|
59
51
|
level: "error" | "debug" | "info" | "warn";
|
|
60
|
-
searchMetrics: boolean;
|
|
61
52
|
dir?: string | undefined;
|
|
62
53
|
};
|
|
63
54
|
get workspaceRoot(): string;
|
package/dist/src/config.js
CHANGED
|
@@ -35,18 +35,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.Config = exports.ConfigError = void 0;
|
|
37
37
|
exports.resolveEnvRef = resolveEnvRef;
|
|
38
|
+
exports.rerankContext = rerankContext;
|
|
38
39
|
const os = __importStar(require("os"));
|
|
39
40
|
const zod_1 = require("zod");
|
|
40
41
|
const config_store_1 = require("./config-store");
|
|
42
|
+
const constants_1 = require("./constants");
|
|
41
43
|
const config_error_1 = require("./config-error");
|
|
42
44
|
Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return config_error_1.ConfigError; } });
|
|
43
|
-
/**
|
|
44
|
-
* Resolve a config value that may reference an environment variable. A value of
|
|
45
|
-
* the form `env:VAR_NAME` resolves to `process.env.VAR_NAME`; any other string
|
|
46
|
-
* (including empty) is returned verbatim. A referenced-but-unset variable throws
|
|
47
|
-
* a clear error naming the variable and the `.env` file. Pure aside from the
|
|
48
|
-
* injected env map. See `src/app.ts` for how `.env` is loaded into the process.
|
|
49
|
-
*/
|
|
50
45
|
function resolveEnvRef(value, env = process.env) {
|
|
51
46
|
if (!value.startsWith('env:'))
|
|
52
47
|
return value;
|
|
@@ -66,12 +61,19 @@ const DEFAULT_BASE_URLS = {
|
|
|
66
61
|
function defaultBaseURL(provider) {
|
|
67
62
|
return DEFAULT_BASE_URLS[provider] ?? DEFAULT_BASE_URLS.infinity;
|
|
68
63
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
64
|
+
function rerankContext(raw) {
|
|
65
|
+
const rr = raw.reranker;
|
|
66
|
+
const embProvider = raw.embedding?.provider ?? config_store_1.CONFIG_DEFAULTS['embedding.provider'];
|
|
67
|
+
const isVoyage = (rr?.provider ?? config_store_1.CONFIG_DEFAULTS['reranker.provider']) === 'voyage';
|
|
68
|
+
return {
|
|
69
|
+
wanted: embProvider === 'infinity' || rr?.provider != null || rr?.baseURL != null || rr?.url != null,
|
|
70
|
+
missingKey: isVoyage && !rr?.apiKey,
|
|
71
|
+
model: isVoyage ? constants_1.VOYAGE_RERANK_MODELS[0] : config_store_1.CONFIG_DEFAULTS['reranker.model'],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function deriveRerankUrl(provider, baseURL) {
|
|
75
|
+
const trimmed = baseURL.replace(/\/+$/, '');
|
|
76
|
+
const root = provider === 'voyage' ? trimmed : trimmed.replace(/\/(embeddings|v1)$/, '');
|
|
75
77
|
return `${root}/rerank`;
|
|
76
78
|
}
|
|
77
79
|
const resolvedSchema = zod_1.z.object({
|
|
@@ -91,12 +93,13 @@ const resolvedSchema = zod_1.z.object({
|
|
|
91
93
|
batchSize: zod_1.z.number().int().positive().default(config_store_1.CONFIG_DEFAULTS['embedding.batchSize']),
|
|
92
94
|
}),
|
|
93
95
|
reranker: zod_1.z.object({
|
|
94
|
-
enabled: zod_1.z.boolean()
|
|
95
|
-
provider: zod_1.z.enum(['openai-compatible']).default(config_store_1.CONFIG_DEFAULTS['reranker.provider']),
|
|
96
|
+
enabled: zod_1.z.boolean(),
|
|
97
|
+
provider: zod_1.z.enum(['openai-compatible', 'voyage']).default(config_store_1.CONFIG_DEFAULTS['reranker.provider']),
|
|
96
98
|
baseURL: zod_1.z.string().min(1),
|
|
97
99
|
apiKey: zod_1.z.string().default(config_store_1.CONFIG_DEFAULTS['reranker.apiKey']),
|
|
98
|
-
model: zod_1.z.string()
|
|
100
|
+
model: zod_1.z.string(),
|
|
99
101
|
url: zod_1.z.string().min(1),
|
|
102
|
+
missingApiKey: zod_1.z.boolean(),
|
|
100
103
|
overfetch: zod_1.z.number().int().min(1).max(20).default(config_store_1.CONFIG_DEFAULTS['reranker.overfetch']),
|
|
101
104
|
candidateFloor: zod_1.z.number().int().min(1).default(config_store_1.CONFIG_DEFAULTS['reranker.candidateFloor']),
|
|
102
105
|
}),
|
|
@@ -115,22 +118,13 @@ const resolvedSchema = zod_1.z.object({
|
|
|
115
118
|
logging: zod_1.z.object({
|
|
116
119
|
level: zod_1.z.enum(['debug', 'info', 'warn', 'error']).default(config_store_1.CONFIG_DEFAULTS['logging.level']),
|
|
117
120
|
dir: zod_1.z.string().optional(),
|
|
118
|
-
searchMetrics: zod_1.z.boolean().default(config_store_1.CONFIG_DEFAULTS['logging.searchMetrics']),
|
|
119
121
|
}),
|
|
120
122
|
workspaceRoot: zod_1.z.string().default(''),
|
|
121
123
|
});
|
|
122
124
|
class Config {
|
|
123
125
|
data;
|
|
124
126
|
get db() { return this.data.db; }
|
|
125
|
-
/**
|
|
126
|
-
* Embedding config. `apiKey` is returned **raw** (possibly an `env:VAR` ref) —
|
|
127
|
-
* callers resolve it lazily via `resolveEnvRef` at the moment they build a
|
|
128
|
-
* request, so an unset referenced variable fails only when the key is actually
|
|
129
|
-
* needed (during embed/search) rather than crashing container construction and
|
|
130
|
-
* locking the user out of `rag-web`/`rag-mcp`.
|
|
131
|
-
*/
|
|
132
127
|
get embedding() { return this.data.embedding; }
|
|
133
|
-
/** Reranker config. `apiKey` is raw — resolve lazily with `resolveEnvRef`. */
|
|
134
128
|
get reranker() { return this.data.reranker; }
|
|
135
129
|
get indexer() { return this.data.indexer; }
|
|
136
130
|
get search() { return this.data.search; }
|
|
@@ -142,8 +136,15 @@ class Config {
|
|
|
142
136
|
throw new config_error_1.ConfigError('Config not found. Run rag-setup.');
|
|
143
137
|
const embProvider = (raw.embedding?.provider ?? config_store_1.CONFIG_DEFAULTS['embedding.provider']);
|
|
144
138
|
const embBaseURL = raw.embedding?.baseURL ?? defaultBaseURL(embProvider);
|
|
145
|
-
const
|
|
146
|
-
const
|
|
139
|
+
const rr = raw.reranker;
|
|
140
|
+
const rerankProvider = (rr?.provider ?? config_store_1.CONFIG_DEFAULTS['reranker.provider']);
|
|
141
|
+
const isVoyageRerank = rerankProvider === 'voyage';
|
|
142
|
+
const rerankBaseURL = rr?.baseURL ?? (isVoyageRerank ? DEFAULT_BASE_URLS.voyage : embBaseURL);
|
|
143
|
+
const rerankUrl = rr?.url ?? deriveRerankUrl(rerankProvider, rerankBaseURL);
|
|
144
|
+
const rerankCtx = rerankContext(raw);
|
|
145
|
+
const rerankModel = rr?.model ?? rerankCtx.model;
|
|
146
|
+
const rerankWanted = rr?.enabled ?? rerankCtx.wanted;
|
|
147
|
+
const missingApiKey = rerankWanted && rerankCtx.missingKey;
|
|
147
148
|
const result = resolvedSchema.safeParse({
|
|
148
149
|
db: {
|
|
149
150
|
host: raw.db?.host,
|
|
@@ -161,14 +162,15 @@ class Config {
|
|
|
161
162
|
batchSize: raw.embedding?.batchSize,
|
|
162
163
|
},
|
|
163
164
|
reranker: {
|
|
164
|
-
enabled:
|
|
165
|
-
provider:
|
|
165
|
+
enabled: rerankWanted && !missingApiKey,
|
|
166
|
+
provider: rr?.provider,
|
|
166
167
|
baseURL: rerankBaseURL,
|
|
167
|
-
apiKey:
|
|
168
|
-
model:
|
|
168
|
+
apiKey: rr?.apiKey,
|
|
169
|
+
model: rerankModel,
|
|
169
170
|
url: rerankUrl,
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
missingApiKey,
|
|
172
|
+
overfetch: rr?.overfetch,
|
|
173
|
+
candidateFloor: rr?.candidateFloor,
|
|
172
174
|
},
|
|
173
175
|
indexer: {
|
|
174
176
|
chunkSize: raw.indexing?.chunkSize,
|
|
@@ -185,7 +187,6 @@ class Config {
|
|
|
185
187
|
logging: {
|
|
186
188
|
level: raw.logging?.level,
|
|
187
189
|
dir: raw.logging?.dir,
|
|
188
|
-
searchMetrics: raw.logging?.searchMetrics,
|
|
189
190
|
},
|
|
190
191
|
workspaceRoot: raw.workspaceRoot,
|
|
191
192
|
});
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -1,42 +1,16 @@
|
|
|
1
1
|
export type EmbeddingProvider = 'openai-compatible' | 'voyage' | 'infinity';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* must not exceed this; larger cloud models must reduce via the Matryoshka
|
|
5
|
-
* `dimensions` request parameter (`embedding.dimensions`).
|
|
6
|
-
*/
|
|
2
|
+
export type RerankProvider = 'openai-compatible' | 'voyage';
|
|
3
|
+
export declare const VOYAGE_RERANK_MODELS: readonly ["rerank-3", "rerank-3-lite"];
|
|
7
4
|
export declare const MAX_EMBED_DIM = 2000;
|
|
8
5
|
export interface ModelInfo {
|
|
9
6
|
provider: EmbeddingProvider;
|
|
10
|
-
/** Native / default output width. */
|
|
11
7
|
dimensions: number;
|
|
12
|
-
/** Model supports Matryoshka dimension reduction via a request parameter. */
|
|
13
8
|
dimConfigurable?: boolean;
|
|
14
|
-
/** Max width that can be indexed under the pgvector cap (advisory). */
|
|
15
9
|
maxIndexable?: number;
|
|
16
|
-
/** Max width the model itself can emit (advisory). */
|
|
17
10
|
maxDim?: number;
|
|
18
11
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Advisory (NOT exhaustive) registry of known embedding models. Used to resolve
|
|
21
|
-
* a model's dimension without a runtime probe and to suggest models in the
|
|
22
|
-
* dashboard. Models absent here still work — their dimension is probed at index
|
|
23
|
-
* time (see `resolveDimension`).
|
|
24
|
-
*/
|
|
25
12
|
export declare const MODEL_REGISTRY: Record<string, ModelInfo>;
|
|
26
13
|
export declare const DEFAULT_EMBED_MODEL = "jinaai/jina-embeddings-v2-base-code";
|
|
27
|
-
/**
|
|
28
|
-
* Former Ollama registry model names, kept only so config validation can
|
|
29
|
-
* recognise an implicit (provider-less) config that still targets Ollama —
|
|
30
|
-
* see `detectFormerOllamaConfig` in `config-store.ts`.
|
|
31
|
-
*/
|
|
32
14
|
export declare const FORMER_OLLAMA_MODELS: readonly ["bge-m3", "nomic-embed-text", "mxbai-embed-large"];
|
|
33
|
-
/** Advisory dimension for a model, or `undefined` when the model is unknown. */
|
|
34
15
|
export declare function registryDimension(model: string): number | undefined;
|
|
35
|
-
/**
|
|
36
|
-
* Resolve the effective vector dimension: explicit override → registry → probe.
|
|
37
|
-
* Validates the result is ≤ MAX_EMBED_DIM, throwing an error that names
|
|
38
|
-
* `embedding.dimensions` as the fix. `probeFn` embeds a short string once and
|
|
39
|
-
* returns the observed length; only called when neither override nor registry
|
|
40
|
-
* yields a value. Pure aside from the injected probe.
|
|
41
|
-
*/
|
|
42
16
|
export declare function resolveDimension(override: number | null | undefined, model: string, probeFn: () => Promise<number>, registry?: Record<string, ModelInfo>): Promise<number>;
|
package/dist/src/constants.js
CHANGED
|
@@ -1,48 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FORMER_OLLAMA_MODELS = exports.DEFAULT_EMBED_MODEL = exports.MODEL_REGISTRY = exports.MAX_EMBED_DIM = void 0;
|
|
3
|
+
exports.FORMER_OLLAMA_MODELS = exports.DEFAULT_EMBED_MODEL = exports.MODEL_REGISTRY = exports.MAX_EMBED_DIM = exports.VOYAGE_RERANK_MODELS = void 0;
|
|
4
4
|
exports.registryDimension = registryDimension;
|
|
5
5
|
exports.resolveDimension = resolveDimension;
|
|
6
|
-
|
|
7
|
-
* pgvector's HNSW / IVFFlat index hard limit. The effective embedding dimension
|
|
8
|
-
* must not exceed this; larger cloud models must reduce via the Matryoshka
|
|
9
|
-
* `dimensions` request parameter (`embedding.dimensions`).
|
|
10
|
-
*/
|
|
6
|
+
exports.VOYAGE_RERANK_MODELS = ['rerank-3', 'rerank-3-lite'];
|
|
11
7
|
exports.MAX_EMBED_DIM = 2000;
|
|
12
|
-
/**
|
|
13
|
-
* Advisory (NOT exhaustive) registry of known embedding models. Used to resolve
|
|
14
|
-
* a model's dimension without a runtime probe and to suggest models in the
|
|
15
|
-
* dashboard. Models absent here still work — their dimension is probed at index
|
|
16
|
-
* time (see `resolveDimension`).
|
|
17
|
-
*/
|
|
18
8
|
exports.MODEL_REGISTRY = {
|
|
19
9
|
'text-embedding-3-small': { provider: 'openai-compatible', dimensions: 1536, dimConfigurable: true },
|
|
20
10
|
'text-embedding-3-large': { provider: 'openai-compatible', dimensions: 3072, dimConfigurable: true, maxIndexable: 2000 },
|
|
21
11
|
'text-embedding-ada-002': { provider: 'openai-compatible', dimensions: 1536 },
|
|
22
|
-
'voyage-code-
|
|
23
|
-
'voyage-
|
|
24
|
-
'voyage-
|
|
12
|
+
'voyage-code-4': { provider: 'voyage', dimensions: 1024, dimConfigurable: true, maxDim: 2048 },
|
|
13
|
+
'voyage-4-large': { provider: 'voyage', dimensions: 1024, dimConfigurable: true, maxDim: 2048 },
|
|
14
|
+
'voyage-4': { provider: 'voyage', dimensions: 1024, dimConfigurable: true, maxDim: 2048 },
|
|
15
|
+
'voyage-4-lite': { provider: 'voyage', dimensions: 1024, dimConfigurable: true, maxDim: 2048 },
|
|
25
16
|
'BAAI/bge-m3': { provider: 'infinity', dimensions: 1024 },
|
|
26
17
|
'jinaai/jina-embeddings-v2-base-code': { provider: 'infinity', dimensions: 768 },
|
|
27
18
|
};
|
|
28
19
|
exports.DEFAULT_EMBED_MODEL = 'jinaai/jina-embeddings-v2-base-code';
|
|
29
|
-
/**
|
|
30
|
-
* Former Ollama registry model names, kept only so config validation can
|
|
31
|
-
* recognise an implicit (provider-less) config that still targets Ollama —
|
|
32
|
-
* see `detectFormerOllamaConfig` in `config-store.ts`.
|
|
33
|
-
*/
|
|
34
20
|
exports.FORMER_OLLAMA_MODELS = ['bge-m3', 'nomic-embed-text', 'mxbai-embed-large'];
|
|
35
|
-
/** Advisory dimension for a model, or `undefined` when the model is unknown. */
|
|
36
21
|
function registryDimension(model) {
|
|
37
22
|
return exports.MODEL_REGISTRY[model]?.dimensions;
|
|
38
23
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Resolve the effective vector dimension: explicit override → registry → probe.
|
|
41
|
-
* Validates the result is ≤ MAX_EMBED_DIM, throwing an error that names
|
|
42
|
-
* `embedding.dimensions` as the fix. `probeFn` embeds a short string once and
|
|
43
|
-
* returns the observed length; only called when neither override nor registry
|
|
44
|
-
* yields a value. Pure aside from the injected probe.
|
|
45
|
-
*/
|
|
46
24
|
async function resolveDimension(override, model, probeFn, registry = exports.MODEL_REGISTRY) {
|
|
47
25
|
let dim;
|
|
48
26
|
if (override != null) {
|
package/dist/src/container.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Config } from './config';
|
|
2
2
|
import { IndexerService } from './services/IndexerService';
|
|
3
3
|
import { McpServer } from './services/McpServer';
|
|
4
|
+
import { LoggerService } from './services/LoggerService';
|
|
4
5
|
import type { IDatabase } from './interfaces';
|
|
5
6
|
import type { IEmbedder } from './interfaces';
|
|
6
7
|
import type { ISearcher } from './interfaces';
|
|
@@ -16,4 +17,9 @@ export interface Container {
|
|
|
16
17
|
logger: ILogger;
|
|
17
18
|
discovery: IProjectDiscovery;
|
|
18
19
|
}
|
|
20
|
+
export declare function loggerBindingsFor(loggerName?: string): Record<string, unknown> | undefined;
|
|
21
|
+
export declare function createLogger(cfg: {
|
|
22
|
+
level: string;
|
|
23
|
+
dir?: string;
|
|
24
|
+
}, loggerName?: string): LoggerService;
|
|
19
25
|
export declare function createContainer(loggerName?: string): Container;
|
package/dist/src/container.js
CHANGED
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loggerBindingsFor = loggerBindingsFor;
|
|
4
|
+
exports.createLogger = createLogger;
|
|
3
5
|
exports.createContainer = createContainer;
|
|
6
|
+
const crypto_1 = require("crypto");
|
|
4
7
|
const config_1 = require("./config");
|
|
5
8
|
const DatabaseService_1 = require("./services/DatabaseService");
|
|
6
9
|
const EmbedderFactory_1 = require("./services/EmbedderFactory");
|
|
7
10
|
const AstParserService_1 = require("./services/AstParserService");
|
|
8
|
-
const
|
|
11
|
+
const create_chunker_1 = require("./chunking/create-chunker");
|
|
9
12
|
const IndexerService_1 = require("./services/IndexerService");
|
|
10
13
|
const SearcherService_1 = require("./services/SearcherService");
|
|
11
14
|
const McpServer_1 = require("./services/McpServer");
|
|
12
15
|
const LoggerService_1 = require("./services/LoggerService");
|
|
13
16
|
const MonorepoAwareDiscoveryService_1 = require("./services/MonorepoAwareDiscoveryService");
|
|
14
17
|
const NxMonorepoResolver_1 = require("./services/NxMonorepoResolver");
|
|
18
|
+
function loggerBindingsFor(loggerName) {
|
|
19
|
+
return loggerName === 'mcp' ? { connectionId: (0, crypto_1.randomUUID)() } : undefined;
|
|
20
|
+
}
|
|
21
|
+
function createLogger(cfg, loggerName) {
|
|
22
|
+
return LoggerService_1.LoggerService.fromConfig(cfg, loggerName, loggerBindingsFor(loggerName));
|
|
23
|
+
}
|
|
15
24
|
function createContainer(loggerName) {
|
|
16
25
|
const config = new config_1.Config();
|
|
17
|
-
const logger =
|
|
26
|
+
const logger = createLogger(config.logging, loggerName);
|
|
18
27
|
const db = new DatabaseService_1.DatabaseService(config);
|
|
19
28
|
const embedder = (0, EmbedderFactory_1.createEmbedder)(config, logger);
|
|
20
29
|
const ast = new AstParserService_1.AstParserService(logger);
|
|
21
|
-
const chunker =
|
|
30
|
+
const chunker = (0, create_chunker_1.createChunker)(config);
|
|
22
31
|
const discovery = new MonorepoAwareDiscoveryService_1.MonorepoAwareDiscoveryService([new NxMonorepoResolver_1.NxMonorepoResolver(logger)], logger);
|
|
23
32
|
const indexer = new IndexerService_1.IndexerService(db, embedder, ast, chunker, config, logger);
|
|
24
33
|
const searcher = new SearcherService_1.SearcherService(db, embedder, discovery, config, logger);
|
package/dist/src/db/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { codeChunk, codeDependency, codeSymbol, codeCall, indexMeta
|
|
1
|
+
export { codeChunk, codeDependency, codeSymbol, codeCall, indexMeta } from './schema';
|
|
2
2
|
export type { CodeChunkInsert } from './schema';
|
package/dist/src/db/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.indexMeta = exports.codeCall = exports.codeSymbol = exports.codeDependency = exports.codeChunk = void 0;
|
|
4
4
|
var schema_1 = require("./schema");
|
|
5
5
|
Object.defineProperty(exports, "codeChunk", { enumerable: true, get: function () { return schema_1.codeChunk; } });
|
|
6
6
|
Object.defineProperty(exports, "codeDependency", { enumerable: true, get: function () { return schema_1.codeDependency; } });
|
|
7
7
|
Object.defineProperty(exports, "codeSymbol", { enumerable: true, get: function () { return schema_1.codeSymbol; } });
|
|
8
8
|
Object.defineProperty(exports, "codeCall", { enumerable: true, get: function () { return schema_1.codeCall; } });
|
|
9
9
|
Object.defineProperty(exports, "indexMeta", { enumerable: true, get: function () { return schema_1.indexMeta; } });
|
|
10
|
-
Object.defineProperty(exports, "symbolIndexVersion", { enumerable: true, get: function () { return schema_1.symbolIndexVersion; } });
|
package/dist/src/db/schema.d.ts
CHANGED
|
@@ -161,6 +161,23 @@ export declare const codeChunk: import("drizzle-orm/pg-core").PgTableWithColumns
|
|
|
161
161
|
}, {}, {
|
|
162
162
|
length: number | undefined;
|
|
163
163
|
}>;
|
|
164
|
+
endLine: import("drizzle-orm/pg-core").PgColumn<{
|
|
165
|
+
name: "endLine";
|
|
166
|
+
tableName: "code_chunk";
|
|
167
|
+
dataType: "number";
|
|
168
|
+
columnType: "PgInteger";
|
|
169
|
+
data: number;
|
|
170
|
+
driverParam: string | number;
|
|
171
|
+
notNull: false;
|
|
172
|
+
hasDefault: false;
|
|
173
|
+
isPrimaryKey: false;
|
|
174
|
+
isAutoincrement: false;
|
|
175
|
+
hasRuntimeDefault: false;
|
|
176
|
+
enumValues: undefined;
|
|
177
|
+
baseColumn: never;
|
|
178
|
+
identity: undefined;
|
|
179
|
+
generated: undefined;
|
|
180
|
+
}, {}, {}>;
|
|
164
181
|
};
|
|
165
182
|
dialect: "pg";
|
|
166
183
|
}>;
|
|
@@ -464,43 +481,19 @@ export declare const codeSymbol: import("drizzle-orm/pg-core").PgTableWithColumn
|
|
|
464
481
|
identity: undefined;
|
|
465
482
|
generated: undefined;
|
|
466
483
|
}, {}, {}>;
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
export declare const symbolIndexVersion: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
471
|
-
name: "symbol_index_version";
|
|
472
|
-
schema: undefined;
|
|
473
|
-
columns: {
|
|
474
|
-
project: import("drizzle-orm/pg-core").PgColumn<{
|
|
475
|
-
name: "project";
|
|
476
|
-
tableName: "symbol_index_version";
|
|
484
|
+
target: import("drizzle-orm/pg-core").PgColumn<{
|
|
485
|
+
name: "target";
|
|
486
|
+
tableName: "code_symbol";
|
|
477
487
|
dataType: "string";
|
|
478
488
|
columnType: "PgText";
|
|
479
489
|
data: string;
|
|
480
490
|
driverParam: string;
|
|
481
|
-
notNull:
|
|
482
|
-
hasDefault: false;
|
|
483
|
-
isPrimaryKey: true;
|
|
484
|
-
isAutoincrement: false;
|
|
485
|
-
hasRuntimeDefault: false;
|
|
486
|
-
enumValues: [string, ...string[]];
|
|
487
|
-
baseColumn: never;
|
|
488
|
-
identity: undefined;
|
|
489
|
-
generated: undefined;
|
|
490
|
-
}, {}, {}>;
|
|
491
|
-
version: import("drizzle-orm/pg-core").PgColumn<{
|
|
492
|
-
name: "version";
|
|
493
|
-
tableName: "symbol_index_version";
|
|
494
|
-
dataType: "number";
|
|
495
|
-
columnType: "PgInteger";
|
|
496
|
-
data: number;
|
|
497
|
-
driverParam: string | number;
|
|
498
|
-
notNull: true;
|
|
491
|
+
notNull: false;
|
|
499
492
|
hasDefault: false;
|
|
500
493
|
isPrimaryKey: false;
|
|
501
494
|
isAutoincrement: false;
|
|
502
495
|
hasRuntimeDefault: false;
|
|
503
|
-
enumValues:
|
|
496
|
+
enumValues: [string, ...string[]];
|
|
504
497
|
baseColumn: never;
|
|
505
498
|
identity: undefined;
|
|
506
499
|
generated: undefined;
|