ralph-hero-knowledge-index 0.1.44 → 0.1.45
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/.claude-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/coverage/lcov-report/chunker.ts.html +1 -1
- package/coverage/lcov-report/config.ts.html +1 -1
- package/coverage/lcov-report/db.ts.html +1 -1
- package/coverage/lcov-report/embedder.ts.html +1 -1
- package/coverage/lcov-report/file-scanner.ts.html +1 -1
- package/coverage/lcov-report/format.ts.html +1 -1
- package/coverage/lcov-report/generate-indexes.ts.html +3 -3
- package/coverage/lcov-report/graph-builder.ts.html +1 -1
- package/coverage/lcov-report/graph-tools.ts.html +3 -3
- package/coverage/lcov-report/hybrid-search.ts.html +2 -2
- package/coverage/lcov-report/ignore.ts.html +1 -1
- package/coverage/lcov-report/index.html +1 -1
- package/coverage/lcov-report/index.ts.html +4 -4
- package/coverage/lcov-report/llm-client.ts.html +2 -2
- package/coverage/lcov-report/parser.ts.html +2 -2
- package/coverage/lcov-report/reindex.ts.html +4 -4
- package/coverage/lcov-report/reranker.ts.html +1 -1
- package/coverage/lcov-report/search.ts.html +1 -1
- package/coverage/lcov-report/traverse.ts.html +1 -1
- package/coverage/lcov-report/vector-search.ts.html +1 -1
- package/package.json +9 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ralph-knowledge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.45",
|
|
4
4
|
"description": "Knowledge graph for ralph-hero: semantic search, relationship traversal, and document indexing across thoughts/ documents. Optional companion to ralph-hero.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Chad Dubiel",
|
package/.mcp.json
CHANGED
|
@@ -940,7 +940,7 @@ export function chunkText(text: string, opts: ChunkerOptions = {}): Chunk[] {
|
|
|
940
940
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
941
941
|
Code coverage generated by
|
|
942
942
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
943
|
-
at 2026-05-19T02:
|
|
943
|
+
at 2026-05-19T02:12:26.778Z
|
|
944
944
|
</div>
|
|
945
945
|
<script src="prettify.js"></script>
|
|
946
946
|
<script>
|
|
@@ -385,7 +385,7 @@ export function loadConfig(): KnowledgeConfig {
|
|
|
385
385
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
386
386
|
Code coverage generated by
|
|
387
387
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
388
|
-
at 2026-05-19T02:
|
|
388
|
+
at 2026-05-19T02:12:26.778Z
|
|
389
389
|
</div>
|
|
390
390
|
<script src="prettify.js"></script>
|
|
391
391
|
<script>
|
|
@@ -1711,7 +1711,7 @@ export class KnowledgeDB {
|
|
|
1711
1711
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1712
1712
|
Code coverage generated by
|
|
1713
1713
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1714
|
-
at 2026-05-19T02:
|
|
1714
|
+
at 2026-05-19T02:12:26.778Z
|
|
1715
1715
|
</div>
|
|
1716
1716
|
<script src="prettify.js"></script>
|
|
1717
1717
|
<script>
|
|
@@ -763,7 +763,7 @@ export function prepareTextForEmbedding(
|
|
|
763
763
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
764
764
|
Code coverage generated by
|
|
765
765
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
766
|
-
at 2026-05-19T02:
|
|
766
|
+
at 2026-05-19T02:12:26.778Z
|
|
767
767
|
</div>
|
|
768
768
|
<script src="prettify.js"></script>
|
|
769
769
|
<script>
|
|
@@ -199,7 +199,7 @@ export function findMarkdownFiles(dir: string, matcher?: IgnoreMatcher): string[
|
|
|
199
199
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
200
200
|
Code coverage generated by
|
|
201
201
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
202
|
-
at 2026-05-19T02:
|
|
202
|
+
at 2026-05-19T02:12:26.778Z
|
|
203
203
|
</div>
|
|
204
204
|
<script src="prettify.js"></script>
|
|
205
205
|
<script>
|
|
@@ -295,7 +295,7 @@ export function formatTraverseResults(
|
|
|
295
295
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
296
296
|
Code coverage generated by
|
|
297
297
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
298
|
-
at 2026-05-19T02:
|
|
298
|
+
at 2026-05-19T02:12:26.778Z
|
|
299
299
|
</div>
|
|
300
300
|
<script src="prettify.js"></script>
|
|
301
301
|
<script>
|
|
@@ -670,7 +670,7 @@ export function writeTypeIndex(
|
|
|
670
670
|
const superseded = docs.filter((d) => d.status === "superseded");
|
|
671
671
|
|
|
672
672
|
const sortByDate = (a: ParsedDocument, b: ParsedDocument) =>
|
|
673
|
-
(b.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"").l</span>ocaleCompare(a.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"")
|
|
673
|
+
(b.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"").l</span>ocaleCompare(a.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"")</span>;
|
|
674
674
|
active.sort(sortByDate);
|
|
675
675
|
superseded.sort(sortByDate);
|
|
676
676
|
|
|
@@ -791,7 +791,7 @@ export function writeIssueHubs(outDir: string, allDocs: ParsedDocument[]): void
|
|
|
791
791
|
const RECENT_LIMIT = 20;
|
|
792
792
|
|
|
793
793
|
export function writeMasterIndex(outDir: string, allDocs: ParsedDocument[], hasUncategorized = false): void {
|
|
794
|
-
const sorted = [...allDocs].sort((a, b) => (b.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"").l</span>ocaleCompare(a.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"")
|
|
794
|
+
const sorted = [...allDocs].sort((a, b) => (b.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"").l</span>ocaleCompare(a.date ?? <span class="branch-1 cbranch-no" title="branch not covered" >"")</span>);
|
|
795
795
|
const recent = sorted.slice(0, RECENT_LIMIT);
|
|
796
796
|
|
|
797
797
|
const lines: string[] = [
|
|
@@ -946,7 +946,7 @@ export function generateIndexes(outDir: string, allDocs: ParsedDocument[]): void
|
|
|
946
946
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
947
947
|
Code coverage generated by
|
|
948
948
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
949
|
-
at 2026-05-19T02:
|
|
949
|
+
at 2026-05-19T02:12:26.778Z
|
|
950
950
|
</div>
|
|
951
951
|
<script src="prettify.js"></script>
|
|
952
952
|
<script>
|
|
@@ -292,7 +292,7 @@ export class GraphBuilder {
|
|
|
292
292
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
293
293
|
Code coverage generated by
|
|
294
294
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
295
|
-
at 2026-05-19T02:
|
|
295
|
+
at 2026-05-19T02:12:26.778Z
|
|
296
296
|
</div>
|
|
297
297
|
<script src="prettify.js"></script>
|
|
298
298
|
<script>
|
|
@@ -2386,12 +2386,12 @@ export function registerGraphTools(server: McpServer, db: KnowledgeDB): void {
|
|
|
2386
2386
|
// Run Louvain to partition, then extract the community subgraph
|
|
2387
2387
|
const partition: Record<string, number> =
|
|
2388
2388
|
graph.size > 0
|
|
2389
|
-
? louvain(graph, { rng: () => 0.5 }
|
|
2389
|
+
? louvain(graph, { rng: () => 0.5 }<span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >)</span></span>
|
|
2390
2390
|
: // No edges — each node is its own community, numbered by iteration order
|
|
2391
2391
|
(() => {
|
|
2392
2392
|
const p: Record<string, number> = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
2393
2393
|
let idx = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
2394
|
-
<span class="cstat-no" title="statement not covered" > graph.<span class="fstat-no" title="function not covered" >forEachNode((n</span>) => { <span class="cstat-no" title="statement not covered" >p[n] = idx++; });</span
|
|
2394
|
+
<span class="cstat-no" title="statement not covered" > graph.<span class="fstat-no" title="function not covered" >forEachNode((n</span>) => { <span class="cstat-no" title="statement not covered" >p[n] = idx++; }</span>);</span>
|
|
2395
2395
|
<span class="cstat-no" title="statement not covered" > return p;</span>
|
|
2396
2396
|
})();
|
|
2397
2397
|
|
|
@@ -2821,7 +2821,7 @@ export function registerGraphTools(server: McpServer, db: KnowledgeDB): void {
|
|
|
2821
2821
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2822
2822
|
Code coverage generated by
|
|
2823
2823
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2824
|
-
at 2026-05-19T02:
|
|
2824
|
+
at 2026-05-19T02:12:26.778Z
|
|
2825
2825
|
</div>
|
|
2826
2826
|
<script src="prettify.js"></script>
|
|
2827
2827
|
<script>
|
|
@@ -1519,7 +1519,7 @@ export class HybridSearch {
|
|
|
1519
1519
|
for (const c of candidates) {
|
|
1520
1520
|
// When all scores are equal (range = 0) treat as full relevance for all
|
|
1521
1521
|
// so the choice falls through to the diversity term.
|
|
1522
|
-
scoreNorm.set(c.id, range > 0 ? (c.score - minScore) / range : <span class="branch-1 cbranch-no" title="branch not covered" >1.0)
|
|
1522
|
+
scoreNorm.set(c.id, range > 0 ? (c.score - minScore) / range : <span class="branch-1 cbranch-no" title="branch not covered" >1.0)</span>;
|
|
1523
1523
|
}
|
|
1524
1524
|
|
|
1525
1525
|
// Pre-fetch embeddings for the candidate's best chunk. Doc-level vec ids
|
|
@@ -1606,7 +1606,7 @@ export class HybridSearch {
|
|
|
1606
1606
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1607
1607
|
Code coverage generated by
|
|
1608
1608
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1609
|
-
at 2026-05-19T02:
|
|
1609
|
+
at 2026-05-19T02:12:26.778Z
|
|
1610
1610
|
</div>
|
|
1611
1611
|
<script src="prettify.js"></script>
|
|
1612
1612
|
<script>
|
|
@@ -316,7 +316,7 @@ export function loadIgnoreForRoot(
|
|
|
316
316
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
317
317
|
Code coverage generated by
|
|
318
318
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
319
|
-
at 2026-05-19T02:
|
|
319
|
+
at 2026-05-19T02:12:26.778Z
|
|
320
320
|
</div>
|
|
321
321
|
<script src="prettify.js"></script>
|
|
322
322
|
<script>
|
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
372
372
|
Code coverage generated by
|
|
373
373
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
374
|
-
at 2026-05-19T02:
|
|
374
|
+
at 2026-05-19T02:12:26.778Z
|
|
375
375
|
</div>
|
|
376
376
|
<script src="prettify.js"></script>
|
|
377
377
|
<script>
|
|
@@ -1547,7 +1547,7 @@ const DEFAULT_DB_PATH = join(homedir(), ".ralph-hero", "knowledge.db");
|
|
|
1547
1547
|
function resolveEnv(name: string): string | undefined {
|
|
1548
1548
|
const val = process.env[name];
|
|
1549
1549
|
// Claude Code passes unexpanded ${VAR} literals for unset env vars in .mcp.json
|
|
1550
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!val || <span class="branch-1 cbranch-no" title="branch not covered" >val.startsWith("${"))</span>
|
|
1550
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!val || <span class="branch-1 cbranch-no" title="branch not covered" >val.startsWith("${")) r</span>eturn undefined;
|
|
1551
1551
|
<span class="cstat-no" title="statement not covered" > return val;</span>
|
|
1552
1552
|
}
|
|
1553
1553
|
|
|
@@ -1705,7 +1705,7 @@ export function createServer(dbPath: string, opts: CreateServerOptions = {}) {
|
|
|
1705
1705
|
<span class="fstat-no" title="function not covered" > write: (p</span>ath: string, <span class="cstat-no" title="statement not covered" >body: string) => writeFileSync(path, body, "utf-8"),</span>
|
|
1706
1706
|
};
|
|
1707
1707
|
const rememberReindexImpl = opts.rememberReindex ?? reindexPath;
|
|
1708
|
-
const rememberNow = opts.<span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >rememberNow ?? (() => <span class="cstat-no" title="statement not covered" >n</span>ew Date())
|
|
1708
|
+
const rememberNow = opts.<span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >rememberNow ?? (() => <span class="cstat-no" title="statement not covered" >n</span>ew Date());</span></span>
|
|
1709
1709
|
const rememberBaseDir = opts.rememberBaseDir
|
|
1710
1710
|
?? resolveEnv("RALPH_DREAM_MEMORIES_DIR")
|
|
1711
1711
|
?? join(homedir(), "projects", "thoughts", "dream-memories");
|
|
@@ -2045,7 +2045,7 @@ export function createServer(dbPath: string, opts: CreateServerOptions = {}) {
|
|
|
2045
2045
|
return (tier ?? <span class="branch-1 cbranch-no" title="branch not covered" >"doc") === w</span>antedTier;
|
|
2046
2046
|
});
|
|
2047
2047
|
}
|
|
2048
|
-
const formatted = formatTraverseResults(<span class="fstat-no" title="function not covered" >results, (i</span>d) => <span class="cstat-no" title="statement not covered" >db.getTags(id)
|
|
2048
|
+
const formatted = formatTraverseResults(<span class="fstat-no" title="function not covered" >results, (i</span>d) => <span class="cstat-no" title="statement not covered" >db.getTags(id), a</span>rgs.brief ?? false);
|
|
2049
2049
|
return { content: [{ type: "text" as const, text: JSON.stringify(formatted, null, 2) }] };
|
|
2050
2050
|
} catch (e) {
|
|
2051
2051
|
<span class="cstat-no" title="statement not covered" > return { content: [{ type: "text" as const, text: `Error: ${(e as Error).message}` }], isError: true };</span>
|
|
@@ -2260,7 +2260,7 @@ server.connect(transport).catch(console.error);
|
|
|
2260
2260
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2261
2261
|
Code coverage generated by
|
|
2262
2262
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2263
|
-
at 2026-05-19T02:
|
|
2263
|
+
at 2026-05-19T02:12:26.778Z
|
|
2264
2264
|
</div>
|
|
2265
2265
|
<script src="prettify.js"></script>
|
|
2266
2266
|
<script>
|
|
@@ -436,7 +436,7 @@ export function createLlmClient(opts: LlmClientOptions = {}): LlmClient {
|
|
|
436
436
|
|
|
437
437
|
async function contextualize(fullDocument: string, chunkContent: string): Promise<string> {
|
|
438
438
|
const controller = new AbortController();
|
|
439
|
-
const timer = <span class="fstat-no" title="function not covered" >setTimeout(() => <span class="cstat-no" title="statement not covered" >c</span>ontroller.abort()
|
|
439
|
+
const timer = <span class="fstat-no" title="function not covered" >setTimeout(() => <span class="cstat-no" title="statement not covered" >c</span>ontroller.abort(), t</span>imeoutMs);
|
|
440
440
|
try {
|
|
441
441
|
const prompt = buildContextualizePrompt(fullDocument, chunkContent);
|
|
442
442
|
const response = await fetch(`${baseUrl}/v1/chat/completions`, {
|
|
@@ -478,7 +478,7 @@ export function createLlmClient(opts: LlmClientOptions = {}): LlmClient {
|
|
|
478
478
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
479
479
|
Code coverage generated by
|
|
480
480
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
481
|
-
at 2026-05-19T02:
|
|
481
|
+
at 2026-05-19T02:12:26.778Z
|
|
482
482
|
</div>
|
|
483
483
|
<script src="prettify.js"></script>
|
|
484
484
|
<script>
|
|
@@ -490,7 +490,7 @@ export function extractUntypedWikilinks(
|
|
|
490
490
|
|
|
491
491
|
export function parseDocument(id: string, path: string, raw: string): ParsedDocument {
|
|
492
492
|
const fmMatch = raw.match(FRONTMATTER_RE);
|
|
493
|
-
const frontmatter = fmMatch ? parseYaml(fmMatch[1]) ?? <span class="branch-1 cbranch-no" title="branch not covered" >{}
|
|
493
|
+
const frontmatter = fmMatch ? parseYaml(fmMatch[1]) ?? <span class="branch-1 cbranch-no" title="branch not covered" >{} : <span class="branch-1 cbranch-no" title="branch not covered" >{</span>};</span>
|
|
494
494
|
const body = fmMatch ? raw.slice(fmMatch[0].length).trim() : <span class="branch-1 cbranch-no" title="branch not covered" >raw.trim();</span>
|
|
495
495
|
const titleMatch = body.match(TITLE_RE);
|
|
496
496
|
const title = titleMatch ? titleMatch[1].trim() : <span class="branch-1 cbranch-no" title="branch not covered" >id;</span>
|
|
@@ -565,7 +565,7 @@ export function parseDocument(id: string, path: string, raw: string): ParsedDocu
|
|
|
565
565
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
566
566
|
Code coverage generated by
|
|
567
567
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
568
|
-
at 2026-05-19T02:
|
|
568
|
+
at 2026-05-19T02:12:26.778Z
|
|
569
569
|
</div>
|
|
570
570
|
<script src="prettify.js"></script>
|
|
571
571
|
<script>
|
|
@@ -1693,7 +1693,7 @@ export async function reindex(
|
|
|
1693
1693
|
.all(parsed.id) as Array<{ chunk_index: number; context_prefix: string }>;
|
|
1694
1694
|
<span class="missing-if-branch" title="else path not taken" >E</span>if (priorChunks.length > 0) {
|
|
1695
1695
|
cachedPrefixes = new Map(
|
|
1696
|
-
priorChunks.map(r => [r.chunk_index, r.context_prefix ?? <span class="branch-1 cbranch-no" title="branch not covered" >""]
|
|
1696
|
+
priorChunks.map(r => [r.chunk_index, r.context_prefix ?? <span class="branch-1 cbranch-no" title="branch not covered" >""]</span> as [number, string])
|
|
1697
1697
|
);
|
|
1698
1698
|
}
|
|
1699
1699
|
}
|
|
@@ -1718,7 +1718,7 @@ export async function reindex(
|
|
|
1718
1718
|
// BEFORE buffering so the context prefix becomes part of `embedText`
|
|
1719
1719
|
// and the existing `cachedPrefixes` fast-path is preserved.
|
|
1720
1720
|
try {
|
|
1721
|
-
const tagLine = parsed.tags.length > 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >parsed.tags.join(", ") </span
|
|
1721
|
+
const tagLine = parsed.tags.length > 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >parsed.tags.join(", ") : "</span>";
|
|
1722
1722
|
const chunks: Chunk[] = parsed.content.length === 0
|
|
1723
1723
|
? <span class="branch-0 cbranch-no" title="branch not covered" >[{ index: 0, content: "", charStart: 0, charEnd: 0 }]</span>
|
|
1724
1724
|
: chunkText(parsed.content);
|
|
@@ -1980,7 +1980,7 @@ export async function <span class="fstat-no" title="function not covered" >reind
|
|
|
1980
1980
|
|
|
1981
1981
|
const texts = <span class="cstat-no" title="statement not covered" >chunks.<span class="fstat-no" title="function not covered" >map((c</span>) => {</span>
|
|
1982
1982
|
const parts = <span class="cstat-no" title="statement not covered" >[parsed.title, tagLine, c.content];</span>
|
|
1983
|
-
<span class="cstat-no" title="statement not covered" > return parts.<span class="fstat-no" title="function not covered" >filter((p</span>) => <span class="cstat-no" title="statement not covered" >p.length > 0)
|
|
1983
|
+
<span class="cstat-no" title="statement not covered" > return parts.<span class="fstat-no" title="function not covered" >filter((p</span>) => <span class="cstat-no" title="statement not covered" >p.length > 0)</span>.join("\n");</span>
|
|
1984
1984
|
});
|
|
1985
1985
|
const embeddings = <span class="cstat-no" title="statement not covered" >await embedChunks(texts);</span>
|
|
1986
1986
|
const insertChunk = <span class="cstat-no" title="statement not covered" >db.db.prepare(</span>
|
|
@@ -2032,7 +2032,7 @@ const isMain = process.argv[1]?.endsWith("reindex.js");
|
|
|
2032
2032
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2033
2033
|
Code coverage generated by
|
|
2034
2034
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2035
|
-
at 2026-05-19T02:
|
|
2035
|
+
at 2026-05-19T02:12:26.778Z
|
|
2036
2036
|
</div>
|
|
2037
2037
|
<script src="prettify.js"></script>
|
|
2038
2038
|
<script>
|
|
@@ -790,7 +790,7 @@ export class Reranker {
|
|
|
790
790
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
791
791
|
Code coverage generated by
|
|
792
792
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
793
|
-
at 2026-05-19T02:
|
|
793
|
+
at 2026-05-19T02:12:26.778Z
|
|
794
794
|
</div>
|
|
795
795
|
<script src="prettify.js"></script>
|
|
796
796
|
<script>
|
|
@@ -814,7 +814,7 @@ export class FtsSearch {
|
|
|
814
814
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
815
815
|
Code coverage generated by
|
|
816
816
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
817
|
-
at 2026-05-19T02:
|
|
817
|
+
at 2026-05-19T02:12:26.778Z
|
|
818
818
|
</div>
|
|
819
819
|
<script src="prettify.js"></script>
|
|
820
820
|
<script>
|
|
@@ -487,7 +487,7 @@ export class Traverser {
|
|
|
487
487
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
488
488
|
Code coverage generated by
|
|
489
489
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
490
|
-
at 2026-05-19T02:
|
|
490
|
+
at 2026-05-19T02:12:26.778Z
|
|
491
491
|
</div>
|
|
492
492
|
<script src="prettify.js"></script>
|
|
493
493
|
<script>
|
|
@@ -439,7 +439,7 @@ export class VectorSearch {
|
|
|
439
439
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
440
440
|
Code coverage generated by
|
|
441
441
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
442
|
-
at 2026-05-19T02:
|
|
442
|
+
at 2026-05-19T02:12:26.778Z
|
|
443
443
|
</div>
|
|
444
444
|
<script src="prettify.js"></script>
|
|
445
445
|
<script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ralph-hero-knowledge-index",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.45",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@huggingface/transformers": "^3.0.0",
|
|
26
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
27
|
-
"better-sqlite3": "^12.
|
|
28
|
-
"graphology": "^0.
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
27
|
+
"better-sqlite3": "^12.10.0",
|
|
28
|
+
"graphology": "^0.26.0",
|
|
29
29
|
"graphology-communities-louvain": "^2.0.2",
|
|
30
30
|
"graphology-components": "^1.5.4",
|
|
31
31
|
"graphology-metrics": "^2.4.0",
|
|
@@ -35,15 +35,15 @@
|
|
|
35
35
|
"graphology-traversal": "^0.3.1",
|
|
36
36
|
"graphology-types": "^0.24.8",
|
|
37
37
|
"ignore": "^7.0.5",
|
|
38
|
-
"sqlite-vec": "^0.1.
|
|
39
|
-
"yaml": "^2.
|
|
38
|
+
"sqlite-vec": "^0.1.9",
|
|
39
|
+
"yaml": "^2.9.0",
|
|
40
40
|
"zod": "^3.25.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/better-sqlite3": "^7.6.13",
|
|
44
|
-
"@types/node": "^25.
|
|
45
|
-
"@vitest/coverage-v8": "^4.1.
|
|
46
|
-
"tsx": "^4.
|
|
44
|
+
"@types/node": "^25.9.0",
|
|
45
|
+
"@vitest/coverage-v8": "^4.1.6",
|
|
46
|
+
"tsx": "^4.22.2",
|
|
47
47
|
"typescript": "^6.0.3",
|
|
48
48
|
"vitest": "^4.0.0"
|
|
49
49
|
}
|