bernard-agent 0.2.2 → 0.3.1

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.
Files changed (57) hide show
  1. package/.env.example +10 -0
  2. package/README.md +16 -6
  3. package/dist/agent.d.ts +4 -0
  4. package/dist/agent.js +84 -38
  5. package/dist/agent.js.map +1 -1
  6. package/dist/config.d.ts +5 -0
  7. package/dist/config.js +21 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/context.d.ts +38 -1
  10. package/dist/context.js +171 -41
  11. package/dist/context.js.map +1 -1
  12. package/dist/cron/runner.js +33 -1
  13. package/dist/cron/runner.js.map +1 -1
  14. package/dist/domains.d.ts +10 -0
  15. package/dist/domains.js +118 -0
  16. package/dist/domains.js.map +1 -0
  17. package/dist/facts-cli.d.ts +7 -0
  18. package/dist/facts-cli.js +197 -0
  19. package/dist/facts-cli.js.map +1 -0
  20. package/dist/index.js +62 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/logger.js +1 -2
  23. package/dist/logger.js.map +1 -1
  24. package/dist/memory-context.d.ts +13 -0
  25. package/dist/memory-context.js +48 -0
  26. package/dist/memory-context.js.map +1 -0
  27. package/dist/output.js +39 -35
  28. package/dist/output.js.map +1 -1
  29. package/dist/rag-query.d.ts +31 -0
  30. package/dist/rag-query.js +99 -0
  31. package/dist/rag-query.js.map +1 -0
  32. package/dist/rag-worker.d.ts +1 -1
  33. package/dist/rag-worker.js +9 -6
  34. package/dist/rag-worker.js.map +1 -1
  35. package/dist/rag.d.ts +36 -5
  36. package/dist/rag.js +118 -31
  37. package/dist/rag.js.map +1 -1
  38. package/dist/repl.js +119 -12
  39. package/dist/repl.js.map +1 -1
  40. package/dist/setup.js +17 -18
  41. package/dist/setup.js.map +1 -1
  42. package/dist/theme.d.ts +28 -0
  43. package/dist/theme.js +154 -0
  44. package/dist/theme.js.map +1 -0
  45. package/dist/tools/index.d.ts +11 -0
  46. package/dist/tools/index.js +2 -0
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/subagent.d.ts +2 -1
  49. package/dist/tools/subagent.js +25 -5
  50. package/dist/tools/subagent.js.map +1 -1
  51. package/dist/tools/wait.d.ts +14 -0
  52. package/dist/tools/wait.js +28 -0
  53. package/dist/tools/wait.js.map +1 -0
  54. package/dist/update.d.ts +35 -0
  55. package/dist/update.js +233 -0
  56. package/dist/update.js.map +1 -0
  57. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CoreMessage } from 'ai';
2
+ import type { RAGSearchResult } from './rag.js';
3
+ export declare const DEFAULT_WINDOW_SIZE = 2;
4
+ export declare const DEFAULT_MAX_QUERY_CHARS = 1000;
5
+ export declare const DEFAULT_STICKINESS_BOOST = 0.05;
6
+ /**
7
+ * Walk history backward and collect up to `maxMessages` user-role text strings.
8
+ * Skips system-injected boundary messages (context summaries, session markers).
9
+ * Returns texts in chronological order (oldest first).
10
+ */
11
+ export declare function extractRecentUserTexts(history: CoreMessage[], maxMessages?: number): string[];
12
+ export interface BuildRAGQueryOptions {
13
+ maxQueryChars?: number;
14
+ }
15
+ /**
16
+ * Build a RAG search query from the current user input plus recent history.
17
+ * Current input is always at the end (transformers attend more to later tokens).
18
+ * Truncates older messages first to stay within the character budget.
19
+ */
20
+ export declare function buildRAGQuery(currentInput: string, recentUserTexts: string[], options?: BuildRAGQueryOptions): string;
21
+ export interface ApplyStickinessOptions {
22
+ boost?: number;
23
+ topKPerDomain?: number;
24
+ maxResults?: number;
25
+ }
26
+ /**
27
+ * Boost similarity scores for facts that appeared in the previous turn's results.
28
+ * Re-sorts by boosted similarity and re-applies domain top-k and total cap.
29
+ * Boost is NOT cumulative — only relative to the immediately prior turn.
30
+ */
31
+ export declare function applyStickiness(currentResults: RAGSearchResult[], previousFacts: Set<string>, options?: ApplyStickinessOptions): RAGSearchResult[];
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_STICKINESS_BOOST = exports.DEFAULT_MAX_QUERY_CHARS = exports.DEFAULT_WINDOW_SIZE = void 0;
4
+ exports.extractRecentUserTexts = extractRecentUserTexts;
5
+ exports.buildRAGQuery = buildRAGQuery;
6
+ exports.applyStickiness = applyStickiness;
7
+ const context_js_1 = require("./context.js");
8
+ exports.DEFAULT_WINDOW_SIZE = 2;
9
+ exports.DEFAULT_MAX_QUERY_CHARS = 1000;
10
+ exports.DEFAULT_STICKINESS_BOOST = 0.05;
11
+ const BOUNDARY_PREFIXES = [
12
+ '[Context Summary',
13
+ '[Previous session ended',
14
+ '[Earlier conversation was truncated',
15
+ ];
16
+ /**
17
+ * Walk history backward and collect up to `maxMessages` user-role text strings.
18
+ * Skips system-injected boundary messages (context summaries, session markers).
19
+ * Returns texts in chronological order (oldest first).
20
+ */
21
+ function extractRecentUserTexts(history, maxMessages = exports.DEFAULT_WINDOW_SIZE) {
22
+ const texts = [];
23
+ for (let i = history.length - 1; i >= 0 && texts.length < maxMessages; i--) {
24
+ const msg = history[i];
25
+ if (msg.role !== 'user')
26
+ continue;
27
+ const text = (0, context_js_1.extractText)(msg);
28
+ if (!text)
29
+ continue;
30
+ // Skip system-injected boundary messages
31
+ if (BOUNDARY_PREFIXES.some((prefix) => text.startsWith(prefix)))
32
+ continue;
33
+ texts.push(text);
34
+ }
35
+ // Reverse to chronological order (oldest first)
36
+ texts.reverse();
37
+ return texts;
38
+ }
39
+ /**
40
+ * Build a RAG search query from the current user input plus recent history.
41
+ * Current input is always at the end (transformers attend more to later tokens).
42
+ * Truncates older messages first to stay within the character budget.
43
+ */
44
+ function buildRAGQuery(currentInput, recentUserTexts, options) {
45
+ const maxChars = options?.maxQueryChars ?? exports.DEFAULT_MAX_QUERY_CHARS;
46
+ if (recentUserTexts.length === 0)
47
+ return currentInput.slice(0, maxChars);
48
+ // Always preserve current input (truncate if alone it exceeds budget)
49
+ const current = currentInput.slice(0, maxChars);
50
+ let remaining = maxChars - current.length - 2; // -2 for ". " separator
51
+ if (remaining <= 0)
52
+ return current;
53
+ // Add older messages from most-recent to oldest, truncating older ones first
54
+ const parts = [];
55
+ for (let i = recentUserTexts.length - 1; i >= 0; i--) {
56
+ const text = recentUserTexts[i];
57
+ if (remaining <= 0)
58
+ break;
59
+ const truncated = text.slice(0, remaining);
60
+ parts.unshift(truncated);
61
+ remaining -= truncated.length + 2; // -2 for ". " separator between parts
62
+ }
63
+ return [...parts, current].join('. ');
64
+ }
65
+ /**
66
+ * Boost similarity scores for facts that appeared in the previous turn's results.
67
+ * Re-sorts by boosted similarity and re-applies domain top-k and total cap.
68
+ * Boost is NOT cumulative — only relative to the immediately prior turn.
69
+ */
70
+ function applyStickiness(currentResults, previousFacts, options) {
71
+ if (previousFacts.size === 0)
72
+ return currentResults;
73
+ const boost = options?.boost ?? exports.DEFAULT_STICKINESS_BOOST;
74
+ const topKPerDomain = options?.topKPerDomain ?? 3;
75
+ const maxResults = options?.maxResults ?? 9;
76
+ // Apply boost
77
+ const boosted = currentResults.map((r) => ({
78
+ ...r,
79
+ similarity: previousFacts.has(r.fact)
80
+ ? Math.min(r.similarity + boost, 1.0)
81
+ : r.similarity,
82
+ }));
83
+ // Re-sort by boosted similarity
84
+ boosted.sort((a, b) => b.similarity - a.similarity);
85
+ // Re-apply domain top-k
86
+ const domainCounts = new Map();
87
+ const filtered = [];
88
+ for (const result of boosted) {
89
+ const count = domainCounts.get(result.domain) ?? 0;
90
+ if (count >= topKPerDomain)
91
+ continue;
92
+ domainCounts.set(result.domain, count + 1);
93
+ filtered.push(result);
94
+ if (filtered.length >= maxResults)
95
+ break;
96
+ }
97
+ return filtered;
98
+ }
99
+ //# sourceMappingURL=rag-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-query.js","sourceRoot":"","sources":["../src/rag-query.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Invoked as: node dist/rag-worker.js <tempfile>
5
5
  *
6
6
  * Reads a JSON temp file containing { serialized, provider, model },
7
- * extracts facts via LLM, stores them in RAGStore, then cleans up.
7
+ * extracts facts via LLM (domain-specific), stores them in RAGStore, then cleans up.
8
8
  * Runs detached from the parent process — silent failure is fine.
9
9
  */
10
10
  export {};
@@ -5,7 +5,7 @@
5
5
  * Invoked as: node dist/rag-worker.js <tempfile>
6
6
  *
7
7
  * Reads a JSON temp file containing { serialized, provider, model },
8
- * extracts facts via LLM, stores them in RAGStore, then cleans up.
8
+ * extracts facts via LLM (domain-specific), stores them in RAGStore, then cleans up.
9
9
  * Runs detached from the parent process — silent failure is fine.
10
10
  */
11
11
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
@@ -65,12 +65,15 @@ async function main() {
65
65
  }
66
66
  // Load config (reads .env + stored keys), override provider/model from temp file
67
67
  const config = (0, config_js_1.loadConfig)({ provider: payload.provider, model: payload.model });
68
- // Extract facts via LLM
69
- const facts = await (0, context_js_1.extractFacts)(payload.serialized, config);
70
- // Store facts if any were extracted
71
- if (facts.length > 0) {
68
+ // Extract facts via LLM (domain-specific)
69
+ const domainFacts = await (0, context_js_1.extractDomainFacts)(payload.serialized, config);
70
+ // Store facts per domain if any were extracted
71
+ const totalFacts = domainFacts.reduce((sum, df) => sum + df.facts.length, 0);
72
+ if (totalFacts > 0) {
72
73
  const ragStore = new rag_js_1.RAGStore();
73
- await ragStore.addFacts(facts, 'exit');
74
+ for (const df of domainFacts) {
75
+ await ragStore.addFacts(df.facts, 'exit', df.domain);
76
+ }
74
77
  }
75
78
  // Clean up temp file
76
79
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"rag-worker.js","sourceRoot":"","sources":["../src/rag-worker.ts"],"names":[],"mappings":";;AAEA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4CAA8B;AAC9B,2CAAyC;AACzC,6CAA4C;AAC5C,qCAAoC;AAQpC,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/B,+BAA+B;IAC/B,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iFAAiF;IACjF,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhF,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,IAAA,yBAAY,EAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE7D,oCAAoC;IACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"rag-worker.js","sourceRoot":"","sources":["../src/rag-worker.ts"],"names":[],"mappings":";;AAEA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4CAA8B;AAC9B,2CAAyC;AACzC,6CAAkD;AAClD,qCAAoC;AAQpC,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/B,+BAA+B;IAC/B,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iFAAiF;IACjF,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhF,0CAA0C;IAC1C,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAkB,EAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEzE,+CAA+C;IAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
package/dist/rag.d.ts CHANGED
@@ -3,6 +3,7 @@ export interface RAGMemory {
3
3
  fact: string;
4
4
  embedding: number[];
5
5
  source: string;
6
+ domain: string;
6
7
  createdAt: string;
7
8
  accessCount: number;
8
9
  lastAccessed?: string;
@@ -10,15 +11,26 @@ export interface RAGMemory {
10
11
  export interface RAGSearchResult {
11
12
  fact: string;
12
13
  similarity: number;
14
+ domain: string;
15
+ }
16
+ export interface RAGSearchResultWithId {
17
+ id: string;
18
+ fact: string;
19
+ similarity: number;
20
+ domain: string;
21
+ createdAt: string;
22
+ accessCount: number;
13
23
  }
14
24
  export interface RAGStoreConfig {
15
- topK?: number;
25
+ topKPerDomain?: number;
26
+ maxResults?: number;
16
27
  similarityThreshold?: number;
17
28
  maxMemories?: number;
18
29
  }
19
30
  export declare class RAGStore {
20
31
  private memories;
21
- private topK;
32
+ private topKPerDomain;
33
+ private maxResults;
22
34
  private similarityThreshold;
23
35
  private maxMemories;
24
36
  constructor(config?: RAGStoreConfig);
@@ -28,10 +40,18 @@ export declare class RAGStore {
28
40
  * Embed and store new facts. Deduplicates against existing memories.
29
41
  * Returns the number of facts actually added.
30
42
  */
31
- addFacts(facts: string[], source: string): Promise<number>;
43
+ addFacts(facts: string[], source: string, domain?: string): Promise<number>;
44
+ /**
45
+ * Score, group by domain (top-k per domain), and cap at maxResults.
46
+ * Shared by search() and searchWithIds().
47
+ */
48
+ private scoreAndRank;
49
+ /** Embed a query string, returning the embedding vector or null on failure. */
50
+ private embedQuery;
32
51
  /**
33
52
  * Search for memories relevant to the query.
34
- * Returns top-k results above the similarity threshold, sorted by similarity.
53
+ * Per-domain top-k: takes up to topKPerDomain results per domain,
54
+ * then merges and caps at maxResults total.
35
55
  */
36
56
  search(query: string): Promise<RAGSearchResult[]>;
37
57
  /** List all facts as plain text lines. */
@@ -40,13 +60,24 @@ export declare class RAGStore {
40
60
  clear(): void;
41
61
  /** Total number of stored memories. */
42
62
  count(): number;
63
+ /** Count memories grouped by domain. */
64
+ countByDomain(): Record<string, number>;
65
+ /**
66
+ * Search for memories relevant to the query, returning rich metadata.
67
+ * Same scoring/grouping/capping as search() but does NOT update access metadata.
68
+ */
69
+ searchWithIds(query: string): Promise<RAGSearchResultWithId[]>;
70
+ /** Return all memories as RAGSearchResultWithId (similarity=1.0 placeholder). */
71
+ listMemories(): RAGSearchResultWithId[];
72
+ /** Delete memories by ID. Returns the number of memories deleted. */
73
+ deleteByIds(ids: string[]): number;
43
74
  /**
44
75
  * Prune memories if over the cap.
45
76
  * Score = recency decay (half-life 90 days) + log2(accessCount + 1)
46
77
  * Keeps top N by score.
47
78
  */
48
79
  private prune;
49
- /** Load memories from disk. */
80
+ /** Load memories from disk. Backfills 'general' domain for legacy entries. */
50
81
  private load;
51
82
  /** Persist memories to disk atomically (write to tmp, then rename). */
52
83
  private persist;
package/dist/rag.js CHANGED
@@ -39,9 +39,11 @@ const path = __importStar(require("node:path"));
39
39
  const os = __importStar(require("node:os"));
40
40
  const embeddings_js_1 = require("./embeddings.js");
41
41
  const logger_js_1 = require("./logger.js");
42
+ const domains_js_1 = require("./domains.js");
42
43
  const RAG_DIR = path.join(os.homedir(), '.bernard', 'rag');
43
44
  const MEMORIES_FILE = path.join(RAG_DIR, 'memories.json');
44
- const DEFAULT_TOP_K = 5;
45
+ const DEFAULT_TOP_K_PER_DOMAIN = 3;
46
+ const DEFAULT_MAX_RESULTS = 9;
45
47
  const DEFAULT_SIMILARITY_THRESHOLD = 0.35;
46
48
  const DEFAULT_MAX_MEMORIES = 5000;
47
49
  const DEDUP_THRESHOLD = 0.92;
@@ -49,11 +51,13 @@ const PRUNE_HALF_LIFE_DAYS = 90;
49
51
  const STALE_TEMP_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
50
52
  class RAGStore {
51
53
  memories = [];
52
- topK;
54
+ topKPerDomain;
55
+ maxResults;
53
56
  similarityThreshold;
54
57
  maxMemories;
55
58
  constructor(config) {
56
- this.topK = config?.topK ?? DEFAULT_TOP_K;
59
+ this.topKPerDomain = config?.topKPerDomain ?? DEFAULT_TOP_K_PER_DOMAIN;
60
+ this.maxResults = config?.maxResults ?? DEFAULT_MAX_RESULTS;
57
61
  this.similarityThreshold = config?.similarityThreshold ?? DEFAULT_SIMILARITY_THRESHOLD;
58
62
  this.maxMemories = config?.maxMemories ?? DEFAULT_MAX_MEMORIES;
59
63
  fs.mkdirSync(RAG_DIR, { recursive: true });
@@ -89,7 +93,7 @@ class RAGStore {
89
93
  * Embed and store new facts. Deduplicates against existing memories.
90
94
  * Returns the number of facts actually added.
91
95
  */
92
- async addFacts(facts, source) {
96
+ async addFacts(facts, source, domain = domains_js_1.DEFAULT_DOMAIN) {
93
97
  if (facts.length === 0)
94
98
  return 0;
95
99
  const provider = await (0, embeddings_js_1.getEmbeddingProvider)();
@@ -99,7 +103,7 @@ class RAGStore {
99
103
  }
100
104
  let embeddings;
101
105
  try {
102
- embeddings = await provider.embed(facts);
106
+ embeddings = (await provider.embed(facts)).map((e) => Array.from(e));
103
107
  }
104
108
  catch (err) {
105
109
  (0, logger_js_1.debugLog)('rag:addFacts', `Embedding failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -121,6 +125,7 @@ class RAGStore {
121
125
  fact,
122
126
  embedding,
123
127
  source,
128
+ domain,
124
129
  createdAt: now,
125
130
  accessCount: 0,
126
131
  });
@@ -130,55 +135,81 @@ class RAGStore {
130
135
  this.prune();
131
136
  this.persist();
132
137
  }
133
- (0, logger_js_1.debugLog)('rag:addFacts', { added, total: this.memories.length });
138
+ (0, logger_js_1.debugLog)('rag:addFacts', { added, total: this.memories.length, domain });
134
139
  return added;
135
140
  }
136
141
  /**
137
- * Search for memories relevant to the query.
138
- * Returns top-k results above the similarity threshold, sorted by similarity.
142
+ * Score, group by domain (top-k per domain), and cap at maxResults.
143
+ * Shared by search() and searchWithIds().
139
144
  */
140
- async search(query) {
141
- if (this.memories.length === 0)
142
- return [];
143
- const provider = await (0, embeddings_js_1.getEmbeddingProvider)();
144
- if (!provider)
145
- return [];
146
- let queryEmbedding;
147
- try {
148
- const embeddings = await provider.embed([query]);
149
- queryEmbedding = embeddings[0];
150
- }
151
- catch (err) {
152
- (0, logger_js_1.debugLog)('rag:search', `Query embedding failed: ${err instanceof Error ? err.message : String(err)}`);
153
- return [];
154
- }
145
+ scoreAndRank(queryEmbedding) {
155
146
  const scored = this.memories
156
147
  .map((m) => ({
157
148
  memory: m,
158
149
  similarity: (0, embeddings_js_1.cosineSimilarity)(queryEmbedding, m.embedding),
159
150
  }))
160
151
  .filter((s) => s.similarity >= this.similarityThreshold)
161
- .sort((a, b) => b.similarity - a.similarity)
162
- .slice(0, this.topK);
152
+ .sort((a, b) => b.similarity - a.similarity);
153
+ const byDomain = new Map();
154
+ for (const entry of scored) {
155
+ const d = entry.memory.domain;
156
+ if (!byDomain.has(d))
157
+ byDomain.set(d, []);
158
+ const group = byDomain.get(d);
159
+ if (group.length < this.topKPerDomain) {
160
+ group.push(entry);
161
+ }
162
+ }
163
+ const merged = Array.from(byDomain.values()).flat();
164
+ merged.sort((a, b) => b.similarity - a.similarity);
165
+ return merged.slice(0, this.maxResults);
166
+ }
167
+ /** Embed a query string, returning the embedding vector or null on failure. */
168
+ async embedQuery(query, logLabel) {
169
+ const provider = await (0, embeddings_js_1.getEmbeddingProvider)();
170
+ if (!provider)
171
+ return null;
172
+ try {
173
+ return Array.from((await provider.embed([query]))[0]);
174
+ }
175
+ catch (err) {
176
+ (0, logger_js_1.debugLog)(logLabel, `Query embedding failed: ${err instanceof Error ? err.message : String(err)}`);
177
+ return null;
178
+ }
179
+ }
180
+ /**
181
+ * Search for memories relevant to the query.
182
+ * Per-domain top-k: takes up to topKPerDomain results per domain,
183
+ * then merges and caps at maxResults total.
184
+ */
185
+ async search(query) {
186
+ if (this.memories.length === 0)
187
+ return [];
188
+ const queryEmbedding = await this.embedQuery(query, 'rag:search');
189
+ if (!queryEmbedding)
190
+ return [];
191
+ const capped = this.scoreAndRank(queryEmbedding);
192
+ (0, logger_js_1.debugLog)('rag:search', { query: query.slice(0, 100), returned: capped.length });
163
193
  // Update access metadata
164
194
  const now = new Date().toISOString();
165
- for (const { memory } of scored) {
195
+ for (const { memory } of capped) {
166
196
  memory.accessCount++;
167
197
  memory.lastAccessed = now;
168
198
  }
169
- if (scored.length > 0) {
199
+ if (capped.length > 0) {
170
200
  this.persist();
171
201
  }
172
- return scored.map((s) => ({
202
+ return capped.map((s) => ({
173
203
  fact: s.memory.fact,
174
204
  similarity: s.similarity,
205
+ domain: s.memory.domain,
175
206
  }));
176
207
  }
177
208
  /** List all facts as plain text lines. */
178
209
  listFacts() {
179
210
  return this.memories.map((m) => {
180
211
  const date = m.createdAt.slice(0, 10);
181
- return `[${date}] (accessed ${m.accessCount}x) ${m.fact}`;
212
+ return `[${date}] [${m.domain}] (accessed ${m.accessCount}x) ${m.fact}`;
182
213
  });
183
214
  }
184
215
  /** Clear all memories. */
@@ -190,6 +221,56 @@ class RAGStore {
190
221
  count() {
191
222
  return this.memories.length;
192
223
  }
224
+ /** Count memories grouped by domain. */
225
+ countByDomain() {
226
+ const counts = {};
227
+ for (const m of this.memories) {
228
+ counts[m.domain] = (counts[m.domain] ?? 0) + 1;
229
+ }
230
+ return counts;
231
+ }
232
+ /**
233
+ * Search for memories relevant to the query, returning rich metadata.
234
+ * Same scoring/grouping/capping as search() but does NOT update access metadata.
235
+ */
236
+ async searchWithIds(query) {
237
+ if (this.memories.length === 0)
238
+ return [];
239
+ const queryEmbedding = await this.embedQuery(query, 'rag:searchWithIds');
240
+ if (!queryEmbedding)
241
+ return [];
242
+ const capped = this.scoreAndRank(queryEmbedding);
243
+ return capped.map((s) => ({
244
+ id: s.memory.id,
245
+ fact: s.memory.fact,
246
+ similarity: s.similarity,
247
+ domain: s.memory.domain,
248
+ createdAt: s.memory.createdAt,
249
+ accessCount: s.memory.accessCount,
250
+ }));
251
+ }
252
+ /** Return all memories as RAGSearchResultWithId (similarity=1.0 placeholder). */
253
+ listMemories() {
254
+ return this.memories.map((m) => ({
255
+ id: m.id,
256
+ fact: m.fact,
257
+ similarity: 1.0,
258
+ domain: m.domain,
259
+ createdAt: m.createdAt,
260
+ accessCount: m.accessCount,
261
+ }));
262
+ }
263
+ /** Delete memories by ID. Returns the number of memories deleted. */
264
+ deleteByIds(ids) {
265
+ const idSet = new Set(ids);
266
+ const before = this.memories.length;
267
+ this.memories = this.memories.filter((m) => !idSet.has(m.id));
268
+ const deleted = before - this.memories.length;
269
+ if (deleted > 0) {
270
+ this.persist();
271
+ }
272
+ return deleted;
273
+ }
193
274
  /**
194
275
  * Prune memories if over the cap.
195
276
  * Score = recency decay (half-life 90 days) + log2(accessCount + 1)
@@ -210,7 +291,7 @@ class RAGStore {
210
291
  this.memories = scored.slice(0, this.maxMemories).map((s) => s.memory);
211
292
  (0, logger_js_1.debugLog)('rag:prune', { kept: this.memories.length });
212
293
  }
213
- /** Load memories from disk. */
294
+ /** Load memories from disk. Backfills 'general' domain for legacy entries. */
214
295
  load() {
215
296
  try {
216
297
  if (!fs.existsSync(MEMORIES_FILE))
@@ -218,7 +299,13 @@ class RAGStore {
218
299
  const data = fs.readFileSync(MEMORIES_FILE, 'utf-8');
219
300
  const parsed = JSON.parse(data);
220
301
  if (Array.isArray(parsed)) {
221
- this.memories = parsed;
302
+ this.memories = parsed.map((m) => ({
303
+ ...m,
304
+ domain: m.domain ?? domains_js_1.DEFAULT_DOMAIN,
305
+ embedding: Array.isArray(m.embedding)
306
+ ? m.embedding
307
+ : Object.values(m.embedding),
308
+ }));
222
309
  }
223
310
  }
224
311
  catch (err) {
package/dist/rag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rag.js","sourceRoot":"","sources":["../src/rag.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAClC,4CAA8B;AAC9B,mDAAyE;AACzE,2CAAuC;AAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAE1D,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAuBvD,MAAa,QAAQ;IACX,QAAQ,GAAgB,EAAE,CAAC;IAC3B,IAAI,CAAS;IACb,mBAAmB,CAAS;IAC5B,WAAW,CAAS;IAE5B,YAAY,MAAuB;QACjC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,aAAa,CAAC;QAC1C,IAAI,CAAC,mBAAmB,GAAG,MAAM,EAAE,mBAAmB,IAAI,4BAA4B,CAAC;QACvF,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,oBAAoB,CAAC;QAE/D,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC9B,CAAC;IAED,qFAAqF;IACrF,MAAM,CAAC,gBAAgB;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,qBAAqB,EAAE,CAAC;wBAC/C,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACxB,IAAA,oBAAQ,EAAC,sBAAsB,EAAE,4BAA4B,KAAK,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAe,EAAE,MAAc;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,IAAA,oCAAoB,GAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAA,oBAAQ,EAAC,cAAc,EAAE,2CAA2C,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,UAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,oBAAQ,EAAC,cAAc,EAAE,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAEhC,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gCAAgB,EAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,eAAe,CAClE,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAA,oBAAQ,EAAC,WAAW,EAAE,4BAA4B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvE,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAC7D,IAAI;gBACJ,SAAS;gBACT,MAAM;gBACN,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,CAAC;aACf,CAAC,CAAC;YACH,KAAK,EAAE,CAAC;QACV,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QAED,IAAA,oBAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAA,oCAAoB,GAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,IAAI,cAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,oBAAQ,EAAC,YAAY,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtG,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,IAAA,gCAAgB,EAAC,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC;SAC1D,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC;aACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,yBAAyB;QACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;QAC5B,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,0CAA0C;IAC1C,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,OAAO,IAAI,IAAI,eAAe,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,uCAAuC;IACvC,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACK,KAAK;QACX,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAErD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEvE,IAAA,oBAAQ,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,+BAA+B;IACvB,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;gBAAE,OAAO;YAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,oBAAQ,EAAC,UAAU,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,uEAAuE;IAC/D,OAAO;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;YACvC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAClE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,oBAAQ,EAAC,aAAa,EAAE,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;CACF;AAhND,4BAgNC"}
1
+ {"version":3,"file":"rag.js","sourceRoot":"","sources":["../src/rag.ts"],"names":[],"mappings":"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"}