@agents-eco/agentic-memory 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.
package/dist/stm.js ADDED
@@ -0,0 +1,124 @@
1
+ import { randomUUID } from "node:crypto";
2
+ const DEFAULT_STM_CONFIG = {
3
+ capacity: 20,
4
+ ttlMs: 30 * 60 * 1000, // 30 minutes
5
+ };
6
+ /**
7
+ * Short-Term Memory (STM) — the agent's working context.
8
+ *
9
+ * Holds recent, high-relevance items in a bounded buffer.
10
+ * Items decay and get evicted based on TTL and capacity.
11
+ * Important items are promoted to LTM during consolidation.
12
+ */
13
+ export class ShortTermMemory {
14
+ entries = [];
15
+ config;
16
+ constructor(config) {
17
+ this.config = { ...DEFAULT_STM_CONFIG, ...config };
18
+ }
19
+ /** Add an entry to STM */
20
+ add(content, type = "episodic", importance = 0.5, metadata = {}) {
21
+ const entry = {
22
+ id: randomUUID(),
23
+ content,
24
+ type,
25
+ importance: Math.max(0, Math.min(1, importance)),
26
+ createdAt: new Date().toISOString(),
27
+ metadata,
28
+ };
29
+ this.entries.push(entry);
30
+ // Evict oldest low-importance items if over capacity
31
+ if (this.entries.length > this.config.capacity) {
32
+ this.evict();
33
+ }
34
+ return entry;
35
+ }
36
+ /** Get all current STM entries */
37
+ getAll() {
38
+ this.pruneExpired();
39
+ return [...this.entries];
40
+ }
41
+ /** Get entries above an importance threshold */
42
+ getImportant(minImportance = 0.6) {
43
+ this.pruneExpired();
44
+ return this.entries.filter((e) => e.importance >= minImportance);
45
+ }
46
+ /** Get the most recent N entries */
47
+ getRecent(n = 5) {
48
+ this.pruneExpired();
49
+ return this.entries.slice(-n);
50
+ }
51
+ /** Search STM by keyword */
52
+ search(query, limit = 5) {
53
+ this.pruneExpired();
54
+ const words = query.toLowerCase().split(/\s+/).filter((w) => w.length > 2);
55
+ if (words.length === 0)
56
+ return this.entries.slice(-limit);
57
+ return this.entries
58
+ .map((entry) => {
59
+ const text = entry.content.toLowerCase();
60
+ let score = 0;
61
+ for (const word of words) {
62
+ if (text.includes(word))
63
+ score++;
64
+ }
65
+ return { entry, score };
66
+ })
67
+ .filter((r) => r.score > 0)
68
+ .sort((a, b) => b.score - a.score)
69
+ .slice(0, limit)
70
+ .map((r) => r.entry);
71
+ }
72
+ /** Get entries ready for consolidation to LTM (important + accessed enough) */
73
+ getConsolidationCandidates(minImportance = 0.4) {
74
+ return this.entries.filter((e) => e.importance >= minImportance);
75
+ }
76
+ /** Remove specific entries (after consolidation to LTM) */
77
+ remove(ids) {
78
+ this.entries = this.entries.filter((e) => !ids.has(e.id));
79
+ }
80
+ /** Clear all STM entries */
81
+ clear() {
82
+ this.entries = [];
83
+ }
84
+ /** Get current size */
85
+ size() {
86
+ this.pruneExpired();
87
+ return this.entries.length;
88
+ }
89
+ /** Build a context string from STM for injection into prompts */
90
+ buildContext() {
91
+ this.pruneExpired();
92
+ if (this.entries.length === 0)
93
+ return "";
94
+ const lines = this.entries.map((e) => `- [${e.type}] ${e.content}`);
95
+ return `Recent context:\n${lines.join("\n")}`;
96
+ }
97
+ /** Serialize STM for persistence */
98
+ serialize() {
99
+ return [...this.entries];
100
+ }
101
+ /** Load STM from serialized data */
102
+ load(entries) {
103
+ this.entries = [...entries];
104
+ this.pruneExpired();
105
+ }
106
+ // ── Private ─────────────────────────────────────────
107
+ pruneExpired() {
108
+ const cutoff = Date.now() - this.config.ttlMs;
109
+ this.entries = this.entries.filter((e) => new Date(e.createdAt).getTime() > cutoff);
110
+ }
111
+ evict() {
112
+ // Sort by importance (ascending) then by age (oldest first)
113
+ const sorted = [...this.entries].sort((a, b) => {
114
+ if (a.importance !== b.importance)
115
+ return a.importance - b.importance;
116
+ return new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime();
117
+ });
118
+ // Remove lowest importance items until at capacity
119
+ const toRemove = sorted.slice(0, this.entries.length - this.config.capacity);
120
+ const removeIds = new Set(toRemove.map((e) => e.id));
121
+ this.entries = this.entries.filter((e) => !removeIds.has(e.id));
122
+ }
123
+ }
124
+ //# sourceMappingURL=stm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stm.js","sourceRoot":"","sources":["../src/stm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { StorageBackend, SerializedGraph } from "../types.js";
2
+ /**
3
+ * Local file-based storage backend.
4
+ * Stores the memory graph as a JSON file on disk.
5
+ * Human-readable and version-controllable.
6
+ */
7
+ export declare class LocalStorage implements StorageBackend {
8
+ readonly name = "local";
9
+ private dir;
10
+ private filePath;
11
+ constructor(dir?: string, namespace?: string);
12
+ save(graph: SerializedGraph): Promise<void>;
13
+ load(): Promise<SerializedGraph | null>;
14
+ exists(): Promise<boolean>;
15
+ }
16
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,YAAa,YAAW,cAAc;IACjD,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;gBAEb,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAMtC,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAWvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
@@ -0,0 +1,39 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ /**
4
+ * Local file-based storage backend.
5
+ * Stores the memory graph as a JSON file on disk.
6
+ * Human-readable and version-controllable.
7
+ */
8
+ export class LocalStorage {
9
+ name = "local";
10
+ dir;
11
+ filePath;
12
+ constructor(dir, namespace) {
13
+ this.dir = resolve(dir ?? "./.agent/memory");
14
+ const filename = namespace ? `graph-${namespace}.json` : "graph.json";
15
+ this.filePath = join(this.dir, filename);
16
+ }
17
+ async save(graph) {
18
+ if (!existsSync(this.dir)) {
19
+ mkdirSync(this.dir, { recursive: true });
20
+ }
21
+ const json = JSON.stringify(graph, null, 2);
22
+ writeFileSync(this.filePath, json, "utf-8");
23
+ }
24
+ async load() {
25
+ if (!existsSync(this.filePath))
26
+ return null;
27
+ try {
28
+ const raw = readFileSync(this.filePath, "utf-8");
29
+ return JSON.parse(raw);
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ async exists() {
36
+ return existsSync(this.filePath);
37
+ }
38
+ }
39
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,OAAO,CAAC;IAChB,GAAG,CAAS;IACZ,QAAQ,CAAS;IAEzB,YAAY,GAAY,EAAE,SAAkB;QAC1C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,iBAAiB,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAsB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,140 @@
1
+ export interface MemoryNode {
2
+ id: string;
3
+ /** Content of the memory */
4
+ content: string;
5
+ /** Node type */
6
+ type: MemoryNodeType;
7
+ /** Embedding vector (populated by Voyage or local) */
8
+ embedding?: number[];
9
+ /** Importance score (0-1), affects decay and retrieval priority */
10
+ importance: number;
11
+ /** Access count — reinforced on each retrieval */
12
+ accessCount: number;
13
+ /** Last accessed timestamp */
14
+ lastAccessed: string;
15
+ /** Created timestamp */
16
+ createdAt: string;
17
+ /** Arbitrary metadata */
18
+ metadata: Record<string, unknown>;
19
+ }
20
+ export type MemoryNodeType = "episodic" | "semantic" | "procedural" | "emotional" | "entity" | "goal" | "observation";
21
+ export interface MemoryEdge {
22
+ id: string;
23
+ /** Source node ID */
24
+ source: string;
25
+ /** Target node ID */
26
+ target: string;
27
+ /** Relationship type */
28
+ relation: MemoryRelation;
29
+ /** Edge weight (0-1), affects traversal priority */
30
+ weight: number;
31
+ /** Created timestamp */
32
+ createdAt: string;
33
+ /** Arbitrary metadata */
34
+ metadata: Record<string, unknown>;
35
+ }
36
+ export type MemoryRelation = "related_to" | "caused_by" | "leads_to" | "part_of" | "contradicts" | "reinforces" | "derived_from" | "similar_to" | "mentioned_in" | "precedes" | "follows";
37
+ export interface MemoryGraph {
38
+ nodes: Map<string, MemoryNode>;
39
+ edges: Map<string, MemoryEdge>;
40
+ }
41
+ export interface STMConfig {
42
+ /** Max number of items in STM (default: 20) */
43
+ capacity: number;
44
+ /** TTL in milliseconds before items decay from STM (default: 30 min) */
45
+ ttlMs: number;
46
+ }
47
+ export interface STMEntry {
48
+ id: string;
49
+ content: string;
50
+ type: MemoryNodeType;
51
+ importance: number;
52
+ createdAt: string;
53
+ metadata: Record<string, unknown>;
54
+ }
55
+ export interface LTMConfig {
56
+ /** Decay rate per hour for unreinforced memories (default: 0.01) */
57
+ decayRate: number;
58
+ /** Minimum importance to keep in LTM (default: 0.1) */
59
+ minImportance: number;
60
+ /** Max nodes in the graph (default: 10000) */
61
+ maxNodes: number;
62
+ }
63
+ export interface EmbeddingBackend {
64
+ /** Backend name */
65
+ name: string;
66
+ /** Generate embedding for a single text */
67
+ embed(text: string): Promise<number[]>;
68
+ /** Generate embeddings for multiple texts (batch) */
69
+ embedBatch(texts: string[]): Promise<number[][]>;
70
+ /** Embedding dimension */
71
+ dimension: number;
72
+ }
73
+ export interface StorageBackend {
74
+ /** Backend name */
75
+ name: string;
76
+ /** Save the full graph state */
77
+ save(graph: SerializedGraph): Promise<void>;
78
+ /** Load the full graph state */
79
+ load(): Promise<SerializedGraph | null>;
80
+ /** Check if storage has existing data */
81
+ exists(): Promise<boolean>;
82
+ }
83
+ export interface SerializedGraph {
84
+ nodes: SerializedNode[];
85
+ edges: SerializedEdge[];
86
+ stm: STMEntry[];
87
+ metadata: {
88
+ version: string;
89
+ savedAt: string;
90
+ nodeCount: number;
91
+ edgeCount: number;
92
+ };
93
+ }
94
+ export interface SerializedNode extends MemoryNode {
95
+ }
96
+ export interface SerializedEdge extends MemoryEdge {
97
+ }
98
+ export interface SearchResult {
99
+ node: MemoryNode;
100
+ score: number;
101
+ /** How the result was found */
102
+ method: "vector" | "keyword" | "graph" | "recency" | "hybrid";
103
+ /** Related nodes found via graph traversal */
104
+ related?: MemoryNode[];
105
+ }
106
+ export interface SearchOptions {
107
+ /** Max results to return (default: 5) */
108
+ limit?: number;
109
+ /** Filter by node type */
110
+ types?: MemoryNodeType[];
111
+ /** Minimum score threshold (0-1) */
112
+ minScore?: number;
113
+ /** Include graph neighbors in results */
114
+ includeRelated?: boolean;
115
+ /** Max graph traversal depth for related nodes */
116
+ traversalDepth?: number;
117
+ /** Search method preference */
118
+ method?: "vector" | "keyword" | "hybrid";
119
+ }
120
+ export interface AgenticMemoryConfig {
121
+ /** Embedding backend: "local" or "voyage" */
122
+ backend: "local" | "voyage";
123
+ /** Voyage API key (required if backend is "voyage") */
124
+ voyageApiKey?: string;
125
+ /** Voyage model (default: "voyage-3-lite") */
126
+ voyageModel?: string;
127
+ /** Storage directory for local persistence */
128
+ storageDir?: string;
129
+ /** Custom storage backend */
130
+ storage?: StorageBackend;
131
+ /** Custom embedding backend */
132
+ embedding?: EmbeddingBackend;
133
+ /** STM configuration */
134
+ stm?: Partial<STMConfig>;
135
+ /** LTM configuration */
136
+ ltm?: Partial<LTMConfig>;
137
+ /** Namespace for isolating memory graphs */
138
+ namespace?: string;
139
+ }
140
+ //# 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,3 @@
1
+ // ── Graph Primitives ────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2DAA2D"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@agents-eco/agentic-memory",
3
+ "version": "0.1.0",
4
+ "description": "Graph-based agent memory — short-term and long-term memory with local or Voyage AI backends. Built for agents.eco.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "clean": "rm -rf dist",
23
+ "dev": "tsc --watch"
24
+ },
25
+ "keywords": [
26
+ "agents",
27
+ "ai",
28
+ "memory",
29
+ "graph",
30
+ "stm",
31
+ "ltm",
32
+ "short-term-memory",
33
+ "long-term-memory",
34
+ "voyage",
35
+ "embeddings",
36
+ "agents-eco",
37
+ "agentic"
38
+ ],
39
+ "license": "MIT",
40
+ "author": "agents.eco",
41
+ "homepage": "https://agents.eco",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/agents-eco/agentic-memory"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "dependencies": {},
50
+ "devDependencies": {
51
+ "@types/node": "^20.11.0",
52
+ "typescript": "^5.3.3"
53
+ }
54
+ }