memo-grafter 0.2.2 → 0.2.3

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 (37) hide show
  1. package/README.md +81 -73
  2. package/USER_GUIDE.md +165 -64
  3. package/dist/MemoGrafterAgent.d.ts +7 -3
  4. package/dist/MemoGrafterAgent.d.ts.map +1 -1
  5. package/dist/MemoGrafterAgent.js +62 -23
  6. package/dist/MemoGrafterAgent.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/pipeline/IngestPipeline.d.ts +2 -0
  10. package/dist/pipeline/IngestPipeline.d.ts.map +1 -1
  11. package/dist/pipeline/IngestPipeline.js +93 -17
  12. package/dist/pipeline/IngestPipeline.js.map +1 -1
  13. package/dist/store/GraphStore.d.ts +11 -1
  14. package/dist/store/GraphStore.d.ts.map +1 -1
  15. package/dist/store/postgres-pgvector/GraphStore.d.ts +15 -1
  16. package/dist/store/postgres-pgvector/GraphStore.d.ts.map +1 -1
  17. package/dist/store/postgres-pgvector/GraphStore.js +229 -0
  18. package/dist/store/postgres-pgvector/GraphStore.js.map +1 -1
  19. package/dist/types.d.ts +27 -0
  20. package/dist/types.d.ts.map +1 -1
  21. package/dist/utils/drift/cosineSimilarity.test.d.ts +2 -0
  22. package/dist/utils/drift/cosineSimilarity.test.d.ts.map +1 -0
  23. package/dist/utils/drift/cosineSimilarity.test.js +25 -0
  24. package/dist/utils/drift/cosineSimilarity.test.js.map +1 -0
  25. package/dist/utils/drift/vectorAvg.test.d.ts +2 -0
  26. package/dist/utils/drift/vectorAvg.test.d.ts.map +1 -0
  27. package/dist/utils/drift/vectorAvg.test.js +36 -0
  28. package/dist/utils/drift/vectorAvg.test.js.map +1 -0
  29. package/dist/utils/text/normalizeText.test.d.ts +2 -0
  30. package/dist/utils/text/normalizeText.test.d.ts.map +1 -0
  31. package/dist/utils/text/normalizeText.test.js +23 -0
  32. package/dist/utils/text/normalizeText.test.js.map +1 -0
  33. package/dist/utils/vector/vectorLiteral.test.d.ts +2 -0
  34. package/dist/utils/vector/vectorLiteral.test.d.ts.map +1 -0
  35. package/dist/utils/vector/vectorLiteral.test.js +28 -0
  36. package/dist/utils/vector/vectorLiteral.test.js.map +1 -0
  37. package/package.json +1 -1
@@ -1,30 +1,40 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { MemoGrafter } from "./MemoGrafter.js";
3
3
  import { RetrieverPipeline } from "./pipeline/RetrieverPipeline.js";
4
- import { countApproxTokens } from "./utils/text/tokenCount.js";
5
4
  export class MemoGrafterAgent {
6
5
  core;
7
6
  sessionId = randomUUID();
8
7
  history = [];
9
8
  baseSystemPrompt;
10
- historyTokenBudget;
11
9
  recentWindowSize;
10
+ recallLimit;
11
+ recallMinSimilarity;
12
12
  cacheConfig;
13
13
  pendingIngest = Promise.resolve();
14
14
  constructor(config) {
15
15
  this.core = new MemoGrafter(config);
16
16
  this.baseSystemPrompt = config.systemPrompt ?? "";
17
- this.historyTokenBudget = config.inject?.tokenBudget ?? 4000;
18
17
  this.recentWindowSize = config.inject?.recentWindowSize ?? 20;
18
+ this.recallLimit = config.inject?.recallLimit ?? 6;
19
+ this.recallMinSimilarity = config.inject?.recallMinSimilarity ?? 0.55;
19
20
  this.cacheConfig = config.cache;
20
21
  }
21
22
  initialize() {
22
23
  return this.core.initialize();
23
24
  }
24
25
  async invoke(userMessage) {
25
- this.history.push({ role: "user", content: userMessage });
26
- const messages = await this.buildHistory();
26
+ const memoryContext = await this._buildMemoryContext(userMessage, {
27
+ limit: this.recallLimit,
28
+ minSimilarity: this.recallMinSimilarity,
29
+ });
30
+ const recentMessages = this.history.slice(-this.recentWindowSize);
31
+ const messages = [
32
+ ...(memoryContext ? [{ role: "system", content: memoryContext }] : []),
33
+ ...recentMessages,
34
+ { role: "user", content: userMessage },
35
+ ];
27
36
  const response = await this.core.llm.complete(messages, this.baseSystemPrompt);
37
+ this.history.push({ role: "user", content: userMessage });
28
38
  this.history.push({ role: "assistant", content: response });
29
39
  this.enqueueBackgroundIngest();
30
40
  return response;
@@ -50,14 +60,49 @@ export class MemoGrafterAgent {
50
60
  const { nodes } = await this.core.getTopics(this.sessionId);
51
61
  const edges = await this.core.store.getEdgesBySession(this.sessionId);
52
62
  const memories = await this.core.store.getMemoriesBySession(this.sessionId);
63
+ const registry = await this.core.store.getGraftRegistry(this.sessionId);
64
+ const registryByNodeId = new Map(registry.map((entry) => [entry.nodeId, entry]));
53
65
  return {
54
66
  sessionId: this.sessionId,
55
67
  nodes,
68
+ snapshotNodes: nodes.map((node) => {
69
+ const graftEntry = registryByNodeId.get(node.id);
70
+ return {
71
+ node,
72
+ ...(graftEntry
73
+ ? {
74
+ graftOrigin: {
75
+ sourceSessionId: graftEntry.sourceSessionId,
76
+ sourceNodeId: graftEntry.sourceNodeId,
77
+ graftedAt: graftEntry.graftedAt,
78
+ },
79
+ }
80
+ : {}),
81
+ };
82
+ }),
56
83
  edges,
57
84
  memories,
58
85
  capturedAt: new Date().toISOString(),
59
86
  };
60
87
  }
88
+ async getGraftRegistry() {
89
+ await this.pendingIngest;
90
+ return this.core.store.getGraftRegistry(this.sessionId);
91
+ }
92
+ async removeGraft(nodeId) {
93
+ await this.pendingIngest;
94
+ const registry = await this.core.store.getGraftRegistry(this.sessionId);
95
+ const entry = registry.find((candidate) => candidate.nodeId === nodeId);
96
+ if (!entry) {
97
+ throw new Error(`No graft registered for node ${nodeId} in this session.`);
98
+ }
99
+ await this.core.store.deleteNode(nodeId, this.sessionId);
100
+ }
101
+ async clearSession() {
102
+ await this.pendingIngest;
103
+ await this.core.store.clearSession(this.sessionId);
104
+ this.history.splice(0, this.history.length);
105
+ }
61
106
  async graft(topicIds) {
62
107
  await this.pendingIngest;
63
108
  const { nodes } = await this.core.getTopics(this.sessionId);
@@ -91,28 +136,22 @@ export class MemoGrafterAgent {
91
136
  console.warn("MemoGrafter background ingest warning:", error);
92
137
  });
93
138
  }
94
- async buildHistory() {
95
- const tokenCount = countApproxTokens(this.history.map((message) => message.content).join("\n"));
96
- const overflowThreshold = this.historyTokenBudget * 0.8;
97
- if (tokenCount < overflowThreshold) {
98
- return this.history;
99
- }
100
- const recentMessages = this.history.slice(-this.recentWindowSize);
101
- const recentContext = this.history
102
- .slice(-6)
103
- .map((message) => message.content)
104
- .join("\n");
139
+ async _buildMemoryContext(query, options) {
105
140
  try {
106
- const result = await this.recall(recentContext, { limit: 5, minSimilarity: 0.65 });
107
- const pinnedMessage = {
108
- role: "system",
109
- content: result.systemPrompt,
110
- };
111
- return [pinnedMessage, ...recentMessages];
141
+ const nodeCount = await this.core.store.getSessionNodeCount(this.sessionId);
142
+ if (nodeCount === 0)
143
+ return null;
144
+ const result = await this.recall(query, {
145
+ limit: options.limit,
146
+ minSimilarity: options.minSimilarity,
147
+ });
148
+ if (result.facts.length === 0)
149
+ return null;
150
+ return result.systemPrompt;
112
151
  }
113
152
  catch (error) {
114
153
  console.warn("MemoGrafter recall warning:", error);
115
- return recentMessages;
154
+ return null;
116
155
  }
117
156
  }
118
157
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"MemoGrafterAgent.js","sourceRoot":"","sources":["../src/MemoGrafterAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoGrafterAgent.js","sourceRoot":"","sources":["../src/MemoGrafterAgent.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { GrafterPipeline } from "./pipeline/GrafterPipeline.js";
10
10
  export { IngestPipeline } from "./pipeline/IngestPipeline.js";
11
11
  export { RetrieverPipeline } from "./pipeline/RetrieverPipeline.js";
12
12
  export { PostgresGraphStore } from "./store/index.js";
13
- export type { AbsorbFromAgentOptions, DriftMode, DriftSensitivity, EmbedAdapter, ExtractedMemory, GraphSnapshot, InjectionResult, LLMAdapter, MemoryEdge, MemoryNode, MemoryNodeInsert, MemorySourceType, MemoryType, MemoGrafterConfig, MemoGrafterDriftConfig, MemoGrafterGraphConfig, MemoGrafterInjectConfig, MemoGrafterQueueConfig, Message, RetrievalResult, RetrieverConfig, SegmentExtractionResult, TopicEdge, TopicNode, TopicSegment, } from "./types.js";
13
+ export type { AbsorbFromAgentOptions, DriftMode, DriftSensitivity, EmbedAdapter, ExtractedMemory, GraftOrigin, GraftRegistryEntry, GraphSnapshot, GraphSnapshotNode, InjectionResult, LLMAdapter, MemoryEdge, MemoryNode, MemoryNodeInsert, MemorySourceType, MemoryType, MemoGrafterConfig, MemoGrafterDriftConfig, MemoGrafterGraphConfig, MemoGrafterInjectConfig, MemoGrafterQueueConfig, Message, RetrievalResult, RetrieverConfig, SegmentExtractionResult, TopicEdge, TopicNode, TopicSegment, } from "./types.js";
14
14
  export type { ConductorGraftOptions, FleetAbsorbOptions, FleetAgentInfo, FleetGraph, FleetWorker, MemoGrafterFleetOptions, WorkerAgentConfig, } from "./fleet/types.js";
15
15
  export type { FleetAgentRecord, GraphStore } from "./store/index.js";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,OAAO,EACP,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,OAAO,EACP,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -29,6 +29,8 @@ export declare class IngestPipeline {
29
29
  reentryThreshold?: number;
30
30
  });
31
31
  run(messages: Message[], sessionId: string): Promise<TopicNode[]>;
32
+ private toNewAbsoluteSegments;
33
+ private linkIncrementalEdges;
32
34
  private embedMessage;
33
35
  }
34
36
  //# sourceMappingURL=IngestPipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IngestPipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/IngestPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOlG,qBAAa,cAAc;IAKvB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAGtB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAXzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;;IAGlD,gBAAgB;IACC,KAAK,EAAE,UAAU;IAClC,gBAAgB;IAChB,GAAG,EAAE,UAAU;IACf,gBAAgB;IACC,QAAQ,EAAE,YAAY;IACvC,gBAAgB;IACC,MAAM,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAoBG,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YA8CzD,YAAY;CAI3B"}
1
+ {"version":3,"file":"IngestPipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/IngestPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAWlG,qBAAa,cAAc;IAKvB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAGtB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAXzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;;IAGlD,gBAAgB;IACC,KAAK,EAAE,UAAU;IAClC,gBAAgB;IAChB,GAAG,EAAE,UAAU;IACf,gBAAgB;IACC,QAAQ,EAAE,YAAY;IACvC,gBAAgB;IACC,MAAM,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B;IAoBG,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqEvE,OAAO,CAAC,qBAAqB;YAoCf,oBAAoB;YAyCpB,YAAY;CAI3B"}
@@ -1,8 +1,11 @@
1
+ import { cosineSimilarity } from "../utils/drift/cosineSimilarity.js";
1
2
  import { resolveDriftThreshold } from "../utils/drift/driftThreshold.js";
2
3
  import { normalizeText } from "../utils/text/normalizeText.js";
3
- import { buildExistingNodeReentryEdges, findCurrentRunReentryEdges } from "../utils/reentry/reentryEdges.js";
4
+ import { edgePairKey, findCurrentRunReentryEdges } from "../utils/reentry/reentryEdges.js";
4
5
  import { SegmentProcessor } from "./SegmentProcessor.js";
5
6
  import { TopicDriftDetector } from "./TopicDriftDetector.js";
7
+ const INGEST_OVERLAP_MESSAGES = 6;
8
+ const INCREMENTAL_SEMANTIC_THRESHOLD = 0.6;
6
9
  export class IngestPipeline {
7
10
  store;
8
11
  embedder;
@@ -39,37 +42,110 @@ export class IngestPipeline {
39
42
  if (messages.length === 0)
40
43
  return [];
41
44
  await this.store.saveMessages(sessionId, messages);
45
+ const ingestState = await this.store.getSessionIngestState(sessionId);
46
+ const firstNewMessageIndex = (ingestState?.lastIngestedMessageIndex ?? -1) + 1;
47
+ if (firstNewMessageIndex >= messages.length)
48
+ return [];
42
49
  const existingNodes = await this.store.getNodesBySession(sessionId);
43
- await this.store.clearSession(sessionId);
44
- const embeddings = await Promise.all(messages.map((message) => this.embedMessage(message)));
45
- const { segments, reentryMap } = await this.driftDetector.detectSegments(messages, embeddings, existingNodes);
50
+ const contextStartIndex = Math.max(0, firstNewMessageIndex - INGEST_OVERLAP_MESSAGES);
51
+ const contextMessages = messages.slice(contextStartIndex);
52
+ const contextEmbeddings = await Promise.all(contextMessages.map((message) => this.embedMessage(message)));
53
+ const { segments, reentryMap } = await this.driftDetector.detectSegments(contextMessages, contextEmbeddings, existingNodes);
54
+ const absoluteSegments = this.toNewAbsoluteSegments(segments, contextStartIndex, firstNewMessageIndex, existingNodes);
46
55
  const nodes = [];
47
- const nodeByTopicOrder = new Map();
48
- for (const segment of segments) {
56
+ const nodeByDetectorTopicOrder = new Map();
57
+ const savedReentryPairs = new Set();
58
+ for (const { segment, detectorTopicOrder } of absoluteSegments) {
49
59
  const node = await this.segmentProcessor.process(segment, messages, sessionId);
50
60
  nodes.push(node);
51
- nodeByTopicOrder.set(segment.topicOrder, node);
52
- }
53
- await this.store.rebuildEdgesForSession(sessionId, this.config.topK);
54
- const { edges: existingNodeReentryEdges, savedPairs } = buildExistingNodeReentryEdges(reentryMap, existingNodes, nodeByTopicOrder);
55
- for (const edge of existingNodeReentryEdges) {
56
- await this.store.saveEdge(edge);
61
+ nodeByDetectorTopicOrder.set(detectorTopicOrder, node);
62
+ const matchedNodeId = reentryMap.get(detectorTopicOrder);
63
+ const matchedNode = matchedNodeId
64
+ ? existingNodes.find((existingNode) => existingNode.id === matchedNodeId)
65
+ : undefined;
66
+ if (matchedNode && matchedNode.id !== node.id) {
67
+ await this.store.saveEdge({
68
+ srcId: node.id,
69
+ dstId: matchedNode.id,
70
+ weight: 1,
71
+ type: "reentry",
72
+ });
73
+ savedReentryPairs.add(edgePairKey(node.id, matchedNode.id));
74
+ }
57
75
  }
58
76
  if (this.config.reentryDetection !== false) {
59
77
  const currentRunReentryEdges = findCurrentRunReentryEdges({
60
- segments,
61
- messages,
62
- embeddings,
63
- nodeByTopicOrder,
78
+ segments: absoluteSegments.map(({ relativeSegment }) => relativeSegment),
79
+ messages: contextMessages,
80
+ embeddings: contextEmbeddings,
81
+ nodeByTopicOrder: nodeByDetectorTopicOrder,
64
82
  reentryThreshold: this.config.reentryThreshold ?? 0.85,
65
- existingPairs: savedPairs,
83
+ existingPairs: savedReentryPairs,
66
84
  });
67
85
  for (const edge of currentRunReentryEdges) {
68
86
  await this.store.saveEdge(edge);
69
87
  }
70
88
  }
89
+ await this.linkIncrementalEdges(sessionId, existingNodes, nodes);
90
+ await this.store.updateSessionIngestState(sessionId, messages.length - 1);
71
91
  return nodes;
72
92
  }
93
+ toNewAbsoluteSegments(segments, contextStartIndex, firstNewMessageIndex, existingNodes) {
94
+ const nextTopicOrder = existingNodes.reduce((max, node) => Math.max(max, node.topicOrder), 0) + 1;
95
+ const absoluteSegments = [];
96
+ for (const segment of segments) {
97
+ const absoluteStart = contextStartIndex + segment.start;
98
+ const absoluteEnd = contextStartIndex + segment.end;
99
+ if (absoluteEnd < firstNewMessageIndex)
100
+ continue;
101
+ absoluteSegments.push({
102
+ detectorTopicOrder: segment.topicOrder,
103
+ relativeSegment: segment,
104
+ segment: {
105
+ start: Math.max(absoluteStart, firstNewMessageIndex),
106
+ end: absoluteEnd,
107
+ topicOrder: nextTopicOrder + absoluteSegments.length,
108
+ driftScore: segment.driftScore,
109
+ },
110
+ });
111
+ }
112
+ return absoluteSegments;
113
+ }
114
+ async linkIncrementalEdges(sessionId, existingNodes, newNodes) {
115
+ if (newNodes.length === 0)
116
+ return;
117
+ const previousNode = existingNodes.reduce((previous, node) => {
118
+ if (!previous || node.topicOrder > previous.topicOrder)
119
+ return node;
120
+ return previous;
121
+ }, null);
122
+ for (const [index, node] of newNodes.entries()) {
123
+ const temporalTarget = index === 0 ? previousNode : newNodes[index - 1];
124
+ if (temporalTarget && temporalTarget.id !== node.id) {
125
+ await this.store.saveEdge({
126
+ srcId: node.id,
127
+ dstId: temporalTarget.id,
128
+ weight: cosineSimilarity(node.embedding, temporalTarget.embedding),
129
+ type: "temporal",
130
+ });
131
+ }
132
+ const similarNodes = await this.store.getSimilarNodes(node.embedding, sessionId, {
133
+ k: this.config.topK,
134
+ excludeNodeId: node.id,
135
+ minSimilarity: INCREMENTAL_SEMANTIC_THRESHOLD,
136
+ });
137
+ for (const similarNode of similarNodes) {
138
+ if (similarNode.id === node.id)
139
+ continue;
140
+ await this.store.saveEdge({
141
+ srcId: node.id,
142
+ dstId: similarNode.id,
143
+ weight: cosineSimilarity(node.embedding, similarNode.embedding),
144
+ type: "semantic",
145
+ });
146
+ }
147
+ }
148
+ }
73
149
  async embedMessage(message) {
74
150
  const content = normalizeText(message.content) ?? message.content;
75
151
  return this.embedder.embed(content);
@@ -1 +1 @@
1
- {"version":3,"file":"IngestPipeline.js","sourceRoot":"","sources":["../../src/pipeline/IngestPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,OAAO,cAAc;IAMN;IAIA;IAEA;IAXF,aAAa,CAAqB;IAClC,gBAAgB,CAAmB;IAEpD;IACE,gBAAgB;IACC,KAAiB;IAClC,gBAAgB;IAChB,GAAe;IACf,gBAAgB;IACC,QAAsB;IACvC,gBAAgB;IACC,MAUhB;QAhBgB,UAAK,GAAL,KAAK,CAAY;QAIjB,aAAQ,GAAR,QAAQ,CAAc;QAEtB,WAAM,GAAN,MAAM,CAUtB;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CACzC;YACE,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,KAAK;YAC5D,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACjD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;SAClD,EACD,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;YACjE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,iBAAiB,EAAE,GAAG;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAmB,EAAE,SAAiB;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9G,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,6BAA6B,CACnF,UAAU,EACV,aAAa,EACb,gBAAgB,CACjB,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC3C,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;gBACxD,QAAQ;gBACR,QAAQ;gBACR,UAAU;gBACV,gBAAgB;gBAChB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI;gBACtD,aAAa,EAAE,UAAU;aAC1B,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAgB;QACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"IngestPipeline.js","sourceRoot":"","sources":["../../src/pipeline/IngestPipeline.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { MemoryNode, MemoryNodeInsert, Message, TopicEdge, TopicNode, TopicSegment } from "../types.js";
1
+ import type { GraftRegistryEntry, MemoryNode, MemoryNodeInsert, Message, SessionIngestState, TopicEdge, TopicNode, TopicSegment } from "../types.js";
2
2
  export interface FleetAgentRecord {
3
3
  id: string;
4
4
  fleetId: string;
@@ -10,6 +10,10 @@ export interface GraphStore {
10
10
  initialize(): Promise<void>;
11
11
  saveMessages(sessionId: string, messages: Message[]): Promise<void>;
12
12
  saveMessagesAt(sessionId: string, startIndex: number, messages: Message[]): Promise<void>;
13
+ getMessagesBySession(sessionId: string, startIndex?: number, endIndex?: number): Promise<Message[]>;
14
+ getRecentMessagesBefore(sessionId: string, beforeIndex: number, limit: number): Promise<Message[]>;
15
+ getSessionIngestState(sessionId: string): Promise<SessionIngestState | null>;
16
+ updateSessionIngestState(sessionId: string, lastIngestedMessageIndex: number): Promise<void>;
13
17
  saveSegment(segment: TopicSegment): Promise<TopicSegment>;
14
18
  saveNode(node: TopicNode): Promise<void>;
15
19
  saveEdge(edge: TopicEdge): Promise<void>;
@@ -18,9 +22,12 @@ export interface GraphStore {
18
22
  getMemoriesBySession(sessionId: string): Promise<MemoryNode[]>;
19
23
  clearSession(sessionId: string): Promise<void>;
20
24
  clearSessionGraph(sessionId: string): Promise<void>;
25
+ deleteNode(nodeId: string, sessionId?: string): Promise<void>;
21
26
  getTopicNode(topicNodeId: string, sessionId?: string): Promise<TopicNode | null>;
22
27
  getNodeBySegment(segmentId: string): Promise<TopicNode | null>;
28
+ getSessionNodeCount(sessionId: string): Promise<number>;
23
29
  getNodesBySession(sessionId: string): Promise<TopicNode[]>;
30
+ getLastTopicNode(sessionId: string): Promise<TopicNode | null>;
24
31
  getSegmentsBySession(sessionId: string): Promise<TopicSegment[]>;
25
32
  insertMemories(nodes: MemoryNodeInsert[]): Promise<void>;
26
33
  getMemoriesBySegment(segmentId: string): Promise<MemoryNode[]>;
@@ -59,6 +66,9 @@ export interface GraphStore {
59
66
  nodeSimilarity(nodeAId: string, nodeBId: string): Promise<number>;
60
67
  getNeighbours(nodeIds: string[], hopDepth: number, sessionId?: string): Promise<TopicNode[]>;
61
68
  getBufferMessages(sessionId: string, start: number, end: number, maxChars?: number): Promise<Message[]>;
69
+ insertGraftRegistry(entry: Omit<GraftRegistryEntry, "id" | "graftedAt">): Promise<GraftRegistryEntry>;
70
+ getGraftRegistry(sessionId: string): Promise<GraftRegistryEntry[]>;
71
+ deleteGraftRegistry(nodeId: string): Promise<void>;
62
72
  absorbNodes(nodes: TopicNode[], targetSessionId: string, options?: {
63
73
  agentColor?: string | null;
64
74
  fleetId?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../src/store/GraphStore.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { FleetAgentRecord, GraphStore } from "../GraphStore.js";
2
- import type { MemoryNode, MemoryNodeInsert, Message, TopicEdge, TopicNode, TopicSegment } from "../../types.js";
2
+ import type { GraftRegistryEntry, MemoryNode, MemoryNodeInsert, Message, SessionIngestState, TopicEdge, TopicNode, TopicSegment } from "../../types.js";
3
3
  interface AbsorbOptions {
4
4
  agentColor?: string | null;
5
5
  fleetId?: string | null;
@@ -11,6 +11,10 @@ export declare class PostgresGraphStore implements GraphStore {
11
11
  initialize(): Promise<void>;
12
12
  saveMessages(sessionId: string, messages: Message[]): Promise<void>;
13
13
  saveMessagesAt(sessionId: string, startIndex: number, messages: Message[]): Promise<void>;
14
+ getMessagesBySession(sessionId: string, startIndex?: number, endIndex?: number): Promise<Message[]>;
15
+ getRecentMessagesBefore(sessionId: string, beforeIndex: number, limit: number): Promise<Message[]>;
16
+ getSessionIngestState(sessionId: string): Promise<SessionIngestState | null>;
17
+ updateSessionIngestState(sessionId: string, lastIngestedMessageIndex: number): Promise<void>;
14
18
  saveSegment(segment: TopicSegment): Promise<TopicSegment>;
15
19
  saveNode(node: TopicNode): Promise<void>;
16
20
  saveEdge(edge: TopicEdge): Promise<void>;
@@ -18,9 +22,12 @@ export declare class PostgresGraphStore implements GraphStore {
18
22
  getEdgesBySession(sessionId: string): Promise<TopicEdge[]>;
19
23
  clearSession(sessionId: string): Promise<void>;
20
24
  clearSessionGraph(sessionId: string): Promise<void>;
25
+ deleteNode(nodeId: string, sessionId?: string): Promise<void>;
21
26
  getTopicNode(topicNodeId: string, sessionId?: string): Promise<TopicNode | null>;
22
27
  getNodeBySegment(segmentId: string): Promise<TopicNode | null>;
28
+ getSessionNodeCount(sessionId: string): Promise<number>;
23
29
  getNodesBySession(sessionId: string): Promise<TopicNode[]>;
30
+ getLastTopicNode(sessionId: string): Promise<TopicNode | null>;
24
31
  getSegmentsBySession(sessionId: string): Promise<TopicSegment[]>;
25
32
  insertMemories(nodes: MemoryNodeInsert[]): Promise<void>;
26
33
  getMemoriesBySegment(segmentId: string): Promise<MemoryNode[]>;
@@ -60,7 +67,12 @@ export declare class PostgresGraphStore implements GraphStore {
60
67
  nodeSimilarity(nodeAId: string, nodeBId: string): Promise<number>;
61
68
  getNeighbours(nodeIds: string[], hopDepth: number, sessionId?: string): Promise<TopicNode[]>;
62
69
  getBufferMessages(sessionId: string, start: number, end: number, maxChars?: number): Promise<Message[]>;
70
+ insertGraftRegistry(entry: Omit<GraftRegistryEntry, "id" | "graftedAt">): Promise<GraftRegistryEntry>;
71
+ getGraftRegistry(sessionId: string): Promise<GraftRegistryEntry[]>;
72
+ deleteGraftRegistry(nodeId: string): Promise<void>;
63
73
  absorbNodes(nodes: TopicNode[], targetSessionId: string, options?: AbsorbOptions): Promise<TopicNode[]>;
74
+ private copyActiveMemoriesForAbsorbedNode;
75
+ private deleteEdgesByNodeIds;
64
76
  rebuildEdgesForSession(sessionId: string, semanticTopK?: number, semanticThreshold?: number): Promise<void>;
65
77
  close(): Promise<void>;
66
78
  private migrateExistingNodeTable;
@@ -71,6 +83,8 @@ export declare class PostgresGraphStore implements GraphStore {
71
83
  private formatGraftedMemoryMessage;
72
84
  private rowToNode;
73
85
  private rowToMemoryNode;
86
+ private rowToSessionIngestState;
87
+ private rowToGraftRegistryEntry;
74
88
  private rowToSegment;
75
89
  }
76
90
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../../src/store/postgres-pgvector/GraphStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphStore.d.ts","sourceRoot":"","sources":["../../../src/store/postgres-pgvector/GraphStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiFxJ,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;gBAEd,gBAAgB,EAAE,MAAM;IAQ9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqI3B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzF,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAenG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAmBlG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAU5E,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5F,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBzD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDxC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASxC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBrE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoB1D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC9C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAWhF,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAU9D,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUvD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAU1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAW9D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUhE,cAAc,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDxD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAU9D,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY9D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAU9D,cAAc,CAClB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,UAAU,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAkB7C,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC1F,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIvG,eAAe,CACnB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3E,OAAO,CAAC,SAAS,EAAE,CAAC;IAcjB,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAChG,OAAO,CAAC,SAAS,EAAE,CAAC;IAejB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW1E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD,cAAc,CAAC,KAAK,EAAE;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWX,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsB5D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;QACjD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAWX,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAYjF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwC5F,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAepG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyBrG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUlE,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAwDnG,iCAAiC;YAmDjC,oBAAoB;IAU5B,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,SAAI,EAAE,iBAAiB,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CnG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,wBAAwB;YAiCxB,aAAa;IAiF3B,OAAO,CAAC,qBAAqB;YAkBf,mBAAmB;YAUnB,iBAAiB;IAU/B,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,YAAY;CAerB"}