causantic 0.9.3 → 0.10.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.
- package/README.md +70 -56
- package/dist/cli/skill-templates.d.ts.map +1 -1
- package/dist/cli/skill-templates.js +23 -18
- package/dist/cli/skill-templates.js.map +1 -1
- package/dist/clusters/cluster-manager.d.ts +16 -0
- package/dist/clusters/cluster-manager.d.ts.map +1 -1
- package/dist/clusters/cluster-manager.js +119 -1
- package/dist/clusters/cluster-manager.js.map +1 -1
- package/dist/config/loader.d.ts +16 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +51 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/memory-config.d.ts +26 -0
- package/dist/config/memory-config.d.ts.map +1 -1
- package/dist/config/memory-config.js +22 -0
- package/dist/config/memory-config.js.map +1 -1
- package/dist/eval/experiments/embedding-model-comparison/run-experiment.d.ts +20 -0
- package/dist/eval/experiments/embedding-model-comparison/run-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/embedding-model-comparison/run-experiment.js +289 -0
- package/dist/eval/experiments/embedding-model-comparison/run-experiment.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/alignment-analysis.d.ts +53 -0
- package/dist/eval/experiments/index-differentiation/alignment-analysis.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/alignment-analysis.js +91 -0
- package/dist/eval/experiments/index-differentiation/alignment-analysis.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/discrimination-test.d.ts +24 -0
- package/dist/eval/experiments/index-differentiation/discrimination-test.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/discrimination-test.js +79 -0
- package/dist/eval/experiments/index-differentiation/discrimination-test.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/index.d.ts +11 -0
- package/dist/eval/experiments/index-differentiation/index.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/index.js +8 -0
- package/dist/eval/experiments/index-differentiation/index.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/refinement-test.d.ts +32 -0
- package/dist/eval/experiments/index-differentiation/refinement-test.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/refinement-test.js +203 -0
- package/dist/eval/experiments/index-differentiation/refinement-test.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/run-experiment.d.ts +20 -0
- package/dist/eval/experiments/index-differentiation/run-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/run-experiment.js +338 -0
- package/dist/eval/experiments/index-differentiation/run-experiment.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/similarity-analysis.d.ts +31 -0
- package/dist/eval/experiments/index-differentiation/similarity-analysis.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/similarity-analysis.js +60 -0
- package/dist/eval/experiments/index-differentiation/similarity-analysis.js.map +1 -0
- package/dist/eval/experiments/index-differentiation/types.d.ts +114 -0
- package/dist/eval/experiments/index-differentiation/types.d.ts.map +1 -0
- package/dist/eval/experiments/index-differentiation/types.js +8 -0
- package/dist/eval/experiments/index-differentiation/types.js.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.d.ts +19 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.js +328 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.js.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.d.ts +27 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.d.ts.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.js +154 -0
- package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.js.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/query-generator.d.ts +23 -0
- package/dist/eval/experiments/index-vs-chunk/query-generator.d.ts.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/query-generator.js +113 -0
- package/dist/eval/experiments/index-vs-chunk/query-generator.js.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/run-experiment.d.ts +17 -0
- package/dist/eval/experiments/index-vs-chunk/run-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/run-experiment.js +341 -0
- package/dist/eval/experiments/index-vs-chunk/run-experiment.js.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/types.d.ts +71 -0
- package/dist/eval/experiments/index-vs-chunk/types.d.ts.map +1 -0
- package/dist/eval/experiments/index-vs-chunk/types.js +8 -0
- package/dist/eval/experiments/index-vs-chunk/types.js.map +1 -0
- package/dist/eval/experiments/pipeline-dropout/run-experiment.d.ts +18 -0
- package/dist/eval/experiments/pipeline-dropout/run-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/pipeline-dropout/run-experiment.js +347 -0
- package/dist/eval/experiments/pipeline-dropout/run-experiment.js.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/analyze-misses.d.ts +17 -0
- package/dist/eval/experiments/rescorer-ceiling/analyze-misses.d.ts.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/analyze-misses.js +247 -0
- package/dist/eval/experiments/rescorer-ceiling/analyze-misses.js.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.d.ts +18 -0
- package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.d.ts.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.js +443 -0
- package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.js.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/run-experiment.d.ts +16 -0
- package/dist/eval/experiments/rescorer-ceiling/run-experiment.d.ts.map +1 -0
- package/dist/eval/experiments/rescorer-ceiling/run-experiment.js +226 -0
- package/dist/eval/experiments/rescorer-ceiling/run-experiment.js.map +1 -0
- package/dist/index-entries/index-generator.d.ts +74 -0
- package/dist/index-entries/index-generator.d.ts.map +1 -0
- package/dist/index-entries/index-generator.js +323 -0
- package/dist/index-entries/index-generator.js.map +1 -0
- package/dist/index-entries/index-refresher.d.ts +54 -0
- package/dist/index-entries/index-refresher.d.ts.map +1 -0
- package/dist/index-entries/index-refresher.js +203 -0
- package/dist/index-entries/index-refresher.js.map +1 -0
- package/dist/index-entries/index.d.ts +6 -0
- package/dist/index-entries/index.d.ts.map +1 -0
- package/dist/index-entries/index.js +6 -0
- package/dist/index-entries/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ingest/index-entry-hook.d.ts +15 -0
- package/dist/ingest/index-entry-hook.d.ts.map +1 -0
- package/dist/ingest/index-entry-hook.js +84 -0
- package/dist/ingest/index-entry-hook.js.map +1 -0
- package/dist/ingest/ingest-session.d.ts.map +1 -1
- package/dist/ingest/ingest-session.js +72 -18
- package/dist/ingest/ingest-session.js.map +1 -1
- package/dist/ingest/session-state.d.ts +49 -0
- package/dist/ingest/session-state.d.ts.map +1 -0
- package/dist/ingest/session-state.js +158 -0
- package/dist/ingest/session-state.js.map +1 -0
- package/dist/maintenance/scheduler.d.ts.map +1 -1
- package/dist/maintenance/scheduler.js +25 -0
- package/dist/maintenance/scheduler.js.map +1 -1
- package/dist/maintenance/tasks/backfill-index.d.ts +27 -0
- package/dist/maintenance/tasks/backfill-index.d.ts.map +1 -0
- package/dist/maintenance/tasks/backfill-index.js +44 -0
- package/dist/maintenance/tasks/backfill-index.js.map +1 -0
- package/dist/mcp/tools.d.ts +4 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +115 -7
- package/dist/mcp/tools.js.map +1 -1
- package/dist/models/embedder.js +2 -2
- package/dist/models/embedder.js.map +1 -1
- package/dist/models/model-registry.d.ts +2 -0
- package/dist/models/model-registry.d.ts.map +1 -1
- package/dist/models/model-registry.js +15 -0
- package/dist/models/model-registry.js.map +1 -1
- package/dist/repomap/cache.d.ts +58 -0
- package/dist/repomap/cache.d.ts.map +1 -0
- package/dist/repomap/cache.js +101 -0
- package/dist/repomap/cache.js.map +1 -0
- package/dist/repomap/graph.d.ts +54 -0
- package/dist/repomap/graph.d.ts.map +1 -0
- package/dist/repomap/graph.js +113 -0
- package/dist/repomap/graph.js.map +1 -0
- package/dist/repomap/index.d.ts +83 -0
- package/dist/repomap/index.d.ts.map +1 -0
- package/dist/repomap/index.js +99 -0
- package/dist/repomap/index.js.map +1 -0
- package/dist/repomap/parser.d.ts +43 -0
- package/dist/repomap/parser.d.ts.map +1 -0
- package/dist/repomap/parser.js +994 -0
- package/dist/repomap/parser.js.map +1 -0
- package/dist/repomap/regex-parser.d.ts +24 -0
- package/dist/repomap/regex-parser.d.ts.map +1 -0
- package/dist/repomap/regex-parser.js +190 -0
- package/dist/repomap/regex-parser.js.map +1 -0
- package/dist/repomap/renderer.d.ts +40 -0
- package/dist/repomap/renderer.d.ts.map +1 -0
- package/dist/repomap/renderer.js +163 -0
- package/dist/repomap/renderer.js.map +1 -0
- package/dist/repomap/scanner.d.ts +32 -0
- package/dist/repomap/scanner.d.ts.map +1 -0
- package/dist/repomap/scanner.js +171 -0
- package/dist/repomap/scanner.js.map +1 -0
- package/dist/retrieval/chain-assembler.d.ts.map +1 -1
- package/dist/retrieval/chain-assembler.js +22 -3
- package/dist/retrieval/chain-assembler.js.map +1 -1
- package/dist/retrieval/index.d.ts +2 -0
- package/dist/retrieval/index.d.ts.map +1 -1
- package/dist/retrieval/index.js +2 -0
- package/dist/retrieval/index.js.map +1 -1
- package/dist/retrieval/mmr.d.ts +1 -0
- package/dist/retrieval/mmr.d.ts.map +1 -1
- package/dist/retrieval/mmr.js +35 -1
- package/dist/retrieval/mmr.js.map +1 -1
- package/dist/retrieval/search-assembler.d.ts +10 -1
- package/dist/retrieval/search-assembler.d.ts.map +1 -1
- package/dist/retrieval/search-assembler.js +249 -81
- package/dist/retrieval/search-assembler.js.map +1 -1
- package/dist/retrieval/session-reconstructor.d.ts +36 -0
- package/dist/retrieval/session-reconstructor.d.ts.map +1 -1
- package/dist/retrieval/session-reconstructor.js +126 -0
- package/dist/retrieval/session-reconstructor.js.map +1 -1
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +15 -0
- package/dist/storage/db.js.map +1 -1
- package/dist/storage/index-entry-store.d.ts +71 -0
- package/dist/storage/index-entry-store.d.ts.map +1 -0
- package/dist/storage/index-entry-store.js +275 -0
- package/dist/storage/index-entry-store.js.map +1 -0
- package/dist/storage/index.d.ts +5 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +5 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/migrations.d.ts.map +1 -1
- package/dist/storage/migrations.js +102 -0
- package/dist/storage/migrations.js.map +1 -1
- package/dist/storage/schema.sql +68 -2
- package/dist/storage/session-state-store.d.ts +61 -0
- package/dist/storage/session-state-store.d.ts.map +1 -0
- package/dist/storage/session-state-store.js +119 -0
- package/dist/storage/session-state-store.js.map +1 -0
- package/dist/storage/types.d.ts +50 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/vector-store.d.ts +17 -2
- package/dist/storage/vector-store.d.ts.map +1 -1
- package/dist/storage/vector-store.js +96 -36
- package/dist/storage/vector-store.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project directory scanner.
|
|
3
|
+
* Walks the project directory, filters by gitignore patterns,
|
|
4
|
+
* and collects source files for tree-sitter parsing.
|
|
5
|
+
*/
|
|
6
|
+
import { readdirSync, statSync, readFileSync, existsSync } from 'fs';
|
|
7
|
+
import { join, relative, extname } from 'path';
|
|
8
|
+
/** Supported language extensions. */
|
|
9
|
+
const SUPPORTED_EXTENSIONS = new Set([
|
|
10
|
+
// TypeScript / JavaScript
|
|
11
|
+
'.ts', '.tsx', '.js', '.jsx', '.mts', '.mjs',
|
|
12
|
+
// Python
|
|
13
|
+
'.py', '.pyi',
|
|
14
|
+
// Java
|
|
15
|
+
'.java',
|
|
16
|
+
// C
|
|
17
|
+
'.c', '.h',
|
|
18
|
+
// C++
|
|
19
|
+
'.cpp', '.cc', '.cxx', '.hpp', '.hh', '.hxx',
|
|
20
|
+
// Rust
|
|
21
|
+
'.rs',
|
|
22
|
+
// Go
|
|
23
|
+
'.go',
|
|
24
|
+
// Ruby
|
|
25
|
+
'.rb',
|
|
26
|
+
// C#
|
|
27
|
+
'.cs',
|
|
28
|
+
// PHP
|
|
29
|
+
'.php',
|
|
30
|
+
// Bash / Shell
|
|
31
|
+
'.sh', '.bash',
|
|
32
|
+
// Regex-parsed languages (no tree-sitter WASM)
|
|
33
|
+
'.scala', '.sc',
|
|
34
|
+
'.kt', '.kts',
|
|
35
|
+
'.swift',
|
|
36
|
+
'.hs', '.lhs',
|
|
37
|
+
'.lua',
|
|
38
|
+
'.dart',
|
|
39
|
+
'.zig',
|
|
40
|
+
'.ex', '.exs',
|
|
41
|
+
'.pl', '.pm',
|
|
42
|
+
'.r', '.R',
|
|
43
|
+
]);
|
|
44
|
+
/** Directories always skipped regardless of gitignore. */
|
|
45
|
+
const ALWAYS_SKIP = new Set([
|
|
46
|
+
'node_modules',
|
|
47
|
+
'.git',
|
|
48
|
+
'dist',
|
|
49
|
+
'build',
|
|
50
|
+
'.next',
|
|
51
|
+
'.nuxt',
|
|
52
|
+
'coverage',
|
|
53
|
+
'__pycache__',
|
|
54
|
+
'.venv',
|
|
55
|
+
'venv',
|
|
56
|
+
'.claude',
|
|
57
|
+
]);
|
|
58
|
+
/** Maximum files to scan (safety limit). */
|
|
59
|
+
const MAX_FILES = 10_000;
|
|
60
|
+
/**
|
|
61
|
+
* Parse a .gitignore file into a list of patterns.
|
|
62
|
+
* Returns simple patterns — not a full gitignore implementation,
|
|
63
|
+
* but handles the common cases (directory patterns, negation skipped).
|
|
64
|
+
*/
|
|
65
|
+
function parseGitignore(projectRoot) {
|
|
66
|
+
const patterns = new Set();
|
|
67
|
+
const gitignorePath = join(projectRoot, '.gitignore');
|
|
68
|
+
if (!existsSync(gitignorePath))
|
|
69
|
+
return patterns;
|
|
70
|
+
try {
|
|
71
|
+
const content = readFileSync(gitignorePath, 'utf-8');
|
|
72
|
+
for (const line of content.split('\n')) {
|
|
73
|
+
const trimmed = line.trim();
|
|
74
|
+
// Skip comments, empty lines, negation patterns
|
|
75
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('!'))
|
|
76
|
+
continue;
|
|
77
|
+
// Strip trailing slashes for directory patterns
|
|
78
|
+
const pattern = trimmed.replace(/\/+$/, '');
|
|
79
|
+
if (pattern)
|
|
80
|
+
patterns.add(pattern);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Can't read gitignore — continue without it
|
|
85
|
+
}
|
|
86
|
+
return patterns;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a directory or file name matches any gitignore pattern.
|
|
90
|
+
* Simplified matcher: checks basename against patterns.
|
|
91
|
+
*/
|
|
92
|
+
function isIgnored(name, relativePath, patterns) {
|
|
93
|
+
if (patterns.has(name))
|
|
94
|
+
return true;
|
|
95
|
+
// Check path-based patterns (e.g., "src/generated")
|
|
96
|
+
for (const pattern of patterns) {
|
|
97
|
+
if (pattern.includes('/') && relativePath.startsWith(pattern))
|
|
98
|
+
return true;
|
|
99
|
+
// Glob patterns with wildcards
|
|
100
|
+
if (pattern.includes('*')) {
|
|
101
|
+
const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
|
|
102
|
+
if (regex.test(name) || regex.test(relativePath))
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Scan a project directory for source files.
|
|
110
|
+
*
|
|
111
|
+
* @param projectRoot - Absolute path to the project root
|
|
112
|
+
* @param options - Scan options
|
|
113
|
+
* @returns List of scanned source files, sorted by relative path
|
|
114
|
+
*/
|
|
115
|
+
export function scanProject(projectRoot, options = {}) {
|
|
116
|
+
const maxFiles = options.maxFiles ?? MAX_FILES;
|
|
117
|
+
const skipDirs = new Set([...ALWAYS_SKIP, ...(options.skipDirs ?? [])]);
|
|
118
|
+
const extensions = new Set([...SUPPORTED_EXTENSIONS, ...(options.extraExtensions ?? [])]);
|
|
119
|
+
const gitignorePatterns = parseGitignore(projectRoot);
|
|
120
|
+
const files = [];
|
|
121
|
+
function walk(dir) {
|
|
122
|
+
if (files.length >= maxFiles)
|
|
123
|
+
return;
|
|
124
|
+
let entries;
|
|
125
|
+
try {
|
|
126
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return; // Permission denied or other read error
|
|
130
|
+
}
|
|
131
|
+
for (const entry of entries) {
|
|
132
|
+
if (files.length >= maxFiles)
|
|
133
|
+
return;
|
|
134
|
+
const name = entry.name;
|
|
135
|
+
const fullPath = join(dir, name);
|
|
136
|
+
const relPath = relative(projectRoot, fullPath);
|
|
137
|
+
if (entry.isDirectory()) {
|
|
138
|
+
if (skipDirs.has(name))
|
|
139
|
+
continue;
|
|
140
|
+
if (name.startsWith('.'))
|
|
141
|
+
continue;
|
|
142
|
+
if (isIgnored(name, relPath, gitignorePatterns))
|
|
143
|
+
continue;
|
|
144
|
+
walk(fullPath);
|
|
145
|
+
}
|
|
146
|
+
else if (entry.isFile()) {
|
|
147
|
+
const ext = extname(name);
|
|
148
|
+
if (!extensions.has(ext))
|
|
149
|
+
continue;
|
|
150
|
+
if (isIgnored(name, relPath, gitignorePatterns))
|
|
151
|
+
continue;
|
|
152
|
+
try {
|
|
153
|
+
const stat = statSync(fullPath);
|
|
154
|
+
files.push({
|
|
155
|
+
absolutePath: fullPath,
|
|
156
|
+
relativePath: relPath,
|
|
157
|
+
extension: ext,
|
|
158
|
+
mtimeMs: stat.mtimeMs,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Can't stat file — skip
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
walk(projectRoot);
|
|
168
|
+
files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
169
|
+
return files;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/repomap/scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-assembler.d.ts","sourceRoot":"","sources":["../../src/retrieval/chain-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"chain-assembler.d.ts","sourceRoot":"","sources":["../../src/retrieval/chain-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,uDAAuD;IACvD,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAClC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAExF"}
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
* 4. If no chain qualifies (all seeds orphaned), fall back to search results
|
|
12
12
|
*/
|
|
13
13
|
import { approximateTokens } from '../utils/token-counter.js';
|
|
14
|
-
import { searchContext } from './search-assembler.js';
|
|
14
|
+
import { searchContext, getEmbedder } from './search-assembler.js';
|
|
15
15
|
import { walkChains, selectBestChain } from './chain-walker.js';
|
|
16
16
|
import { formatChainChunk } from './formatting.js';
|
|
17
|
+
import { loadConfig, toRuntimeConfig } from '../config/loader.js';
|
|
17
18
|
/**
|
|
18
19
|
* Recall: find seeds → walk backward → reverse for chronological narrative.
|
|
19
20
|
*/
|
|
@@ -69,11 +70,29 @@ async function runEpisodicPipeline(request, direction) {
|
|
|
69
70
|
},
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
|
-
// 2.
|
|
73
|
+
// 2. Ensure query embedding for chain scoring
|
|
74
|
+
// In keyword-primary mode, searchContext may return an empty embedding.
|
|
75
|
+
// Lazily embed the query — a single embedding call is cheap.
|
|
76
|
+
let queryEmbedding = searchResult.queryEmbedding;
|
|
77
|
+
if (queryEmbedding.length === 0) {
|
|
78
|
+
try {
|
|
79
|
+
const runtimeConfig = toRuntimeConfig(loadConfig());
|
|
80
|
+
const embedder = await getEmbedder(runtimeConfig.embeddingModel);
|
|
81
|
+
const result = await embedder.embed(query, true);
|
|
82
|
+
queryEmbedding = result.embedding;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// If embedding fails (e.g. model not available), chain walking will
|
|
86
|
+
// score all nodes as 0 and selectBestChain may not qualify a chain,
|
|
87
|
+
// falling back to search results. This is acceptable degradation.
|
|
88
|
+
queryEmbedding = [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Walk chains from seeds
|
|
73
92
|
const chains = await walkChains(searchResult.seedIds, {
|
|
74
93
|
direction,
|
|
75
94
|
tokenBudget: maxTokens,
|
|
76
|
-
queryEmbedding
|
|
95
|
+
queryEmbedding,
|
|
77
96
|
agentFilter,
|
|
78
97
|
});
|
|
79
98
|
// 3. Select best chain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-assembler.js","sourceRoot":"","sources":["../../src/retrieval/chain-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAsB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"chain-assembler.js","sourceRoot":"","sources":["../../src/retrieval/chain-assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,6 @@ export { fuseRRF } from './rrf.js';
|
|
|
13
13
|
export type { RankedItem, RRFSource } from './rrf.js';
|
|
14
14
|
export { expandViaClusters } from './cluster-expander.js';
|
|
15
15
|
export type { ClusterExpansionConfig } from './cluster-expander.js';
|
|
16
|
+
export { reconstructSession, formatReconstruction, buildBriefing, } from './session-reconstructor.js';
|
|
17
|
+
export type { ReconstructRequest, ReconstructResult, BriefingRequest, BriefingResult, } from './session-reconstructor.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,4BAA4B,CAAC"}
|
package/dist/retrieval/index.js
CHANGED
|
@@ -13,4 +13,6 @@ export { walkChains, selectBestChain } from './chain-walker.js';
|
|
|
13
13
|
export { fuseRRF } from './rrf.js';
|
|
14
14
|
// Cluster expansion
|
|
15
15
|
export { expandViaClusters } from './cluster-expander.js';
|
|
16
|
+
// Session reconstructor
|
|
17
|
+
export { reconstructSession, formatReconstruction, buildBriefing, } from './session-reconstructor.js';
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhE,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5F,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhE,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,wBAAwB;AACxB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,GACd,MAAM,4BAA4B,CAAC"}
|
package/dist/retrieval/mmr.d.ts
CHANGED
|
@@ -34,4 +34,5 @@ export interface MMRBudgetOptions {
|
|
|
34
34
|
* from consuming diversity slots when they can't fit in the response.
|
|
35
35
|
*/
|
|
36
36
|
export declare function reorderWithMMR(candidates: RankedItem[], queryEmbedding: number[], config: MMRConfig, budget?: MMRBudgetOptions): Promise<RankedItem[]>;
|
|
37
|
+
export declare function computeEffectiveLambda(baseLambda: number, candidates: RankedItem[], budget?: MMRBudgetOptions): number;
|
|
37
38
|
//# sourceMappingURL=mmr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmr.d.ts","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EAAE,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"mmr.d.ts","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EAAE,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC,CAsFvB;AAYD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EAAE,EACxB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,CAoBR"}
|
package/dist/retrieval/mmr.js
CHANGED
|
@@ -32,7 +32,7 @@ export async function reorderWithMMR(candidates, queryEmbedding, config, budget)
|
|
|
32
32
|
// Still apply budget filtering even without MMR reranking
|
|
33
33
|
return applyBudgetFilter(candidates, budget);
|
|
34
34
|
}
|
|
35
|
-
const { lambda } = config;
|
|
35
|
+
const { lambda: baseLambda } = config;
|
|
36
36
|
// Fetch embeddings for all candidates
|
|
37
37
|
const embeddings = new Map();
|
|
38
38
|
for (const c of candidates) {
|
|
@@ -47,6 +47,10 @@ export async function reorderWithMMR(candidates, queryEmbedding, config, budget)
|
|
|
47
47
|
for (const c of candidates) {
|
|
48
48
|
normalizedScores.set(c.chunkId, maxScore > 0 ? c.score / maxScore : 0);
|
|
49
49
|
}
|
|
50
|
+
// Budget-adaptive lambda: when few chunks fit the budget, diversity
|
|
51
|
+
// reordering risks pushing relevant results past the cutoff.
|
|
52
|
+
// Estimate available slots and fade diversity as slots shrink.
|
|
53
|
+
const lambda = computeEffectiveLambda(baseLambda, candidates, budget);
|
|
50
54
|
const selected = [];
|
|
51
55
|
const selectedEmbeddings = [];
|
|
52
56
|
const remaining = new Set(candidates.map((_, i) => i));
|
|
@@ -96,6 +100,36 @@ export async function reorderWithMMR(candidates, queryEmbedding, config, budget)
|
|
|
96
100
|
}
|
|
97
101
|
return selected;
|
|
98
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Estimate available slots and scale lambda toward 1.0 (pure relevance)
|
|
105
|
+
* when budget is tight. With only 5-10 slots, diversity reordering is
|
|
106
|
+
* counterproductive — it pushes relevant results past the budget cutoff.
|
|
107
|
+
*
|
|
108
|
+
* Threshold of 15 slots: below this, lambda ramps from base value to 1.0.
|
|
109
|
+
* At 5 slots: lambda ≈ 0.93 (with base 0.7). At 15+: unchanged.
|
|
110
|
+
*/
|
|
111
|
+
const SLOT_THRESHOLD = 15;
|
|
112
|
+
export function computeEffectiveLambda(baseLambda, candidates, budget) {
|
|
113
|
+
if (!budget)
|
|
114
|
+
return baseLambda;
|
|
115
|
+
// Estimate median chunk size from the candidates
|
|
116
|
+
const tokenSizes = [];
|
|
117
|
+
for (const c of candidates) {
|
|
118
|
+
const tokens = budget.chunkTokenCounts.get(c.chunkId);
|
|
119
|
+
if (tokens !== undefined && tokens > 0)
|
|
120
|
+
tokenSizes.push(tokens);
|
|
121
|
+
}
|
|
122
|
+
if (tokenSizes.length === 0)
|
|
123
|
+
return baseLambda;
|
|
124
|
+
tokenSizes.sort((a, b) => a - b);
|
|
125
|
+
const median = tokenSizes[Math.floor(tokenSizes.length / 2)];
|
|
126
|
+
const estimatedSlots = budget.tokenBudget / median;
|
|
127
|
+
if (estimatedSlots >= SLOT_THRESHOLD)
|
|
128
|
+
return baseLambda;
|
|
129
|
+
// Linear ramp: 0 slots → lambda=1.0, SLOT_THRESHOLD slots → baseLambda
|
|
130
|
+
const tightness = Math.max(0, 1 - estimatedSlots / SLOT_THRESHOLD);
|
|
131
|
+
return baseLambda + (1 - baseLambda) * tightness;
|
|
132
|
+
}
|
|
99
133
|
/** Budget-only filter for below-threshold candidate lists (no MMR reranking). */
|
|
100
134
|
function applyBudgetFilter(candidates, budget) {
|
|
101
135
|
const result = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgBhE,oFAAoF;AACpF,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAwB,EACxB,cAAwB,EACxB,MAAiB,EACjB,MAAyB;IAEzB,IAAI,UAAU,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,0DAA0D;QAC1D,OAAO,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/retrieval/mmr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgBhE,oFAAoF;AACpF,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAwB,EACxB,cAAwB,EACxB,MAAiB,EACjB,MAAyB;IAEzB,IAAI,UAAU,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,0DAA0D;QAC1D,OAAO,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEtC,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE,CAAC;YACR,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,oEAAoE;IACpE,6DAA6D;IAC7D,+DAA+D;IAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,kBAAkB,GAAe,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,eAAe,GAAG,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC;IAEtD,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAE1B,+CAA+C;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,MAAM,GAAG,eAAe;oBAAE,SAAS;YACzC,CAAC;YAED,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAE,CAAC;YAE7C,mDAAmD;YACnD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,IAAI,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;oBACtC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAI,GAAG,GAAG,GAAG;wBAAE,GAAG,GAAG,GAAG,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,4CAA4C;YAE5C,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;YAC9C,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;gBAClB,OAAO,GAAG,GAAG,CAAC;gBACd,OAAO,GAAG,GAAG,CAAC;YAChB,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,MAAM;QAE1B,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,MAAM,EAAE,CAAC;YACX,eAAe,IAAI,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,UAAwB,EACxB,MAAyB;IAEzB,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAE/B,iDAAiD;IACjD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAE/C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAEnD,IAAI,cAAc,IAAI,cAAc;QAAE,OAAO,UAAU,CAAC;IAExD,uEAAuE;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC;IACnE,OAAO,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;AACnD,CAAC;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,UAAwB,EAAE,MAAwB;IAC3E,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,SAAS,IAAI,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* No graph traversal. Used for the `search` MCP tool and as fallback for episodic recall
|
|
7
7
|
* when no qualifying chain is found.
|
|
8
8
|
*/
|
|
9
|
+
import { Embedder } from '../models/embedder.js';
|
|
9
10
|
/**
|
|
10
11
|
* Request for search-based context retrieval.
|
|
11
12
|
*/
|
|
@@ -51,7 +52,15 @@ export interface SearchResponse {
|
|
|
51
52
|
seedIds: string[];
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
54
|
-
*
|
|
55
|
+
* Get or create a shared embedder for the given model.
|
|
56
|
+
* Exported for use by chain-assembler for lazy query embedding.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getEmbedder(embeddingModel: string): Promise<Embedder>;
|
|
59
|
+
/**
|
|
60
|
+
* Run the search pipeline.
|
|
61
|
+
*
|
|
62
|
+
* Keyword-primary mode: keyword → [optional vector enrichment] → recency → MMR → budget
|
|
63
|
+
* Hybrid mode: embed → [vector, keyword] → RRF → cluster expand → recency → MMR → budget
|
|
55
64
|
*/
|
|
56
65
|
export declare function searchContext(request: SearchRequest): Promise<SearchResponse>;
|
|
57
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-assembler.d.ts","sourceRoot":"","sources":["../../src/retrieval/search-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"search-assembler.d.ts","sourceRoot":"","sources":["../../src/retrieval/search-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAajD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;KAC3C,CAAC,CAAC;IACH,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAQD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU3E;AAcD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAuZnF;AAgGD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6BhC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD"}
|