engram-sdk 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 (69) hide show
  1. package/CONTRIBUTING.md +65 -0
  2. package/Dockerfile +21 -0
  3. package/EVAL-FRAMEWORK.md +70 -0
  4. package/EVAL.md +127 -0
  5. package/LICENSE +17 -0
  6. package/README.md +309 -0
  7. package/ROADMAP.md +113 -0
  8. package/deploy/fly.toml +26 -0
  9. package/dist/auto-ingest.d.ts +3 -0
  10. package/dist/auto-ingest.d.ts.map +1 -0
  11. package/dist/auto-ingest.js +334 -0
  12. package/dist/auto-ingest.js.map +1 -0
  13. package/dist/brief.d.ts +45 -0
  14. package/dist/brief.d.ts.map +1 -0
  15. package/dist/brief.js +183 -0
  16. package/dist/brief.js.map +1 -0
  17. package/dist/claude-watcher.d.ts +3 -0
  18. package/dist/claude-watcher.d.ts.map +1 -0
  19. package/dist/claude-watcher.js +385 -0
  20. package/dist/claude-watcher.js.map +1 -0
  21. package/dist/cli.d.ts +3 -0
  22. package/dist/cli.d.ts.map +1 -0
  23. package/dist/cli.js +764 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/embeddings.d.ts +42 -0
  26. package/dist/embeddings.d.ts.map +1 -0
  27. package/dist/embeddings.js +145 -0
  28. package/dist/embeddings.js.map +1 -0
  29. package/dist/eval.d.ts +2 -0
  30. package/dist/eval.d.ts.map +1 -0
  31. package/dist/eval.js +281 -0
  32. package/dist/eval.js.map +1 -0
  33. package/dist/extract.d.ts +11 -0
  34. package/dist/extract.d.ts.map +1 -0
  35. package/dist/extract.js +139 -0
  36. package/dist/extract.js.map +1 -0
  37. package/dist/hosted.d.ts +3 -0
  38. package/dist/hosted.d.ts.map +1 -0
  39. package/dist/hosted.js +144 -0
  40. package/dist/hosted.js.map +1 -0
  41. package/dist/index.d.ts +11 -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/ingest.d.ts +28 -0
  46. package/dist/ingest.d.ts.map +1 -0
  47. package/dist/ingest.js +192 -0
  48. package/dist/ingest.js.map +1 -0
  49. package/dist/mcp.d.ts +3 -0
  50. package/dist/mcp.d.ts.map +1 -0
  51. package/dist/mcp.js +349 -0
  52. package/dist/mcp.js.map +1 -0
  53. package/dist/server.d.ts +17 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/server.js +515 -0
  56. package/dist/server.js.map +1 -0
  57. package/dist/store.d.ts +87 -0
  58. package/dist/store.d.ts.map +1 -0
  59. package/dist/store.js +548 -0
  60. package/dist/store.js.map +1 -0
  61. package/dist/types.d.ts +204 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +77 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/vault.d.ts +116 -0
  66. package/dist/vault.d.ts.map +1 -0
  67. package/dist/vault.js +1234 -0
  68. package/dist/vault.js.map +1 -0
  69. package/package.json +61 -0
@@ -0,0 +1,204 @@
1
+ import { z } from 'zod';
2
+ export declare const MemoryType: z.ZodEnum<["episodic", "semantic", "procedural"]>;
3
+ export type MemoryType = z.infer<typeof MemoryType>;
4
+ export declare const SourceType: z.ZodEnum<["conversation", "observation", "inference", "consolidation", "external", "manual"]>;
5
+ export type SourceType = z.infer<typeof SourceType>;
6
+ export declare const EdgeType: z.ZodEnum<["supports", "contradicts", "elaborates", "supersedes", "causes", "caused_by", "part_of", "instance_of", "associated_with", "temporal_next", "derived_from"]>;
7
+ export type EdgeType = z.infer<typeof EdgeType>;
8
+ export declare const MemoryStatus: z.ZodEnum<["active", "pending", "fulfilled", "superseded", "archived"]>;
9
+ export type MemoryStatus = z.infer<typeof MemoryStatus>;
10
+ export declare const Visibility: z.ZodEnum<["private", "owner_agents", "shared", "public"]>;
11
+ export type Visibility = z.infer<typeof Visibility>;
12
+ export interface Memory {
13
+ id: string;
14
+ type: MemoryType;
15
+ content: string;
16
+ summary: string;
17
+ source: {
18
+ type: SourceType;
19
+ sessionId?: string;
20
+ agentId?: string;
21
+ evidence?: string[];
22
+ timestamp: string;
23
+ };
24
+ createdAt: string;
25
+ lastAccessedAt: string;
26
+ lastModifiedAt: string;
27
+ accessCount: number;
28
+ expiresAt?: string;
29
+ salience: number;
30
+ confidence: number;
31
+ stability: number;
32
+ entities: string[];
33
+ topics: string[];
34
+ status: MemoryStatus;
35
+ visibility: Visibility;
36
+ embedding?: number[];
37
+ }
38
+ export interface Edge {
39
+ id: string;
40
+ sourceId: string;
41
+ targetId: string;
42
+ type: EdgeType;
43
+ strength: number;
44
+ createdAt: string;
45
+ }
46
+ export interface Entity {
47
+ id: string;
48
+ name: string;
49
+ type: string;
50
+ aliases: string[];
51
+ properties: Record<string, unknown>;
52
+ firstSeen: string;
53
+ lastSeen: string;
54
+ memoryCount: number;
55
+ importance: number;
56
+ }
57
+ export declare const RememberInputSchema: z.ZodObject<{
58
+ content: z.ZodString;
59
+ type: z.ZodDefault<z.ZodEnum<["episodic", "semantic", "procedural"]>>;
60
+ summary: z.ZodOptional<z.ZodString>;
61
+ entities: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
62
+ topics: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
63
+ salience: z.ZodDefault<z.ZodNumber>;
64
+ confidence: z.ZodDefault<z.ZodNumber>;
65
+ status: z.ZodDefault<z.ZodEnum<["active", "pending", "fulfilled", "superseded", "archived"]>>;
66
+ visibility: z.ZodDefault<z.ZodEnum<["private", "owner_agents", "shared", "public"]>>;
67
+ source: z.ZodOptional<z.ZodObject<{
68
+ type: z.ZodDefault<z.ZodEnum<["conversation", "observation", "inference", "consolidation", "external", "manual"]>>;
69
+ sessionId: z.ZodOptional<z.ZodString>;
70
+ agentId: z.ZodOptional<z.ZodString>;
71
+ evidence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ type: "conversation" | "observation" | "inference" | "consolidation" | "external" | "manual";
74
+ sessionId?: string | undefined;
75
+ agentId?: string | undefined;
76
+ evidence?: string[] | undefined;
77
+ }, {
78
+ sessionId?: string | undefined;
79
+ type?: "conversation" | "observation" | "inference" | "consolidation" | "external" | "manual" | undefined;
80
+ agentId?: string | undefined;
81
+ evidence?: string[] | undefined;
82
+ }>>;
83
+ expiresAt: z.ZodOptional<z.ZodString>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ type: "episodic" | "semantic" | "procedural";
86
+ status: "active" | "pending" | "fulfilled" | "superseded" | "archived";
87
+ content: string;
88
+ entities: string[];
89
+ topics: string[];
90
+ salience: number;
91
+ confidence: number;
92
+ visibility: "private" | "owner_agents" | "shared" | "public";
93
+ summary?: string | undefined;
94
+ source?: {
95
+ type: "conversation" | "observation" | "inference" | "consolidation" | "external" | "manual";
96
+ sessionId?: string | undefined;
97
+ agentId?: string | undefined;
98
+ evidence?: string[] | undefined;
99
+ } | undefined;
100
+ expiresAt?: string | undefined;
101
+ }, {
102
+ content: string;
103
+ type?: "episodic" | "semantic" | "procedural" | undefined;
104
+ status?: "active" | "pending" | "fulfilled" | "superseded" | "archived" | undefined;
105
+ summary?: string | undefined;
106
+ entities?: string[] | undefined;
107
+ topics?: string[] | undefined;
108
+ salience?: number | undefined;
109
+ confidence?: number | undefined;
110
+ visibility?: "private" | "owner_agents" | "shared" | "public" | undefined;
111
+ source?: {
112
+ sessionId?: string | undefined;
113
+ type?: "conversation" | "observation" | "inference" | "consolidation" | "external" | "manual" | undefined;
114
+ agentId?: string | undefined;
115
+ evidence?: string[] | undefined;
116
+ } | undefined;
117
+ expiresAt?: string | undefined;
118
+ }>;
119
+ export type RememberInput = z.input<typeof RememberInputSchema>;
120
+ export type RememberParsed = z.output<typeof RememberInputSchema>;
121
+ export declare const RecallInputSchema: z.ZodObject<{
122
+ context: z.ZodString;
123
+ entities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
124
+ topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
125
+ types: z.ZodOptional<z.ZodArray<z.ZodEnum<["episodic", "semantic", "procedural"]>, "many">>;
126
+ temporalFocus: z.ZodDefault<z.ZodEnum<["recent", "upcoming", "all"]>>;
127
+ minSalience: z.ZodDefault<z.ZodNumber>;
128
+ minConfidence: z.ZodDefault<z.ZodNumber>;
129
+ limit: z.ZodDefault<z.ZodNumber>;
130
+ spread: z.ZodDefault<z.ZodBoolean>;
131
+ spreadHops: z.ZodDefault<z.ZodNumber>;
132
+ spreadDecay: z.ZodDefault<z.ZodNumber>;
133
+ spreadMinActivation: z.ZodDefault<z.ZodNumber>;
134
+ spreadEntityHops: z.ZodDefault<z.ZodBoolean>;
135
+ }, "strip", z.ZodTypeAny, {
136
+ context: string;
137
+ temporalFocus: "recent" | "upcoming" | "all";
138
+ minSalience: number;
139
+ minConfidence: number;
140
+ limit: number;
141
+ spread: boolean;
142
+ spreadHops: number;
143
+ spreadDecay: number;
144
+ spreadMinActivation: number;
145
+ spreadEntityHops: boolean;
146
+ entities?: string[] | undefined;
147
+ topics?: string[] | undefined;
148
+ types?: ("episodic" | "semantic" | "procedural")[] | undefined;
149
+ }, {
150
+ context: string;
151
+ entities?: string[] | undefined;
152
+ topics?: string[] | undefined;
153
+ types?: ("episodic" | "semantic" | "procedural")[] | undefined;
154
+ temporalFocus?: "recent" | "upcoming" | "all" | undefined;
155
+ minSalience?: number | undefined;
156
+ minConfidence?: number | undefined;
157
+ limit?: number | undefined;
158
+ spread?: boolean | undefined;
159
+ spreadHops?: number | undefined;
160
+ spreadDecay?: number | undefined;
161
+ spreadMinActivation?: number | undefined;
162
+ spreadEntityHops?: boolean | undefined;
163
+ }>;
164
+ export type RecallInput = z.input<typeof RecallInputSchema>;
165
+ export type RecallParsed = z.output<typeof RecallInputSchema>;
166
+ export interface ConsolidationReport {
167
+ startedAt: string;
168
+ completedAt: string;
169
+ episodesProcessed: number;
170
+ semanticMemoriesCreated: number;
171
+ semanticMemoriesUpdated: number;
172
+ entitiesDiscovered: number;
173
+ connectionsFormed: number;
174
+ contradictionsFound: number;
175
+ memoriesDecayed: number;
176
+ memoriesArchived: number;
177
+ }
178
+ export interface VaultConfig {
179
+ /** Unique owner identifier */
180
+ owner: string;
181
+ /** Path to SQLite database file (default: ./engram.db) */
182
+ dbPath?: string;
183
+ /** Agent ID for source tracking */
184
+ agentId?: string;
185
+ /** Session ID for source tracking */
186
+ sessionId?: string;
187
+ /** LLM provider for consolidation and embeddings */
188
+ llm?: {
189
+ provider: 'anthropic' | 'openai' | 'gemini';
190
+ apiKey: string;
191
+ model?: string;
192
+ embeddingModel?: string;
193
+ };
194
+ /** Decay settings */
195
+ decay?: {
196
+ /** Base half-life in hours for new memories (default: 168 = 1 week) */
197
+ halfLifeHours?: number;
198
+ /** Retrievability threshold below which memories are archived (default: 0.05) */
199
+ archiveThreshold?: number;
200
+ /** Salience weight factor for stability (default: 2.0) */
201
+ salienceWeight?: number;
202
+ };
203
+ }
204
+ //# 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,77 @@
1
+ import { z } from 'zod';
2
+ // ============================================================
3
+ // Memory Types — The core data model for Engram
4
+ // ============================================================
5
+ export const MemoryType = z.enum(['episodic', 'semantic', 'procedural']);
6
+ export const SourceType = z.enum([
7
+ 'conversation', // From a chat/interaction
8
+ 'observation', // Agent observed something
9
+ 'inference', // Derived from other memories
10
+ 'consolidation', // Created during consolidation
11
+ 'external', // Imported from external source
12
+ 'manual', // Explicitly created by human
13
+ ]);
14
+ export const EdgeType = z.enum([
15
+ 'supports', // This memory supports another
16
+ 'contradicts', // This memory contradicts another
17
+ 'elaborates', // This memory adds detail to another
18
+ 'supersedes', // This memory replaces another
19
+ 'causes', // This memory describes a cause
20
+ 'caused_by', // This memory describes an effect
21
+ 'part_of', // This memory is part of a larger concept
22
+ 'instance_of', // This is a specific instance of a general pattern
23
+ 'associated_with', // General association
24
+ 'temporal_next', // This happened after another memory
25
+ 'derived_from', // Created from this memory during consolidation
26
+ ]);
27
+ export const MemoryStatus = z.enum([
28
+ 'active', // Current, valid memory
29
+ 'pending', // Commitment/plan not yet fulfilled
30
+ 'fulfilled', // Commitment completed
31
+ 'superseded', // Replaced by newer information
32
+ 'archived', // Decayed beyond usefulness
33
+ ]);
34
+ export const Visibility = z.enum([
35
+ 'private', // Only the creating agent
36
+ 'owner_agents', // All of the owner's agents
37
+ 'shared', // Specific principals
38
+ 'public', // Anyone
39
+ ]);
40
+ // ============================================================
41
+ // API Input Types
42
+ // ============================================================
43
+ export const RememberInputSchema = z.object({
44
+ content: z.string().min(1),
45
+ type: MemoryType.default('episodic'),
46
+ summary: z.string().optional(),
47
+ entities: z.array(z.string()).default([]),
48
+ topics: z.array(z.string()).default([]),
49
+ salience: z.number().min(0).max(1).default(0.5),
50
+ confidence: z.number().min(0).max(1).default(0.8),
51
+ status: MemoryStatus.default('active'),
52
+ visibility: Visibility.default('owner_agents'),
53
+ source: z.object({
54
+ type: SourceType.default('conversation'),
55
+ sessionId: z.string().optional(),
56
+ agentId: z.string().optional(),
57
+ evidence: z.array(z.string()).optional(),
58
+ }).optional(),
59
+ expiresAt: z.string().optional(),
60
+ });
61
+ export const RecallInputSchema = z.object({
62
+ context: z.string().min(1),
63
+ entities: z.array(z.string()).optional(),
64
+ topics: z.array(z.string()).optional(),
65
+ types: z.array(MemoryType).optional(),
66
+ temporalFocus: z.enum(['recent', 'upcoming', 'all']).default('all'),
67
+ minSalience: z.number().min(0).max(1).default(0),
68
+ minConfidence: z.number().min(0).max(1).default(0),
69
+ limit: z.number().int().min(1).max(100).default(20),
70
+ // Spreading activation parameters
71
+ spread: z.boolean().default(true), // Enable spreading activation (default ON)
72
+ spreadHops: z.number().int().min(0).max(5).default(2), // Max graph hops
73
+ spreadDecay: z.number().min(0).max(1).default(0.5), // Activation decay per hop
74
+ spreadMinActivation: z.number().min(0).max(1).default(0.1), // Stop spreading below this
75
+ spreadEntityHops: z.boolean().default(true), // Also spread via shared entities (not just edges)
76
+ });
77
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { Memory, Edge, Entity, RememberInput, RecallInput, ConsolidationReport, VaultConfig } from './types.js';
2
+ import type { EmbeddingProvider } from './embeddings.js';
3
+ export declare class Vault {
4
+ private store;
5
+ private config;
6
+ private embedder;
7
+ /** Track all in-flight embedding computations so close() can await them */
8
+ private pendingEmbeddings;
9
+ constructor(config: VaultConfig, embedder?: EmbeddingProvider);
10
+ remember(input: RememberInput | string): Memory;
11
+ /**
12
+ * Dedup: after storing a memory and its embedding, check if a near-identical
13
+ * memory already exists. If so, keep the better one (higher salience/confidence,
14
+ * or newer if semantic) and supersede the other.
15
+ *
16
+ * Threshold: cosine distance <= 0.08 (similarity >= 0.92) = near-duplicate.
17
+ * Only dedup within the same type (don't merge episodic into semantic).
18
+ */
19
+ private dedup;
20
+ /** Compute embedding and store it — can be awaited if needed */
21
+ computeAndStoreEmbedding(memoryId: string, content: string): Promise<void>;
22
+ /** Batch compute embeddings for all memories missing them */
23
+ backfillEmbeddings(): Promise<number>;
24
+ recall(input: RecallInput | string): Promise<Memory[]>;
25
+ private spreadActivation;
26
+ private edgeTypeWeight;
27
+ forget(id: string, hard?: boolean): void;
28
+ connect(sourceId: string, targetId: string, type: Edge['type'], strength?: number): Edge;
29
+ neighbors(memoryId: string, depth?: number): Memory[];
30
+ consolidate(): Promise<ConsolidationReport>;
31
+ briefing(context?: string, limit?: number): Promise<{
32
+ summary: string;
33
+ keyFacts: Array<{
34
+ content: string;
35
+ salience: number;
36
+ entities: string[];
37
+ }>;
38
+ activeCommitments: Array<{
39
+ content: string;
40
+ status: string;
41
+ entities: string[];
42
+ }>;
43
+ recentActivity: Array<{
44
+ content: string;
45
+ when: string;
46
+ }>;
47
+ topEntities: Array<{
48
+ name: string;
49
+ type: string;
50
+ memoryCount: number;
51
+ }>;
52
+ contradictions: Array<{
53
+ a: string;
54
+ b: string;
55
+ }>;
56
+ stats: ReturnType<Vault['stats']>;
57
+ }>;
58
+ contradictions(limit?: number): Array<{
59
+ memoryA: Memory;
60
+ memoryB: Memory;
61
+ type: 'explicit_edge' | 'superseded_conflict' | 'entity_conflict';
62
+ description: string;
63
+ }>;
64
+ surface(input: {
65
+ context: string;
66
+ /** Currently active entities (people, projects in the conversation) */
67
+ activeEntities?: string[];
68
+ /** Currently active topics */
69
+ activeTopics?: string[];
70
+ /** Memory IDs the agent has already seen this session (don't re-surface) */
71
+ seen?: string[];
72
+ /** Minimum salience to surface (default: 0.4 — only important stuff) */
73
+ minSalience?: number;
74
+ /** Minimum hours since last accessed (default: 1 — don't repeat recent) */
75
+ minHoursSinceAccess?: number;
76
+ /** Maximum results (default: 3 — keep it focused) */
77
+ limit?: number;
78
+ /** Relevance threshold 0-1 (default: 0.3 — must be genuinely relevant) */
79
+ relevanceThreshold?: number;
80
+ }): Promise<Array<{
81
+ memory: Memory;
82
+ reason: string;
83
+ relevance: number;
84
+ activationPath: string;
85
+ }>>;
86
+ /** Classify why a memory is being proactively surfaced */
87
+ private classifySurfaceReason;
88
+ /** Trace how a memory was activated (simplified path description) */
89
+ private traceActivationPath;
90
+ /** Composite ranking score for proactive surfacing */
91
+ private surfaceRankScore;
92
+ stats(): {
93
+ total: number;
94
+ episodic: number;
95
+ semantic: number;
96
+ procedural: number;
97
+ entities: number;
98
+ };
99
+ entities(): Entity[];
100
+ export(): {
101
+ memories: Memory[];
102
+ edges: Edge[];
103
+ entities: Entity[];
104
+ };
105
+ close(): Promise<void>;
106
+ /** Flush all pending embedding computations without closing */
107
+ flush(): Promise<number>;
108
+ private extractWithLLM;
109
+ private ruleBasedConsolidate;
110
+ private llmConsolidate;
111
+ private callLLM;
112
+ private keywordSearch;
113
+ private extractKeywords;
114
+ private addCandidate;
115
+ }
116
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}