memo-grafter 0.2.7 → 0.3.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 +26 -0
- package/USER_GUIDE.md +262 -17
- package/dist/MemoGrafter.d.ts +11 -5
- package/dist/MemoGrafter.d.ts.map +1 -1
- package/dist/MemoGrafter.js +64 -4
- package/dist/MemoGrafter.js.map +1 -1
- package/dist/MemoGrafterAgent.d.ts +8 -1
- package/dist/MemoGrafterAgent.d.ts.map +1 -1
- package/dist/MemoGrafterAgent.js +31 -2
- package/dist/MemoGrafterAgent.js.map +1 -1
- package/dist/adapters/AnthropicAdapter.d.ts +1 -1
- package/dist/adapters/AnthropicAdapter.d.ts.map +1 -1
- package/dist/adapters/GeminiAdapter.d.ts +1 -1
- package/dist/adapters/GeminiAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenAIAdapter.d.ts +1 -1
- package/dist/adapters/OpenAIAdapter.d.ts.map +1 -1
- package/dist/adapters/types.d.ts +1 -1
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/agents/MemoGrafterAgent.d.ts +45 -0
- package/dist/agents/MemoGrafterAgent.d.ts.map +1 -0
- package/dist/agents/MemoGrafterAgent.js +278 -0
- package/dist/agents/MemoGrafterAgent.js.map +1 -0
- package/dist/agents/fleet/ConductorAgent.d.ts +15 -0
- package/dist/agents/fleet/ConductorAgent.d.ts.map +1 -0
- package/dist/agents/fleet/ConductorAgent.js +41 -0
- package/dist/agents/fleet/ConductorAgent.js.map +1 -0
- package/dist/agents/fleet/FleetStore.d.ts +12 -0
- package/dist/agents/fleet/FleetStore.d.ts.map +1 -0
- package/dist/agents/fleet/FleetStore.js +30 -0
- package/dist/agents/fleet/FleetStore.js.map +1 -0
- package/dist/agents/fleet/MemoGrafterFleet.d.ts +27 -0
- package/dist/agents/fleet/MemoGrafterFleet.d.ts.map +1 -0
- package/dist/agents/fleet/MemoGrafterFleet.js +87 -0
- package/dist/agents/fleet/MemoGrafterFleet.js.map +1 -0
- package/dist/agents/fleet/WorkerAgent.d.ts +36 -0
- package/dist/agents/fleet/WorkerAgent.d.ts.map +1 -0
- package/dist/agents/fleet/WorkerAgent.js +140 -0
- package/dist/agents/fleet/WorkerAgent.js.map +1 -0
- package/dist/agents/fleet/types.d.ts +58 -0
- package/dist/agents/fleet/types.d.ts.map +1 -0
- package/dist/agents/fleet/types.js +2 -0
- package/dist/agents/fleet/types.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +124 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +6 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +34 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +39 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/config.d.ts +11 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +92 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +7 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +15 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/core/MemoGrafter.d.ts +46 -0
- package/dist/core/MemoGrafter.d.ts.map +1 -0
- package/dist/core/MemoGrafter.js +236 -0
- package/dist/core/MemoGrafter.js.map +1 -0
- package/dist/core/types.d.ts +319 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/crawler/DecayScoringPass.d.ts.map +1 -1
- package/dist/crawler/DecayScoringPass.js +6 -0
- package/dist/crawler/DecayScoringPass.js.map +1 -1
- package/dist/crawler/memoryMaintenance.d.ts +1 -0
- package/dist/crawler/memoryMaintenance.d.ts.map +1 -1
- package/dist/crawler/memoryMaintenance.js +2 -1
- package/dist/crawler/memoryMaintenance.js.map +1 -1
- package/dist/crawler/types.d.ts +1 -0
- package/dist/crawler/types.d.ts.map +1 -1
- package/dist/fleet/MemoGrafterFleet.d.ts +9 -2
- package/dist/fleet/MemoGrafterFleet.d.ts.map +1 -1
- package/dist/fleet/MemoGrafterFleet.js +39 -1
- package/dist/fleet/MemoGrafterFleet.js.map +1 -1
- package/dist/fleet/WorkerAgent.d.ts +9 -4
- package/dist/fleet/WorkerAgent.d.ts.map +1 -1
- package/dist/fleet/WorkerAgent.js +45 -3
- package/dist/fleet/WorkerAgent.js.map +1 -1
- package/dist/fleet/types.d.ts +21 -2
- package/dist/fleet/types.d.ts.map +1 -1
- package/dist/index.d.ts +13 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/ingestion/IngestQueue.d.ts +17 -0
- package/dist/ingestion/IngestQueue.d.ts.map +1 -0
- package/dist/ingestion/IngestQueue.js +123 -0
- package/dist/ingestion/IngestQueue.js.map +1 -0
- package/dist/ingestion/conversation/IngestPipeline.d.ts +41 -0
- package/dist/ingestion/conversation/IngestPipeline.d.ts.map +1 -0
- package/dist/ingestion/conversation/IngestPipeline.js +189 -0
- package/dist/ingestion/conversation/IngestPipeline.js.map +1 -0
- package/dist/ingestion/conversation/SegmentProcessor.d.ts +20 -0
- package/dist/ingestion/conversation/SegmentProcessor.d.ts.map +1 -0
- package/dist/ingestion/conversation/SegmentProcessor.js +110 -0
- package/dist/ingestion/conversation/SegmentProcessor.js.map +1 -0
- package/dist/ingestion/conversation/TopicDriftDetector.d.ts +40 -0
- package/dist/ingestion/conversation/TopicDriftDetector.d.ts.map +1 -0
- package/dist/ingestion/conversation/TopicDriftDetector.js +222 -0
- package/dist/ingestion/conversation/TopicDriftDetector.js.map +1 -0
- package/dist/maintenance/ConflictDetectionPass.d.ts +6 -0
- package/dist/maintenance/ConflictDetectionPass.d.ts.map +1 -0
- package/dist/maintenance/ConflictDetectionPass.js +46 -0
- package/dist/maintenance/ConflictDetectionPass.js.map +1 -0
- package/dist/maintenance/DecayScoringPass.d.ts +17 -0
- package/dist/maintenance/DecayScoringPass.d.ts.map +1 -0
- package/dist/maintenance/DecayScoringPass.js +79 -0
- package/dist/maintenance/DecayScoringPass.js.map +1 -0
- package/dist/maintenance/MemoGrafterCrawler.d.ts +14 -0
- package/dist/maintenance/MemoGrafterCrawler.d.ts.map +1 -0
- package/dist/maintenance/MemoGrafterCrawler.js +108 -0
- package/dist/maintenance/MemoGrafterCrawler.js.map +1 -0
- package/dist/maintenance/VersioningPass.d.ts +6 -0
- package/dist/maintenance/VersioningPass.d.ts.map +1 -0
- package/dist/maintenance/VersioningPass.js +40 -0
- package/dist/maintenance/VersioningPass.js.map +1 -0
- package/dist/maintenance/decayScoring.d.ts +7 -0
- package/dist/maintenance/decayScoring.d.ts.map +1 -0
- package/dist/maintenance/decayScoring.js +9 -0
- package/dist/maintenance/decayScoring.js.map +1 -0
- package/dist/maintenance/index.d.ts +7 -0
- package/dist/maintenance/index.d.ts.map +1 -0
- package/dist/maintenance/index.js +5 -0
- package/dist/maintenance/index.js.map +1 -0
- package/dist/maintenance/memoryMaintenance.d.ts +23 -0
- package/dist/maintenance/memoryMaintenance.d.ts.map +1 -0
- package/dist/maintenance/memoryMaintenance.js +141 -0
- package/dist/maintenance/memoryMaintenance.js.map +1 -0
- package/dist/maintenance/types.d.ts +65 -0
- package/dist/maintenance/types.d.ts.map +1 -0
- package/dist/maintenance/types.js +2 -0
- package/dist/maintenance/types.js.map +1 -0
- package/dist/pipeline/GrafterPipeline.d.ts +2 -0
- package/dist/pipeline/GrafterPipeline.d.ts.map +1 -1
- package/dist/pipeline/GrafterPipeline.js +33 -7
- package/dist/pipeline/GrafterPipeline.js.map +1 -1
- package/dist/pipeline/RetrieverPipeline.d.ts +1 -0
- package/dist/pipeline/RetrieverPipeline.d.ts.map +1 -1
- package/dist/pipeline/RetrieverPipeline.js +16 -5
- package/dist/pipeline/RetrieverPipeline.js.map +1 -1
- package/dist/prompts/factRetrievalPrompt.d.ts +1 -1
- package/dist/prompts/factRetrievalPrompt.d.ts.map +1 -1
- package/dist/prompts/historyCompressionPrompt.d.ts +1 -1
- package/dist/prompts/historyCompressionPrompt.d.ts.map +1 -1
- package/dist/prompts/intentShiftPrompt.d.ts +1 -1
- package/dist/prompts/intentShiftPrompt.d.ts.map +1 -1
- package/dist/prompts/memoryInjectionPrompt.d.ts +1 -1
- package/dist/prompts/memoryInjectionPrompt.d.ts.map +1 -1
- package/dist/prompts/segmentExtractionPrompt.d.ts +1 -1
- package/dist/prompts/segmentExtractionPrompt.d.ts.map +1 -1
- package/dist/retrieval/GrafterPipeline.d.ts +26 -0
- package/dist/retrieval/GrafterPipeline.d.ts.map +1 -0
- package/dist/retrieval/GrafterPipeline.js +117 -0
- package/dist/retrieval/GrafterPipeline.js.map +1 -0
- package/dist/retrieval/RetrieverPipeline.d.ts +28 -0
- package/dist/retrieval/RetrieverPipeline.d.ts.map +1 -0
- package/dist/retrieval/RetrieverPipeline.js +160 -0
- package/dist/retrieval/RetrieverPipeline.js.map +1 -0
- package/dist/schema/builders.d.ts +40 -0
- package/dist/schema/builders.d.ts.map +1 -0
- package/dist/schema/builders.js +10 -0
- package/dist/schema/builders.js.map +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/mg-tables.d.ts +7 -0
- package/dist/schema/mg-tables.d.ts.map +1 -0
- package/dist/schema/mg-tables.js +180 -0
- package/dist/schema/mg-tables.js.map +1 -0
- package/dist/store/GraphStore.d.ts +19 -1
- package/dist/store/GraphStore.d.ts.map +1 -1
- package/dist/store/postgres-pgvector/GraphStore.d.ts +33 -1
- package/dist/store/postgres-pgvector/GraphStore.d.ts.map +1 -1
- package/dist/store/postgres-pgvector/GraphStore.js +491 -16
- package/dist/store/postgres-pgvector/GraphStore.js.map +1 -1
- package/dist/tsconfig.cli.tsbuildinfo +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/drift/adaptiveDriftSensitivity.d.ts +1 -1
- package/dist/utils/drift/adaptiveDriftSensitivity.d.ts.map +1 -1
- package/dist/utils/drift/driftScore.d.ts +1 -1
- package/dist/utils/drift/driftScore.d.ts.map +1 -1
- package/dist/utils/drift/driftThreshold.d.ts +1 -1
- package/dist/utils/drift/driftThreshold.d.ts.map +1 -1
- package/dist/utils/drift/reentryMatch.d.ts +1 -1
- package/dist/utils/drift/reentryMatch.d.ts.map +1 -1
- package/dist/utils/extraction/segmentExtraction.d.ts +1 -1
- package/dist/utils/extraction/segmentExtraction.d.ts.map +1 -1
- package/dist/utils/reentry/reentryEdges.d.ts +1 -1
- package/dist/utils/reentry/reentryEdges.d.ts.map +1 -1
- package/dist/utils/reentry/reentrySimilarity.d.ts +1 -1
- package/dist/utils/reentry/reentrySimilarity.d.ts.map +1 -1
- package/dist/utils/reentry/reentryText.d.ts +1 -1
- package/dist/utils/reentry/reentryText.d.ts.map +1 -1
- package/package.json +14 -1
|
@@ -30,14 +30,18 @@ export class RetrieverPipeline {
|
|
|
30
30
|
const scope = this.config.scope === "tagged" && tags.length > 0
|
|
31
31
|
? "tagged"
|
|
32
32
|
: this.config.scope ?? (tags.length > 0 ? "session-and-tags" : "session");
|
|
33
|
+
const configuredSessionIds = this.config.sessionIds?.filter(Boolean) ?? [];
|
|
34
|
+
const sessionIds = this.resolveSessionIds(sessionId);
|
|
35
|
+
const hasConfiguredSessionIds = configuredSessionIds.length > 0;
|
|
33
36
|
const embedding = await this.embedder.embed(query);
|
|
34
37
|
const searchedFacts = await this.searchMemories(embedding, sessionId, limit, minSimilarity, {
|
|
35
38
|
tags,
|
|
36
39
|
tagMode,
|
|
37
40
|
scope,
|
|
41
|
+
...(hasConfiguredSessionIds ? { sessionIds } : {}),
|
|
38
42
|
});
|
|
39
43
|
const activeFacts = searchedFacts
|
|
40
|
-
.filter((fact) => fact.decayed === false && fact.supersededBy == null)
|
|
44
|
+
.filter((fact) => fact.decayed === false && fact.supersededBy == null && !fact.forgotten)
|
|
41
45
|
.map((fact) => this.rankFact(fact))
|
|
42
46
|
.sort((a, b) => b.retrievalScore - a.retrievalScore);
|
|
43
47
|
if (activeFacts.length === 0) {
|
|
@@ -48,7 +52,7 @@ export class RetrieverPipeline {
|
|
|
48
52
|
tokenCount: 0,
|
|
49
53
|
};
|
|
50
54
|
}
|
|
51
|
-
const rankedBlocks = (await this.buildBlocks(activeFacts, sessionId, scope))
|
|
55
|
+
const rankedBlocks = (await this.buildBlocks(activeFacts, sessionId, scope, hasConfiguredSessionIds && (sessionIds.length > 1 || sessionIds[0] !== sessionId)))
|
|
52
56
|
.sort((a, b) => b.score - a.score);
|
|
53
57
|
const includedBlocks = [];
|
|
54
58
|
const facts = [];
|
|
@@ -83,6 +87,7 @@ export class RetrieverPipeline {
|
|
|
83
87
|
limit,
|
|
84
88
|
minSimilarity,
|
|
85
89
|
options.scope ?? "session",
|
|
90
|
+
(this.config.sessionIds ?? []).join(","),
|
|
86
91
|
options.tagMode ?? "all",
|
|
87
92
|
(options.tags ?? []).join(","),
|
|
88
93
|
this.hashEmbedding(embedding),
|
|
@@ -105,7 +110,7 @@ export class RetrieverPipeline {
|
|
|
105
110
|
const str = embedding.map((value) => value.toFixed(6)).join(",");
|
|
106
111
|
return createHash("sha1").update(str).digest("hex").slice(0, 16);
|
|
107
112
|
}
|
|
108
|
-
async buildBlocks(facts, sessionId, scope) {
|
|
113
|
+
async buildBlocks(facts, sessionId, scope, useFactSession) {
|
|
109
114
|
const factsByTopic = new Map();
|
|
110
115
|
for (const fact of facts) {
|
|
111
116
|
const topicFacts = factsByTopic.get(fact.topicNodeId) ?? [];
|
|
@@ -114,9 +119,9 @@ export class RetrieverPipeline {
|
|
|
114
119
|
}
|
|
115
120
|
const blocks = [];
|
|
116
121
|
for (const [topicNodeId, topicFacts] of factsByTopic) {
|
|
117
|
-
const parentSessionId = scope === "tagged" ? topicFacts[0]?.sessionId : sessionId;
|
|
122
|
+
const parentSessionId = scope === "tagged" || useFactSession ? topicFacts[0]?.sessionId : sessionId;
|
|
118
123
|
const parentNode = await this.store.getTopicNode(topicNodeId, parentSessionId);
|
|
119
|
-
if (!parentNode) {
|
|
124
|
+
if (!parentNode || parentNode.suppressed) {
|
|
120
125
|
continue;
|
|
121
126
|
}
|
|
122
127
|
blocks.push({
|
|
@@ -145,5 +150,11 @@ export class RetrieverPipeline {
|
|
|
145
150
|
return 0;
|
|
146
151
|
return Math.min(Math.max(value, 0), 1);
|
|
147
152
|
}
|
|
153
|
+
resolveSessionIds(sessionId) {
|
|
154
|
+
const configured = this.config.sessionIds?.filter(Boolean) ?? [];
|
|
155
|
+
if (configured.length === 0)
|
|
156
|
+
return [sessionId];
|
|
157
|
+
return [...new Set(configured)];
|
|
158
|
+
}
|
|
148
159
|
}
|
|
149
160
|
//# sourceMappingURL=RetrieverPipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetrieverPipeline.js","sourceRoot":"","sources":["../../src/pipeline/RetrieverPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,wBAAwB,EACxB,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAS3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,MAAM,OAAO,iBAAiB;IAGlB;IAEA;IACA;IAEA;IAPV;IACE,gBAAgB;IACR,KAAiB;IACzB,gBAAgB;IACR,QAAsB,EACtB,MAAuB;IAC/B,gBAAgB;IACR,aAA2B,IAAI;QAL/B,UAAK,GAAL,KAAK,CAAY;QAEjB,aAAQ,GAAR,QAAQ,CAAc;QACtB,WAAM,GAAN,MAAM,CAAiB;QAEvB,eAAU,GAAV,UAAU,CAAqB;IACtC,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,SAAiB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;QACpD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAC7D,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"RetrieverPipeline.js","sourceRoot":"","sources":["../../src/pipeline/RetrieverPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemoryNode, TopicNode } from "../types.js";
|
|
1
|
+
import type { MemoryNode, TopicNode } from "../core/types.js";
|
|
2
2
|
export declare function formatFactBlock(facts: MemoryNode[], parentNode: TopicNode): string;
|
|
3
3
|
export declare function buildFactRetrievalPrompt(blocks: string[]): string;
|
|
4
4
|
//# sourceMappingURL=factRetrievalPrompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factRetrievalPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/factRetrievalPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"factRetrievalPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/factRetrievalPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAe9D,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,MAAM,CASlF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAOjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyCompressionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/historyCompressionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"historyCompressionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/historyCompressionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intentShiftPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/intentShiftPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"intentShiftPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/intentShiftPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAUjG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemoryNode, Message, TopicNode } from "../types.js";
|
|
1
|
+
import type { MemoryNode, Message, TopicNode } from "../core/types.js";
|
|
2
2
|
export declare function buildMemoryInjectionPrompt(blocks: string[]): string;
|
|
3
3
|
export interface MemoryMaintenancePromptContext {
|
|
4
4
|
notes?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryInjectionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/memoryInjectionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memoryInjectionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/memoryInjectionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAQnE;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,GAAE,8BAAmC,GAC/C,MAAM,CAYR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmentExtractionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/segmentExtractionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"segmentExtractionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/segmentExtractionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAqF5F"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GraphStore } from "../store/index.js";
|
|
2
|
+
import type { GraftExpansionStrategy, InjectionResult } from "../core/types.js";
|
|
3
|
+
export interface GrafterPipelineRunOptions {
|
|
4
|
+
hopDepth?: number;
|
|
5
|
+
expansionStrategy?: GraftExpansionStrategy;
|
|
6
|
+
sessionIds?: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare class GrafterPipeline {
|
|
9
|
+
/** @internal */
|
|
10
|
+
private store;
|
|
11
|
+
/** @internal */
|
|
12
|
+
private config;
|
|
13
|
+
constructor(
|
|
14
|
+
/** @internal */
|
|
15
|
+
store: GraphStore,
|
|
16
|
+
/** @internal */
|
|
17
|
+
config: {
|
|
18
|
+
hopDepth: number;
|
|
19
|
+
bufferSize: number;
|
|
20
|
+
tokenBudget: number;
|
|
21
|
+
});
|
|
22
|
+
run(sessionId: string, topicIds: string[], options?: GrafterPipelineRunOptions): Promise<InjectionResult>;
|
|
23
|
+
private assemblePrompt;
|
|
24
|
+
private resolveSessionIds;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=GrafterPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrafterPipeline.d.ts","sourceRoot":"","sources":["../../src/retrieval/GrafterPipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAqC,MAAM,kBAAkB,CAAC;AAGnH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,eAAe;IAExB,gBAAgB;IAChB,OAAO,CAAC,KAAK;IACb,gBAAgB;IAChB,OAAO,CAAC,MAAM;;IAHd,gBAAgB;IACR,KAAK,EAAE,UAAU;IACzB,gBAAgB;IACR,MAAM,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB;IAGG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,eAAe,CAAC;YAyCrG,cAAc;IAsC5B,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { buildMemoryInjectionPrompt, formatMemoryNode } from "../prompts/memoryInjectionPrompt.js";
|
|
2
|
+
import { countApproxTokens } from "../utils/text/tokenCount.js";
|
|
3
|
+
export class GrafterPipeline {
|
|
4
|
+
store;
|
|
5
|
+
config;
|
|
6
|
+
constructor(
|
|
7
|
+
/** @internal */
|
|
8
|
+
store,
|
|
9
|
+
/** @internal */
|
|
10
|
+
config) {
|
|
11
|
+
this.store = store;
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
async run(sessionId, topicIds, options = {}) {
|
|
15
|
+
if (topicIds.length === 0) {
|
|
16
|
+
return { systemPrompt: "", nodes: [], tokenCount: 0 };
|
|
17
|
+
}
|
|
18
|
+
const hopDepth = options.expansionStrategy === "none" ? 0 : options.hopDepth ?? this.config.hopDepth;
|
|
19
|
+
const sessionIds = this.resolveSessionIds(sessionId, options.sessionIds);
|
|
20
|
+
const useConfiguredSessions = sessionIds.length > 1 || sessionIds[0] !== sessionId;
|
|
21
|
+
const neighbourhood = await this.store.getNeighbours(topicIds, hopDepth, useConfiguredSessions ? undefined : sessionId);
|
|
22
|
+
const allowedSessions = new Set(sessionIds);
|
|
23
|
+
const nodes = neighbourhood
|
|
24
|
+
.filter((node) => allowedSessions.has(node.sessionId))
|
|
25
|
+
.filter((node) => !node.suppressed)
|
|
26
|
+
.sort((a, b) => a.sessionId.localeCompare(b.sessionId)
|
|
27
|
+
||
|
|
28
|
+
a.messageRange[0] - b.messageRange[0]
|
|
29
|
+
|| a.messageRange[1] - b.messageRange[1]
|
|
30
|
+
|| a.topicOrder - b.topicOrder);
|
|
31
|
+
const fittedNodes = [...nodes];
|
|
32
|
+
let systemPrompt = await this.assemblePrompt(fittedNodes);
|
|
33
|
+
let tokenCount = countApproxTokens(systemPrompt);
|
|
34
|
+
while (tokenCount > this.config.tokenBudget && fittedNodes.length > 0) {
|
|
35
|
+
fittedNodes.pop();
|
|
36
|
+
systemPrompt = await this.assemblePrompt(fittedNodes);
|
|
37
|
+
tokenCount = countApproxTokens(systemPrompt);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
systemPrompt,
|
|
41
|
+
nodes: fittedNodes,
|
|
42
|
+
tokenCount,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async assemblePrompt(nodes) {
|
|
46
|
+
if (nodes.length === 0)
|
|
47
|
+
return "";
|
|
48
|
+
const blocks = [];
|
|
49
|
+
const memoryBySession = new Map();
|
|
50
|
+
const edgeBySession = new Map();
|
|
51
|
+
for (const node of nodes) {
|
|
52
|
+
const sessionId = node.sessionId;
|
|
53
|
+
let sessionMemories = memoryBySession.get(sessionId);
|
|
54
|
+
if (!sessionMemories) {
|
|
55
|
+
sessionMemories = (await this.store.getMemoriesBySession(sessionId))
|
|
56
|
+
.filter((memory) => !memory.forgotten);
|
|
57
|
+
memoryBySession.set(sessionId, sessionMemories);
|
|
58
|
+
}
|
|
59
|
+
let memoryEdges = edgeBySession.get(sessionId);
|
|
60
|
+
if (!memoryEdges) {
|
|
61
|
+
const visibleMemoryIds = new Set(sessionMemories.map((memory) => memory.id));
|
|
62
|
+
memoryEdges = (await this.store.getMemoryEdgesBySession(sessionId))
|
|
63
|
+
.filter((edge) => visibleMemoryIds.has(edge.sourceId) && visibleMemoryIds.has(edge.targetId));
|
|
64
|
+
edgeBySession.set(sessionId, memoryEdges);
|
|
65
|
+
}
|
|
66
|
+
const start = Math.max(0, node.messageRange[0] - this.config.bufferSize);
|
|
67
|
+
const end = node.messageRange[1] + this.config.bufferSize;
|
|
68
|
+
const messages = await this.store.getBufferMessages(sessionId, start, end);
|
|
69
|
+
const topicMemories = sessionMemories.filter((memory) => memory.topicNodeId === node.id);
|
|
70
|
+
blocks.push(formatMemoryNode(node, messages, buildMaintenancePromptContext(topicMemories, sessionMemories, memoryEdges)));
|
|
71
|
+
}
|
|
72
|
+
return buildMemoryInjectionPrompt(blocks);
|
|
73
|
+
}
|
|
74
|
+
resolveSessionIds(sessionId, configured) {
|
|
75
|
+
const sessionIds = configured && configured.length > 0 ? configured : [sessionId];
|
|
76
|
+
return [...new Set(sessionIds)];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function buildMaintenancePromptContext(topicMemories, sessionMemories, memoryEdges) {
|
|
80
|
+
const notes = [];
|
|
81
|
+
const topicMemoryIds = new Set(topicMemories.map((memory) => memory.id));
|
|
82
|
+
const memoriesById = new Map(sessionMemories.map((memory) => [memory.id, memory]));
|
|
83
|
+
const hasMaintenanceEdge = memoryEdges.some((edge) => (edge.edgeType === "conflicts" || edge.edgeType === "updates")
|
|
84
|
+
&& (topicMemoryIds.has(edge.sourceId) || topicMemoryIds.has(edge.targetId)));
|
|
85
|
+
const hasConflict = topicMemories.some((memory) => memory.hasConflict);
|
|
86
|
+
const supersededMemories = topicMemories.filter((memory) => memory.supersededBy != null);
|
|
87
|
+
for (const memory of supersededMemories) {
|
|
88
|
+
const supersedingMemory = memory.supersededBy ? memoriesById.get(memory.supersededBy) : undefined;
|
|
89
|
+
if (supersedingMemory) {
|
|
90
|
+
notes.push(`The fact "${memory.subject} ${memory.predicate}: ${memory.value}" was superseded by "${supersedingMemory.value}".`);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
notes.push(`The fact "${memory.subject} ${memory.predicate}: ${memory.value}" was superseded by a newer memory.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (hasConflict || supersededMemories.length > 0 || hasMaintenanceEdge) {
|
|
97
|
+
notes.push("Prefer active memory facts over contradictory historical summary details.");
|
|
98
|
+
}
|
|
99
|
+
const activeMemoriesById = new Map();
|
|
100
|
+
for (const memory of topicMemories) {
|
|
101
|
+
if (!memory.decayed && memory.supersededBy == null) {
|
|
102
|
+
activeMemoriesById.set(memory.id, memory);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const memory of supersededMemories) {
|
|
106
|
+
const supersedingMemory = memory.supersededBy ? memoriesById.get(memory.supersededBy) : undefined;
|
|
107
|
+
if (supersedingMemory && !supersedingMemory.decayed && supersedingMemory.supersededBy == null) {
|
|
108
|
+
activeMemoriesById.set(supersedingMemory.id, supersedingMemory);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const activeMemories = [...activeMemoriesById.values()];
|
|
112
|
+
return {
|
|
113
|
+
...(notes.length > 0 ? { notes } : {}),
|
|
114
|
+
...(notes.length > 0 && activeMemories.length > 0 ? { activeMemories } : {}),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=GrafterPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrafterPipeline.js","sourceRoot":"","sources":["../../src/retrieval/GrafterPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Redis } from "ioredis";
|
|
2
|
+
import type { GraphStore } from "../store/index.js";
|
|
3
|
+
import type { EmbedAdapter, RetrievalResult, RetrieverConfig } from "../core/types.js";
|
|
4
|
+
export declare class RetrieverPipeline {
|
|
5
|
+
/** @internal */
|
|
6
|
+
private store;
|
|
7
|
+
/** @internal */
|
|
8
|
+
private embedder;
|
|
9
|
+
private config;
|
|
10
|
+
/** @internal */
|
|
11
|
+
private cacheRedis;
|
|
12
|
+
constructor(
|
|
13
|
+
/** @internal */
|
|
14
|
+
store: GraphStore,
|
|
15
|
+
/** @internal */
|
|
16
|
+
embedder: EmbedAdapter, config: RetrieverConfig,
|
|
17
|
+
/** @internal */
|
|
18
|
+
cacheRedis?: Redis | null);
|
|
19
|
+
run(query: string, sessionId: string): Promise<RetrievalResult>;
|
|
20
|
+
private searchMemories;
|
|
21
|
+
private hashEmbedding;
|
|
22
|
+
private buildBlocks;
|
|
23
|
+
private rankFact;
|
|
24
|
+
private scoreFact;
|
|
25
|
+
private clampScore;
|
|
26
|
+
private resolveSessionIds;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=RetrieverPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetrieverPipeline.d.ts","sourceRoot":"","sources":["../../src/retrieval/RetrieverPipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EACf,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAgB1B,qBAAa,iBAAiB;IAE1B,gBAAgB;IAChB,OAAO,CAAC,KAAK;IACb,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,gBAAgB;IAChB,OAAO,CAAC,UAAU;;IANlB,gBAAgB;IACR,KAAK,EAAE,UAAU;IACzB,gBAAgB;IACR,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe;IAC/B,gBAAgB;IACR,UAAU,GAAE,KAAK,GAAG,IAAW;IAGnC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAoEvD,cAAc;IAgE5B,OAAO,CAAC,aAAa;YAKP,WAAW;IAkCzB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,iBAAiB;CAK1B"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { buildFactRetrievalPrompt, formatFactBlock, } from "../prompts/factRetrievalPrompt.js";
|
|
3
|
+
import { countApproxTokens } from "../utils/text/tokenCount.js";
|
|
4
|
+
import { normalizeTags } from "../utils/tags.js";
|
|
5
|
+
const DEFAULT_SIMILARITY_WEIGHT = 0.7;
|
|
6
|
+
const DEFAULT_CONFIDENCE_WEIGHT = 0.3;
|
|
7
|
+
export class RetrieverPipeline {
|
|
8
|
+
store;
|
|
9
|
+
embedder;
|
|
10
|
+
config;
|
|
11
|
+
cacheRedis;
|
|
12
|
+
constructor(
|
|
13
|
+
/** @internal */
|
|
14
|
+
store,
|
|
15
|
+
/** @internal */
|
|
16
|
+
embedder, config,
|
|
17
|
+
/** @internal */
|
|
18
|
+
cacheRedis = null) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
this.embedder = embedder;
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.cacheRedis = cacheRedis;
|
|
23
|
+
}
|
|
24
|
+
async run(query, sessionId) {
|
|
25
|
+
const limit = this.config.limit ?? 10;
|
|
26
|
+
const minSimilarity = this.config.minSimilarity ?? 0.6;
|
|
27
|
+
const tokenBudget = this.config.tokenBudget ?? 1200;
|
|
28
|
+
const tags = normalizeTags(this.config.tags);
|
|
29
|
+
const tagMode = this.config.tagMode ?? "all";
|
|
30
|
+
const scope = this.config.scope === "tagged" && tags.length > 0
|
|
31
|
+
? "tagged"
|
|
32
|
+
: this.config.scope ?? (tags.length > 0 ? "session-and-tags" : "session");
|
|
33
|
+
const configuredSessionIds = this.config.sessionIds?.filter(Boolean) ?? [];
|
|
34
|
+
const sessionIds = this.resolveSessionIds(sessionId);
|
|
35
|
+
const hasConfiguredSessionIds = configuredSessionIds.length > 0;
|
|
36
|
+
const embedding = await this.embedder.embed(query);
|
|
37
|
+
const searchedFacts = await this.searchMemories(embedding, sessionId, limit, minSimilarity, {
|
|
38
|
+
tags,
|
|
39
|
+
tagMode,
|
|
40
|
+
scope,
|
|
41
|
+
...(hasConfiguredSessionIds ? { sessionIds } : {}),
|
|
42
|
+
});
|
|
43
|
+
const activeFacts = searchedFacts
|
|
44
|
+
.filter((fact) => fact.decayed === false && fact.supersededBy == null && !fact.forgotten)
|
|
45
|
+
.map((fact) => this.rankFact(fact))
|
|
46
|
+
.sort((a, b) => b.retrievalScore - a.retrievalScore);
|
|
47
|
+
if (activeFacts.length === 0) {
|
|
48
|
+
return {
|
|
49
|
+
facts: [],
|
|
50
|
+
nodes: [],
|
|
51
|
+
systemPrompt: buildFactRetrievalPrompt([]),
|
|
52
|
+
tokenCount: 0,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const rankedBlocks = (await this.buildBlocks(activeFacts, sessionId, scope, hasConfiguredSessionIds && (sessionIds.length > 1 || sessionIds[0] !== sessionId)))
|
|
56
|
+
.sort((a, b) => b.score - a.score);
|
|
57
|
+
const includedBlocks = [];
|
|
58
|
+
const facts = [];
|
|
59
|
+
const nodes = [];
|
|
60
|
+
let tokenCount = 0;
|
|
61
|
+
for (const block of rankedBlocks) {
|
|
62
|
+
const formattedBlock = formatFactBlock(block.facts, block.parentNode);
|
|
63
|
+
const blockTokenCount = countApproxTokens(formattedBlock);
|
|
64
|
+
if (tokenCount + blockTokenCount > tokenBudget) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
includedBlocks.push(formattedBlock);
|
|
68
|
+
facts.push(...block.facts.map(({ retrievalScore: _retrievalScore, ...fact }) => fact));
|
|
69
|
+
nodes.push(block.parentNode);
|
|
70
|
+
tokenCount += blockTokenCount;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
facts,
|
|
74
|
+
nodes,
|
|
75
|
+
systemPrompt: buildFactRetrievalPrompt(includedBlocks),
|
|
76
|
+
tokenCount,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async searchMemories(embedding, sessionId, limit, minSimilarity, options) {
|
|
80
|
+
if (!this.config.cache || !this.cacheRedis) {
|
|
81
|
+
return this.store.searchMemories(embedding, sessionId, limit, minSimilarity, options);
|
|
82
|
+
}
|
|
83
|
+
const ttl = Math.min(Math.max(this.config.cache.ttlSeconds ?? 90, 60), 120);
|
|
84
|
+
const cacheKey = [
|
|
85
|
+
"mg:recall",
|
|
86
|
+
sessionId,
|
|
87
|
+
limit,
|
|
88
|
+
minSimilarity,
|
|
89
|
+
options.scope ?? "session",
|
|
90
|
+
(this.config.sessionIds ?? []).join(","),
|
|
91
|
+
options.tagMode ?? "all",
|
|
92
|
+
(options.tags ?? []).join(","),
|
|
93
|
+
this.hashEmbedding(embedding),
|
|
94
|
+
].join(":");
|
|
95
|
+
try {
|
|
96
|
+
const hit = await this.cacheRedis.get(cacheKey);
|
|
97
|
+
if (hit) {
|
|
98
|
+
return JSON.parse(hit);
|
|
99
|
+
}
|
|
100
|
+
const searchedFacts = await this.store.searchMemories(embedding, sessionId, limit, minSimilarity, options);
|
|
101
|
+
await this.cacheRedis.setex(cacheKey, ttl, JSON.stringify(searchedFacts));
|
|
102
|
+
return searchedFacts;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.warn("MemoGrafter recall cache warning:", error);
|
|
106
|
+
return this.store.searchMemories(embedding, sessionId, limit, minSimilarity, options);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
hashEmbedding(embedding) {
|
|
110
|
+
const str = embedding.map((value) => value.toFixed(6)).join(",");
|
|
111
|
+
return createHash("sha1").update(str).digest("hex").slice(0, 16);
|
|
112
|
+
}
|
|
113
|
+
async buildBlocks(facts, sessionId, scope, useFactSession) {
|
|
114
|
+
const factsByTopic = new Map();
|
|
115
|
+
for (const fact of facts) {
|
|
116
|
+
const topicFacts = factsByTopic.get(fact.topicNodeId) ?? [];
|
|
117
|
+
topicFacts.push(fact);
|
|
118
|
+
factsByTopic.set(fact.topicNodeId, topicFacts);
|
|
119
|
+
}
|
|
120
|
+
const blocks = [];
|
|
121
|
+
for (const [topicNodeId, topicFacts] of factsByTopic) {
|
|
122
|
+
const parentSessionId = scope === "tagged" || useFactSession ? topicFacts[0]?.sessionId : sessionId;
|
|
123
|
+
const parentNode = await this.store.getTopicNode(topicNodeId, parentSessionId);
|
|
124
|
+
if (!parentNode || parentNode.suppressed) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
blocks.push({
|
|
128
|
+
facts: topicFacts.sort((a, b) => b.retrievalScore - a.retrievalScore),
|
|
129
|
+
parentNode,
|
|
130
|
+
score: Math.max(...topicFacts.map((fact) => fact.retrievalScore)),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return blocks;
|
|
134
|
+
}
|
|
135
|
+
rankFact(fact) {
|
|
136
|
+
return {
|
|
137
|
+
...fact,
|
|
138
|
+
retrievalScore: this.scoreFact(fact),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
scoreFact(fact) {
|
|
142
|
+
const similarityWeight = this.config.scoring?.similarityWeight ?? DEFAULT_SIMILARITY_WEIGHT;
|
|
143
|
+
const confidenceWeight = this.config.scoring?.confidenceWeight ?? DEFAULT_CONFIDENCE_WEIGHT;
|
|
144
|
+
const similarity = this.clampScore(fact.similarity);
|
|
145
|
+
const confidence = this.clampScore(fact.confidence);
|
|
146
|
+
return similarity * similarityWeight + confidence * confidenceWeight;
|
|
147
|
+
}
|
|
148
|
+
clampScore(value) {
|
|
149
|
+
if (!Number.isFinite(value))
|
|
150
|
+
return 0;
|
|
151
|
+
return Math.min(Math.max(value, 0), 1);
|
|
152
|
+
}
|
|
153
|
+
resolveSessionIds(sessionId) {
|
|
154
|
+
const configured = this.config.sessionIds?.filter(Boolean) ?? [];
|
|
155
|
+
if (configured.length === 0)
|
|
156
|
+
return [sessionId];
|
|
157
|
+
return [...new Set(configured)];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=RetrieverPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetrieverPipeline.js","sourceRoot":"","sources":["../../src/retrieval/RetrieverPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type MgColumnType = "text" | "int" | "float" | "boolean" | "uuid" | "timestamptz" | "vector" | "text[]";
|
|
2
|
+
export interface MgColumnDefinition {
|
|
3
|
+
name: string;
|
|
4
|
+
type: MgColumnType;
|
|
5
|
+
nullable?: boolean;
|
|
6
|
+
primaryKey?: boolean;
|
|
7
|
+
default?: string;
|
|
8
|
+
references?: string;
|
|
9
|
+
unique?: boolean;
|
|
10
|
+
check?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface MgTableDefinition {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
columns: MgColumnDefinition[];
|
|
16
|
+
constraints?: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface MgIndexDefinition {
|
|
19
|
+
name: string;
|
|
20
|
+
table: string;
|
|
21
|
+
description: string;
|
|
22
|
+
}
|
|
23
|
+
export interface MgExtensionDefinition {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
}
|
|
27
|
+
export type MigrationItemStatus = "created" | "exists" | "ensured";
|
|
28
|
+
export interface MigrationReportItem {
|
|
29
|
+
name: string;
|
|
30
|
+
status: MigrationItemStatus;
|
|
31
|
+
}
|
|
32
|
+
export interface MigrationReport {
|
|
33
|
+
extensions: MigrationReportItem[];
|
|
34
|
+
tables: MigrationReportItem[];
|
|
35
|
+
indexes: MigrationReportItem[];
|
|
36
|
+
}
|
|
37
|
+
export declare function mgTable(definition: MgTableDefinition): MgTableDefinition;
|
|
38
|
+
export declare function mgIndex(definition: MgIndexDefinition): MgIndexDefinition;
|
|
39
|
+
export declare function mgExtension(definition: MgExtensionDefinition): MgExtensionDefinition;
|
|
40
|
+
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/schema/builders.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/G,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,CAExE;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,CAExE;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,qBAAqB,CAEpF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/schema/builders.ts"],"names":[],"mappings":"AA4CA,MAAM,UAAU,OAAO,CAAC,UAA6B;IACnD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,UAA6B;IACnD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAiC;IAC3D,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const memoGrafterExtensions: readonly [import("./builders.js").MgExtensionDefinition, import("./builders.js").MgExtensionDefinition];
|
|
2
|
+
export declare const memoGrafterTables: readonly [import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition, import("./builders.js").MgTableDefinition];
|
|
3
|
+
export declare const memoGrafterIndexes: readonly [import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition, import("./builders.js").MgIndexDefinition];
|
|
4
|
+
export declare const memoGrafterTableNames: string[];
|
|
5
|
+
export declare const memoGrafterIndexNames: string[];
|
|
6
|
+
export declare const memoGrafterExtensionNames: string[];
|
|
7
|
+
//# sourceMappingURL=mg-tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mg-tables.d.ts","sourceRoot":"","sources":["../../src/schema/mg-tables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,yGASxB,CAAC;AAEX,eAAO,MAAM,iBAAiB,ybA+IpB,CAAC;AAEX,eAAO,MAAM,kBAAkB,4zBAoBrB,CAAC;AAEX,eAAO,MAAM,qBAAqB,UAA+C,CAAC;AAClF,eAAO,MAAM,qBAAqB,UAAgD,CAAC;AACnF,eAAO,MAAM,yBAAyB,UAA2D,CAAC"}
|