memo-grafter 0.2.3 → 0.2.4
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/USER_GUIDE.md +200 -68
- package/dist/MemoGrafterAgent.d.ts.map +1 -1
- package/dist/MemoGrafterAgent.js +2 -0
- package/dist/MemoGrafterAgent.js.map +1 -1
- package/dist/crawler/ConflictDetectionPass.d.ts +6 -0
- package/dist/crawler/ConflictDetectionPass.d.ts.map +1 -0
- package/dist/crawler/ConflictDetectionPass.js +46 -0
- package/dist/crawler/ConflictDetectionPass.js.map +1 -0
- package/dist/crawler/DecayScoringPass.d.ts +17 -0
- package/dist/crawler/DecayScoringPass.d.ts.map +1 -0
- package/dist/crawler/DecayScoringPass.js +73 -0
- package/dist/crawler/DecayScoringPass.js.map +1 -0
- package/dist/crawler/MemoGrafterCrawler.d.ts +14 -0
- package/dist/crawler/MemoGrafterCrawler.d.ts.map +1 -0
- package/dist/crawler/MemoGrafterCrawler.js +108 -0
- package/dist/crawler/MemoGrafterCrawler.js.map +1 -0
- package/dist/crawler/VersioningPass.d.ts +6 -0
- package/dist/crawler/VersioningPass.d.ts.map +1 -0
- package/dist/crawler/VersioningPass.js +43 -0
- package/dist/crawler/VersioningPass.js.map +1 -0
- package/dist/crawler/decayScoring.d.ts +7 -0
- package/dist/crawler/decayScoring.d.ts.map +1 -0
- package/dist/crawler/decayScoring.js +9 -0
- package/dist/crawler/decayScoring.js.map +1 -0
- package/dist/crawler/index.d.ts +7 -0
- package/dist/crawler/index.d.ts.map +1 -0
- package/dist/crawler/index.js +5 -0
- package/dist/crawler/index.js.map +1 -0
- package/dist/crawler/memoryMaintenance.d.ts +14 -0
- package/dist/crawler/memoryMaintenance.d.ts.map +1 -0
- package/dist/crawler/memoryMaintenance.js +40 -0
- package/dist/crawler/memoryMaintenance.js.map +1 -0
- package/dist/crawler/types.d.ts +63 -0
- package/dist/crawler/types.d.ts.map +1 -0
- package/dist/crawler/types.js +2 -0
- package/dist/crawler/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pipeline/GrafterPipeline.d.ts.map +1 -1
- package/dist/pipeline/GrafterPipeline.js +42 -1
- package/dist/pipeline/GrafterPipeline.js.map +1 -1
- package/dist/prompts/memoryInjectionPrompt.d.ts +6 -2
- package/dist/prompts/memoryInjectionPrompt.d.ts.map +1 -1
- package/dist/prompts/memoryInjectionPrompt.js +25 -2
- package/dist/prompts/memoryInjectionPrompt.js.map +1 -1
- package/dist/store/GraphStore.d.ts +10 -1
- package/dist/store/GraphStore.d.ts.map +1 -1
- package/dist/store/postgres-pgvector/GraphStore.d.ts +11 -1
- package/dist/store/postgres-pgvector/GraphStore.d.ts.map +1 -1
- package/dist/store/postgres-pgvector/GraphStore.js +105 -1
- package/dist/store/postgres-pgvector/GraphStore.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const DEFAULT_INTERVAL_MS = 60_000;
|
|
2
|
+
export class MemoGrafterCrawler {
|
|
3
|
+
config;
|
|
4
|
+
intervalHandle;
|
|
5
|
+
isRunning = false;
|
|
6
|
+
isExecuting = false;
|
|
7
|
+
constructor(config = {}) {
|
|
8
|
+
this.config = {
|
|
9
|
+
intervalMs: config.intervalMs ?? DEFAULT_INTERVAL_MS,
|
|
10
|
+
passes: config.passes ?? [],
|
|
11
|
+
stopOnPassError: config.stopOnPassError ?? false,
|
|
12
|
+
...(config.store !== undefined ? { store: config.store } : {}),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
start() {
|
|
16
|
+
if (this.isRunning) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.isRunning = true;
|
|
20
|
+
this.intervalHandle = setInterval(() => {
|
|
21
|
+
void this.runScheduledTick();
|
|
22
|
+
}, this.config.intervalMs);
|
|
23
|
+
}
|
|
24
|
+
stop() {
|
|
25
|
+
if (this.intervalHandle !== undefined) {
|
|
26
|
+
clearInterval(this.intervalHandle);
|
|
27
|
+
this.intervalHandle = undefined;
|
|
28
|
+
}
|
|
29
|
+
this.isRunning = false;
|
|
30
|
+
}
|
|
31
|
+
async runOnce() {
|
|
32
|
+
const startedAtMs = Date.now();
|
|
33
|
+
const startedAt = new Date(startedAtMs).toISOString();
|
|
34
|
+
const passes = [];
|
|
35
|
+
const context = this.config.store !== undefined
|
|
36
|
+
? { store: this.config.store }
|
|
37
|
+
: {};
|
|
38
|
+
for (const pass of this.config.passes ?? []) {
|
|
39
|
+
const passReport = await this.runPass(pass.name, () => pass.run(context));
|
|
40
|
+
passes.push(passReport);
|
|
41
|
+
if (!passReport.ok && this.config.stopOnPassError) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const finishedAtMs = Date.now();
|
|
46
|
+
return {
|
|
47
|
+
startedAt,
|
|
48
|
+
finishedAt: new Date(finishedAtMs).toISOString(),
|
|
49
|
+
durationMs: finishedAtMs - startedAtMs,
|
|
50
|
+
passes,
|
|
51
|
+
ok: passes.every((pass) => pass.ok),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async runScheduledTick() {
|
|
55
|
+
if (this.isExecuting) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.isExecuting = true;
|
|
59
|
+
try {
|
|
60
|
+
await this.runOnce();
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
this.isExecuting = false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async runPass(name, run) {
|
|
67
|
+
const startedAtMs = Date.now();
|
|
68
|
+
const startedAt = new Date(startedAtMs).toISOString();
|
|
69
|
+
try {
|
|
70
|
+
const result = await run();
|
|
71
|
+
const finishedAtMs = Date.now();
|
|
72
|
+
return {
|
|
73
|
+
name,
|
|
74
|
+
ok: true,
|
|
75
|
+
startedAt,
|
|
76
|
+
finishedAt: new Date(finishedAtMs).toISOString(),
|
|
77
|
+
durationMs: finishedAtMs - startedAtMs,
|
|
78
|
+
result,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
const finishedAtMs = Date.now();
|
|
83
|
+
return {
|
|
84
|
+
name,
|
|
85
|
+
ok: false,
|
|
86
|
+
startedAt,
|
|
87
|
+
finishedAt: new Date(finishedAtMs).toISOString(),
|
|
88
|
+
durationMs: finishedAtMs - startedAtMs,
|
|
89
|
+
error: serializeError(error),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function serializeError(error) {
|
|
95
|
+
if (error instanceof Error) {
|
|
96
|
+
const serialized = {
|
|
97
|
+
message: error.message,
|
|
98
|
+
};
|
|
99
|
+
if (error.stack !== undefined) {
|
|
100
|
+
serialized.stack = error.stack;
|
|
101
|
+
}
|
|
102
|
+
return serialized;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
message: String(error),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=MemoGrafterCrawler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoGrafterCrawler.js","sourceRoot":"","sources":["../../src/crawler/MemoGrafterCrawler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CrawlerPass, CrawlerPassContext, CrawlerPassResult } from "./types.js";
|
|
2
|
+
export declare class VersioningPass implements CrawlerPass {
|
|
3
|
+
readonly name = "versioning";
|
|
4
|
+
run(context: CrawlerPassContext): Promise<CrawlerPassResult>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=VersioningPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersioningPass.d.ts","sourceRoot":"","sources":["../../src/crawler/VersioningPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOrF,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAyCnE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { findMemoryConflictGroups, getNewestMemoryNode, getSkippedMaintenanceCounts, } from "./memoryMaintenance.js";
|
|
2
|
+
export class VersioningPass {
|
|
3
|
+
name = "versioning";
|
|
4
|
+
async run(context) {
|
|
5
|
+
if (!context.store) {
|
|
6
|
+
throw new Error("VersioningPass requires a crawler maintenance store.");
|
|
7
|
+
}
|
|
8
|
+
const memories = await context.store.listMemoryNodesForMaintenance();
|
|
9
|
+
const conflictGroups = findMemoryConflictGroups(memories);
|
|
10
|
+
let nodesSuperseded = 0;
|
|
11
|
+
let updateEdgesCreated = 0;
|
|
12
|
+
for (const group of conflictGroups) {
|
|
13
|
+
const newest = getNewestMemoryNode(group.nodes);
|
|
14
|
+
if (!newest)
|
|
15
|
+
continue;
|
|
16
|
+
for (const node of group.nodes) {
|
|
17
|
+
if (node.id === newest.id || node.supersededBy != null)
|
|
18
|
+
continue;
|
|
19
|
+
const superseded = await context.store.markMemoryNodeSuperseded(node.id, newest.id);
|
|
20
|
+
if (superseded)
|
|
21
|
+
nodesSuperseded += 1;
|
|
22
|
+
// Direction convention: newer memory --updates--> older memory.
|
|
23
|
+
const edgeCreated = await context.store.upsertMemoryEdge({
|
|
24
|
+
sourceId: newest.id,
|
|
25
|
+
targetId: node.id,
|
|
26
|
+
edgeType: "updates",
|
|
27
|
+
weight: 1,
|
|
28
|
+
});
|
|
29
|
+
if (edgeCreated)
|
|
30
|
+
updateEdgesCreated += 1;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const skipped = getSkippedMaintenanceCounts(memories);
|
|
34
|
+
return {
|
|
35
|
+
inspected: memories.length,
|
|
36
|
+
conflictsDetected: conflictGroups.length,
|
|
37
|
+
nodesSuperseded,
|
|
38
|
+
updateEdgesCreated,
|
|
39
|
+
...skipped,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=VersioningPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersioningPass.js","sourceRoot":"","sources":["../../src/crawler/VersioningPass.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,YAAY,CAAC;IAE7B,KAAK,CAAC,GAAG,CAAC,OAA2B;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC;QACrE,MAAM,cAAc,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI;oBAAE,SAAS;gBAEjE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpF,IAAI,UAAU;oBAAE,eAAe,IAAI,CAAC,CAAC;gBAErC,gEAAgE;gBAChE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBACvD,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,CAAC;iBACV,CAAC,CAAC;gBACH,IAAI,WAAW;oBAAE,kBAAkB,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,iBAAiB,EAAE,cAAc,CAAC,MAAM;YACxC,eAAe;YACf,kBAAkB;YAClB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MemoryNode } from "../types.js";
|
|
2
|
+
export interface DecayScoreOptions {
|
|
3
|
+
now: Date;
|
|
4
|
+
halfLifeDays: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function computeMemoryDecayScore(memory: Pick<MemoryNode, "confidence" | "createdAt">, options: DecayScoreOptions): number;
|
|
7
|
+
//# sourceMappingURL=decayScoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decayScoring.d.ts","sourceRoot":"","sources":["../../src/crawler/decayScoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,WAAW,CAAC,EACpD,OAAO,EAAE,iBAAiB,GACzB,MAAM,CAOR"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
2
|
+
export function computeMemoryDecayScore(memory, options) {
|
|
3
|
+
const ageMs = Math.max(0, options.now.getTime() - memory.createdAt.getTime());
|
|
4
|
+
const ageDays = ageMs / DAY_MS;
|
|
5
|
+
const lambda = Math.log(2) / options.halfLifeDays;
|
|
6
|
+
const recencyFactor = Math.exp(-lambda * ageDays);
|
|
7
|
+
return memory.confidence * recencyFactor;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=decayScoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decayScoring.js","sourceRoot":"","sources":["../../src/crawler/decayScoring.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAOnC,MAAM,UAAU,uBAAuB,CACrC,MAAoD,EACpD,OAA0B;IAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAElD,OAAO,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ConflictDetectionPass } from "./ConflictDetectionPass.js";
|
|
2
|
+
export { DecayScoringPass } from "./DecayScoringPass.js";
|
|
3
|
+
export { MemoGrafterCrawler } from "./MemoGrafterCrawler.js";
|
|
4
|
+
export { VersioningPass } from "./VersioningPass.js";
|
|
5
|
+
export type { DecayScoringPassOptions } from "./DecayScoringPass.js";
|
|
6
|
+
export type { CrawlerConfig, CrawlerMaintenanceStore, CrawlerPass, CrawlerPassContext, CrawlerPassReport, CrawlerPassResult, CrawlerReport, } from "./types.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crawler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ConflictDetectionPass } from "./ConflictDetectionPass.js";
|
|
2
|
+
export { DecayScoringPass } from "./DecayScoringPass.js";
|
|
3
|
+
export { MemoGrafterCrawler } from "./MemoGrafterCrawler.js";
|
|
4
|
+
export { VersioningPass } from "./VersioningPass.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crawler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MemoryNode } from "../types.js";
|
|
2
|
+
export interface MemoryConflictGroup {
|
|
3
|
+
key: string;
|
|
4
|
+
nodes: MemoryNode[];
|
|
5
|
+
}
|
|
6
|
+
export declare function normalizeMemoryPart(value: string): string;
|
|
7
|
+
export declare function findMemoryConflictGroups(memories: MemoryNode[]): MemoryConflictGroup[];
|
|
8
|
+
export declare function getNewestMemoryNode(nodes: MemoryNode[]): MemoryNode | null;
|
|
9
|
+
export declare function compareNewestFirst(left: MemoryNode, right: MemoryNode): number;
|
|
10
|
+
export declare function getSkippedMaintenanceCounts(memories: MemoryNode[]): {
|
|
11
|
+
skippedDecayed: number;
|
|
12
|
+
skippedSuperseded: number;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=memoryMaintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryMaintenance.d.ts","sourceRoot":"","sources":["../../src/crawler/memoryMaintenance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAsBtF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,IAAI,CAE1E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAK9E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAKA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function normalizeMemoryPart(value) {
|
|
2
|
+
return value.trim().toLowerCase().replace(/\s+/g, " ");
|
|
3
|
+
}
|
|
4
|
+
export function findMemoryConflictGroups(memories) {
|
|
5
|
+
const activeMemories = memories.filter((memory) => !memory.decayed && memory.supersededBy == null);
|
|
6
|
+
const byFactKey = new Map();
|
|
7
|
+
for (const memory of activeMemories) {
|
|
8
|
+
const key = [
|
|
9
|
+
memory.sessionId,
|
|
10
|
+
normalizeMemoryPart(memory.subject),
|
|
11
|
+
normalizeMemoryPart(memory.predicate),
|
|
12
|
+
].join("\u0000");
|
|
13
|
+
const group = byFactKey.get(key);
|
|
14
|
+
if (group) {
|
|
15
|
+
group.push(memory);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
byFactKey.set(key, [memory]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return [...byFactKey.entries()]
|
|
22
|
+
.filter(([, nodes]) => new Set(nodes.map((node) => normalizeMemoryPart(node.value))).size > 1)
|
|
23
|
+
.map(([key, nodes]) => ({ key, nodes }));
|
|
24
|
+
}
|
|
25
|
+
export function getNewestMemoryNode(nodes) {
|
|
26
|
+
return [...nodes].sort(compareNewestFirst)[0] ?? null;
|
|
27
|
+
}
|
|
28
|
+
export function compareNewestFirst(left, right) {
|
|
29
|
+
const timeDelta = right.createdAt.getTime() - left.createdAt.getTime();
|
|
30
|
+
if (timeDelta !== 0)
|
|
31
|
+
return timeDelta;
|
|
32
|
+
return right.id.localeCompare(left.id);
|
|
33
|
+
}
|
|
34
|
+
export function getSkippedMaintenanceCounts(memories) {
|
|
35
|
+
return {
|
|
36
|
+
skippedDecayed: memories.filter((memory) => memory.decayed).length,
|
|
37
|
+
skippedSuperseded: memories.filter((memory) => memory.supersededBy != null).length,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=memoryMaintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryMaintenance.js","sourceRoot":"","sources":["../../src/crawler/memoryMaintenance.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAAsB;IAC7D,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACnG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG;YACV,MAAM,CAAC,SAAS;YAChB,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;SACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;SAC7F,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,KAAiB;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACvE,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtC,OAAO,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAsB;IAIhE,OAAO;QACL,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QAClE,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,MAAM;KACnF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { MemoryEdge, MemoryNode } from "../types.js";
|
|
2
|
+
export interface CrawlerConfig {
|
|
3
|
+
intervalMs?: number;
|
|
4
|
+
passes?: CrawlerPass[];
|
|
5
|
+
stopOnPassError?: boolean;
|
|
6
|
+
store?: CrawlerMaintenanceStore;
|
|
7
|
+
}
|
|
8
|
+
export interface CrawlerPass {
|
|
9
|
+
name: string;
|
|
10
|
+
run(context: CrawlerPassContext): Promise<CrawlerPassResult> | CrawlerPassResult;
|
|
11
|
+
}
|
|
12
|
+
export interface CrawlerPassContext {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
store?: CrawlerMaintenanceStore;
|
|
15
|
+
}
|
|
16
|
+
export interface CrawlerPassResult {
|
|
17
|
+
inspected?: number;
|
|
18
|
+
annotated?: number;
|
|
19
|
+
skipped?: number;
|
|
20
|
+
conflictsDetected?: number;
|
|
21
|
+
nodesMarkedConflicting?: number;
|
|
22
|
+
conflictEdgesCreated?: number;
|
|
23
|
+
nodesSuperseded?: number;
|
|
24
|
+
updateEdgesCreated?: number;
|
|
25
|
+
decayScored?: number;
|
|
26
|
+
nodesDecayed?: number;
|
|
27
|
+
minDecayScore?: number;
|
|
28
|
+
maxDecayScore?: number;
|
|
29
|
+
skippedAlreadyDecayed?: number;
|
|
30
|
+
skippedSuperseded?: number;
|
|
31
|
+
skippedDecayed?: number;
|
|
32
|
+
notes?: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface CrawlerMaintenanceStore {
|
|
35
|
+
listMemoryNodesForMaintenance(): Promise<MemoryNode[]>;
|
|
36
|
+
markMemoryNodesConflicting(memoryNodeIds: string[]): Promise<number>;
|
|
37
|
+
markMemoryNodeSuperseded(memoryNodeId: string, supersededBy: string): Promise<boolean>;
|
|
38
|
+
markMemoryNodeDecayed(memoryNodeId: string): Promise<boolean>;
|
|
39
|
+
updateMemoryNodeConfidence?(memoryNodeId: string, confidence: number): Promise<boolean>;
|
|
40
|
+
upsertMemoryEdge(edge: Pick<MemoryEdge, "sourceId" | "targetId" | "edgeType"> & {
|
|
41
|
+
weight?: number;
|
|
42
|
+
}): Promise<boolean>;
|
|
43
|
+
}
|
|
44
|
+
export interface CrawlerPassReport {
|
|
45
|
+
name: string;
|
|
46
|
+
ok: boolean;
|
|
47
|
+
startedAt: string;
|
|
48
|
+
finishedAt: string;
|
|
49
|
+
durationMs: number;
|
|
50
|
+
result?: CrawlerPassResult;
|
|
51
|
+
error?: {
|
|
52
|
+
message: string;
|
|
53
|
+
stack?: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface CrawlerReport {
|
|
57
|
+
startedAt: string;
|
|
58
|
+
finishedAt: string;
|
|
59
|
+
durationMs: number;
|
|
60
|
+
passes: CrawlerPassReport[];
|
|
61
|
+
ok: boolean;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/crawler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;CAClF;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,6BAA6B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACvD,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvF,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,0BAA0B,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxF,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;QAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,EAAE,EAAE,OAAO,CAAC;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/crawler/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { MemoGrafterAgent } from "./MemoGrafterAgent.js";
|
|
2
2
|
export { MemoGrafter } from "./MemoGrafter.js";
|
|
3
|
+
export { ConflictDetectionPass, DecayScoringPass, MemoGrafterCrawler, VersioningPass } from "./crawler/index.js";
|
|
3
4
|
export { ConductorAgent } from "./fleet/ConductorAgent.js";
|
|
4
5
|
export { MemoGrafterFleet } from "./fleet/MemoGrafterFleet.js";
|
|
5
6
|
export { WorkerAgent } from "./fleet/WorkerAgent.js";
|
|
@@ -12,5 +13,6 @@ export { RetrieverPipeline } from "./pipeline/RetrieverPipeline.js";
|
|
|
12
13
|
export { PostgresGraphStore } from "./store/index.js";
|
|
13
14
|
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
15
|
export type { ConductorGraftOptions, FleetAbsorbOptions, FleetAgentInfo, FleetGraph, FleetWorker, MemoGrafterFleetOptions, WorkerAgentConfig, } from "./fleet/types.js";
|
|
16
|
+
export type { CrawlerConfig, CrawlerMaintenanceStore, CrawlerPass, CrawlerPassContext, CrawlerPassReport, CrawlerPassResult, CrawlerReport, DecayScoringPassOptions, } from "./crawler/index.js";
|
|
15
17
|
export type { FleetAgentRecord, GraphStore } from "./store/index.js";
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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"}
|
|
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,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjH,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,EACV,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { MemoGrafterAgent } from "./MemoGrafterAgent.js";
|
|
2
2
|
export { MemoGrafter } from "./MemoGrafter.js";
|
|
3
|
+
export { ConflictDetectionPass, DecayScoringPass, MemoGrafterCrawler, VersioningPass } from "./crawler/index.js";
|
|
3
4
|
export { ConductorAgent } from "./fleet/ConductorAgent.js";
|
|
4
5
|
export { MemoGrafterFleet } from "./fleet/MemoGrafterFleet.js";
|
|
5
6
|
export { WorkerAgent } from "./fleet/WorkerAgent.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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"}
|
|
1
|
+
{"version":3,"file":"index.js","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,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjH,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrafterPipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/GrafterPipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"GrafterPipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/GrafterPipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAqC,MAAM,aAAa,CAAC;AAGtF,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,GAAG,OAAO,CAAC,eAAe,CAAC;YA4B5D,cAAc;CAsB7B"}
|
|
@@ -37,13 +37,54 @@ export class GrafterPipeline {
|
|
|
37
37
|
if (nodes.length === 0)
|
|
38
38
|
return "";
|
|
39
39
|
const blocks = [];
|
|
40
|
+
const sessionMemories = await this.store.getMemoriesBySession(sessionId);
|
|
41
|
+
const memoryEdges = await this.store.getMemoryEdgesBySession(sessionId);
|
|
40
42
|
for (const node of nodes) {
|
|
41
43
|
const start = Math.max(0, node.messageRange[0] - this.config.bufferSize);
|
|
42
44
|
const end = node.messageRange[1] + this.config.bufferSize;
|
|
43
45
|
const messages = await this.store.getBufferMessages(sessionId, start, end);
|
|
44
|
-
|
|
46
|
+
const topicMemories = sessionMemories.filter((memory) => memory.topicNodeId === node.id);
|
|
47
|
+
blocks.push(formatMemoryNode(node, messages, buildMaintenancePromptContext(topicMemories, sessionMemories, memoryEdges)));
|
|
45
48
|
}
|
|
46
49
|
return buildMemoryInjectionPrompt(blocks);
|
|
47
50
|
}
|
|
48
51
|
}
|
|
52
|
+
function buildMaintenancePromptContext(topicMemories, sessionMemories, memoryEdges) {
|
|
53
|
+
const notes = [];
|
|
54
|
+
const topicMemoryIds = new Set(topicMemories.map((memory) => memory.id));
|
|
55
|
+
const memoriesById = new Map(sessionMemories.map((memory) => [memory.id, memory]));
|
|
56
|
+
const hasMaintenanceEdge = memoryEdges.some((edge) => (edge.edgeType === "conflicts" || edge.edgeType === "updates")
|
|
57
|
+
&& (topicMemoryIds.has(edge.sourceId) || topicMemoryIds.has(edge.targetId)));
|
|
58
|
+
const hasConflict = topicMemories.some((memory) => memory.hasConflict);
|
|
59
|
+
const supersededMemories = topicMemories.filter((memory) => memory.supersededBy != null);
|
|
60
|
+
for (const memory of supersededMemories) {
|
|
61
|
+
const supersedingMemory = memory.supersededBy ? memoriesById.get(memory.supersededBy) : undefined;
|
|
62
|
+
if (supersedingMemory) {
|
|
63
|
+
notes.push(`The fact "${memory.subject} ${memory.predicate}: ${memory.value}" was superseded by "${supersedingMemory.value}".`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
notes.push(`The fact "${memory.subject} ${memory.predicate}: ${memory.value}" was superseded by a newer memory.`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (hasConflict || supersededMemories.length > 0 || hasMaintenanceEdge) {
|
|
70
|
+
notes.push("Prefer active memory facts over contradictory historical summary details.");
|
|
71
|
+
}
|
|
72
|
+
const activeMemoriesById = new Map();
|
|
73
|
+
for (const memory of topicMemories) {
|
|
74
|
+
if (!memory.decayed && memory.supersededBy == null) {
|
|
75
|
+
activeMemoriesById.set(memory.id, memory);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
for (const memory of supersededMemories) {
|
|
79
|
+
const supersedingMemory = memory.supersededBy ? memoriesById.get(memory.supersededBy) : undefined;
|
|
80
|
+
if (supersedingMemory && !supersedingMemory.decayed && supersedingMemory.supersededBy == null) {
|
|
81
|
+
activeMemoriesById.set(supersedingMemory.id, supersedingMemory);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const activeMemories = [...activeMemoriesById.values()];
|
|
85
|
+
return {
|
|
86
|
+
...(notes.length > 0 ? { notes } : {}),
|
|
87
|
+
...(notes.length > 0 && activeMemories.length > 0 ? { activeMemories } : {}),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
49
90
|
//# sourceMappingURL=GrafterPipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrafterPipeline.js","sourceRoot":"","sources":["../../src/pipeline/GrafterPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,eAAe;IAGhB;IAEA;IAJV;IACE,gBAAgB;IACR,KAAiB;IACzB,gBAAgB;IACR,MAIP;QANO,UAAK,GAAL,KAAK,CAAY;QAEjB,WAAM,GAAN,MAAM,CAIb;IACA,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,QAAkB;QAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChG,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;eAClC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;eACrC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC/B,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC/B,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEjD,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,WAAW,CAAC,GAAG,EAAE,CAAC;YAClB,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACjE,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO;YACL,YAAY;YACZ,KAAK,EAAE,WAAW;YAClB,UAAU;SACX,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,KAAkB;QAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,MAAM,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"GrafterPipeline.js","sourceRoot":"","sources":["../../src/pipeline/GrafterPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import type { Message, TopicNode } from "../types.js";
|
|
1
|
+
import type { MemoryNode, Message, TopicNode } from "../types.js";
|
|
2
2
|
export declare function buildMemoryInjectionPrompt(blocks: string[]): string;
|
|
3
|
-
export
|
|
3
|
+
export interface MemoryMaintenancePromptContext {
|
|
4
|
+
notes?: string[];
|
|
5
|
+
activeMemories?: MemoryNode[];
|
|
6
|
+
}
|
|
7
|
+
export declare function formatMemoryNode(node: TopicNode, messages: Message[], maintenance?: MemoryMaintenancePromptContext): string;
|
|
4
8
|
//# sourceMappingURL=memoryInjectionPrompt.d.ts.map
|
|
@@ -1 +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;
|
|
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,aAAa,CAAC;AAElE,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"}
|
|
@@ -7,10 +7,33 @@ export function buildMemoryInjectionPrompt(blocks) {
|
|
|
7
7
|
blocks.join("\n---\n"),
|
|
8
8
|
].join("\n");
|
|
9
9
|
}
|
|
10
|
-
export function formatMemoryNode(node, messages) {
|
|
10
|
+
export function formatMemoryNode(node, messages, maintenance = {}) {
|
|
11
11
|
const context = messages
|
|
12
12
|
.map((message) => `${message.role}: ${message.content}`)
|
|
13
13
|
.join("\n");
|
|
14
|
-
|
|
14
|
+
const maintenanceBlock = formatMaintenanceBlock(maintenance);
|
|
15
|
+
return [
|
|
16
|
+
`[Topic: ${node.label}]`,
|
|
17
|
+
`Summary: ${node.summary}`,
|
|
18
|
+
maintenanceBlock,
|
|
19
|
+
`Context:\n${context}`,
|
|
20
|
+
].filter(Boolean).join("\n");
|
|
21
|
+
}
|
|
22
|
+
function formatMaintenanceBlock(maintenance) {
|
|
23
|
+
const lines = [];
|
|
24
|
+
if (maintenance.notes && maintenance.notes.length > 0) {
|
|
25
|
+
lines.push("Memory maintenance notes:");
|
|
26
|
+
for (const note of maintenance.notes) {
|
|
27
|
+
lines.push(`- ${note}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const activeMemories = maintenance.activeMemories?.filter((memory) => !memory.decayed && memory.supersededBy == null) ?? [];
|
|
31
|
+
if (activeMemories.length > 0) {
|
|
32
|
+
lines.push("Active memory facts:");
|
|
33
|
+
for (const memory of activeMemories) {
|
|
34
|
+
lines.push(`- ${memory.subject} ${memory.predicate}: ${memory.value}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return lines.join("\n");
|
|
15
38
|
}
|
|
16
39
|
//# sourceMappingURL=memoryInjectionPrompt.js.map
|
|
@@ -1 +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;
|
|
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;AAOD,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,QAAmB,EACnB,cAA8C,EAAE;IAEhD,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;IACd,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAE7D,OAAO;QACL,WAAW,IAAI,CAAC,KAAK,GAAG;QACxB,YAAY,IAAI,CAAC,OAAO,EAAE;QAC1B,gBAAgB;QAChB,aAAa,OAAO,EAAE;KACvB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,WAA2C;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACnE,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAC/C,IAAI,EAAE,CAAC;IACR,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraftRegistryEntry, MemoryNode, MemoryNodeInsert, Message, SessionIngestState, TopicEdge, TopicNode, TopicSegment } from "../types.js";
|
|
1
|
+
import type { GraftRegistryEntry, MemoryEdge, MemoryNode, MemoryNodeInsert, Message, SessionIngestState, TopicEdge, TopicNode, TopicSegment } from "../types.js";
|
|
2
2
|
export interface FleetAgentRecord {
|
|
3
3
|
id: string;
|
|
4
4
|
fleetId: string;
|
|
@@ -20,6 +20,15 @@ export interface GraphStore {
|
|
|
20
20
|
getEdgesByType(sessionId: string, type: string): Promise<TopicEdge[]>;
|
|
21
21
|
getEdgesBySession(sessionId: string): Promise<TopicEdge[]>;
|
|
22
22
|
getMemoriesBySession(sessionId: string): Promise<MemoryNode[]>;
|
|
23
|
+
getMemoryEdgesBySession(sessionId: string): Promise<MemoryEdge[]>;
|
|
24
|
+
listMemoryNodesForMaintenance(): Promise<MemoryNode[]>;
|
|
25
|
+
markMemoryNodesConflicting(memoryNodeIds: string[]): Promise<number>;
|
|
26
|
+
markMemoryNodeSuperseded(memoryNodeId: string, supersededBy: string): Promise<boolean>;
|
|
27
|
+
markMemoryNodeDecayed(memoryNodeId: string): Promise<boolean>;
|
|
28
|
+
updateMemoryNodeConfidence(memoryNodeId: string, confidence: number): Promise<boolean>;
|
|
29
|
+
upsertMemoryEdge(edge: Pick<MemoryEdge, "sourceId" | "targetId" | "edgeType"> & {
|
|
30
|
+
weight?: number;
|
|
31
|
+
}): Promise<boolean>;
|
|
23
32
|
clearSession(sessionId: string): Promise<void>;
|
|
24
33
|
clearSessionGraph(sessionId: string): Promise<void>;
|
|
25
34
|
deleteNode(nodeId: string, sessionId?: string): Promise<void>;
|
|
@@ -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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"}
|