memo-grafter 0.1.0 → 0.2.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/.env.example +5 -3
- package/README.md +187 -182
- package/USER_GUIDE.md +932 -702
- package/dist/MemoGrafter.d.ts +1 -1
- package/dist/MemoGrafter.d.ts.map +1 -1
- package/dist/MemoGrafter.js +16 -5
- package/dist/MemoGrafter.js.map +1 -1
- package/dist/MemoGrafterAgent.d.ts +7 -1
- package/dist/MemoGrafterAgent.d.ts.map +1 -1
- package/dist/MemoGrafterAgent.js +45 -8
- package/dist/MemoGrafterAgent.js.map +1 -1
- package/dist/adapters/AnthropicAdapter.d.ts +9 -0
- package/dist/adapters/AnthropicAdapter.d.ts.map +1 -0
- package/dist/adapters/AnthropicAdapter.js +33 -0
- package/dist/adapters/AnthropicAdapter.js.map +1 -0
- package/dist/adapters/GeminiAdapter.d.ts +15 -0
- package/dist/adapters/GeminiAdapter.d.ts.map +1 -0
- package/dist/adapters/GeminiAdapter.js +48 -0
- package/dist/adapters/GeminiAdapter.js.map +1 -0
- package/dist/fleet/FleetStore.d.ts +1 -1
- package/dist/fleet/FleetStore.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline/GrafterPipeline.d.ts +1 -3
- package/dist/pipeline/GrafterPipeline.d.ts.map +1 -1
- package/dist/pipeline/GrafterPipeline.js +6 -19
- package/dist/pipeline/GrafterPipeline.js.map +1 -1
- package/dist/pipeline/IngestPipeline.d.ts +7 -3
- package/dist/pipeline/IngestPipeline.d.ts.map +1 -1
- package/dist/pipeline/IngestPipeline.js +31 -5
- package/dist/pipeline/IngestPipeline.js.map +1 -1
- package/dist/pipeline/RetrieverPipeline.d.ts +11 -0
- package/dist/pipeline/RetrieverPipeline.d.ts.map +1 -0
- package/dist/pipeline/RetrieverPipeline.js +73 -0
- package/dist/pipeline/RetrieverPipeline.js.map +1 -0
- package/dist/pipeline/SegmentProcessor.d.ts +3 -2
- package/dist/pipeline/SegmentProcessor.d.ts.map +1 -1
- package/dist/pipeline/SegmentProcessor.js +52 -40
- package/dist/pipeline/SegmentProcessor.js.map +1 -1
- package/dist/pipeline/TopicDriftDetector.d.ts +21 -3
- package/dist/pipeline/TopicDriftDetector.d.ts.map +1 -1
- package/dist/pipeline/TopicDriftDetector.js +143 -17
- package/dist/pipeline/TopicDriftDetector.js.map +1 -1
- package/dist/prompts/factRetrievalPrompt.d.ts +4 -0
- package/dist/prompts/factRetrievalPrompt.d.ts.map +1 -0
- package/dist/prompts/factRetrievalPrompt.js +25 -0
- package/dist/prompts/factRetrievalPrompt.js.map +1 -0
- package/dist/prompts/historyCompressionPrompt.d.ts +3 -0
- package/dist/prompts/historyCompressionPrompt.d.ts.map +1 -0
- package/dist/prompts/historyCompressionPrompt.js +4 -0
- package/dist/prompts/historyCompressionPrompt.js.map +1 -0
- package/dist/prompts/intentShiftPrompt.d.ts +3 -0
- package/dist/prompts/intentShiftPrompt.d.ts.map +1 -0
- package/dist/prompts/intentShiftPrompt.js +11 -0
- package/dist/prompts/intentShiftPrompt.js.map +1 -0
- package/dist/prompts/memoryInjectionPrompt.d.ts +4 -0
- package/dist/prompts/memoryInjectionPrompt.d.ts.map +1 -0
- package/dist/prompts/memoryInjectionPrompt.js +16 -0
- package/dist/prompts/memoryInjectionPrompt.js.map +1 -0
- package/dist/prompts/segmentExtractionPrompt.d.ts +3 -0
- package/dist/prompts/segmentExtractionPrompt.d.ts.map +1 -0
- package/dist/prompts/segmentExtractionPrompt.js +81 -0
- package/dist/prompts/segmentExtractionPrompt.js.map +1 -0
- package/dist/store/GraphStore.d.ts +16 -19
- package/dist/store/GraphStore.d.ts.map +1 -1
- package/dist/store/GraphStore.js +1 -576
- package/dist/store/GraphStore.js.map +1 -1
- package/dist/store/index.d.ts +3 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +2 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/postgres-pgvector/GraphStore.d.ts +75 -0
- package/dist/store/postgres-pgvector/GraphStore.d.ts.map +1 -0
- package/dist/store/postgres-pgvector/GraphStore.js +782 -0
- package/dist/store/postgres-pgvector/GraphStore.js.map +1 -0
- package/dist/types.d.ts +69 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/drift/driftMarkers.d.ts +4 -0
- package/dist/utils/drift/driftMarkers.d.ts.map +1 -0
- package/dist/utils/drift/driftMarkers.js +31 -0
- package/dist/utils/drift/driftMarkers.js.map +1 -0
- package/dist/utils/drift/driftScore.d.ts +3 -0
- package/dist/utils/drift/driftScore.d.ts.map +1 -0
- package/dist/utils/drift/driftScore.js +11 -0
- package/dist/utils/drift/driftScore.js.map +1 -0
- package/dist/utils/drift/driftThreshold.d.ts +7 -0
- package/dist/utils/drift/driftThreshold.d.ts.map +1 -0
- package/dist/utils/drift/driftThreshold.js +21 -0
- package/dist/utils/drift/driftThreshold.js.map +1 -0
- package/dist/utils/drift/reentryMatch.d.ts +3 -0
- package/dist/utils/drift/reentryMatch.d.ts.map +1 -0
- package/dist/utils/drift/reentryMatch.js +10 -0
- package/dist/utils/drift/reentryMatch.js.map +1 -0
- package/dist/utils/extraction/segmentExtraction.d.ts +5 -0
- package/dist/utils/extraction/segmentExtraction.d.ts.map +1 -0
- package/dist/utils/extraction/segmentExtraction.js +82 -0
- package/dist/utils/extraction/segmentExtraction.js.map +1 -0
- package/dist/utils/reentry/reentryCues.d.ts +3 -0
- package/dist/utils/reentry/reentryCues.d.ts.map +1 -0
- package/dist/utils/reentry/reentryCues.js +14 -0
- package/dist/utils/reentry/reentryCues.js.map +1 -0
- package/dist/utils/reentry/reentryEdges.d.ts +16 -0
- package/dist/utils/reentry/reentryEdges.d.ts.map +1 -0
- package/dist/utils/reentry/reentryEdges.js +80 -0
- package/dist/utils/reentry/reentryEdges.js.map +1 -0
- package/dist/utils/reentry/reentrySimilarity.d.ts +5 -0
- package/dist/utils/reentry/reentrySimilarity.d.ts.map +1 -0
- package/dist/utils/reentry/reentrySimilarity.js +26 -0
- package/dist/utils/reentry/reentrySimilarity.js.map +1 -0
- package/dist/utils/reentry/reentryText.d.ts +6 -0
- package/dist/utils/reentry/reentryText.d.ts.map +1 -0
- package/dist/utils/reentry/reentryText.js +29 -0
- package/dist/utils/reentry/reentryText.js.map +1 -0
- package/dist/utils/reentry/types.d.ts +6 -0
- package/dist/utils/reentry/types.d.ts.map +1 -0
- package/dist/utils/reentry/types.js +2 -0
- package/dist/utils/reentry/types.js.map +1 -0
- package/dist/utils/text/normalizeText.d.ts +2 -0
- package/dist/utils/text/normalizeText.d.ts.map +1 -0
- package/dist/utils/text/normalizeText.js +5 -0
- package/dist/utils/text/normalizeText.js.map +1 -0
- package/dist/utils/text/terms.d.ts +3 -0
- package/dist/utils/text/terms.d.ts.map +1 -0
- package/dist/utils/text/terms.js +51 -0
- package/dist/utils/text/terms.js.map +1 -0
- package/dist/utils/text/tokenCount.d.ts +2 -0
- package/dist/utils/text/tokenCount.d.ts.map +1 -0
- package/dist/utils/text/tokenCount.js +4 -0
- package/dist/utils/text/tokenCount.js.map +1 -0
- package/dist/utils/vector/vectorLiteral.d.ts +3 -0
- package/dist/utils/vector/vectorLiteral.d.ts.map +1 -0
- package/dist/utils/vector/vectorLiteral.js +19 -0
- package/dist/utils/vector/vectorLiteral.js.map +1 -0
- package/package.json +84 -55
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historyCompressionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/historyCompressionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historyCompressionPrompt.js","sourceRoot":"","sources":["../../src/prompts/historyCompressionPrompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentShiftPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/intentShiftPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAUjG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function buildIntentShiftPrompt(recentMessages, currentMessage) {
|
|
2
|
+
const recent = recentMessages.map((message) => `[${message.role}]: ${message.content}`).join("\n");
|
|
3
|
+
return [
|
|
4
|
+
"You are a conversation topic classifier.",
|
|
5
|
+
"Given recent conversation messages and a new message, determine if the new message starts a new topic or continues the current one.",
|
|
6
|
+
`Recent messages: ${recent}`,
|
|
7
|
+
`New message: ${currentMessage.content}`,
|
|
8
|
+
"Reply with exactly one word: NEW_TOPIC or CONTINUATION",
|
|
9
|
+
].join("\n");
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=intentShiftPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentShiftPrompt.js","sourceRoot":"","sources":["../../src/prompts/intentShiftPrompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,cAAyB,EAAE,cAAuB;IACvF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnG,OAAO;QACL,0CAA0C;QAC1C,qIAAqI;QACrI,oBAAoB,MAAM,EAAE;QAC5B,gBAAgB,cAAc,CAAC,OAAO,EAAE;QACxC,wDAAwD;KACzD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Message, TopicNode } from "../types.js";
|
|
2
|
+
export declare function buildMemoryInjectionPrompt(blocks: string[]): string;
|
|
3
|
+
export declare function formatMemoryNode(node: TopicNode, messages: Message[]): string;
|
|
4
|
+
//# sourceMappingURL=memoryInjectionPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryInjectionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/memoryInjectionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAQnE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAM7E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function buildMemoryInjectionPrompt(blocks) {
|
|
2
|
+
return [
|
|
3
|
+
"MemoGrafter retrieved memory context:",
|
|
4
|
+
"Use these memories as prior conversation context when answering the user.",
|
|
5
|
+
"If the user asks what you remember, answer from these memories instead of saying you have no record.",
|
|
6
|
+
"",
|
|
7
|
+
blocks.join("\n---\n"),
|
|
8
|
+
].join("\n");
|
|
9
|
+
}
|
|
10
|
+
export function formatMemoryNode(node, messages) {
|
|
11
|
+
const context = messages
|
|
12
|
+
.map((message) => `${message.role}: ${message.content}`)
|
|
13
|
+
.join("\n");
|
|
14
|
+
return `[Topic: ${node.label}]\nSummary: ${node.summary}\nContext:\n${context}`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=memoryInjectionPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryInjectionPrompt.js","sourceRoot":"","sources":["../../src/prompts/memoryInjectionPrompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,MAAgB;IACzD,OAAO;QACL,uCAAuC;QACvC,2EAA2E;QAC3E,sGAAsG;QACtG,EAAE;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAe,EAAE,QAAmB;IACnE,MAAM,OAAO,GAAG,QAAQ;SACrB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,WAAW,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,OAAO,eAAe,OAAO,EAAE,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentExtractionPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/segmentExtractionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CA+ExE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { normalizeText } from "../utils/text/normalizeText.js";
|
|
2
|
+
export function buildSegmentExtractionPrompt(messages) {
|
|
3
|
+
const messageContent = messages
|
|
4
|
+
.map((message, index) => `Message ${index + 1}:\n[${message.role}] ${normalizeText(message.content) ?? message.content}`)
|
|
5
|
+
.join("\n\n");
|
|
6
|
+
return [
|
|
7
|
+
"Analyze this conversation segment and extract structured memory for a future chatbot.",
|
|
8
|
+
"",
|
|
9
|
+
"Return a single valid JSON object and nothing else. Do not include markdown fences, backticks, a preamble, comments, or trailing text.",
|
|
10
|
+
"",
|
|
11
|
+
"The JSON object must match this exact schema:",
|
|
12
|
+
"{",
|
|
13
|
+
' "label": "3-6 word topic label",',
|
|
14
|
+
' "user_intent": "two-three sentences describing what the user was trying to achieve",',
|
|
15
|
+
' "outcome": "one-two sentences describing what was concluded, decided, or provided",',
|
|
16
|
+
' "open": "one sentence describing any unresolved question, or null",',
|
|
17
|
+
' "memories": [',
|
|
18
|
+
" {",
|
|
19
|
+
' "memory_type": "fact | insight | question | task | reference",',
|
|
20
|
+
' "subject": "person, team, project, system, tool, or concept the memory is about",',
|
|
21
|
+
' "predicate": "short relationship or attribute phrase",',
|
|
22
|
+
' "value": "one sentence maximum, self-contained and meaningful without surrounding context",',
|
|
23
|
+
' "confidence": 0.95',
|
|
24
|
+
" }",
|
|
25
|
+
" ]",
|
|
26
|
+
"}",
|
|
27
|
+
"",
|
|
28
|
+
"Memory type definitions:",
|
|
29
|
+
"- fact: explicit assertion, preference, decision, or constraint directly stated",
|
|
30
|
+
"- insight: synthesized or implied understanding, not directly stated",
|
|
31
|
+
"- question: unresolved or open question raised in the conversation",
|
|
32
|
+
"- task: something actionable, a to-do, or next step",
|
|
33
|
+
"- reference: an external tool, service, library, or resource being discussed",
|
|
34
|
+
"",
|
|
35
|
+
"Confidence scoring:",
|
|
36
|
+
"- Explicit direct statement: 0.9-1.0",
|
|
37
|
+
"- Implied or inferred: 0.5-0.8",
|
|
38
|
+
"- Uncertain or speculative: below 0.5",
|
|
39
|
+
"",
|
|
40
|
+
"Rules:",
|
|
41
|
+
"- The value field must be one sentence maximum.",
|
|
42
|
+
"- The value field must be self-contained and meaningful without surrounding context.",
|
|
43
|
+
"- If no memories are extractable from the segment, return an empty memories array.",
|
|
44
|
+
"- Use null for open when there is no unresolved question or follow-up.",
|
|
45
|
+
"",
|
|
46
|
+
"Example segment:",
|
|
47
|
+
"Message 1:",
|
|
48
|
+
"[user] I prefer PostgreSQL over MongoDB for this billing service because we need relational integrity. Should connection pooling live in the app or infra layer?",
|
|
49
|
+
"",
|
|
50
|
+
"Message 2:",
|
|
51
|
+
"[assistant] PostgreSQL is a good fit for the billing service. Connection pooling can work in either place; the team should decide based on deployment ownership.",
|
|
52
|
+
"",
|
|
53
|
+
"Expected JSON output:",
|
|
54
|
+
"{",
|
|
55
|
+
' "label": "Billing Database Choice",',
|
|
56
|
+
' "user_intent": "The user wanted to confirm a database preference for a billing service and clarify where connection pooling should be handled. They emphasized the need for relational integrity.",',
|
|
57
|
+
' "outcome": "PostgreSQL was treated as a good fit for the billing service. The connection pooling decision was left dependent on deployment ownership.",',
|
|
58
|
+
' "open": "The team still needs to decide whether connection pooling belongs in the app or infra layer.",',
|
|
59
|
+
' "memories": [',
|
|
60
|
+
" {",
|
|
61
|
+
' "memory_type": "fact",',
|
|
62
|
+
' "subject": "user",',
|
|
63
|
+
' "predicate": "prefers database",',
|
|
64
|
+
' "value": "PostgreSQL over MongoDB for the billing service because it needs relational integrity.",',
|
|
65
|
+
' "confidence": 0.95',
|
|
66
|
+
" },",
|
|
67
|
+
" {",
|
|
68
|
+
' "memory_type": "question",',
|
|
69
|
+
' "subject": "team",',
|
|
70
|
+
' "predicate": "undecided on",',
|
|
71
|
+
' "value": "whether connection pooling should live in the app or infra layer.",',
|
|
72
|
+
' "confidence": 0.8',
|
|
73
|
+
" }",
|
|
74
|
+
" ]",
|
|
75
|
+
"}",
|
|
76
|
+
"",
|
|
77
|
+
"Conversation segment:",
|
|
78
|
+
messageContent,
|
|
79
|
+
].join("\n");
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=segmentExtractionPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmentExtractionPrompt.js","sourceRoot":"","sources":["../../src/prompts/segmentExtractionPrompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,UAAU,4BAA4B,CAAC,QAAmB;IAC9D,MAAM,cAAc,GAAG,QAAQ;SAC5B,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;SACxH,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;QACL,uFAAuF;QACvF,EAAE;QACF,wIAAwI;QACxI,EAAE;QACF,+CAA+C;QAC/C,GAAG;QACH,oCAAoC;QACpC,wFAAwF;QACxF,uFAAuF;QACvF,uEAAuE;QACvE,iBAAiB;QACjB,OAAO;QACP,sEAAsE;QACtE,yFAAyF;QACzF,8DAA8D;QAC9D,mGAAmG;QACnG,0BAA0B;QAC1B,OAAO;QACP,KAAK;QACL,GAAG;QACH,EAAE;QACF,0BAA0B;QAC1B,iFAAiF;QACjF,sEAAsE;QACtE,oEAAoE;QACpE,qDAAqD;QACrD,8EAA8E;QAC9E,EAAE;QACF,qBAAqB;QACrB,sCAAsC;QACtC,gCAAgC;QAChC,uCAAuC;QACvC,EAAE;QACF,QAAQ;QACR,iDAAiD;QACjD,sFAAsF;QACtF,oFAAoF;QACpF,wEAAwE;QACxE,EAAE;QACF,kBAAkB;QAClB,YAAY;QACZ,kKAAkK;QAClK,EAAE;QACF,YAAY;QACZ,kKAAkK;QAClK,EAAE;QACF,uBAAuB;QACvB,GAAG;QACH,uCAAuC;QACvC,uMAAuM;QACvM,2JAA2J;QAC3J,2GAA2G;QAC3G,iBAAiB;QACjB,OAAO;QACP,8BAA8B;QAC9B,0BAA0B;QAC1B,wCAAwC;QACxC,0GAA0G;QAC1G,0BAA0B;QAC1B,QAAQ;QACR,OAAO;QACP,kCAAkC;QAClC,0BAA0B;QAC1B,oCAAoC;QACpC,qFAAqF;QACrF,yBAAyB;QACzB,OAAO;QACP,KAAK;QACL,GAAG;QACH,EAAE;QACF,uBAAuB;QACvB,cAAc;KACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import type { Message, TopicEdge, TopicNode, TopicSegment } from "../types.js";
|
|
2
|
-
interface AbsorbOptions {
|
|
3
|
-
agentColor?: string | null;
|
|
4
|
-
fleetId?: string | null;
|
|
5
|
-
agentId?: string | null;
|
|
6
|
-
}
|
|
1
|
+
import type { MemoryNode, MemoryNodeInsert, Message, TopicEdge, TopicNode, TopicSegment } from "../types.js";
|
|
7
2
|
export interface FleetAgentRecord {
|
|
8
3
|
id: string;
|
|
9
4
|
fleetId: string;
|
|
@@ -11,20 +6,27 @@ export interface FleetAgentRecord {
|
|
|
11
6
|
agentColor: string;
|
|
12
7
|
createdAt: Date;
|
|
13
8
|
}
|
|
14
|
-
export
|
|
15
|
-
private readonly sql;
|
|
16
|
-
constructor(connectionString: string);
|
|
9
|
+
export interface GraphStore {
|
|
17
10
|
initialize(): Promise<void>;
|
|
18
11
|
saveMessages(sessionId: string, messages: Message[]): Promise<void>;
|
|
19
12
|
saveMessagesAt(sessionId: string, startIndex: number, messages: Message[]): Promise<void>;
|
|
20
13
|
saveSegment(segment: TopicSegment): Promise<TopicSegment>;
|
|
21
14
|
saveNode(node: TopicNode): Promise<void>;
|
|
22
15
|
saveEdge(edge: TopicEdge): Promise<void>;
|
|
16
|
+
getEdgesByType(sessionId: string, type: string): Promise<TopicEdge[]>;
|
|
23
17
|
clearSession(sessionId: string): Promise<void>;
|
|
24
18
|
clearSessionGraph(sessionId: string): Promise<void>;
|
|
19
|
+
getTopicNode(topicNodeId: string, sessionId?: string): Promise<TopicNode | null>;
|
|
25
20
|
getNodeBySegment(segmentId: string): Promise<TopicNode | null>;
|
|
26
21
|
getNodesBySession(sessionId: string): Promise<TopicNode[]>;
|
|
27
22
|
getSegmentsBySession(sessionId: string): Promise<TopicSegment[]>;
|
|
23
|
+
insertMemories(nodes: MemoryNodeInsert[]): Promise<void>;
|
|
24
|
+
getMemoriesBySegment(segmentId: string): Promise<MemoryNode[]>;
|
|
25
|
+
getMemoriesByTopic(topicNodeId: string): Promise<MemoryNode[]>;
|
|
26
|
+
searchMemories(embedding: number[], sessionId: string, limit: number, minSimilarity: number): Promise<(MemoryNode & {
|
|
27
|
+
similarity: number;
|
|
28
|
+
})[]>;
|
|
29
|
+
buildMemoryEdges(topicNodeId: string, sessionId: string, threshold: number): Promise<void>;
|
|
28
30
|
getTopKSimilar(nodeId: string, embedding: number[], sessionId: string, k: number): Promise<TopicNode[]>;
|
|
29
31
|
getSimilarNodes(embedding: number[], sessionId: string, options?: {
|
|
30
32
|
k?: number;
|
|
@@ -55,17 +57,12 @@ export declare class GraphStore {
|
|
|
55
57
|
nodeSimilarity(nodeAId: string, nodeBId: string): Promise<number>;
|
|
56
58
|
getNeighbours(nodeIds: string[], hopDepth: number, sessionId?: string): Promise<TopicNode[]>;
|
|
57
59
|
getBufferMessages(sessionId: string, start: number, end: number, maxChars?: number): Promise<Message[]>;
|
|
58
|
-
absorbNodes(nodes: TopicNode[], targetSessionId: string, options?:
|
|
60
|
+
absorbNodes(nodes: TopicNode[], targetSessionId: string, options?: {
|
|
61
|
+
agentColor?: string | null;
|
|
62
|
+
fleetId?: string | null;
|
|
63
|
+
agentId?: string | null;
|
|
64
|
+
}): Promise<TopicNode[]>;
|
|
59
65
|
rebuildEdgesForSession(sessionId: string, semanticTopK?: number, semanticThreshold?: number): Promise<void>;
|
|
60
66
|
close(): Promise<void>;
|
|
61
|
-
private migrateExistingNodeTable;
|
|
62
|
-
private createIndexes;
|
|
63
|
-
private cleanAssistantMessage;
|
|
64
|
-
private getNextMessageIndex;
|
|
65
|
-
private getNextTopicOrder;
|
|
66
|
-
private formatGraftedMemoryMessage;
|
|
67
|
-
private rowToNode;
|
|
68
|
-
private rowToSegment;
|
|
69
67
|
}
|
|
70
|
-
export {};
|
|
71
68
|
//# sourceMappingURL=GraphStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"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"}
|