memo-grafter 0.1.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.
Files changed (89) hide show
  1. package/.env.example +3 -0
  2. package/LICENSE +21 -0
  3. package/README.md +182 -0
  4. package/USER_GUIDE.md +702 -0
  5. package/dist/MemoGrafter.d.ts +29 -0
  6. package/dist/MemoGrafter.d.ts.map +1 -0
  7. package/dist/MemoGrafter.js +106 -0
  8. package/dist/MemoGrafter.js.map +1 -0
  9. package/dist/MemoGrafterAgent.d.ts +18 -0
  10. package/dist/MemoGrafterAgent.d.ts.map +1 -0
  11. package/dist/MemoGrafterAgent.js +55 -0
  12. package/dist/MemoGrafterAgent.js.map +1 -0
  13. package/dist/adapters/OpenAIAdapter.d.ts +14 -0
  14. package/dist/adapters/OpenAIAdapter.d.ts.map +1 -0
  15. package/dist/adapters/OpenAIAdapter.js +37 -0
  16. package/dist/adapters/OpenAIAdapter.js.map +1 -0
  17. package/dist/adapters/types.d.ts +2 -0
  18. package/dist/adapters/types.d.ts.map +1 -0
  19. package/dist/adapters/types.js +2 -0
  20. package/dist/adapters/types.js.map +1 -0
  21. package/dist/fleet/ConductorAgent.d.ts +15 -0
  22. package/dist/fleet/ConductorAgent.d.ts.map +1 -0
  23. package/dist/fleet/ConductorAgent.js +41 -0
  24. package/dist/fleet/ConductorAgent.js.map +1 -0
  25. package/dist/fleet/FleetStore.d.ts +12 -0
  26. package/dist/fleet/FleetStore.d.ts.map +1 -0
  27. package/dist/fleet/FleetStore.js +30 -0
  28. package/dist/fleet/FleetStore.js.map +1 -0
  29. package/dist/fleet/MemoGrafterFleet.d.ts +20 -0
  30. package/dist/fleet/MemoGrafterFleet.d.ts.map +1 -0
  31. package/dist/fleet/MemoGrafterFleet.js +49 -0
  32. package/dist/fleet/MemoGrafterFleet.js.map +1 -0
  33. package/dist/fleet/WorkerAgent.d.ts +30 -0
  34. package/dist/fleet/WorkerAgent.d.ts.map +1 -0
  35. package/dist/fleet/WorkerAgent.js +95 -0
  36. package/dist/fleet/WorkerAgent.js.map +1 -0
  37. package/dist/fleet/types.d.ts +38 -0
  38. package/dist/fleet/types.d.ts.map +1 -0
  39. package/dist/fleet/types.js +2 -0
  40. package/dist/fleet/types.js.map +1 -0
  41. package/dist/index.d.ts +9 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +7 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/pipeline/GrafterPipeline.d.ts +16 -0
  46. package/dist/pipeline/GrafterPipeline.d.ts.map +1 -0
  47. package/dist/pipeline/GrafterPipeline.js +58 -0
  48. package/dist/pipeline/GrafterPipeline.js.map +1 -0
  49. package/dist/pipeline/IngestPipeline.d.ts +19 -0
  50. package/dist/pipeline/IngestPipeline.d.ts.map +1 -0
  51. package/dist/pipeline/IngestPipeline.js +44 -0
  52. package/dist/pipeline/IngestPipeline.js.map +1 -0
  53. package/dist/pipeline/SegmentProcessor.d.ts +19 -0
  54. package/dist/pipeline/SegmentProcessor.d.ts.map +1 -0
  55. package/dist/pipeline/SegmentProcessor.js +92 -0
  56. package/dist/pipeline/SegmentProcessor.js.map +1 -0
  57. package/dist/pipeline/TopicDriftDetector.d.ts +22 -0
  58. package/dist/pipeline/TopicDriftDetector.d.ts.map +1 -0
  59. package/dist/pipeline/TopicDriftDetector.js +96 -0
  60. package/dist/pipeline/TopicDriftDetector.js.map +1 -0
  61. package/dist/queue/IngestQueue.d.ts +16 -0
  62. package/dist/queue/IngestQueue.d.ts.map +1 -0
  63. package/dist/queue/IngestQueue.js +103 -0
  64. package/dist/queue/IngestQueue.js.map +1 -0
  65. package/dist/store/GraphStore.d.ts +71 -0
  66. package/dist/store/GraphStore.d.ts.map +1 -0
  67. package/dist/store/GraphStore.js +577 -0
  68. package/dist/store/GraphStore.js.map +1 -0
  69. package/dist/types.d.ts +84 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +2 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/utils/drift/cosineSimilarity.d.ts +2 -0
  74. package/dist/utils/drift/cosineSimilarity.d.ts.map +1 -0
  75. package/dist/utils/drift/cosineSimilarity.js +12 -0
  76. package/dist/utils/drift/cosineSimilarity.js.map +1 -0
  77. package/dist/utils/drift/vectorAvg.d.ts +2 -0
  78. package/dist/utils/drift/vectorAvg.d.ts.map +1 -0
  79. package/dist/utils/drift/vectorAvg.js +11 -0
  80. package/dist/utils/drift/vectorAvg.js.map +1 -0
  81. package/dist/utils/normalizeText.d.ts +2 -0
  82. package/dist/utils/normalizeText.d.ts.map +1 -0
  83. package/dist/utils/normalizeText.js +14 -0
  84. package/dist/utils/normalizeText.js.map +1 -0
  85. package/dist/utils/vectorLiteral.d.ts +3 -0
  86. package/dist/utils/vectorLiteral.d.ts.map +1 -0
  87. package/dist/utils/vectorLiteral.js +18 -0
  88. package/dist/utils/vectorLiteral.js.map +1 -0
  89. package/package.json +55 -0
@@ -0,0 +1,84 @@
1
+ export interface Message {
2
+ role: "user" | "assistant";
3
+ content: string;
4
+ }
5
+ export type DriftMode = "window" | "intent";
6
+ export interface TopicNode {
7
+ id: string;
8
+ sessionId: string;
9
+ segmentId: string;
10
+ label: string;
11
+ summary: string;
12
+ embedding: number[];
13
+ messageRange: [number, number];
14
+ topicOrder: number;
15
+ driftScore: number;
16
+ agentColor: string | null;
17
+ fleetId: string | null;
18
+ agentId: string | null;
19
+ createdAt: Date;
20
+ }
21
+ export interface TopicEdge {
22
+ srcId: string;
23
+ dstId: string;
24
+ weight: number;
25
+ type: string;
26
+ }
27
+ export interface TopicSegment {
28
+ id: string;
29
+ sessionId: string;
30
+ startIndex: number;
31
+ endIndex: number;
32
+ topicOrder: number;
33
+ driftScore: number;
34
+ createdAt: Date;
35
+ }
36
+ export interface InjectionResult {
37
+ systemPrompt: string;
38
+ nodes: TopicNode[];
39
+ tokenCount: number;
40
+ }
41
+ export interface AbsorbFromAgentOptions {
42
+ topicIds?: string[];
43
+ prompt?: string;
44
+ minSimilarity?: number;
45
+ limit?: number;
46
+ }
47
+ export interface LLMAdapter {
48
+ complete(messages: Message[], system?: string): Promise<string>;
49
+ }
50
+ export interface EmbedAdapter {
51
+ embed(text: string): Promise<number[]>;
52
+ }
53
+ export interface MemoGrafterDriftConfig {
54
+ mode?: DriftMode;
55
+ windowSize?: number;
56
+ threshold?: number;
57
+ minSegmentMessages?: number;
58
+ }
59
+ export interface MemoGrafterGraphConfig {
60
+ topK?: number;
61
+ hopDepth?: number;
62
+ }
63
+ export interface MemoGrafterInjectConfig {
64
+ bufferSize?: number;
65
+ tokenBudget?: number;
66
+ }
67
+ export interface MemoGrafterQueueConfig {
68
+ redisUrl: string;
69
+ queueName?: string;
70
+ removeOnComplete?: boolean | number;
71
+ removeOnFail?: boolean | number;
72
+ }
73
+ export interface MemoGrafterConfig {
74
+ db: {
75
+ connectionString: string;
76
+ };
77
+ llm: LLMAdapter;
78
+ embedder: EmbedAdapter;
79
+ drift?: MemoGrafterDriftConfig;
80
+ graph?: MemoGrafterGraphConfig;
81
+ inject?: MemoGrafterInjectConfig;
82
+ queue?: MemoGrafterQueueConfig;
83
+ }
84
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const cosineSimilarity: (vectorA: number[], vectorB: number[]) => number;
2
+ //# sourceMappingURL=cosineSimilarity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosineSimilarity.d.ts","sourceRoot":"","sources":["../../../src/utils/drift/cosineSimilarity.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EAAE,KAAG,MAYvE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export const cosineSimilarity = (vectorA, vectorB) => {
2
+ let dot = 0;
3
+ let normA = 0;
4
+ let normB = 0;
5
+ for (let i = 0; i < vectorA.length; i += 1) {
6
+ dot += vectorA[i] * vectorB[i];
7
+ normA += vectorA[i] * vectorA[i];
8
+ normB += vectorB[i] * vectorB[i];
9
+ }
10
+ return dot / (Math.sqrt(normA) * Math.sqrt(normB));
11
+ };
12
+ //# sourceMappingURL=cosineSimilarity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosineSimilarity.js","sourceRoot":"","sources":["../../../src/utils/drift/cosineSimilarity.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAiB,EAAE,OAAiB,EAAU,EAAE;IAC/E,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,GAAG,IAAI,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACnC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IACrC,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const avg: (vector: number[][]) => number[];
2
+ //# sourceMappingURL=vectorAvg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorAvg.d.ts","sourceRoot":"","sources":["../../../src/utils/drift/vectorAvg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,EAAE,KAAG,MAAM,EAW9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export const avg = (vector) => {
2
+ const len = vector[0].length;
3
+ const result = new Array(len).fill(0);
4
+ for (const vec of vector) {
5
+ for (let i = 0; i < vec.length; i += 1) {
6
+ result[i] = (result[i] ?? 0) + vec[i];
7
+ }
8
+ }
9
+ return result.map((v) => v / vector.length);
10
+ };
11
+ //# sourceMappingURL=vectorAvg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorAvg.js","sourceRoot":"","sources":["../../../src/utils/drift/vectorAvg.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAkB,EAAY,EAAE;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const normalizeText: (text: string) => string | null;
2
+ //# sourceMappingURL=normalizeText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeText.d.ts","sourceRoot":"","sources":["../../src/utils/normalizeText.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAarD,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const normalizeText = (text) => {
2
+ if (!text)
3
+ return "";
4
+ let content = text.trim();
5
+ content = content.replace(/\n+/g, " ");
6
+ content = content.replace(/\s+/g, " ");
7
+ if (content.length < 3)
8
+ return null;
9
+ const junk = ["ok", "yes", "no", ".", "..."];
10
+ if (junk.includes(content.toLowerCase()))
11
+ return null;
12
+ return content;
13
+ };
14
+ //# sourceMappingURL=normalizeText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeText.js","sourceRoot":"","sources":["../../src/utils/normalizeText.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAiB,EAAE;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const toVectorLiteral: (embedding: number[]) => string;
2
+ export declare const parseVector: (value: string | number[] | null) => number[];
3
+ //# sourceMappingURL=vectorLiteral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorLiteral.d.ts","sourceRoot":"","sources":["../../src/utils/vectorLiteral.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,EAAE,KAAG,MAMrD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAG,MAAM,EASnE,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const toVectorLiteral = (embedding) => {
2
+ if (!embedding.every((value) => Number.isFinite(value))) {
3
+ throw new Error("Embedding must contain only finite numbers.");
4
+ }
5
+ return `[${embedding.join(",")}]`;
6
+ };
7
+ export const parseVector = (value) => {
8
+ if (!value)
9
+ return [];
10
+ if (Array.isArray(value))
11
+ return value;
12
+ return value
13
+ .replace(/^\[|\]$/g, "")
14
+ .split(",")
15
+ .filter(Boolean)
16
+ .map(Number);
17
+ };
18
+ //# sourceMappingURL=vectorLiteral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorLiteral.js","sourceRoot":"","sources":["../../src/utils/vectorLiteral.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAmB,EAAU,EAAE;IAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAA+B,EAAY,EAAE;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,OAAO,KAAK;SACT,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "memo-grafter",
3
+ "version": "0.1.0",
4
+ "description": "Structured conversational memory for LLM chatbot applications",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ ".env.example",
17
+ "README.md",
18
+ "USER_GUIDE.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc -b",
23
+ "prepublishOnly": "npm run build",
24
+ "test": "npm run test:core && npm run test:fleet",
25
+ "test:core": "tsx --env-file=.env tests/core/run.ts",
26
+ "test:fleet": "tsx --env-file=.env tests/fleet/run.ts"
27
+ },
28
+ "keywords": ["llm", "memory", "chatbot", "rag", "knowledge-graph", "langchain", "openai"],
29
+ "author": "Sarthak Chaturvedi <sarthakchat2018@gmail.com>",
30
+ "license": "MIT",
31
+ "type": "module",
32
+ "engines": {
33
+ "node": ">=18.0.0"
34
+ },
35
+ "dependencies": {
36
+ "bullmq": "^5.0.0",
37
+ "ioredis": "^5.0.0",
38
+ "postgres": "^3.4.9"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^25.6.0",
42
+ "dotenv": "^17.4.2",
43
+ "openai": "^4.0.0",
44
+ "tsx": "^4.0.0",
45
+ "typescript": "^6.0.2"
46
+ },
47
+ "peerDependencies": {
48
+ "openai": "^4.0.0"
49
+ },
50
+ "peerDependenciesMeta": {
51
+ "openai": {
52
+ "optional": true
53
+ }
54
+ }
55
+ }