gnosys 4.0.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/LICENSE +21 -0
- package/README.md +1387 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3753 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2267 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/archive.d.ts +95 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +311 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/ask.d.ts +77 -0
- package/dist/lib/ask.d.ts.map +1 -0
- package/dist/lib/ask.js +316 -0
- package/dist/lib/ask.js.map +1 -0
- package/dist/lib/audit.d.ts +47 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +136 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/bootstrap.d.ts +56 -0
- package/dist/lib/bootstrap.d.ts.map +1 -0
- package/dist/lib/bootstrap.js +163 -0
- package/dist/lib/bootstrap.js.map +1 -0
- package/dist/lib/config.d.ts +239 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +371 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dashboard.d.ts +81 -0
- package/dist/lib/dashboard.d.ts.map +1 -0
- package/dist/lib/dashboard.js +314 -0
- package/dist/lib/dashboard.js.map +1 -0
- package/dist/lib/db.d.ts +182 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +620 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/dbSearch.d.ts +65 -0
- package/dist/lib/dbSearch.d.ts.map +1 -0
- package/dist/lib/dbSearch.js +239 -0
- package/dist/lib/dbSearch.js.map +1 -0
- package/dist/lib/dbWrite.d.ts +56 -0
- package/dist/lib/dbWrite.d.ts.map +1 -0
- package/dist/lib/dbWrite.js +171 -0
- package/dist/lib/dbWrite.js.map +1 -0
- package/dist/lib/dream.d.ts +170 -0
- package/dist/lib/dream.d.ts.map +1 -0
- package/dist/lib/dream.js +706 -0
- package/dist/lib/dream.js.map +1 -0
- package/dist/lib/embeddings.d.ts +84 -0
- package/dist/lib/embeddings.d.ts.map +1 -0
- package/dist/lib/embeddings.js +226 -0
- package/dist/lib/embeddings.js.map +1 -0
- package/dist/lib/export.d.ts +92 -0
- package/dist/lib/export.d.ts.map +1 -0
- package/dist/lib/export.js +362 -0
- package/dist/lib/export.js.map +1 -0
- package/dist/lib/federated.d.ts +113 -0
- package/dist/lib/federated.d.ts.map +1 -0
- package/dist/lib/federated.js +346 -0
- package/dist/lib/federated.js.map +1 -0
- package/dist/lib/graph.d.ts +50 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +118 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/history.d.ts +39 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +112 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/hybridSearch.d.ts +80 -0
- package/dist/lib/hybridSearch.d.ts.map +1 -0
- package/dist/lib/hybridSearch.js +296 -0
- package/dist/lib/hybridSearch.js.map +1 -0
- package/dist/lib/import.d.ts +52 -0
- package/dist/lib/import.d.ts.map +1 -0
- package/dist/lib/import.js +365 -0
- package/dist/lib/import.js.map +1 -0
- package/dist/lib/ingest.d.ts +51 -0
- package/dist/lib/ingest.d.ts.map +1 -0
- package/dist/lib/ingest.js +144 -0
- package/dist/lib/ingest.js.map +1 -0
- package/dist/lib/lensing.d.ts +35 -0
- package/dist/lib/lensing.d.ts.map +1 -0
- package/dist/lib/lensing.js +85 -0
- package/dist/lib/lensing.js.map +1 -0
- package/dist/lib/llm.d.ts +84 -0
- package/dist/lib/llm.d.ts.map +1 -0
- package/dist/lib/llm.js +386 -0
- package/dist/lib/llm.js.map +1 -0
- package/dist/lib/lock.d.ts +28 -0
- package/dist/lib/lock.d.ts.map +1 -0
- package/dist/lib/lock.js +145 -0
- package/dist/lib/lock.js.map +1 -0
- package/dist/lib/maintenance.d.ts +124 -0
- package/dist/lib/maintenance.d.ts.map +1 -0
- package/dist/lib/maintenance.js +587 -0
- package/dist/lib/maintenance.js.map +1 -0
- package/dist/lib/migrate.d.ts +19 -0
- package/dist/lib/migrate.d.ts.map +1 -0
- package/dist/lib/migrate.js +260 -0
- package/dist/lib/migrate.js.map +1 -0
- package/dist/lib/preferences.d.ts +49 -0
- package/dist/lib/preferences.d.ts.map +1 -0
- package/dist/lib/preferences.js +149 -0
- package/dist/lib/preferences.js.map +1 -0
- package/dist/lib/projectIdentity.d.ts +66 -0
- package/dist/lib/projectIdentity.d.ts.map +1 -0
- package/dist/lib/projectIdentity.js +148 -0
- package/dist/lib/projectIdentity.js.map +1 -0
- package/dist/lib/recall.d.ts +82 -0
- package/dist/lib/recall.d.ts.map +1 -0
- package/dist/lib/recall.js +289 -0
- package/dist/lib/recall.js.map +1 -0
- package/dist/lib/resolver.d.ts +116 -0
- package/dist/lib/resolver.d.ts.map +1 -0
- package/dist/lib/resolver.js +372 -0
- package/dist/lib/resolver.js.map +1 -0
- package/dist/lib/retry.d.ts +24 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +60 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/rulesGen.d.ts +51 -0
- package/dist/lib/rulesGen.d.ts.map +1 -0
- package/dist/lib/rulesGen.js +167 -0
- package/dist/lib/rulesGen.js.map +1 -0
- package/dist/lib/search.d.ts +51 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +190 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/staticSearch.d.ts +70 -0
- package/dist/lib/staticSearch.d.ts.map +1 -0
- package/dist/lib/staticSearch.js +162 -0
- package/dist/lib/staticSearch.js.map +1 -0
- package/dist/lib/store.d.ts +79 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/lib/store.js +227 -0
- package/dist/lib/store.js.map +1 -0
- package/dist/lib/structuredIngest.d.ts +37 -0
- package/dist/lib/structuredIngest.d.ts.map +1 -0
- package/dist/lib/structuredIngest.js +208 -0
- package/dist/lib/structuredIngest.js.map +1 -0
- package/dist/lib/tags.d.ts +26 -0
- package/dist/lib/tags.d.ts.map +1 -0
- package/dist/lib/tags.js +109 -0
- package/dist/lib/tags.js.map +1 -0
- package/dist/lib/timeline.d.ts +34 -0
- package/dist/lib/timeline.d.ts.map +1 -0
- package/dist/lib/timeline.js +116 -0
- package/dist/lib/timeline.js.map +1 -0
- package/dist/lib/trace.d.ts +42 -0
- package/dist/lib/trace.d.ts.map +1 -0
- package/dist/lib/trace.js +338 -0
- package/dist/lib/trace.js.map +1 -0
- package/dist/lib/webIndex.d.ts +28 -0
- package/dist/lib/webIndex.d.ts.map +1 -0
- package/dist/lib/webIndex.js +208 -0
- package/dist/lib/webIndex.js.map +1 -0
- package/dist/lib/webIngest.d.ts +51 -0
- package/dist/lib/webIngest.d.ts.map +1 -0
- package/dist/lib/webIngest.js +533 -0
- package/dist/lib/webIngest.js.map +1 -0
- package/dist/lib/wikilinks.d.ts +63 -0
- package/dist/lib/wikilinks.d.ts.map +1 -0
- package/dist/lib/wikilinks.js +146 -0
- package/dist/lib/wikilinks.js.map +1 -0
- package/dist/sandbox/client.d.ts +82 -0
- package/dist/sandbox/client.d.ts.map +1 -0
- package/dist/sandbox/client.js +128 -0
- package/dist/sandbox/client.js.map +1 -0
- package/dist/sandbox/helper-template.d.ts +14 -0
- package/dist/sandbox/helper-template.d.ts.map +1 -0
- package/dist/sandbox/helper-template.js +285 -0
- package/dist/sandbox/helper-template.js.map +1 -0
- package/dist/sandbox/index.d.ts +10 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +10 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/manager.d.ts +40 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +220 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/sandbox/server.d.ts +44 -0
- package/dist/sandbox/server.d.ts.map +1 -0
- package/dist/sandbox/server.js +661 -0
- package/dist/sandbox/server.js.map +1 -0
- package/package.json +103 -0
- package/prompts/synthesize.md +21 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gnosys History — Git-backed version history for individual memories.
|
|
3
|
+
*
|
|
4
|
+
* Every memory write/update auto-commits to git. This module exposes
|
|
5
|
+
* that history: view what changed, when, and rollback to prior versions.
|
|
6
|
+
*/
|
|
7
|
+
import { execFileSync } from "child_process";
|
|
8
|
+
import path from "path";
|
|
9
|
+
/** Validate a git commit hash (short or full, hex only). */
|
|
10
|
+
function isValidCommitHash(hash) {
|
|
11
|
+
return /^[a-f0-9]{4,40}$/i.test(hash);
|
|
12
|
+
}
|
|
13
|
+
/** Validate a relative path has no traversal or shell metacharacters. */
|
|
14
|
+
function isValidRelativePath(p) {
|
|
15
|
+
const resolved = path.resolve("/fake-root", p);
|
|
16
|
+
return resolved.startsWith("/fake-root/") && !p.includes("\0");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the commit history for a specific memory file.
|
|
20
|
+
*/
|
|
21
|
+
export function getFileHistory(storePath, relativePath, limit = 20) {
|
|
22
|
+
if (!isValidRelativePath(relativePath))
|
|
23
|
+
return [];
|
|
24
|
+
try {
|
|
25
|
+
const output = execFileSync("git", ["log", "--follow", `--format=%H|%ai|%s`, `-n`, String(limit), "--", relativePath], { cwd: storePath, stdio: ["pipe", "pipe", "pipe"], encoding: "utf-8" });
|
|
26
|
+
if (!output.trim())
|
|
27
|
+
return [];
|
|
28
|
+
return output
|
|
29
|
+
.trim()
|
|
30
|
+
.split("\n")
|
|
31
|
+
.filter(Boolean)
|
|
32
|
+
.map((line) => {
|
|
33
|
+
const [commitHash, date, ...msgParts] = line.split("|");
|
|
34
|
+
return {
|
|
35
|
+
commitHash: commitHash.trim(),
|
|
36
|
+
date: date.trim().split(" ")[0], // Just the date part
|
|
37
|
+
message: msgParts.join("|").trim(),
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the full file content at a specific commit.
|
|
47
|
+
*/
|
|
48
|
+
export function getFileAtCommit(storePath, relativePath, commitHash) {
|
|
49
|
+
if (!isValidCommitHash(commitHash))
|
|
50
|
+
return null;
|
|
51
|
+
if (!isValidRelativePath(relativePath))
|
|
52
|
+
return null;
|
|
53
|
+
try {
|
|
54
|
+
return execFileSync("git", ["show", `${commitHash}:${relativePath}`], { cwd: storePath, stdio: ["pipe", "pipe", "pipe"], encoding: "utf-8" });
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get a diff between two commits for a specific file.
|
|
62
|
+
*/
|
|
63
|
+
export function getFileDiff(storePath, relativePath, fromHash, toHash) {
|
|
64
|
+
if (!isValidCommitHash(fromHash) || !isValidCommitHash(toHash))
|
|
65
|
+
return null;
|
|
66
|
+
if (!isValidRelativePath(relativePath))
|
|
67
|
+
return null;
|
|
68
|
+
try {
|
|
69
|
+
return execFileSync("git", ["diff", `${fromHash}..${toHash}`, "--", relativePath], { cwd: storePath, stdio: ["pipe", "pipe", "pipe"], encoding: "utf-8" });
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Rollback a memory to its state at a specific commit.
|
|
77
|
+
* Creates a new commit with the reverted content (non-destructive).
|
|
78
|
+
*/
|
|
79
|
+
export function rollbackToCommit(storePath, relativePath, commitHash) {
|
|
80
|
+
if (!isValidCommitHash(commitHash))
|
|
81
|
+
return false;
|
|
82
|
+
if (!isValidRelativePath(relativePath))
|
|
83
|
+
return false;
|
|
84
|
+
try {
|
|
85
|
+
// Restore file to its state at the target commit
|
|
86
|
+
execFileSync("git", ["checkout", commitHash, "--", relativePath], { cwd: storePath, stdio: "pipe" });
|
|
87
|
+
// Stage the restored file
|
|
88
|
+
execFileSync("git", ["add", relativePath], { cwd: storePath, stdio: "pipe" });
|
|
89
|
+
// Commit the rollback as a new commit
|
|
90
|
+
execFileSync("git", ["commit", "-m", `Rollback ${relativePath} to ${commitHash.substring(0, 7)}`], { cwd: storePath, stdio: "pipe" });
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if git is available and the store has history.
|
|
99
|
+
*/
|
|
100
|
+
export function hasGitHistory(storePath) {
|
|
101
|
+
try {
|
|
102
|
+
execFileSync("git", ["rev-parse", "--git-dir"], {
|
|
103
|
+
cwd: storePath,
|
|
104
|
+
stdio: "pipe",
|
|
105
|
+
});
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/lib/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gnosys Hybrid Search — Combines FTS5 keyword search with semantic embeddings
|
|
3
|
+
* using Reciprocal Rank Fusion (RRF).
|
|
4
|
+
*
|
|
5
|
+
* Three modes:
|
|
6
|
+
* keyword — FTS5 only (fast, no model needed)
|
|
7
|
+
* semantic — embeddings cosine similarity only
|
|
8
|
+
* hybrid — RRF fusion of both (default when embeddings exist)
|
|
9
|
+
*/
|
|
10
|
+
import { GnosysSearch } from "./search.js";
|
|
11
|
+
import { GnosysEmbeddings } from "./embeddings.js";
|
|
12
|
+
import { GnosysResolver } from "./resolver.js";
|
|
13
|
+
import { GnosysDB } from "./db.js";
|
|
14
|
+
export type SearchMode = "keyword" | "semantic" | "hybrid";
|
|
15
|
+
export interface HybridSearchResult {
|
|
16
|
+
relativePath: string;
|
|
17
|
+
title: string;
|
|
18
|
+
snippet: string;
|
|
19
|
+
score: number;
|
|
20
|
+
/** Which method(s) found this result */
|
|
21
|
+
sources: ("keyword" | "semantic" | "archive")[];
|
|
22
|
+
/** Full memory content (loaded on demand for ask engine) */
|
|
23
|
+
content?: string;
|
|
24
|
+
/** The memory frontmatter content field */
|
|
25
|
+
fullContent?: string;
|
|
26
|
+
/** Memory ID (used for dearchiving) */
|
|
27
|
+
memoryId?: string;
|
|
28
|
+
/** Whether this result came from the archive */
|
|
29
|
+
fromArchive?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare class GnosysHybridSearch {
|
|
32
|
+
private search;
|
|
33
|
+
private embeddings;
|
|
34
|
+
private resolver;
|
|
35
|
+
private storePath;
|
|
36
|
+
/** v2.0: When set, hybrid search uses SQLite directly */
|
|
37
|
+
private dbSearch;
|
|
38
|
+
constructor(search: GnosysSearch, embeddings: GnosysEmbeddings, resolver: GnosysResolver, storePath: string, gnosysDb?: GnosysDB);
|
|
39
|
+
/**
|
|
40
|
+
* Main hybrid search entry point.
|
|
41
|
+
* Searches active memories first; if results are insufficient, also searches archive.db.
|
|
42
|
+
*/
|
|
43
|
+
hybridSearch(query: string, limit?: number, mode?: SearchMode): Promise<HybridSearchResult[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Search the archive.db for memories.
|
|
46
|
+
*/
|
|
47
|
+
private searchArchive;
|
|
48
|
+
/**
|
|
49
|
+
* Keyword search via existing FTS5.
|
|
50
|
+
*/
|
|
51
|
+
private keywordSearch;
|
|
52
|
+
/**
|
|
53
|
+
* Semantic search via embeddings cosine similarity.
|
|
54
|
+
*/
|
|
55
|
+
private semanticSearch;
|
|
56
|
+
/**
|
|
57
|
+
* Reciprocal Rank Fusion — combines two ranked lists.
|
|
58
|
+
* RRF score: score(d) = Σ 1/(k + rank_i(d)) for each ranking system i
|
|
59
|
+
*/
|
|
60
|
+
private rrfFusion;
|
|
61
|
+
/**
|
|
62
|
+
* Reindex all embeddings from all stores.
|
|
63
|
+
* Returns count of files indexed.
|
|
64
|
+
*/
|
|
65
|
+
reindex(onProgress?: (current: number, total: number, filePath: string) => void): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Load full content for search results (used by Ask engine).
|
|
68
|
+
* Handles both active memories and archived memories.
|
|
69
|
+
*/
|
|
70
|
+
loadContent(results: HybridSearchResult[]): Promise<HybridSearchResult[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Check if embeddings are available.
|
|
73
|
+
*/
|
|
74
|
+
hasEmbeddings(): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Get embedding count.
|
|
77
|
+
*/
|
|
78
|
+
embeddingCount(): number;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=hybridSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybridSearch.d.ts","sourceRoot":"","sources":["../../src/lib/hybridSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,EAAE,CAAC,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;IAChD,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAKD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAA+B;gBAG7C,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,QAAQ;IAarB;;;OAGG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,EAClB,IAAI,GAAE,UAAqB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkDhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;YACW,cAAc;IAyC5B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAwDjB;;;OAGG;IACG,OAAO,CACX,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GACtE,OAAO,CAAC,MAAM,CAAC;IA2ClB;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA4C/E;;OAEG;IACH,aAAa,IAAI,OAAO;IAKxB;;OAEG;IACH,cAAc,IAAI,MAAM;CAIzB"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gnosys Hybrid Search — Combines FTS5 keyword search with semantic embeddings
|
|
3
|
+
* using Reciprocal Rank Fusion (RRF).
|
|
4
|
+
*
|
|
5
|
+
* Three modes:
|
|
6
|
+
* keyword — FTS5 only (fast, no model needed)
|
|
7
|
+
* semantic — embeddings cosine similarity only
|
|
8
|
+
* hybrid — RRF fusion of both (default when embeddings exist)
|
|
9
|
+
*/
|
|
10
|
+
import { GnosysEmbeddings } from "./embeddings.js";
|
|
11
|
+
import { GnosysArchive } from "./archive.js";
|
|
12
|
+
import { GnosysDbSearch } from "./dbSearch.js";
|
|
13
|
+
/** RRF constant k — standard value from Cormack et al. 2009 */
|
|
14
|
+
const RRF_K = 60;
|
|
15
|
+
export class GnosysHybridSearch {
|
|
16
|
+
search;
|
|
17
|
+
embeddings;
|
|
18
|
+
resolver;
|
|
19
|
+
storePath;
|
|
20
|
+
/** v2.0: When set, hybrid search uses SQLite directly */
|
|
21
|
+
dbSearch = null;
|
|
22
|
+
constructor(search, embeddings, resolver, storePath, gnosysDb) {
|
|
23
|
+
this.search = search;
|
|
24
|
+
this.embeddings = embeddings;
|
|
25
|
+
this.resolver = resolver;
|
|
26
|
+
this.storePath = storePath;
|
|
27
|
+
// v2.0: If GnosysDB is migrated, create a DB search adapter
|
|
28
|
+
if (gnosysDb?.isAvailable() && gnosysDb?.isMigrated()) {
|
|
29
|
+
this.dbSearch = new GnosysDbSearch(gnosysDb);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Main hybrid search entry point.
|
|
34
|
+
* Searches active memories first; if results are insufficient, also searches archive.db.
|
|
35
|
+
*/
|
|
36
|
+
async hybridSearch(query, limit = 15, mode = "hybrid") {
|
|
37
|
+
// v2.0 DB-backed fast path: run entirely from gnosys.db
|
|
38
|
+
if (this.dbSearch) {
|
|
39
|
+
const embedQuery = this.embeddings.hasEmbeddings()
|
|
40
|
+
? (text) => this.embeddings.embed(text)
|
|
41
|
+
: undefined;
|
|
42
|
+
return this.dbSearch.hybridSearch(query, limit, mode, embedQuery);
|
|
43
|
+
}
|
|
44
|
+
// Auto-downgrade to keyword if no embeddings available
|
|
45
|
+
if (mode === "hybrid" || mode === "semantic") {
|
|
46
|
+
if (!this.embeddings.hasEmbeddings()) {
|
|
47
|
+
if (mode === "semantic") {
|
|
48
|
+
return []; // Can't do semantic without embeddings
|
|
49
|
+
}
|
|
50
|
+
mode = "keyword"; // Downgrade hybrid to keyword
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let results;
|
|
54
|
+
if (mode === "keyword") {
|
|
55
|
+
results = this.keywordSearch(query, limit);
|
|
56
|
+
}
|
|
57
|
+
else if (mode === "semantic") {
|
|
58
|
+
results = await this.semanticSearch(query, limit);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Hybrid: run both and fuse with RRF
|
|
62
|
+
const [keywordResults, semanticResults] = await Promise.all([
|
|
63
|
+
this.keywordSearch(query, limit * 2),
|
|
64
|
+
this.semanticSearch(query, limit * 2),
|
|
65
|
+
]);
|
|
66
|
+
results = this.rrfFusion(keywordResults, semanticResults, limit);
|
|
67
|
+
}
|
|
68
|
+
// If active results are insufficient, search archive.db
|
|
69
|
+
if (results.length < limit) {
|
|
70
|
+
const archiveResults = this.searchArchive(query, limit - results.length);
|
|
71
|
+
if (archiveResults.length > 0) {
|
|
72
|
+
// Deduplicate by title (archive results won't have same relativePath)
|
|
73
|
+
const existingTitles = new Set(results.map((r) => r.title.toLowerCase()));
|
|
74
|
+
const newArchiveResults = archiveResults.filter((ar) => !existingTitles.has(ar.title.toLowerCase()));
|
|
75
|
+
results = [...results, ...newArchiveResults];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return results.slice(0, limit);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Search the archive.db for memories.
|
|
82
|
+
*/
|
|
83
|
+
searchArchive(query, limit) {
|
|
84
|
+
try {
|
|
85
|
+
const archive = new GnosysArchive(this.storePath);
|
|
86
|
+
if (!archive.isAvailable())
|
|
87
|
+
return [];
|
|
88
|
+
const archiveResults = archive.searchArchive(query, limit);
|
|
89
|
+
archive.close();
|
|
90
|
+
return archiveResults.map((ar) => ({
|
|
91
|
+
relativePath: `archive:${ar.category}/${ar.id}`,
|
|
92
|
+
title: ar.title,
|
|
93
|
+
snippet: ar.snippet,
|
|
94
|
+
score: Math.abs(ar.score) > 0 ? 1 / (RRF_K + Math.abs(ar.score)) : 0.001,
|
|
95
|
+
sources: ["archive"],
|
|
96
|
+
memoryId: ar.id,
|
|
97
|
+
fromArchive: true,
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Keyword search via existing FTS5.
|
|
106
|
+
*/
|
|
107
|
+
keywordSearch(query, limit) {
|
|
108
|
+
const results = this.search.search(query, limit);
|
|
109
|
+
return results.map((r, i) => ({
|
|
110
|
+
relativePath: r.relative_path,
|
|
111
|
+
title: r.title,
|
|
112
|
+
snippet: r.snippet,
|
|
113
|
+
score: 1 / (RRF_K + i + 1), // RRF score based on rank position
|
|
114
|
+
sources: ["keyword"],
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Semantic search via embeddings cosine similarity.
|
|
119
|
+
*/
|
|
120
|
+
async semanticSearch(query, limit) {
|
|
121
|
+
// Embed the query
|
|
122
|
+
const queryEmbedding = await this.embeddings.embed(query);
|
|
123
|
+
// Get all stored embeddings and compute similarities
|
|
124
|
+
const allEmbeddings = this.embeddings.getAllEmbeddings();
|
|
125
|
+
const scored = [];
|
|
126
|
+
for (const entry of allEmbeddings) {
|
|
127
|
+
const similarity = GnosysEmbeddings.cosineSimilarity(queryEmbedding, entry.embedding);
|
|
128
|
+
scored.push({ filePath: entry.filePath, similarity });
|
|
129
|
+
}
|
|
130
|
+
// Sort by similarity descending
|
|
131
|
+
scored.sort((a, b) => b.similarity - a.similarity);
|
|
132
|
+
const topN = scored.slice(0, limit);
|
|
133
|
+
// Load memory metadata for results
|
|
134
|
+
const results = [];
|
|
135
|
+
for (const item of topN) {
|
|
136
|
+
const memory = await this.resolver.readMemory(item.filePath);
|
|
137
|
+
if (memory) {
|
|
138
|
+
results.push({
|
|
139
|
+
relativePath: item.filePath,
|
|
140
|
+
title: memory.frontmatter.title,
|
|
141
|
+
snippet: memory.content.substring(0, 200),
|
|
142
|
+
score: item.similarity,
|
|
143
|
+
sources: ["semantic"],
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return results;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Reciprocal Rank Fusion — combines two ranked lists.
|
|
151
|
+
* RRF score: score(d) = Σ 1/(k + rank_i(d)) for each ranking system i
|
|
152
|
+
*/
|
|
153
|
+
rrfFusion(keywordResults, semanticResults, limit) {
|
|
154
|
+
const scoreMap = new Map();
|
|
155
|
+
// Score keyword results
|
|
156
|
+
for (let i = 0; i < keywordResults.length; i++) {
|
|
157
|
+
const r = keywordResults[i];
|
|
158
|
+
const rrfScore = 1 / (RRF_K + i + 1);
|
|
159
|
+
scoreMap.set(r.relativePath, {
|
|
160
|
+
score: rrfScore,
|
|
161
|
+
result: r,
|
|
162
|
+
sources: new Set(["keyword"]),
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Score semantic results and merge
|
|
166
|
+
for (let i = 0; i < semanticResults.length; i++) {
|
|
167
|
+
const r = semanticResults[i];
|
|
168
|
+
const rrfScore = 1 / (RRF_K + i + 1);
|
|
169
|
+
const existing = scoreMap.get(r.relativePath);
|
|
170
|
+
if (existing) {
|
|
171
|
+
existing.score += rrfScore;
|
|
172
|
+
existing.sources.add("semantic");
|
|
173
|
+
// Use semantic snippet if keyword snippet is empty
|
|
174
|
+
if (!existing.result.snippet && r.snippet) {
|
|
175
|
+
existing.result.snippet = r.snippet;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
scoreMap.set(r.relativePath, {
|
|
180
|
+
score: rrfScore,
|
|
181
|
+
result: r,
|
|
182
|
+
sources: new Set(["semantic"]),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Sort by combined RRF score descending
|
|
187
|
+
const fused = Array.from(scoreMap.values())
|
|
188
|
+
.sort((a, b) => b.score - a.score)
|
|
189
|
+
.slice(0, limit)
|
|
190
|
+
.map((entry) => ({
|
|
191
|
+
...entry.result,
|
|
192
|
+
score: entry.score,
|
|
193
|
+
sources: Array.from(entry.sources),
|
|
194
|
+
}));
|
|
195
|
+
return fused;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Reindex all embeddings from all stores.
|
|
199
|
+
* Returns count of files indexed.
|
|
200
|
+
*/
|
|
201
|
+
async reindex(onProgress) {
|
|
202
|
+
// Gather all memories from all stores
|
|
203
|
+
const allMemories = await this.resolver.getAllMemories();
|
|
204
|
+
// Clear existing embeddings
|
|
205
|
+
this.embeddings.clear();
|
|
206
|
+
let indexed = 0;
|
|
207
|
+
const total = allMemories.length;
|
|
208
|
+
// Process in batches for efficiency
|
|
209
|
+
const batchSize = 32;
|
|
210
|
+
for (let i = 0; i < allMemories.length; i += batchSize) {
|
|
211
|
+
const batch = allMemories.slice(i, i + batchSize);
|
|
212
|
+
// Prepare texts: combine title + relevance + content for embedding
|
|
213
|
+
const texts = batch.map((m) => {
|
|
214
|
+
const tags = Array.isArray(m.frontmatter.tags)
|
|
215
|
+
? m.frontmatter.tags.join(" ")
|
|
216
|
+
: Object.values(m.frontmatter.tags).flat().join(" ");
|
|
217
|
+
return `${m.frontmatter.title}\n${m.frontmatter.relevance || ""}\n${tags}\n${m.content}`;
|
|
218
|
+
});
|
|
219
|
+
const embeddings = await this.embeddings.embedBatch(texts);
|
|
220
|
+
for (let j = 0; j < batch.length; j++) {
|
|
221
|
+
const memory = batch[j];
|
|
222
|
+
const embedding = embeddings[j];
|
|
223
|
+
const hash = GnosysEmbeddings.contentHash(texts[j]);
|
|
224
|
+
// Use the store-prefixed path for multi-store support
|
|
225
|
+
const indexPath = `${memory.sourceLabel}:${memory.relativePath}`;
|
|
226
|
+
this.embeddings.storeEmbedding(indexPath, embedding, hash);
|
|
227
|
+
indexed++;
|
|
228
|
+
onProgress?.(indexed, total, memory.relativePath);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return indexed;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Load full content for search results (used by Ask engine).
|
|
235
|
+
* Handles both active memories and archived memories.
|
|
236
|
+
*/
|
|
237
|
+
async loadContent(results) {
|
|
238
|
+
// v2.0 DB-backed fast path
|
|
239
|
+
if (this.dbSearch) {
|
|
240
|
+
return this.dbSearch.loadContent(results);
|
|
241
|
+
}
|
|
242
|
+
const enriched = [];
|
|
243
|
+
let archive = null;
|
|
244
|
+
for (const r of results) {
|
|
245
|
+
if (r.fromArchive && r.memoryId) {
|
|
246
|
+
// Load from archive
|
|
247
|
+
if (!archive) {
|
|
248
|
+
archive = new GnosysArchive(this.storePath);
|
|
249
|
+
}
|
|
250
|
+
if (archive.isAvailable()) {
|
|
251
|
+
const archived = archive.getArchivedMemory(r.memoryId);
|
|
252
|
+
if (archived) {
|
|
253
|
+
enriched.push({
|
|
254
|
+
...r,
|
|
255
|
+
fullContent: archived.content,
|
|
256
|
+
});
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
enriched.push(r);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
const memory = await this.resolver.readMemory(r.relativePath);
|
|
264
|
+
if (memory) {
|
|
265
|
+
enriched.push({
|
|
266
|
+
...r,
|
|
267
|
+
fullContent: memory.content,
|
|
268
|
+
memoryId: memory.frontmatter.id,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
enriched.push(r);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
archive?.close();
|
|
277
|
+
return enriched;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Check if embeddings are available.
|
|
281
|
+
*/
|
|
282
|
+
hasEmbeddings() {
|
|
283
|
+
if (this.dbSearch)
|
|
284
|
+
return this.dbSearch.hasEmbeddings();
|
|
285
|
+
return this.embeddings.hasEmbeddings();
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Get embedding count.
|
|
289
|
+
*/
|
|
290
|
+
embeddingCount() {
|
|
291
|
+
if (this.dbSearch)
|
|
292
|
+
return this.dbSearch.embeddingCount();
|
|
293
|
+
return this.embeddings.count();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=hybridSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybridSearch.js","sourceRoot":"","sources":["../../src/lib/hybridSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gnosys Bulk Import — Structured data → atomic memories.
|
|
3
|
+
* Supports CSV, JSON, JSONL formats with LLM or structured ingestion modes.
|
|
4
|
+
* Shared core used by both the MCP tool and CLI command.
|
|
5
|
+
*/
|
|
6
|
+
import { GnosysIngestion } from "./ingest.js";
|
|
7
|
+
import { GnosysStore } from "./store.js";
|
|
8
|
+
export interface ImportOptions {
|
|
9
|
+
format: "csv" | "json" | "jsonl";
|
|
10
|
+
data: string;
|
|
11
|
+
mapping: Record<string, string>;
|
|
12
|
+
mode: "llm" | "structured";
|
|
13
|
+
limit?: number;
|
|
14
|
+
offset?: number;
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
skipExisting?: boolean;
|
|
17
|
+
batchCommit?: boolean;
|
|
18
|
+
concurrency?: number;
|
|
19
|
+
author?: "human" | "ai" | "human+ai";
|
|
20
|
+
authority?: "declared" | "observed" | "imported" | "inferred";
|
|
21
|
+
onProgress?: (progress: ImportProgress) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ImportProgress {
|
|
24
|
+
processed: number;
|
|
25
|
+
total: number;
|
|
26
|
+
current: string;
|
|
27
|
+
stage: "parsing" | "deduplicating" | "ingesting" | "writing" | "committing";
|
|
28
|
+
}
|
|
29
|
+
export interface ImportResult {
|
|
30
|
+
imported: Array<{
|
|
31
|
+
title: string;
|
|
32
|
+
category: string;
|
|
33
|
+
path: string;
|
|
34
|
+
}>;
|
|
35
|
+
skipped: string[];
|
|
36
|
+
failed: Array<{
|
|
37
|
+
record: string;
|
|
38
|
+
error: string;
|
|
39
|
+
}>;
|
|
40
|
+
totalProcessed: number;
|
|
41
|
+
duration: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function performImport(store: GnosysStore, ingestion: GnosysIngestion, options: ImportOptions): Promise<ImportResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Format a human-readable summary of import results.
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatImportSummary(result: ImportResult): string;
|
|
48
|
+
/**
|
|
49
|
+
* Estimate import duration for smart threshold guidance.
|
|
50
|
+
*/
|
|
51
|
+
export declare function estimateDuration(recordCount: number, mode: "llm" | "structured", concurrency?: number): string;
|
|
52
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/lib/import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAI5D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,KAAK,GAAG,YAAY,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;IACrC,SAAS,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;CAC7E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqLD,wBAAsB,aAAa,CACjC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CA6MvB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAsBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,GAAG,YAAY,EAC1B,WAAW,GAAE,MAAU,GACtB,MAAM,CAYR"}
|