agent-memory-client 0.2.0 → 0.3.1
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/README.md +264 -0
- package/dist/index.d.mts +43 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +99 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +99 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/README.md
ADDED
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Agent Memory Client (JavaScript/TypeScript)
|
|
2
|
+
|
|
3
|
+
A TypeScript/JavaScript client for the [Agent Memory Server](https://redis.github.io/agent-memory-server/) REST API.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install agent-memory-client
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { MemoryAPIClient } from "agent-memory-client";
|
|
15
|
+
|
|
16
|
+
const client = new MemoryAPIClient({
|
|
17
|
+
baseUrl: "http://localhost:8000",
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Store a memory
|
|
21
|
+
await client.createLongTermMemory([
|
|
22
|
+
{
|
|
23
|
+
text: "User prefers dark mode and morning meetings",
|
|
24
|
+
memory_type: "semantic",
|
|
25
|
+
topics: ["preferences", "ui"],
|
|
26
|
+
user_id: "alice",
|
|
27
|
+
},
|
|
28
|
+
]);
|
|
29
|
+
|
|
30
|
+
// Search memories
|
|
31
|
+
const results = await client.searchLongTermMemory({
|
|
32
|
+
text: "user interface preferences",
|
|
33
|
+
limit: 10,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
console.log(`Found ${results.memories?.length} relevant memories`);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { MemoryAPIClient } from "agent-memory-client";
|
|
43
|
+
|
|
44
|
+
const client = new MemoryAPIClient({
|
|
45
|
+
baseUrl: "http://localhost:8000",
|
|
46
|
+
timeout: 30000, // Request timeout in ms (default: 30000)
|
|
47
|
+
apiKey: "your-api-key", // Optional API key
|
|
48
|
+
bearerToken: "your-token", // Optional Bearer token
|
|
49
|
+
defaultNamespace: "my-app", // Optional default namespace
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Working Memory
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// Create/update working memory
|
|
57
|
+
await client.putWorkingMemory("session-123", {
|
|
58
|
+
messages: [
|
|
59
|
+
{ role: "user", content: "Hello!" },
|
|
60
|
+
{ role: "assistant", content: "Hi there!" },
|
|
61
|
+
],
|
|
62
|
+
data: { preferences: { theme: "dark" } },
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// Get working memory
|
|
66
|
+
const memory = await client.getWorkingMemory("session-123");
|
|
67
|
+
|
|
68
|
+
// Get or create (creates if not exists)
|
|
69
|
+
const result = await client.getOrCreateWorkingMemory("session-123");
|
|
70
|
+
|
|
71
|
+
// Delete working memory
|
|
72
|
+
await client.deleteWorkingMemory("session-123");
|
|
73
|
+
|
|
74
|
+
// List all sessions
|
|
75
|
+
const sessions = await client.listSessions({ limit: 100 });
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Long-Term Memory
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import { SessionId, Topics, UserId, CreatedAt } from "agent-memory-client";
|
|
82
|
+
|
|
83
|
+
// Create memories
|
|
84
|
+
await client.createLongTermMemory([
|
|
85
|
+
{
|
|
86
|
+
text: "User enjoys science fiction books",
|
|
87
|
+
memory_type: "semantic",
|
|
88
|
+
topics: ["books", "preferences"],
|
|
89
|
+
user_id: "user-123",
|
|
90
|
+
},
|
|
91
|
+
]);
|
|
92
|
+
|
|
93
|
+
// Search with filters
|
|
94
|
+
const results = await client.searchLongTermMemory({
|
|
95
|
+
text: "science fiction",
|
|
96
|
+
topics: new Topics({ any: ["books", "entertainment"] }),
|
|
97
|
+
userId: new UserId({ eq: "user-123" }),
|
|
98
|
+
limit: 20,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Get by ID
|
|
102
|
+
const memory = await client.getLongTermMemory("memory-id");
|
|
103
|
+
|
|
104
|
+
// Edit memory
|
|
105
|
+
await client.editLongTermMemory("memory-id", { text: "Updated text" });
|
|
106
|
+
|
|
107
|
+
// Delete memories
|
|
108
|
+
await client.deleteLongTermMemories(["memory-1", "memory-2"]);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Filters
|
|
112
|
+
|
|
113
|
+
All filter types support flexible matching:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import {
|
|
117
|
+
SessionId,
|
|
118
|
+
Namespace,
|
|
119
|
+
UserId,
|
|
120
|
+
Topics,
|
|
121
|
+
Entities,
|
|
122
|
+
CreatedAt,
|
|
123
|
+
MemoryType,
|
|
124
|
+
} from "agent-memory-client";
|
|
125
|
+
|
|
126
|
+
// Equality
|
|
127
|
+
new SessionId({ eq: "session-1" });
|
|
128
|
+
|
|
129
|
+
// Multiple values
|
|
130
|
+
new SessionId({ in_: ["session-1", "session-2"] });
|
|
131
|
+
|
|
132
|
+
// Negation
|
|
133
|
+
new SessionId({ not_eq: "session-1", not_in: ["session-2"] });
|
|
134
|
+
|
|
135
|
+
// Topics/Entities matching
|
|
136
|
+
new Topics({ any: ["topic1", "topic2"] }); // Match any
|
|
137
|
+
new Topics({ all: ["topic1", "topic2"] }); // Match all
|
|
138
|
+
new Topics({ none: ["topic3"] }); // Exclude
|
|
139
|
+
|
|
140
|
+
// Date ranges
|
|
141
|
+
new CreatedAt({ gte: new Date("2024-01-01"), lte: new Date("2024-12-31") });
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Batch Operations
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
// Bulk create with rate limiting
|
|
148
|
+
const batches = [batch1, batch2, batch3];
|
|
149
|
+
await client.bulkCreateLongTermMemories(batches, {
|
|
150
|
+
batchSize: 50,
|
|
151
|
+
delayBetweenBatches: 100, // ms
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Auto-paginating search
|
|
155
|
+
for await (const memory of client.searchAllLongTermMemories({
|
|
156
|
+
text: "user preferences",
|
|
157
|
+
batchSize: 100,
|
|
158
|
+
})) {
|
|
159
|
+
console.log(memory.text);
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Validation
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
import { MemoryValidationError } from "agent-memory-client";
|
|
167
|
+
|
|
168
|
+
try {
|
|
169
|
+
client.validateMemoryRecord({ text: "", memory_type: "semantic" });
|
|
170
|
+
} catch (error) {
|
|
171
|
+
if (error instanceof MemoryValidationError) {
|
|
172
|
+
console.error("Validation failed:", error.message);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
client.validateSearchFilters({ limit: 10, offset: 0 });
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Memory Prompt (Context Hydration)
|
|
180
|
+
|
|
181
|
+
Get memory-enhanced prompts for AI agents:
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
const prompt = await client.memoryPrompt({
|
|
185
|
+
query: "What does the user like?",
|
|
186
|
+
session: { session_id: "session-123" },
|
|
187
|
+
long_term_search: {
|
|
188
|
+
text: "user preferences",
|
|
189
|
+
limit: 5,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Summary Views
|
|
195
|
+
|
|
196
|
+
Create and manage dynamic summaries:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Create a summary view
|
|
200
|
+
const view = await client.createSummaryView({
|
|
201
|
+
name: "User Summaries",
|
|
202
|
+
source: "long_term",
|
|
203
|
+
group_by: ["user_id"],
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
// Run a partition
|
|
207
|
+
const result = await client.runSummaryViewPartition("view-id", {
|
|
208
|
+
user_id: "alice",
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// List partitions
|
|
212
|
+
const partitions = await client.listSummaryViewPartitions("view-id");
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Forgetting Memories
|
|
216
|
+
|
|
217
|
+
Apply forgetting policies:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
const result = await client.forgetLongTermMemories({
|
|
221
|
+
policy: { max_age_days: 30 },
|
|
222
|
+
dryRun: true, // Preview what would be deleted
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Error Handling
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
import {
|
|
230
|
+
MemoryClientError,
|
|
231
|
+
MemoryValidationError,
|
|
232
|
+
MemoryNotFoundError,
|
|
233
|
+
MemoryServerError,
|
|
234
|
+
} from "agent-memory-client";
|
|
235
|
+
|
|
236
|
+
try {
|
|
237
|
+
await client.getWorkingMemory("nonexistent-session");
|
|
238
|
+
} catch (error) {
|
|
239
|
+
if (error instanceof MemoryNotFoundError) {
|
|
240
|
+
console.log("Session not found");
|
|
241
|
+
} else if (error instanceof MemoryServerError) {
|
|
242
|
+
console.log(`Server error ${error.statusCode}: ${error.message}`);
|
|
243
|
+
} else if (error instanceof MemoryClientError) {
|
|
244
|
+
console.log(`Client error: ${error.message}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## TypeScript Support
|
|
250
|
+
|
|
251
|
+
Full TypeScript support with exported types:
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
import type {
|
|
255
|
+
MemoryRecord,
|
|
256
|
+
WorkingMemory,
|
|
257
|
+
SearchOptions,
|
|
258
|
+
MemoryRecordResults,
|
|
259
|
+
} from "agent-memory-client";
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## License
|
|
263
|
+
|
|
264
|
+
MIT
|
package/dist/index.d.mts
CHANGED
|
@@ -794,6 +794,49 @@ declare class MemoryAPIClient {
|
|
|
794
794
|
* Get a task by ID
|
|
795
795
|
*/
|
|
796
796
|
getTask(taskId: string): Promise<Task | null>;
|
|
797
|
+
/**
|
|
798
|
+
* Close the client and release any resources.
|
|
799
|
+
* This is a no-op for the fetch-based client but provided for API consistency.
|
|
800
|
+
*/
|
|
801
|
+
close(): void;
|
|
802
|
+
/**
|
|
803
|
+
* Validate a memory record before sending to the server.
|
|
804
|
+
* @throws MemoryValidationError if validation fails
|
|
805
|
+
*/
|
|
806
|
+
validateMemoryRecord(memory: MemoryRecord): void;
|
|
807
|
+
/**
|
|
808
|
+
* Validate search filter parameters before API call.
|
|
809
|
+
* @throws MemoryValidationError if validation fails
|
|
810
|
+
*/
|
|
811
|
+
validateSearchFilters(filters: {
|
|
812
|
+
limit?: number;
|
|
813
|
+
offset?: number;
|
|
814
|
+
distanceThreshold?: number;
|
|
815
|
+
}): void;
|
|
816
|
+
/**
|
|
817
|
+
* Check if a string is a valid ULID.
|
|
818
|
+
*/
|
|
819
|
+
private isValidUlid;
|
|
820
|
+
/**
|
|
821
|
+
* Bulk create long-term memories with rate limiting.
|
|
822
|
+
* Useful for importing large datasets.
|
|
823
|
+
*/
|
|
824
|
+
bulkCreateLongTermMemories(memoryBatches: MemoryRecord[][], options?: {
|
|
825
|
+
batchSize?: number;
|
|
826
|
+
delayBetweenBatches?: number;
|
|
827
|
+
namespace?: string;
|
|
828
|
+
}): Promise<AckResponse[]>;
|
|
829
|
+
/**
|
|
830
|
+
* Auto-paginating search that yields all matching long-term memory results.
|
|
831
|
+
* Automatically handles pagination to retrieve all results.
|
|
832
|
+
*/
|
|
833
|
+
searchAllLongTermMemories(options: Omit<SearchOptions, "limit" | "offset"> & {
|
|
834
|
+
batchSize?: number;
|
|
835
|
+
}): AsyncGenerator<MemoryRecord, void, undefined>;
|
|
836
|
+
/**
|
|
837
|
+
* Sleep for a specified number of milliseconds.
|
|
838
|
+
*/
|
|
839
|
+
private sleep;
|
|
797
840
|
}
|
|
798
841
|
|
|
799
842
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -794,6 +794,49 @@ declare class MemoryAPIClient {
|
|
|
794
794
|
* Get a task by ID
|
|
795
795
|
*/
|
|
796
796
|
getTask(taskId: string): Promise<Task | null>;
|
|
797
|
+
/**
|
|
798
|
+
* Close the client and release any resources.
|
|
799
|
+
* This is a no-op for the fetch-based client but provided for API consistency.
|
|
800
|
+
*/
|
|
801
|
+
close(): void;
|
|
802
|
+
/**
|
|
803
|
+
* Validate a memory record before sending to the server.
|
|
804
|
+
* @throws MemoryValidationError if validation fails
|
|
805
|
+
*/
|
|
806
|
+
validateMemoryRecord(memory: MemoryRecord): void;
|
|
807
|
+
/**
|
|
808
|
+
* Validate search filter parameters before API call.
|
|
809
|
+
* @throws MemoryValidationError if validation fails
|
|
810
|
+
*/
|
|
811
|
+
validateSearchFilters(filters: {
|
|
812
|
+
limit?: number;
|
|
813
|
+
offset?: number;
|
|
814
|
+
distanceThreshold?: number;
|
|
815
|
+
}): void;
|
|
816
|
+
/**
|
|
817
|
+
* Check if a string is a valid ULID.
|
|
818
|
+
*/
|
|
819
|
+
private isValidUlid;
|
|
820
|
+
/**
|
|
821
|
+
* Bulk create long-term memories with rate limiting.
|
|
822
|
+
* Useful for importing large datasets.
|
|
823
|
+
*/
|
|
824
|
+
bulkCreateLongTermMemories(memoryBatches: MemoryRecord[][], options?: {
|
|
825
|
+
batchSize?: number;
|
|
826
|
+
delayBetweenBatches?: number;
|
|
827
|
+
namespace?: string;
|
|
828
|
+
}): Promise<AckResponse[]>;
|
|
829
|
+
/**
|
|
830
|
+
* Auto-paginating search that yields all matching long-term memory results.
|
|
831
|
+
* Automatically handles pagination to retrieve all results.
|
|
832
|
+
*/
|
|
833
|
+
searchAllLongTermMemories(options: Omit<SearchOptions, "limit" | "offset"> & {
|
|
834
|
+
batchSize?: number;
|
|
835
|
+
}): AsyncGenerator<MemoryRecord, void, undefined>;
|
|
836
|
+
/**
|
|
837
|
+
* Sleep for a specified number of milliseconds.
|
|
838
|
+
*/
|
|
839
|
+
private sleep;
|
|
797
840
|
}
|
|
798
841
|
|
|
799
842
|
/**
|
package/dist/index.js
CHANGED
|
@@ -211,7 +211,7 @@ var MemoryType = class {
|
|
|
211
211
|
};
|
|
212
212
|
|
|
213
213
|
// src/client.ts
|
|
214
|
-
var VERSION = "0.1
|
|
214
|
+
var VERSION = "0.3.1";
|
|
215
215
|
var MemoryAPIClient = class {
|
|
216
216
|
config;
|
|
217
217
|
fetchFn;
|
|
@@ -289,11 +289,12 @@ var MemoryAPIClient = class {
|
|
|
289
289
|
*/
|
|
290
290
|
async handleHttpError(response) {
|
|
291
291
|
let message;
|
|
292
|
+
const text = await response.text();
|
|
292
293
|
try {
|
|
293
|
-
const body =
|
|
294
|
+
const body = JSON.parse(text);
|
|
294
295
|
message = body.detail || body.message || JSON.stringify(body);
|
|
295
296
|
} catch {
|
|
296
|
-
message =
|
|
297
|
+
message = text || `HTTP ${response.status}`;
|
|
297
298
|
}
|
|
298
299
|
if (response.status === 404) {
|
|
299
300
|
throw new MemoryNotFoundError(message);
|
|
@@ -626,6 +627,101 @@ var MemoryAPIClient = class {
|
|
|
626
627
|
throw error;
|
|
627
628
|
}
|
|
628
629
|
}
|
|
630
|
+
// ==================== Utility Methods ====================
|
|
631
|
+
/**
|
|
632
|
+
* Close the client and release any resources.
|
|
633
|
+
* This is a no-op for the fetch-based client but provided for API consistency.
|
|
634
|
+
*/
|
|
635
|
+
close() {
|
|
636
|
+
}
|
|
637
|
+
/**
|
|
638
|
+
* Validate a memory record before sending to the server.
|
|
639
|
+
* @throws MemoryValidationError if validation fails
|
|
640
|
+
*/
|
|
641
|
+
validateMemoryRecord(memory) {
|
|
642
|
+
if (!memory.text || !memory.text.trim()) {
|
|
643
|
+
throw new MemoryValidationError("Memory text cannot be empty");
|
|
644
|
+
}
|
|
645
|
+
const validMemoryTypes = ["episodic", "semantic", "message"];
|
|
646
|
+
if (memory.memory_type && !validMemoryTypes.includes(memory.memory_type)) {
|
|
647
|
+
throw new MemoryValidationError(`Invalid memory type: ${memory.memory_type}`);
|
|
648
|
+
}
|
|
649
|
+
if (memory.id && !this.isValidUlid(memory.id)) {
|
|
650
|
+
throw new MemoryValidationError(`Invalid ID format: ${memory.id}`);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
/**
|
|
654
|
+
* Validate search filter parameters before API call.
|
|
655
|
+
* @throws MemoryValidationError if validation fails
|
|
656
|
+
*/
|
|
657
|
+
validateSearchFilters(filters) {
|
|
658
|
+
if (filters.limit !== void 0 && (typeof filters.limit !== "number" || filters.limit <= 0)) {
|
|
659
|
+
throw new MemoryValidationError("Limit must be a positive integer");
|
|
660
|
+
}
|
|
661
|
+
if (filters.offset !== void 0 && (typeof filters.offset !== "number" || filters.offset < 0)) {
|
|
662
|
+
throw new MemoryValidationError("Offset must be a non-negative integer");
|
|
663
|
+
}
|
|
664
|
+
if (filters.distanceThreshold !== void 0 && (typeof filters.distanceThreshold !== "number" || filters.distanceThreshold < 0)) {
|
|
665
|
+
throw new MemoryValidationError("Distance threshold must be a non-negative number");
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Check if a string is a valid ULID.
|
|
670
|
+
*/
|
|
671
|
+
isValidUlid(id) {
|
|
672
|
+
const ulidRegex = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i;
|
|
673
|
+
return ulidRegex.test(id);
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* Bulk create long-term memories with rate limiting.
|
|
677
|
+
* Useful for importing large datasets.
|
|
678
|
+
*/
|
|
679
|
+
async bulkCreateLongTermMemories(memoryBatches, options = {}) {
|
|
680
|
+
const { batchSize = 50, delayBetweenBatches = 100, namespace } = options;
|
|
681
|
+
const results = [];
|
|
682
|
+
for (const batch of memoryBatches) {
|
|
683
|
+
for (let i = 0; i < batch.length; i += batchSize) {
|
|
684
|
+
const chunk = batch.slice(i, i + batchSize);
|
|
685
|
+
const response = await this.createLongTermMemory(chunk, { namespace });
|
|
686
|
+
results.push(response);
|
|
687
|
+
if (delayBetweenBatches > 0) {
|
|
688
|
+
await this.sleep(delayBetweenBatches);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
return results;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Auto-paginating search that yields all matching long-term memory results.
|
|
696
|
+
* Automatically handles pagination to retrieve all results.
|
|
697
|
+
*/
|
|
698
|
+
async *searchAllLongTermMemories(options) {
|
|
699
|
+
const { batchSize = 50, ...searchOptions } = options;
|
|
700
|
+
let offset = 0;
|
|
701
|
+
while (true) {
|
|
702
|
+
const results = await this.searchLongTermMemory({
|
|
703
|
+
...searchOptions,
|
|
704
|
+
limit: batchSize,
|
|
705
|
+
offset
|
|
706
|
+
});
|
|
707
|
+
if (!results.memories || results.memories.length === 0) {
|
|
708
|
+
break;
|
|
709
|
+
}
|
|
710
|
+
for (const memory of results.memories) {
|
|
711
|
+
yield memory;
|
|
712
|
+
}
|
|
713
|
+
if (results.memories.length < batchSize) {
|
|
714
|
+
break;
|
|
715
|
+
}
|
|
716
|
+
offset += batchSize;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Sleep for a specified number of milliseconds.
|
|
721
|
+
*/
|
|
722
|
+
sleep(ms) {
|
|
723
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
724
|
+
}
|
|
629
725
|
};
|
|
630
726
|
|
|
631
727
|
exports.CreatedAt = CreatedAt;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/filters.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Exception classes for the Agent Memory Client.\n */\n\n/**\n * Base error for all memory client errors.\n */\nexport class MemoryClientError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryClientError\";\n // Maintains proper stack trace for where our error was thrown (only in V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MemoryClientError);\n }\n }\n}\n\n/**\n * Raised when memory record or filter validation fails.\n */\nexport class MemoryValidationError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryValidationError\";\n }\n}\n\n/**\n * Raised when a requested memory or session is not found.\n */\nexport class MemoryNotFoundError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\n/**\n * Raised when the memory server returns an error.\n */\nexport class MemoryServerError extends MemoryClientError {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"MemoryServerError\";\n this.statusCode = statusCode;\n }\n}\n","/**\n * Filter classes for search operations.\n *\n * These filters allow for filtering memory search results.\n */\n\n/**\n * Filter by session ID\n */\nexport class SessionId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n this.ne = options.ne;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n if (this.ne !== undefined) result.ne = this.ne;\n return result;\n }\n}\n\n/**\n * Filter by namespace\n */\nexport class Namespace {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by user ID\n */\nexport class UserId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by topics\n */\nexport class Topics {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by entities\n */\nexport class Entities {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by creation date\n */\nexport class CreatedAt {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by last accessed date\n */\nexport class LastAccessed {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by event date\n */\nexport class EventDate {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by memory type\n */\nexport class MemoryType {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n","/**\n * Agent Memory API Client\n *\n * A TypeScript/JavaScript client for the Agent Memory Server REST API.\n */\n\nimport {\n MemoryClientError,\n MemoryNotFoundError,\n MemoryServerError,\n} from \"./errors\";\nimport {\n SessionId,\n Namespace,\n UserId,\n Topics,\n Entities,\n CreatedAt,\n LastAccessed,\n EventDate,\n MemoryType,\n} from \"./filters\";\nimport {\n AckResponse,\n CreateSummaryViewRequest,\n ForgetPolicy,\n ForgetResponse,\n HealthCheckResponse,\n MemoryPromptRequest,\n MemoryPromptResponse,\n MemoryRecord,\n MemoryRecordResults,\n MemoryStrategyConfig,\n ModelNameLiteral,\n RecencyConfig,\n SessionListResponse,\n SummaryView,\n SummaryViewPartitionResult,\n Task,\n WorkingMemory,\n WorkingMemoryResponse,\n} from \"./models\";\n\nconst VERSION = \"0.1.0\";\n\n/**\n * Configuration for the Memory API Client\n */\nexport interface MemoryClientConfig {\n /** Base URL of the memory server (e.g., 'http://localhost:8000') */\n baseUrl: string;\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Optional default namespace to use for operations */\n defaultNamespace?: string;\n /** Optional default model name for auto-summarization */\n defaultModelName?: ModelNameLiteral;\n /** Optional default context window limit for auto-summarization */\n defaultContextWindowMax?: number;\n /** Optional API key for authentication */\n apiKey?: string;\n /** Optional bearer token for authentication */\n bearerToken?: string;\n /** Custom fetch function (for testing or custom implementations) */\n fetch?: typeof fetch;\n}\n\n/**\n * Options for search operations\n */\nexport interface SearchOptions {\n text: string;\n sessionId?: SessionId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n namespace?: Namespace | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n topics?: Topics | { any?: string[]; all?: string[]; none?: string[] };\n entities?: Entities | { any?: string[]; all?: string[]; none?: string[] };\n createdAt?: CreatedAt | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n lastAccessed?: LastAccessed | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n userId?: UserId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n memoryType?: MemoryType | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n eventDate?: EventDate | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n distanceThreshold?: number;\n limit?: number;\n offset?: number;\n recency?: RecencyConfig;\n optimizeQuery?: boolean;\n}\n\n/**\n * Client for the Agent Memory Server REST API.\n *\n * Provides methods to interact with all server endpoints:\n * - Health check\n * - Session management (list, get, put, delete)\n * - Long-term memory (create, search, edit, delete)\n */\nexport class MemoryAPIClient {\n private readonly config: Required<\n Pick<MemoryClientConfig, \"baseUrl\" | \"timeout\">\n > &\n MemoryClientConfig;\n private readonly fetchFn: typeof fetch;\n\n constructor(config: MemoryClientConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"), // Remove trailing slash\n };\n this.fetchFn = config.fetch ?? fetch;\n }\n\n /**\n * Get default headers for requests\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": `agent-memory-client-js/${VERSION}`,\n \"X-Client-Version\": VERSION,\n };\n\n if (this.config.apiKey) {\n headers[\"X-API-Key\"] = this.config.apiKey;\n }\n if (this.config.bearerToken) {\n headers[\"Authorization\"] = `Bearer ${this.config.bearerToken}`;\n }\n\n return headers;\n }\n\n /**\n * Make an HTTP request with error handling\n */\n private async request<T>(\n method: string,\n path: string,\n options: {\n body?: unknown;\n params?: Record<string, string | number | boolean | string[] | undefined>;\n } = {}\n ): Promise<T> {\n const url = new URL(path, this.config.baseUrl);\n\n // Add query parameters\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // Handle array params by appending multiple values with the same key\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await this.fetchFn(url.toString(), {\n method,\n headers: this.getHeaders(),\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n return this.handleHttpError(response);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof MemoryClientError) {\n throw error;\n }\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new MemoryClientError(`Request timeout after ${this.config.timeout}ms`);\n }\n throw new MemoryClientError(`Request failed: ${String(error)}`);\n }\n }\n\n /**\n * Handle HTTP error responses\n */\n private async handleHttpError(response: Response): Promise<never> {\n let message: string;\n try {\n const body = (await response.json()) as Record<string, unknown>;\n message =\n (body.detail as string) || (body.message as string) || JSON.stringify(body);\n } catch {\n message = await response.text();\n }\n\n if (response.status === 404) {\n throw new MemoryNotFoundError(message);\n }\n throw new MemoryServerError(message, response.status);\n }\n\n // ==================== Health ====================\n\n /**\n * Check server health\n */\n async healthCheck(): Promise<HealthCheckResponse> {\n return this.request<HealthCheckResponse>(\"GET\", \"/v1/health\");\n }\n\n // ==================== Working Memory ====================\n\n /**\n * List all session IDs\n */\n async listSessions(options: {\n namespace?: string;\n limit?: number;\n offset?: number;\n } = {}): Promise<SessionListResponse> {\n return this.request<SessionListResponse>(\"GET\", \"/v1/working-memory/\", {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n limit: options.limit,\n offset: options.offset,\n },\n });\n }\n\n /**\n * Get working memory for a session\n */\n async getWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n } = {}\n ): Promise<WorkingMemoryResponse | null> {\n try {\n return await this.request<WorkingMemoryResponse>(\n \"GET\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Get or create working memory for a session\n */\n async getOrCreateWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n userId?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n ttlSeconds?: number;\n longTermMemoryStrategy?: MemoryStrategyConfig;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const existing = await this.getWorkingMemory(sessionId, options);\n if (existing) {\n return existing;\n }\n\n // Create new working memory\n const workingMemory: WorkingMemory = {\n session_id: sessionId,\n namespace: options.namespace ?? this.config.defaultNamespace,\n user_id: options.userId,\n messages: [],\n memories: [],\n ttl_seconds: options.ttlSeconds,\n long_term_memory_strategy: options.longTermMemoryStrategy,\n };\n\n return this.putWorkingMemory(sessionId, workingMemory, options);\n }\n\n /**\n * Create or update working memory for a session\n */\n async putWorkingMemory(\n sessionId: string,\n workingMemory: Partial<WorkingMemory>,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n background?: boolean;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const body: WorkingMemory = {\n session_id: sessionId,\n ...workingMemory,\n namespace: workingMemory.namespace ?? options.namespace ?? this.config.defaultNamespace,\n };\n\n return this.request<WorkingMemoryResponse>(\n \"PUT\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n body,\n params: {\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n background: options.background,\n },\n }\n );\n }\n\n /**\n * Delete working memory for a session\n */\n async deleteWorkingMemory(\n sessionId: string,\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n }\n\n // ==================== Long-term Memory ====================\n\n /**\n * Create long-term memory records\n */\n async createLongTermMemory(\n memories: MemoryRecord[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"POST\", \"/v1/long-term-memory/\", {\n body: { memories },\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n /**\n * Search long-term memory\n */\n async searchLongTermMemory(options: SearchOptions): Promise<MemoryRecordResults> {\n const body: Record<string, unknown> = {\n text: options.text,\n limit: options.limit,\n offset: options.offset,\n distance_threshold: options.distanceThreshold,\n };\n\n // Add filters\n if (options.sessionId) {\n body.session_id =\n options.sessionId instanceof SessionId\n ? options.sessionId.toJSON()\n : options.sessionId;\n }\n if (options.namespace) {\n body.namespace =\n options.namespace instanceof Namespace\n ? options.namespace.toJSON()\n : options.namespace;\n }\n if (options.topics) {\n body.topics =\n options.topics instanceof Topics ? options.topics.toJSON() : options.topics;\n }\n if (options.entities) {\n body.entities =\n options.entities instanceof Entities\n ? options.entities.toJSON()\n : options.entities;\n }\n if (options.createdAt) {\n body.created_at =\n options.createdAt instanceof CreatedAt\n ? options.createdAt.toJSON()\n : options.createdAt;\n }\n if (options.lastAccessed) {\n body.last_accessed =\n options.lastAccessed instanceof LastAccessed\n ? options.lastAccessed.toJSON()\n : options.lastAccessed;\n }\n if (options.userId) {\n body.user_id =\n options.userId instanceof UserId ? options.userId.toJSON() : options.userId;\n }\n if (options.memoryType) {\n body.memory_type =\n options.memoryType instanceof MemoryType\n ? options.memoryType.toJSON()\n : options.memoryType;\n }\n if (options.eventDate) {\n body.event_date =\n options.eventDate instanceof EventDate\n ? options.eventDate.toJSON()\n : options.eventDate;\n }\n\n // Add recency config\n if (options.recency) {\n body.recency_boost = options.recency.recency_boost;\n body.recency_semantic_weight = options.recency.semantic_weight;\n body.recency_recency_weight = options.recency.recency_weight;\n body.recency_freshness_weight = options.recency.freshness_weight;\n body.recency_novelty_weight = options.recency.novelty_weight;\n body.recency_half_life_last_access_days = options.recency.half_life_last_access_days;\n body.recency_half_life_created_days = options.recency.half_life_created_days;\n body.server_side_recency = options.recency.server_side_recency;\n }\n\n return this.request<MemoryRecordResults>(\"POST\", \"/v1/long-term-memory/search\", {\n body,\n });\n }\n\n /**\n * Get a long-term memory by ID\n */\n async getLongTermMemory(\n memoryId: string,\n options: { namespace?: string } = {}\n ): Promise<MemoryRecord | null> {\n try {\n return await this.request<MemoryRecord>(\n \"GET\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete long-term memories by IDs\n */\n async deleteLongTermMemories(\n memoryIds: string[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"DELETE\", \"/v1/long-term-memory\", {\n params: {\n memory_ids: memoryIds,\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n // ==================== Memory Prompt ====================\n\n /**\n * Get memory-enhanced prompt\n */\n async memoryPrompt(request: MemoryPromptRequest): Promise<MemoryPromptResponse> {\n return this.request<MemoryPromptResponse>(\"POST\", \"/v1/memory/prompt\", {\n body: request,\n });\n }\n\n // ==================== Edit Long-term Memory ====================\n\n /**\n * Edit a long-term memory by ID\n */\n async editLongTermMemory(\n memoryId: string,\n updates: Partial<MemoryRecord>\n ): Promise<MemoryRecord> {\n return this.request<MemoryRecord>(\n \"PATCH\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n { body: updates }\n );\n }\n\n // ==================== Forget ====================\n\n /**\n * Run a forgetting pass with the provided policy\n */\n async forgetLongTermMemories(options: {\n policy: ForgetPolicy;\n namespace?: string;\n userId?: string;\n sessionId?: string;\n limit?: number;\n dryRun?: boolean;\n pinnedIds?: string[];\n }): Promise<ForgetResponse> {\n return this.request<ForgetResponse>(\"POST\", \"/v1/long-term-memory/forget\", {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n limit: options.limit,\n dry_run: options.dryRun,\n },\n body: {\n policy: options.policy,\n pinned_ids: options.pinnedIds,\n },\n });\n }\n\n // ==================== Summary Views ====================\n\n /**\n * List all summary views\n */\n async listSummaryViews(): Promise<SummaryView[]> {\n return this.request<SummaryView[]>(\"GET\", \"/v1/summary-views\");\n }\n\n /**\n * Create a new summary view\n */\n async createSummaryView(request: CreateSummaryViewRequest): Promise<SummaryView> {\n return this.request<SummaryView>(\"POST\", \"/v1/summary-views\", {\n body: request,\n });\n }\n\n /**\n * Get a summary view by ID\n */\n async getSummaryView(viewId: string): Promise<SummaryView | null> {\n try {\n return await this.request<SummaryView>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete a summary view\n */\n async deleteSummaryView(viewId: string): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n }\n\n /**\n * Run a summary view partition\n */\n async runSummaryViewPartition(\n viewId: string,\n group: Record<string, string>\n ): Promise<SummaryViewPartitionResult> {\n return this.request<SummaryViewPartitionResult>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions/run`,\n { body: { group } }\n );\n }\n\n /**\n * List summary view partitions\n */\n async listSummaryViewPartitions(\n viewId: string,\n options: {\n namespace?: string;\n userId?: string;\n sessionId?: string;\n memoryType?: string;\n } = {}\n ): Promise<SummaryViewPartitionResult[]> {\n return this.request<SummaryViewPartitionResult[]>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions`,\n {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n memory_type: options.memoryType,\n },\n }\n );\n }\n\n /**\n * Run a full summary view (async task)\n */\n async runSummaryView(\n viewId: string,\n options: { force?: boolean } = {}\n ): Promise<Task> {\n return this.request<Task>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/run`,\n { body: options }\n );\n }\n\n // ==================== Tasks ====================\n\n /**\n * Get a task by ID\n */\n async getTask(taskId: string): Promise<Task | null> {\n try {\n return await this.request<Task>(\n \"GET\",\n `/v1/tasks/${encodeURIComponent(taskId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/filters.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Exception classes for the Agent Memory Client.\n */\n\n/**\n * Base error for all memory client errors.\n */\nexport class MemoryClientError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryClientError\";\n // Maintains proper stack trace for where our error was thrown (only in V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MemoryClientError);\n }\n }\n}\n\n/**\n * Raised when memory record or filter validation fails.\n */\nexport class MemoryValidationError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryValidationError\";\n }\n}\n\n/**\n * Raised when a requested memory or session is not found.\n */\nexport class MemoryNotFoundError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\n/**\n * Raised when the memory server returns an error.\n */\nexport class MemoryServerError extends MemoryClientError {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"MemoryServerError\";\n this.statusCode = statusCode;\n }\n}\n","/**\n * Filter classes for search operations.\n *\n * These filters allow for filtering memory search results.\n */\n\n/**\n * Filter by session ID\n */\nexport class SessionId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n this.ne = options.ne;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n if (this.ne !== undefined) result.ne = this.ne;\n return result;\n }\n}\n\n/**\n * Filter by namespace\n */\nexport class Namespace {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by user ID\n */\nexport class UserId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by topics\n */\nexport class Topics {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by entities\n */\nexport class Entities {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by creation date\n */\nexport class CreatedAt {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by last accessed date\n */\nexport class LastAccessed {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by event date\n */\nexport class EventDate {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by memory type\n */\nexport class MemoryType {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n","/**\n * Agent Memory API Client\n *\n * A TypeScript/JavaScript client for the Agent Memory Server REST API.\n */\n\nimport {\n MemoryClientError,\n MemoryNotFoundError,\n MemoryServerError,\n MemoryValidationError,\n} from \"./errors\";\nimport {\n SessionId,\n Namespace,\n UserId,\n Topics,\n Entities,\n CreatedAt,\n LastAccessed,\n EventDate,\n MemoryType,\n} from \"./filters\";\nimport {\n AckResponse,\n CreateSummaryViewRequest,\n ForgetPolicy,\n ForgetResponse,\n HealthCheckResponse,\n MemoryPromptRequest,\n MemoryPromptResponse,\n MemoryRecord,\n MemoryRecordResults,\n MemoryStrategyConfig,\n ModelNameLiteral,\n RecencyConfig,\n SessionListResponse,\n SummaryView,\n SummaryViewPartitionResult,\n Task,\n WorkingMemory,\n WorkingMemoryResponse,\n} from \"./models\";\n\nconst VERSION = \"0.3.1\";\n\n/**\n * Configuration for the Memory API Client\n */\nexport interface MemoryClientConfig {\n /** Base URL of the memory server (e.g., 'http://localhost:8000') */\n baseUrl: string;\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Optional default namespace to use for operations */\n defaultNamespace?: string;\n /** Optional default model name for auto-summarization */\n defaultModelName?: ModelNameLiteral;\n /** Optional default context window limit for auto-summarization */\n defaultContextWindowMax?: number;\n /** Optional API key for authentication */\n apiKey?: string;\n /** Optional bearer token for authentication */\n bearerToken?: string;\n /** Custom fetch function (for testing or custom implementations) */\n fetch?: typeof fetch;\n}\n\n/**\n * Options for search operations\n */\nexport interface SearchOptions {\n text: string;\n sessionId?: SessionId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n namespace?: Namespace | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n topics?: Topics | { any?: string[]; all?: string[]; none?: string[] };\n entities?: Entities | { any?: string[]; all?: string[]; none?: string[] };\n createdAt?: CreatedAt | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n lastAccessed?: LastAccessed | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n userId?: UserId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n memoryType?: MemoryType | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n eventDate?: EventDate | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n distanceThreshold?: number;\n limit?: number;\n offset?: number;\n recency?: RecencyConfig;\n optimizeQuery?: boolean;\n}\n\n/**\n * Client for the Agent Memory Server REST API.\n *\n * Provides methods to interact with all server endpoints:\n * - Health check\n * - Session management (list, get, put, delete)\n * - Long-term memory (create, search, edit, delete)\n */\nexport class MemoryAPIClient {\n private readonly config: Required<\n Pick<MemoryClientConfig, \"baseUrl\" | \"timeout\">\n > &\n MemoryClientConfig;\n private readonly fetchFn: typeof fetch;\n\n constructor(config: MemoryClientConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"), // Remove trailing slash\n };\n this.fetchFn = config.fetch ?? fetch;\n }\n\n /**\n * Get default headers for requests\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": `agent-memory-client-js/${VERSION}`,\n \"X-Client-Version\": VERSION,\n };\n\n if (this.config.apiKey) {\n headers[\"X-API-Key\"] = this.config.apiKey;\n }\n if (this.config.bearerToken) {\n headers[\"Authorization\"] = `Bearer ${this.config.bearerToken}`;\n }\n\n return headers;\n }\n\n /**\n * Make an HTTP request with error handling\n */\n private async request<T>(\n method: string,\n path: string,\n options: {\n body?: unknown;\n params?: Record<string, string | number | boolean | string[] | undefined>;\n } = {}\n ): Promise<T> {\n const url = new URL(path, this.config.baseUrl);\n\n // Add query parameters\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // Handle array params by appending multiple values with the same key\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await this.fetchFn(url.toString(), {\n method,\n headers: this.getHeaders(),\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n return this.handleHttpError(response);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof MemoryClientError) {\n throw error;\n }\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new MemoryClientError(`Request timeout after ${this.config.timeout}ms`);\n }\n throw new MemoryClientError(`Request failed: ${String(error)}`);\n }\n }\n\n /**\n * Handle HTTP error responses\n */\n private async handleHttpError(response: Response): Promise<never> {\n let message: string;\n // Read body as text first to avoid \"Body has already been read\" errors\n const text = await response.text();\n try {\n const body = JSON.parse(text) as Record<string, unknown>;\n message =\n (body.detail as string) || (body.message as string) || JSON.stringify(body);\n } catch {\n message = text || `HTTP ${response.status}`;\n }\n\n if (response.status === 404) {\n throw new MemoryNotFoundError(message);\n }\n throw new MemoryServerError(message, response.status);\n }\n\n // ==================== Health ====================\n\n /**\n * Check server health\n */\n async healthCheck(): Promise<HealthCheckResponse> {\n return this.request<HealthCheckResponse>(\"GET\", \"/v1/health\");\n }\n\n // ==================== Working Memory ====================\n\n /**\n * List all session IDs\n */\n async listSessions(options: {\n namespace?: string;\n limit?: number;\n offset?: number;\n } = {}): Promise<SessionListResponse> {\n return this.request<SessionListResponse>(\"GET\", \"/v1/working-memory/\", {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n limit: options.limit,\n offset: options.offset,\n },\n });\n }\n\n /**\n * Get working memory for a session\n */\n async getWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n } = {}\n ): Promise<WorkingMemoryResponse | null> {\n try {\n return await this.request<WorkingMemoryResponse>(\n \"GET\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Get or create working memory for a session\n */\n async getOrCreateWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n userId?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n ttlSeconds?: number;\n longTermMemoryStrategy?: MemoryStrategyConfig;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const existing = await this.getWorkingMemory(sessionId, options);\n if (existing) {\n return existing;\n }\n\n // Create new working memory\n const workingMemory: WorkingMemory = {\n session_id: sessionId,\n namespace: options.namespace ?? this.config.defaultNamespace,\n user_id: options.userId,\n messages: [],\n memories: [],\n ttl_seconds: options.ttlSeconds,\n long_term_memory_strategy: options.longTermMemoryStrategy,\n };\n\n return this.putWorkingMemory(sessionId, workingMemory, options);\n }\n\n /**\n * Create or update working memory for a session\n */\n async putWorkingMemory(\n sessionId: string,\n workingMemory: Partial<WorkingMemory>,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n background?: boolean;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const body: WorkingMemory = {\n session_id: sessionId,\n ...workingMemory,\n namespace: workingMemory.namespace ?? options.namespace ?? this.config.defaultNamespace,\n };\n\n return this.request<WorkingMemoryResponse>(\n \"PUT\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n body,\n params: {\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n background: options.background,\n },\n }\n );\n }\n\n /**\n * Delete working memory for a session\n */\n async deleteWorkingMemory(\n sessionId: string,\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n }\n\n // ==================== Long-term Memory ====================\n\n /**\n * Create long-term memory records\n */\n async createLongTermMemory(\n memories: MemoryRecord[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"POST\", \"/v1/long-term-memory/\", {\n body: { memories },\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n /**\n * Search long-term memory\n */\n async searchLongTermMemory(options: SearchOptions): Promise<MemoryRecordResults> {\n const body: Record<string, unknown> = {\n text: options.text,\n limit: options.limit,\n offset: options.offset,\n distance_threshold: options.distanceThreshold,\n };\n\n // Add filters\n if (options.sessionId) {\n body.session_id =\n options.sessionId instanceof SessionId\n ? options.sessionId.toJSON()\n : options.sessionId;\n }\n if (options.namespace) {\n body.namespace =\n options.namespace instanceof Namespace\n ? options.namespace.toJSON()\n : options.namespace;\n }\n if (options.topics) {\n body.topics =\n options.topics instanceof Topics ? options.topics.toJSON() : options.topics;\n }\n if (options.entities) {\n body.entities =\n options.entities instanceof Entities\n ? options.entities.toJSON()\n : options.entities;\n }\n if (options.createdAt) {\n body.created_at =\n options.createdAt instanceof CreatedAt\n ? options.createdAt.toJSON()\n : options.createdAt;\n }\n if (options.lastAccessed) {\n body.last_accessed =\n options.lastAccessed instanceof LastAccessed\n ? options.lastAccessed.toJSON()\n : options.lastAccessed;\n }\n if (options.userId) {\n body.user_id =\n options.userId instanceof UserId ? options.userId.toJSON() : options.userId;\n }\n if (options.memoryType) {\n body.memory_type =\n options.memoryType instanceof MemoryType\n ? options.memoryType.toJSON()\n : options.memoryType;\n }\n if (options.eventDate) {\n body.event_date =\n options.eventDate instanceof EventDate\n ? options.eventDate.toJSON()\n : options.eventDate;\n }\n\n // Add recency config\n if (options.recency) {\n body.recency_boost = options.recency.recency_boost;\n body.recency_semantic_weight = options.recency.semantic_weight;\n body.recency_recency_weight = options.recency.recency_weight;\n body.recency_freshness_weight = options.recency.freshness_weight;\n body.recency_novelty_weight = options.recency.novelty_weight;\n body.recency_half_life_last_access_days = options.recency.half_life_last_access_days;\n body.recency_half_life_created_days = options.recency.half_life_created_days;\n body.server_side_recency = options.recency.server_side_recency;\n }\n\n return this.request<MemoryRecordResults>(\"POST\", \"/v1/long-term-memory/search\", {\n body,\n });\n }\n\n /**\n * Get a long-term memory by ID\n */\n async getLongTermMemory(\n memoryId: string,\n options: { namespace?: string } = {}\n ): Promise<MemoryRecord | null> {\n try {\n return await this.request<MemoryRecord>(\n \"GET\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete long-term memories by IDs\n */\n async deleteLongTermMemories(\n memoryIds: string[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"DELETE\", \"/v1/long-term-memory\", {\n params: {\n memory_ids: memoryIds,\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n // ==================== Memory Prompt ====================\n\n /**\n * Get memory-enhanced prompt\n */\n async memoryPrompt(request: MemoryPromptRequest): Promise<MemoryPromptResponse> {\n return this.request<MemoryPromptResponse>(\"POST\", \"/v1/memory/prompt\", {\n body: request,\n });\n }\n\n // ==================== Edit Long-term Memory ====================\n\n /**\n * Edit a long-term memory by ID\n */\n async editLongTermMemory(\n memoryId: string,\n updates: Partial<MemoryRecord>\n ): Promise<MemoryRecord> {\n return this.request<MemoryRecord>(\n \"PATCH\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n { body: updates }\n );\n }\n\n // ==================== Forget ====================\n\n /**\n * Run a forgetting pass with the provided policy\n */\n async forgetLongTermMemories(options: {\n policy: ForgetPolicy;\n namespace?: string;\n userId?: string;\n sessionId?: string;\n limit?: number;\n dryRun?: boolean;\n pinnedIds?: string[];\n }): Promise<ForgetResponse> {\n return this.request<ForgetResponse>(\"POST\", \"/v1/long-term-memory/forget\", {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n limit: options.limit,\n dry_run: options.dryRun,\n },\n body: {\n policy: options.policy,\n pinned_ids: options.pinnedIds,\n },\n });\n }\n\n // ==================== Summary Views ====================\n\n /**\n * List all summary views\n */\n async listSummaryViews(): Promise<SummaryView[]> {\n return this.request<SummaryView[]>(\"GET\", \"/v1/summary-views\");\n }\n\n /**\n * Create a new summary view\n */\n async createSummaryView(request: CreateSummaryViewRequest): Promise<SummaryView> {\n return this.request<SummaryView>(\"POST\", \"/v1/summary-views\", {\n body: request,\n });\n }\n\n /**\n * Get a summary view by ID\n */\n async getSummaryView(viewId: string): Promise<SummaryView | null> {\n try {\n return await this.request<SummaryView>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete a summary view\n */\n async deleteSummaryView(viewId: string): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n }\n\n /**\n * Run a summary view partition\n */\n async runSummaryViewPartition(\n viewId: string,\n group: Record<string, string>\n ): Promise<SummaryViewPartitionResult> {\n return this.request<SummaryViewPartitionResult>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions/run`,\n { body: { group } }\n );\n }\n\n /**\n * List summary view partitions\n */\n async listSummaryViewPartitions(\n viewId: string,\n options: {\n namespace?: string;\n userId?: string;\n sessionId?: string;\n memoryType?: string;\n } = {}\n ): Promise<SummaryViewPartitionResult[]> {\n return this.request<SummaryViewPartitionResult[]>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions`,\n {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n memory_type: options.memoryType,\n },\n }\n );\n }\n\n /**\n * Run a full summary view (async task)\n */\n async runSummaryView(\n viewId: string,\n options: { force?: boolean } = {}\n ): Promise<Task> {\n return this.request<Task>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/run`,\n { body: options }\n );\n }\n\n // ==================== Tasks ====================\n\n /**\n * Get a task by ID\n */\n async getTask(taskId: string): Promise<Task | null> {\n try {\n return await this.request<Task>(\n \"GET\",\n `/v1/tasks/${encodeURIComponent(taskId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n // ==================== Utility Methods ====================\n\n /**\n * Close the client and release any resources.\n * This is a no-op for the fetch-based client but provided for API consistency.\n */\n close(): void {\n // No-op for fetch-based client\n // Provided for API compatibility with other clients\n }\n\n /**\n * Validate a memory record before sending to the server.\n * @throws MemoryValidationError if validation fails\n */\n validateMemoryRecord(memory: MemoryRecord): void {\n if (!memory.text || !memory.text.trim()) {\n throw new MemoryValidationError(\"Memory text cannot be empty\");\n }\n\n const validMemoryTypes = [\"episodic\", \"semantic\", \"message\"];\n if (memory.memory_type && !validMemoryTypes.includes(memory.memory_type)) {\n throw new MemoryValidationError(`Invalid memory type: ${memory.memory_type}`);\n }\n\n if (memory.id && !this.isValidUlid(memory.id)) {\n throw new MemoryValidationError(`Invalid ID format: ${memory.id}`);\n }\n }\n\n /**\n * Validate search filter parameters before API call.\n * @throws MemoryValidationError if validation fails\n */\n validateSearchFilters(filters: {\n limit?: number;\n offset?: number;\n distanceThreshold?: number;\n }): void {\n if (filters.limit !== undefined && (typeof filters.limit !== \"number\" || filters.limit <= 0)) {\n throw new MemoryValidationError(\"Limit must be a positive integer\");\n }\n\n if (filters.offset !== undefined && (typeof filters.offset !== \"number\" || filters.offset < 0)) {\n throw new MemoryValidationError(\"Offset must be a non-negative integer\");\n }\n\n if (\n filters.distanceThreshold !== undefined &&\n (typeof filters.distanceThreshold !== \"number\" || filters.distanceThreshold < 0)\n ) {\n throw new MemoryValidationError(\"Distance threshold must be a non-negative number\");\n }\n }\n\n /**\n * Check if a string is a valid ULID.\n */\n private isValidUlid(id: string): boolean {\n // ULID: 26 characters, Crockford Base32\n const ulidRegex = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i;\n return ulidRegex.test(id);\n }\n\n /**\n * Bulk create long-term memories with rate limiting.\n * Useful for importing large datasets.\n */\n async bulkCreateLongTermMemories(\n memoryBatches: MemoryRecord[][],\n options: {\n batchSize?: number;\n delayBetweenBatches?: number;\n namespace?: string;\n } = {}\n ): Promise<AckResponse[]> {\n const { batchSize = 50, delayBetweenBatches = 100, namespace } = options;\n const results: AckResponse[] = [];\n\n for (const batch of memoryBatches) {\n // Split large batches into smaller chunks\n for (let i = 0; i < batch.length; i += batchSize) {\n const chunk = batch.slice(i, i + batchSize);\n const response = await this.createLongTermMemory(chunk, { namespace });\n results.push(response);\n\n // Rate limiting delay\n if (delayBetweenBatches > 0) {\n await this.sleep(delayBetweenBatches);\n }\n }\n }\n\n return results;\n }\n\n /**\n * Auto-paginating search that yields all matching long-term memory results.\n * Automatically handles pagination to retrieve all results.\n */\n async *searchAllLongTermMemories(\n options: Omit<SearchOptions, \"limit\" | \"offset\"> & { batchSize?: number }\n ): AsyncGenerator<MemoryRecord, void, undefined> {\n const { batchSize = 50, ...searchOptions } = options;\n let offset = 0;\n\n while (true) {\n const results = await this.searchLongTermMemory({\n ...searchOptions,\n limit: batchSize,\n offset,\n });\n\n if (!results.memories || results.memories.length === 0) {\n break;\n }\n\n for (const memory of results.memories) {\n yield memory;\n }\n\n // If we got fewer results than batchSize, we've reached the end\n if (results.memories.length < batchSize) {\n break;\n }\n\n offset += batchSize;\n }\n }\n\n /**\n * Sleep for a specified number of milliseconds.\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -209,7 +209,7 @@ var MemoryType = class {
|
|
|
209
209
|
};
|
|
210
210
|
|
|
211
211
|
// src/client.ts
|
|
212
|
-
var VERSION = "0.1
|
|
212
|
+
var VERSION = "0.3.1";
|
|
213
213
|
var MemoryAPIClient = class {
|
|
214
214
|
config;
|
|
215
215
|
fetchFn;
|
|
@@ -287,11 +287,12 @@ var MemoryAPIClient = class {
|
|
|
287
287
|
*/
|
|
288
288
|
async handleHttpError(response) {
|
|
289
289
|
let message;
|
|
290
|
+
const text = await response.text();
|
|
290
291
|
try {
|
|
291
|
-
const body =
|
|
292
|
+
const body = JSON.parse(text);
|
|
292
293
|
message = body.detail || body.message || JSON.stringify(body);
|
|
293
294
|
} catch {
|
|
294
|
-
message =
|
|
295
|
+
message = text || `HTTP ${response.status}`;
|
|
295
296
|
}
|
|
296
297
|
if (response.status === 404) {
|
|
297
298
|
throw new MemoryNotFoundError(message);
|
|
@@ -624,6 +625,101 @@ var MemoryAPIClient = class {
|
|
|
624
625
|
throw error;
|
|
625
626
|
}
|
|
626
627
|
}
|
|
628
|
+
// ==================== Utility Methods ====================
|
|
629
|
+
/**
|
|
630
|
+
* Close the client and release any resources.
|
|
631
|
+
* This is a no-op for the fetch-based client but provided for API consistency.
|
|
632
|
+
*/
|
|
633
|
+
close() {
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* Validate a memory record before sending to the server.
|
|
637
|
+
* @throws MemoryValidationError if validation fails
|
|
638
|
+
*/
|
|
639
|
+
validateMemoryRecord(memory) {
|
|
640
|
+
if (!memory.text || !memory.text.trim()) {
|
|
641
|
+
throw new MemoryValidationError("Memory text cannot be empty");
|
|
642
|
+
}
|
|
643
|
+
const validMemoryTypes = ["episodic", "semantic", "message"];
|
|
644
|
+
if (memory.memory_type && !validMemoryTypes.includes(memory.memory_type)) {
|
|
645
|
+
throw new MemoryValidationError(`Invalid memory type: ${memory.memory_type}`);
|
|
646
|
+
}
|
|
647
|
+
if (memory.id && !this.isValidUlid(memory.id)) {
|
|
648
|
+
throw new MemoryValidationError(`Invalid ID format: ${memory.id}`);
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Validate search filter parameters before API call.
|
|
653
|
+
* @throws MemoryValidationError if validation fails
|
|
654
|
+
*/
|
|
655
|
+
validateSearchFilters(filters) {
|
|
656
|
+
if (filters.limit !== void 0 && (typeof filters.limit !== "number" || filters.limit <= 0)) {
|
|
657
|
+
throw new MemoryValidationError("Limit must be a positive integer");
|
|
658
|
+
}
|
|
659
|
+
if (filters.offset !== void 0 && (typeof filters.offset !== "number" || filters.offset < 0)) {
|
|
660
|
+
throw new MemoryValidationError("Offset must be a non-negative integer");
|
|
661
|
+
}
|
|
662
|
+
if (filters.distanceThreshold !== void 0 && (typeof filters.distanceThreshold !== "number" || filters.distanceThreshold < 0)) {
|
|
663
|
+
throw new MemoryValidationError("Distance threshold must be a non-negative number");
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* Check if a string is a valid ULID.
|
|
668
|
+
*/
|
|
669
|
+
isValidUlid(id) {
|
|
670
|
+
const ulidRegex = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i;
|
|
671
|
+
return ulidRegex.test(id);
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Bulk create long-term memories with rate limiting.
|
|
675
|
+
* Useful for importing large datasets.
|
|
676
|
+
*/
|
|
677
|
+
async bulkCreateLongTermMemories(memoryBatches, options = {}) {
|
|
678
|
+
const { batchSize = 50, delayBetweenBatches = 100, namespace } = options;
|
|
679
|
+
const results = [];
|
|
680
|
+
for (const batch of memoryBatches) {
|
|
681
|
+
for (let i = 0; i < batch.length; i += batchSize) {
|
|
682
|
+
const chunk = batch.slice(i, i + batchSize);
|
|
683
|
+
const response = await this.createLongTermMemory(chunk, { namespace });
|
|
684
|
+
results.push(response);
|
|
685
|
+
if (delayBetweenBatches > 0) {
|
|
686
|
+
await this.sleep(delayBetweenBatches);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
return results;
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Auto-paginating search that yields all matching long-term memory results.
|
|
694
|
+
* Automatically handles pagination to retrieve all results.
|
|
695
|
+
*/
|
|
696
|
+
async *searchAllLongTermMemories(options) {
|
|
697
|
+
const { batchSize = 50, ...searchOptions } = options;
|
|
698
|
+
let offset = 0;
|
|
699
|
+
while (true) {
|
|
700
|
+
const results = await this.searchLongTermMemory({
|
|
701
|
+
...searchOptions,
|
|
702
|
+
limit: batchSize,
|
|
703
|
+
offset
|
|
704
|
+
});
|
|
705
|
+
if (!results.memories || results.memories.length === 0) {
|
|
706
|
+
break;
|
|
707
|
+
}
|
|
708
|
+
for (const memory of results.memories) {
|
|
709
|
+
yield memory;
|
|
710
|
+
}
|
|
711
|
+
if (results.memories.length < batchSize) {
|
|
712
|
+
break;
|
|
713
|
+
}
|
|
714
|
+
offset += batchSize;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* Sleep for a specified number of milliseconds.
|
|
719
|
+
*/
|
|
720
|
+
sleep(ms) {
|
|
721
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
722
|
+
}
|
|
627
723
|
};
|
|
628
724
|
|
|
629
725
|
export { CreatedAt, Entities, EventDate, LastAccessed, MemoryAPIClient, MemoryClientError, MemoryNotFoundError, MemoryServerError, MemoryType, MemoryValidationError, Namespace, SessionId, Topics, UserId };
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/filters.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Exception classes for the Agent Memory Client.\n */\n\n/**\n * Base error for all memory client errors.\n */\nexport class MemoryClientError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryClientError\";\n // Maintains proper stack trace for where our error was thrown (only in V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MemoryClientError);\n }\n }\n}\n\n/**\n * Raised when memory record or filter validation fails.\n */\nexport class MemoryValidationError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryValidationError\";\n }\n}\n\n/**\n * Raised when a requested memory or session is not found.\n */\nexport class MemoryNotFoundError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\n/**\n * Raised when the memory server returns an error.\n */\nexport class MemoryServerError extends MemoryClientError {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"MemoryServerError\";\n this.statusCode = statusCode;\n }\n}\n","/**\n * Filter classes for search operations.\n *\n * These filters allow for filtering memory search results.\n */\n\n/**\n * Filter by session ID\n */\nexport class SessionId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n this.ne = options.ne;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n if (this.ne !== undefined) result.ne = this.ne;\n return result;\n }\n}\n\n/**\n * Filter by namespace\n */\nexport class Namespace {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by user ID\n */\nexport class UserId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by topics\n */\nexport class Topics {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by entities\n */\nexport class Entities {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by creation date\n */\nexport class CreatedAt {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by last accessed date\n */\nexport class LastAccessed {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by event date\n */\nexport class EventDate {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by memory type\n */\nexport class MemoryType {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n","/**\n * Agent Memory API Client\n *\n * A TypeScript/JavaScript client for the Agent Memory Server REST API.\n */\n\nimport {\n MemoryClientError,\n MemoryNotFoundError,\n MemoryServerError,\n} from \"./errors\";\nimport {\n SessionId,\n Namespace,\n UserId,\n Topics,\n Entities,\n CreatedAt,\n LastAccessed,\n EventDate,\n MemoryType,\n} from \"./filters\";\nimport {\n AckResponse,\n CreateSummaryViewRequest,\n ForgetPolicy,\n ForgetResponse,\n HealthCheckResponse,\n MemoryPromptRequest,\n MemoryPromptResponse,\n MemoryRecord,\n MemoryRecordResults,\n MemoryStrategyConfig,\n ModelNameLiteral,\n RecencyConfig,\n SessionListResponse,\n SummaryView,\n SummaryViewPartitionResult,\n Task,\n WorkingMemory,\n WorkingMemoryResponse,\n} from \"./models\";\n\nconst VERSION = \"0.1.0\";\n\n/**\n * Configuration for the Memory API Client\n */\nexport interface MemoryClientConfig {\n /** Base URL of the memory server (e.g., 'http://localhost:8000') */\n baseUrl: string;\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Optional default namespace to use for operations */\n defaultNamespace?: string;\n /** Optional default model name for auto-summarization */\n defaultModelName?: ModelNameLiteral;\n /** Optional default context window limit for auto-summarization */\n defaultContextWindowMax?: number;\n /** Optional API key for authentication */\n apiKey?: string;\n /** Optional bearer token for authentication */\n bearerToken?: string;\n /** Custom fetch function (for testing or custom implementations) */\n fetch?: typeof fetch;\n}\n\n/**\n * Options for search operations\n */\nexport interface SearchOptions {\n text: string;\n sessionId?: SessionId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n namespace?: Namespace | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n topics?: Topics | { any?: string[]; all?: string[]; none?: string[] };\n entities?: Entities | { any?: string[]; all?: string[]; none?: string[] };\n createdAt?: CreatedAt | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n lastAccessed?: LastAccessed | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n userId?: UserId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n memoryType?: MemoryType | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n eventDate?: EventDate | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n distanceThreshold?: number;\n limit?: number;\n offset?: number;\n recency?: RecencyConfig;\n optimizeQuery?: boolean;\n}\n\n/**\n * Client for the Agent Memory Server REST API.\n *\n * Provides methods to interact with all server endpoints:\n * - Health check\n * - Session management (list, get, put, delete)\n * - Long-term memory (create, search, edit, delete)\n */\nexport class MemoryAPIClient {\n private readonly config: Required<\n Pick<MemoryClientConfig, \"baseUrl\" | \"timeout\">\n > &\n MemoryClientConfig;\n private readonly fetchFn: typeof fetch;\n\n constructor(config: MemoryClientConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"), // Remove trailing slash\n };\n this.fetchFn = config.fetch ?? fetch;\n }\n\n /**\n * Get default headers for requests\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": `agent-memory-client-js/${VERSION}`,\n \"X-Client-Version\": VERSION,\n };\n\n if (this.config.apiKey) {\n headers[\"X-API-Key\"] = this.config.apiKey;\n }\n if (this.config.bearerToken) {\n headers[\"Authorization\"] = `Bearer ${this.config.bearerToken}`;\n }\n\n return headers;\n }\n\n /**\n * Make an HTTP request with error handling\n */\n private async request<T>(\n method: string,\n path: string,\n options: {\n body?: unknown;\n params?: Record<string, string | number | boolean | string[] | undefined>;\n } = {}\n ): Promise<T> {\n const url = new URL(path, this.config.baseUrl);\n\n // Add query parameters\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // Handle array params by appending multiple values with the same key\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await this.fetchFn(url.toString(), {\n method,\n headers: this.getHeaders(),\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n return this.handleHttpError(response);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof MemoryClientError) {\n throw error;\n }\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new MemoryClientError(`Request timeout after ${this.config.timeout}ms`);\n }\n throw new MemoryClientError(`Request failed: ${String(error)}`);\n }\n }\n\n /**\n * Handle HTTP error responses\n */\n private async handleHttpError(response: Response): Promise<never> {\n let message: string;\n try {\n const body = (await response.json()) as Record<string, unknown>;\n message =\n (body.detail as string) || (body.message as string) || JSON.stringify(body);\n } catch {\n message = await response.text();\n }\n\n if (response.status === 404) {\n throw new MemoryNotFoundError(message);\n }\n throw new MemoryServerError(message, response.status);\n }\n\n // ==================== Health ====================\n\n /**\n * Check server health\n */\n async healthCheck(): Promise<HealthCheckResponse> {\n return this.request<HealthCheckResponse>(\"GET\", \"/v1/health\");\n }\n\n // ==================== Working Memory ====================\n\n /**\n * List all session IDs\n */\n async listSessions(options: {\n namespace?: string;\n limit?: number;\n offset?: number;\n } = {}): Promise<SessionListResponse> {\n return this.request<SessionListResponse>(\"GET\", \"/v1/working-memory/\", {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n limit: options.limit,\n offset: options.offset,\n },\n });\n }\n\n /**\n * Get working memory for a session\n */\n async getWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n } = {}\n ): Promise<WorkingMemoryResponse | null> {\n try {\n return await this.request<WorkingMemoryResponse>(\n \"GET\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Get or create working memory for a session\n */\n async getOrCreateWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n userId?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n ttlSeconds?: number;\n longTermMemoryStrategy?: MemoryStrategyConfig;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const existing = await this.getWorkingMemory(sessionId, options);\n if (existing) {\n return existing;\n }\n\n // Create new working memory\n const workingMemory: WorkingMemory = {\n session_id: sessionId,\n namespace: options.namespace ?? this.config.defaultNamespace,\n user_id: options.userId,\n messages: [],\n memories: [],\n ttl_seconds: options.ttlSeconds,\n long_term_memory_strategy: options.longTermMemoryStrategy,\n };\n\n return this.putWorkingMemory(sessionId, workingMemory, options);\n }\n\n /**\n * Create or update working memory for a session\n */\n async putWorkingMemory(\n sessionId: string,\n workingMemory: Partial<WorkingMemory>,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n background?: boolean;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const body: WorkingMemory = {\n session_id: sessionId,\n ...workingMemory,\n namespace: workingMemory.namespace ?? options.namespace ?? this.config.defaultNamespace,\n };\n\n return this.request<WorkingMemoryResponse>(\n \"PUT\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n body,\n params: {\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n background: options.background,\n },\n }\n );\n }\n\n /**\n * Delete working memory for a session\n */\n async deleteWorkingMemory(\n sessionId: string,\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n }\n\n // ==================== Long-term Memory ====================\n\n /**\n * Create long-term memory records\n */\n async createLongTermMemory(\n memories: MemoryRecord[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"POST\", \"/v1/long-term-memory/\", {\n body: { memories },\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n /**\n * Search long-term memory\n */\n async searchLongTermMemory(options: SearchOptions): Promise<MemoryRecordResults> {\n const body: Record<string, unknown> = {\n text: options.text,\n limit: options.limit,\n offset: options.offset,\n distance_threshold: options.distanceThreshold,\n };\n\n // Add filters\n if (options.sessionId) {\n body.session_id =\n options.sessionId instanceof SessionId\n ? options.sessionId.toJSON()\n : options.sessionId;\n }\n if (options.namespace) {\n body.namespace =\n options.namespace instanceof Namespace\n ? options.namespace.toJSON()\n : options.namespace;\n }\n if (options.topics) {\n body.topics =\n options.topics instanceof Topics ? options.topics.toJSON() : options.topics;\n }\n if (options.entities) {\n body.entities =\n options.entities instanceof Entities\n ? options.entities.toJSON()\n : options.entities;\n }\n if (options.createdAt) {\n body.created_at =\n options.createdAt instanceof CreatedAt\n ? options.createdAt.toJSON()\n : options.createdAt;\n }\n if (options.lastAccessed) {\n body.last_accessed =\n options.lastAccessed instanceof LastAccessed\n ? options.lastAccessed.toJSON()\n : options.lastAccessed;\n }\n if (options.userId) {\n body.user_id =\n options.userId instanceof UserId ? options.userId.toJSON() : options.userId;\n }\n if (options.memoryType) {\n body.memory_type =\n options.memoryType instanceof MemoryType\n ? options.memoryType.toJSON()\n : options.memoryType;\n }\n if (options.eventDate) {\n body.event_date =\n options.eventDate instanceof EventDate\n ? options.eventDate.toJSON()\n : options.eventDate;\n }\n\n // Add recency config\n if (options.recency) {\n body.recency_boost = options.recency.recency_boost;\n body.recency_semantic_weight = options.recency.semantic_weight;\n body.recency_recency_weight = options.recency.recency_weight;\n body.recency_freshness_weight = options.recency.freshness_weight;\n body.recency_novelty_weight = options.recency.novelty_weight;\n body.recency_half_life_last_access_days = options.recency.half_life_last_access_days;\n body.recency_half_life_created_days = options.recency.half_life_created_days;\n body.server_side_recency = options.recency.server_side_recency;\n }\n\n return this.request<MemoryRecordResults>(\"POST\", \"/v1/long-term-memory/search\", {\n body,\n });\n }\n\n /**\n * Get a long-term memory by ID\n */\n async getLongTermMemory(\n memoryId: string,\n options: { namespace?: string } = {}\n ): Promise<MemoryRecord | null> {\n try {\n return await this.request<MemoryRecord>(\n \"GET\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete long-term memories by IDs\n */\n async deleteLongTermMemories(\n memoryIds: string[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"DELETE\", \"/v1/long-term-memory\", {\n params: {\n memory_ids: memoryIds,\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n // ==================== Memory Prompt ====================\n\n /**\n * Get memory-enhanced prompt\n */\n async memoryPrompt(request: MemoryPromptRequest): Promise<MemoryPromptResponse> {\n return this.request<MemoryPromptResponse>(\"POST\", \"/v1/memory/prompt\", {\n body: request,\n });\n }\n\n // ==================== Edit Long-term Memory ====================\n\n /**\n * Edit a long-term memory by ID\n */\n async editLongTermMemory(\n memoryId: string,\n updates: Partial<MemoryRecord>\n ): Promise<MemoryRecord> {\n return this.request<MemoryRecord>(\n \"PATCH\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n { body: updates }\n );\n }\n\n // ==================== Forget ====================\n\n /**\n * Run a forgetting pass with the provided policy\n */\n async forgetLongTermMemories(options: {\n policy: ForgetPolicy;\n namespace?: string;\n userId?: string;\n sessionId?: string;\n limit?: number;\n dryRun?: boolean;\n pinnedIds?: string[];\n }): Promise<ForgetResponse> {\n return this.request<ForgetResponse>(\"POST\", \"/v1/long-term-memory/forget\", {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n limit: options.limit,\n dry_run: options.dryRun,\n },\n body: {\n policy: options.policy,\n pinned_ids: options.pinnedIds,\n },\n });\n }\n\n // ==================== Summary Views ====================\n\n /**\n * List all summary views\n */\n async listSummaryViews(): Promise<SummaryView[]> {\n return this.request<SummaryView[]>(\"GET\", \"/v1/summary-views\");\n }\n\n /**\n * Create a new summary view\n */\n async createSummaryView(request: CreateSummaryViewRequest): Promise<SummaryView> {\n return this.request<SummaryView>(\"POST\", \"/v1/summary-views\", {\n body: request,\n });\n }\n\n /**\n * Get a summary view by ID\n */\n async getSummaryView(viewId: string): Promise<SummaryView | null> {\n try {\n return await this.request<SummaryView>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete a summary view\n */\n async deleteSummaryView(viewId: string): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n }\n\n /**\n * Run a summary view partition\n */\n async runSummaryViewPartition(\n viewId: string,\n group: Record<string, string>\n ): Promise<SummaryViewPartitionResult> {\n return this.request<SummaryViewPartitionResult>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions/run`,\n { body: { group } }\n );\n }\n\n /**\n * List summary view partitions\n */\n async listSummaryViewPartitions(\n viewId: string,\n options: {\n namespace?: string;\n userId?: string;\n sessionId?: string;\n memoryType?: string;\n } = {}\n ): Promise<SummaryViewPartitionResult[]> {\n return this.request<SummaryViewPartitionResult[]>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions`,\n {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n memory_type: options.memoryType,\n },\n }\n );\n }\n\n /**\n * Run a full summary view (async task)\n */\n async runSummaryView(\n viewId: string,\n options: { force?: boolean } = {}\n ): Promise<Task> {\n return this.request<Task>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/run`,\n { body: options }\n );\n }\n\n // ==================== Tasks ====================\n\n /**\n * Get a task by ID\n */\n async getTask(taskId: string): Promise<Task | null> {\n try {\n return await this.request<Task>(\n \"GET\",\n `/v1/tasks/${encodeURIComponent(taskId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/filters.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Exception classes for the Agent Memory Client.\n */\n\n/**\n * Base error for all memory client errors.\n */\nexport class MemoryClientError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryClientError\";\n // Maintains proper stack trace for where our error was thrown (only in V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MemoryClientError);\n }\n }\n}\n\n/**\n * Raised when memory record or filter validation fails.\n */\nexport class MemoryValidationError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryValidationError\";\n }\n}\n\n/**\n * Raised when a requested memory or session is not found.\n */\nexport class MemoryNotFoundError extends MemoryClientError {\n constructor(message: string) {\n super(message);\n this.name = \"MemoryNotFoundError\";\n }\n}\n\n/**\n * Raised when the memory server returns an error.\n */\nexport class MemoryServerError extends MemoryClientError {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"MemoryServerError\";\n this.statusCode = statusCode;\n }\n}\n","/**\n * Filter classes for search operations.\n *\n * These filters allow for filtering memory search results.\n */\n\n/**\n * Filter by session ID\n */\nexport class SessionId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n ne?: string;\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n this.ne = options.ne;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n if (this.ne !== undefined) result.ne = this.ne;\n return result;\n }\n}\n\n/**\n * Filter by namespace\n */\nexport class Namespace {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by user ID\n */\nexport class UserId {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n\n/**\n * Filter by topics\n */\nexport class Topics {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by entities\n */\nexport class Entities {\n any?: string[];\n all?: string[];\n none?: string[];\n\n constructor(options: {\n any?: string[];\n all?: string[];\n none?: string[];\n } = {}) {\n this.any = options.any;\n this.all = options.all;\n this.none = options.none;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.any !== undefined) result.any = this.any;\n if (this.all !== undefined) result.all = this.all;\n if (this.none !== undefined) result.none = this.none;\n return result;\n }\n}\n\n/**\n * Filter by creation date\n */\nexport class CreatedAt {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by last accessed date\n */\nexport class LastAccessed {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by event date\n */\nexport class EventDate {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n\n constructor(options: {\n gte?: Date | string;\n lte?: Date | string;\n eq?: Date | string;\n } = {}) {\n this.gte = options.gte;\n this.lte = options.lte;\n this.eq = options.eq;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.gte !== undefined)\n result.gte = this.gte instanceof Date ? this.gte.toISOString() : this.gte;\n if (this.lte !== undefined)\n result.lte = this.lte instanceof Date ? this.lte.toISOString() : this.lte;\n if (this.eq !== undefined)\n result.eq = this.eq instanceof Date ? this.eq.toISOString() : this.eq;\n return result;\n }\n}\n\n/**\n * Filter by memory type\n */\nexport class MemoryType {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n\n constructor(options: {\n eq?: string;\n in_?: string[];\n not_eq?: string;\n not_in?: string[];\n } = {}) {\n this.eq = options.eq;\n this.in_ = options.in_;\n this.not_eq = options.not_eq;\n this.not_in = options.not_in;\n }\n\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (this.eq !== undefined) result.eq = this.eq;\n if (this.in_ !== undefined) result.in_ = this.in_;\n if (this.not_eq !== undefined) result.not_eq = this.not_eq;\n if (this.not_in !== undefined) result.not_in = this.not_in;\n return result;\n }\n}\n","/**\n * Agent Memory API Client\n *\n * A TypeScript/JavaScript client for the Agent Memory Server REST API.\n */\n\nimport {\n MemoryClientError,\n MemoryNotFoundError,\n MemoryServerError,\n MemoryValidationError,\n} from \"./errors\";\nimport {\n SessionId,\n Namespace,\n UserId,\n Topics,\n Entities,\n CreatedAt,\n LastAccessed,\n EventDate,\n MemoryType,\n} from \"./filters\";\nimport {\n AckResponse,\n CreateSummaryViewRequest,\n ForgetPolicy,\n ForgetResponse,\n HealthCheckResponse,\n MemoryPromptRequest,\n MemoryPromptResponse,\n MemoryRecord,\n MemoryRecordResults,\n MemoryStrategyConfig,\n ModelNameLiteral,\n RecencyConfig,\n SessionListResponse,\n SummaryView,\n SummaryViewPartitionResult,\n Task,\n WorkingMemory,\n WorkingMemoryResponse,\n} from \"./models\";\n\nconst VERSION = \"0.3.1\";\n\n/**\n * Configuration for the Memory API Client\n */\nexport interface MemoryClientConfig {\n /** Base URL of the memory server (e.g., 'http://localhost:8000') */\n baseUrl: string;\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Optional default namespace to use for operations */\n defaultNamespace?: string;\n /** Optional default model name for auto-summarization */\n defaultModelName?: ModelNameLiteral;\n /** Optional default context window limit for auto-summarization */\n defaultContextWindowMax?: number;\n /** Optional API key for authentication */\n apiKey?: string;\n /** Optional bearer token for authentication */\n bearerToken?: string;\n /** Custom fetch function (for testing or custom implementations) */\n fetch?: typeof fetch;\n}\n\n/**\n * Options for search operations\n */\nexport interface SearchOptions {\n text: string;\n sessionId?: SessionId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n namespace?: Namespace | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n topics?: Topics | { any?: string[]; all?: string[]; none?: string[] };\n entities?: Entities | { any?: string[]; all?: string[]; none?: string[] };\n createdAt?: CreatedAt | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n lastAccessed?: LastAccessed | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n userId?: UserId | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n memoryType?: MemoryType | { eq?: string; in_?: string[]; not_eq?: string; not_in?: string[] };\n eventDate?: EventDate | { gte?: Date | string; lte?: Date | string; eq?: Date | string };\n distanceThreshold?: number;\n limit?: number;\n offset?: number;\n recency?: RecencyConfig;\n optimizeQuery?: boolean;\n}\n\n/**\n * Client for the Agent Memory Server REST API.\n *\n * Provides methods to interact with all server endpoints:\n * - Health check\n * - Session management (list, get, put, delete)\n * - Long-term memory (create, search, edit, delete)\n */\nexport class MemoryAPIClient {\n private readonly config: Required<\n Pick<MemoryClientConfig, \"baseUrl\" | \"timeout\">\n > &\n MemoryClientConfig;\n private readonly fetchFn: typeof fetch;\n\n constructor(config: MemoryClientConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"), // Remove trailing slash\n };\n this.fetchFn = config.fetch ?? fetch;\n }\n\n /**\n * Get default headers for requests\n */\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": `agent-memory-client-js/${VERSION}`,\n \"X-Client-Version\": VERSION,\n };\n\n if (this.config.apiKey) {\n headers[\"X-API-Key\"] = this.config.apiKey;\n }\n if (this.config.bearerToken) {\n headers[\"Authorization\"] = `Bearer ${this.config.bearerToken}`;\n }\n\n return headers;\n }\n\n /**\n * Make an HTTP request with error handling\n */\n private async request<T>(\n method: string,\n path: string,\n options: {\n body?: unknown;\n params?: Record<string, string | number | boolean | string[] | undefined>;\n } = {}\n ): Promise<T> {\n const url = new URL(path, this.config.baseUrl);\n\n // Add query parameters\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n // Handle array params by appending multiple values with the same key\n for (const item of value) {\n url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const response = await this.fetchFn(url.toString(), {\n method,\n headers: this.getHeaders(),\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n return this.handleHttpError(response);\n }\n\n return (await response.json()) as T;\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof MemoryClientError) {\n throw error;\n }\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new MemoryClientError(`Request timeout after ${this.config.timeout}ms`);\n }\n throw new MemoryClientError(`Request failed: ${String(error)}`);\n }\n }\n\n /**\n * Handle HTTP error responses\n */\n private async handleHttpError(response: Response): Promise<never> {\n let message: string;\n // Read body as text first to avoid \"Body has already been read\" errors\n const text = await response.text();\n try {\n const body = JSON.parse(text) as Record<string, unknown>;\n message =\n (body.detail as string) || (body.message as string) || JSON.stringify(body);\n } catch {\n message = text || `HTTP ${response.status}`;\n }\n\n if (response.status === 404) {\n throw new MemoryNotFoundError(message);\n }\n throw new MemoryServerError(message, response.status);\n }\n\n // ==================== Health ====================\n\n /**\n * Check server health\n */\n async healthCheck(): Promise<HealthCheckResponse> {\n return this.request<HealthCheckResponse>(\"GET\", \"/v1/health\");\n }\n\n // ==================== Working Memory ====================\n\n /**\n * List all session IDs\n */\n async listSessions(options: {\n namespace?: string;\n limit?: number;\n offset?: number;\n } = {}): Promise<SessionListResponse> {\n return this.request<SessionListResponse>(\"GET\", \"/v1/working-memory/\", {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n limit: options.limit,\n offset: options.offset,\n },\n });\n }\n\n /**\n * Get working memory for a session\n */\n async getWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n } = {}\n ): Promise<WorkingMemoryResponse | null> {\n try {\n return await this.request<WorkingMemoryResponse>(\n \"GET\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Get or create working memory for a session\n */\n async getOrCreateWorkingMemory(\n sessionId: string,\n options: {\n namespace?: string;\n userId?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n ttlSeconds?: number;\n longTermMemoryStrategy?: MemoryStrategyConfig;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const existing = await this.getWorkingMemory(sessionId, options);\n if (existing) {\n return existing;\n }\n\n // Create new working memory\n const workingMemory: WorkingMemory = {\n session_id: sessionId,\n namespace: options.namespace ?? this.config.defaultNamespace,\n user_id: options.userId,\n messages: [],\n memories: [],\n ttl_seconds: options.ttlSeconds,\n long_term_memory_strategy: options.longTermMemoryStrategy,\n };\n\n return this.putWorkingMemory(sessionId, workingMemory, options);\n }\n\n /**\n * Create or update working memory for a session\n */\n async putWorkingMemory(\n sessionId: string,\n workingMemory: Partial<WorkingMemory>,\n options: {\n namespace?: string;\n modelName?: ModelNameLiteral;\n contextWindowMax?: number;\n background?: boolean;\n } = {}\n ): Promise<WorkingMemoryResponse> {\n const body: WorkingMemory = {\n session_id: sessionId,\n ...workingMemory,\n namespace: workingMemory.namespace ?? options.namespace ?? this.config.defaultNamespace,\n };\n\n return this.request<WorkingMemoryResponse>(\n \"PUT\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n body,\n params: {\n model_name: options.modelName ?? this.config.defaultModelName,\n context_window_max: options.contextWindowMax ?? this.config.defaultContextWindowMax,\n background: options.background,\n },\n }\n );\n }\n\n /**\n * Delete working memory for a session\n */\n async deleteWorkingMemory(\n sessionId: string,\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/working-memory/${encodeURIComponent(sessionId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n }\n\n // ==================== Long-term Memory ====================\n\n /**\n * Create long-term memory records\n */\n async createLongTermMemory(\n memories: MemoryRecord[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"POST\", \"/v1/long-term-memory/\", {\n body: { memories },\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n /**\n * Search long-term memory\n */\n async searchLongTermMemory(options: SearchOptions): Promise<MemoryRecordResults> {\n const body: Record<string, unknown> = {\n text: options.text,\n limit: options.limit,\n offset: options.offset,\n distance_threshold: options.distanceThreshold,\n };\n\n // Add filters\n if (options.sessionId) {\n body.session_id =\n options.sessionId instanceof SessionId\n ? options.sessionId.toJSON()\n : options.sessionId;\n }\n if (options.namespace) {\n body.namespace =\n options.namespace instanceof Namespace\n ? options.namespace.toJSON()\n : options.namespace;\n }\n if (options.topics) {\n body.topics =\n options.topics instanceof Topics ? options.topics.toJSON() : options.topics;\n }\n if (options.entities) {\n body.entities =\n options.entities instanceof Entities\n ? options.entities.toJSON()\n : options.entities;\n }\n if (options.createdAt) {\n body.created_at =\n options.createdAt instanceof CreatedAt\n ? options.createdAt.toJSON()\n : options.createdAt;\n }\n if (options.lastAccessed) {\n body.last_accessed =\n options.lastAccessed instanceof LastAccessed\n ? options.lastAccessed.toJSON()\n : options.lastAccessed;\n }\n if (options.userId) {\n body.user_id =\n options.userId instanceof UserId ? options.userId.toJSON() : options.userId;\n }\n if (options.memoryType) {\n body.memory_type =\n options.memoryType instanceof MemoryType\n ? options.memoryType.toJSON()\n : options.memoryType;\n }\n if (options.eventDate) {\n body.event_date =\n options.eventDate instanceof EventDate\n ? options.eventDate.toJSON()\n : options.eventDate;\n }\n\n // Add recency config\n if (options.recency) {\n body.recency_boost = options.recency.recency_boost;\n body.recency_semantic_weight = options.recency.semantic_weight;\n body.recency_recency_weight = options.recency.recency_weight;\n body.recency_freshness_weight = options.recency.freshness_weight;\n body.recency_novelty_weight = options.recency.novelty_weight;\n body.recency_half_life_last_access_days = options.recency.half_life_last_access_days;\n body.recency_half_life_created_days = options.recency.half_life_created_days;\n body.server_side_recency = options.recency.server_side_recency;\n }\n\n return this.request<MemoryRecordResults>(\"POST\", \"/v1/long-term-memory/search\", {\n body,\n });\n }\n\n /**\n * Get a long-term memory by ID\n */\n async getLongTermMemory(\n memoryId: string,\n options: { namespace?: string } = {}\n ): Promise<MemoryRecord | null> {\n try {\n return await this.request<MemoryRecord>(\n \"GET\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n {\n params: {\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n }\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete long-term memories by IDs\n */\n async deleteLongTermMemories(\n memoryIds: string[],\n options: { namespace?: string } = {}\n ): Promise<AckResponse> {\n return this.request<AckResponse>(\"DELETE\", \"/v1/long-term-memory\", {\n params: {\n memory_ids: memoryIds,\n namespace: options.namespace ?? this.config.defaultNamespace,\n },\n });\n }\n\n // ==================== Memory Prompt ====================\n\n /**\n * Get memory-enhanced prompt\n */\n async memoryPrompt(request: MemoryPromptRequest): Promise<MemoryPromptResponse> {\n return this.request<MemoryPromptResponse>(\"POST\", \"/v1/memory/prompt\", {\n body: request,\n });\n }\n\n // ==================== Edit Long-term Memory ====================\n\n /**\n * Edit a long-term memory by ID\n */\n async editLongTermMemory(\n memoryId: string,\n updates: Partial<MemoryRecord>\n ): Promise<MemoryRecord> {\n return this.request<MemoryRecord>(\n \"PATCH\",\n `/v1/long-term-memory/${encodeURIComponent(memoryId)}`,\n { body: updates }\n );\n }\n\n // ==================== Forget ====================\n\n /**\n * Run a forgetting pass with the provided policy\n */\n async forgetLongTermMemories(options: {\n policy: ForgetPolicy;\n namespace?: string;\n userId?: string;\n sessionId?: string;\n limit?: number;\n dryRun?: boolean;\n pinnedIds?: string[];\n }): Promise<ForgetResponse> {\n return this.request<ForgetResponse>(\"POST\", \"/v1/long-term-memory/forget\", {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n limit: options.limit,\n dry_run: options.dryRun,\n },\n body: {\n policy: options.policy,\n pinned_ids: options.pinnedIds,\n },\n });\n }\n\n // ==================== Summary Views ====================\n\n /**\n * List all summary views\n */\n async listSummaryViews(): Promise<SummaryView[]> {\n return this.request<SummaryView[]>(\"GET\", \"/v1/summary-views\");\n }\n\n /**\n * Create a new summary view\n */\n async createSummaryView(request: CreateSummaryViewRequest): Promise<SummaryView> {\n return this.request<SummaryView>(\"POST\", \"/v1/summary-views\", {\n body: request,\n });\n }\n\n /**\n * Get a summary view by ID\n */\n async getSummaryView(viewId: string): Promise<SummaryView | null> {\n try {\n return await this.request<SummaryView>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n /**\n * Delete a summary view\n */\n async deleteSummaryView(viewId: string): Promise<AckResponse> {\n return this.request<AckResponse>(\n \"DELETE\",\n `/v1/summary-views/${encodeURIComponent(viewId)}`\n );\n }\n\n /**\n * Run a summary view partition\n */\n async runSummaryViewPartition(\n viewId: string,\n group: Record<string, string>\n ): Promise<SummaryViewPartitionResult> {\n return this.request<SummaryViewPartitionResult>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions/run`,\n { body: { group } }\n );\n }\n\n /**\n * List summary view partitions\n */\n async listSummaryViewPartitions(\n viewId: string,\n options: {\n namespace?: string;\n userId?: string;\n sessionId?: string;\n memoryType?: string;\n } = {}\n ): Promise<SummaryViewPartitionResult[]> {\n return this.request<SummaryViewPartitionResult[]>(\n \"GET\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/partitions`,\n {\n params: {\n namespace: options.namespace,\n user_id: options.userId,\n session_id: options.sessionId,\n memory_type: options.memoryType,\n },\n }\n );\n }\n\n /**\n * Run a full summary view (async task)\n */\n async runSummaryView(\n viewId: string,\n options: { force?: boolean } = {}\n ): Promise<Task> {\n return this.request<Task>(\n \"POST\",\n `/v1/summary-views/${encodeURIComponent(viewId)}/run`,\n { body: options }\n );\n }\n\n // ==================== Tasks ====================\n\n /**\n * Get a task by ID\n */\n async getTask(taskId: string): Promise<Task | null> {\n try {\n return await this.request<Task>(\n \"GET\",\n `/v1/tasks/${encodeURIComponent(taskId)}`\n );\n } catch (error) {\n if (error instanceof MemoryNotFoundError) {\n return null;\n }\n throw error;\n }\n }\n\n // ==================== Utility Methods ====================\n\n /**\n * Close the client and release any resources.\n * This is a no-op for the fetch-based client but provided for API consistency.\n */\n close(): void {\n // No-op for fetch-based client\n // Provided for API compatibility with other clients\n }\n\n /**\n * Validate a memory record before sending to the server.\n * @throws MemoryValidationError if validation fails\n */\n validateMemoryRecord(memory: MemoryRecord): void {\n if (!memory.text || !memory.text.trim()) {\n throw new MemoryValidationError(\"Memory text cannot be empty\");\n }\n\n const validMemoryTypes = [\"episodic\", \"semantic\", \"message\"];\n if (memory.memory_type && !validMemoryTypes.includes(memory.memory_type)) {\n throw new MemoryValidationError(`Invalid memory type: ${memory.memory_type}`);\n }\n\n if (memory.id && !this.isValidUlid(memory.id)) {\n throw new MemoryValidationError(`Invalid ID format: ${memory.id}`);\n }\n }\n\n /**\n * Validate search filter parameters before API call.\n * @throws MemoryValidationError if validation fails\n */\n validateSearchFilters(filters: {\n limit?: number;\n offset?: number;\n distanceThreshold?: number;\n }): void {\n if (filters.limit !== undefined && (typeof filters.limit !== \"number\" || filters.limit <= 0)) {\n throw new MemoryValidationError(\"Limit must be a positive integer\");\n }\n\n if (filters.offset !== undefined && (typeof filters.offset !== \"number\" || filters.offset < 0)) {\n throw new MemoryValidationError(\"Offset must be a non-negative integer\");\n }\n\n if (\n filters.distanceThreshold !== undefined &&\n (typeof filters.distanceThreshold !== \"number\" || filters.distanceThreshold < 0)\n ) {\n throw new MemoryValidationError(\"Distance threshold must be a non-negative number\");\n }\n }\n\n /**\n * Check if a string is a valid ULID.\n */\n private isValidUlid(id: string): boolean {\n // ULID: 26 characters, Crockford Base32\n const ulidRegex = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i;\n return ulidRegex.test(id);\n }\n\n /**\n * Bulk create long-term memories with rate limiting.\n * Useful for importing large datasets.\n */\n async bulkCreateLongTermMemories(\n memoryBatches: MemoryRecord[][],\n options: {\n batchSize?: number;\n delayBetweenBatches?: number;\n namespace?: string;\n } = {}\n ): Promise<AckResponse[]> {\n const { batchSize = 50, delayBetweenBatches = 100, namespace } = options;\n const results: AckResponse[] = [];\n\n for (const batch of memoryBatches) {\n // Split large batches into smaller chunks\n for (let i = 0; i < batch.length; i += batchSize) {\n const chunk = batch.slice(i, i + batchSize);\n const response = await this.createLongTermMemory(chunk, { namespace });\n results.push(response);\n\n // Rate limiting delay\n if (delayBetweenBatches > 0) {\n await this.sleep(delayBetweenBatches);\n }\n }\n }\n\n return results;\n }\n\n /**\n * Auto-paginating search that yields all matching long-term memory results.\n * Automatically handles pagination to retrieve all results.\n */\n async *searchAllLongTermMemories(\n options: Omit<SearchOptions, \"limit\" | \"offset\"> & { batchSize?: number }\n ): AsyncGenerator<MemoryRecord, void, undefined> {\n const { batchSize = 50, ...searchOptions } = options;\n let offset = 0;\n\n while (true) {\n const results = await this.searchLongTermMemory({\n ...searchOptions,\n limit: batchSize,\n offset,\n });\n\n if (!results.memories || results.memories.length === 0) {\n break;\n }\n\n for (const memory of results.memories) {\n yield memory;\n }\n\n // If we got fewer results than batchSize, we've reached the end\n if (results.memories.length < batchSize) {\n break;\n }\n\n offset += batchSize;\n }\n }\n\n /**\n * Sleep for a specified number of milliseconds.\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-memory-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "JavaScript/TypeScript client for the Agent Memory Server REST API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -53,15 +53,15 @@
|
|
|
53
53
|
"node": ">=20.0.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@types/node": "^
|
|
57
|
-
"@vitest/coverage-v8": "^
|
|
58
|
-
"eslint": "^
|
|
56
|
+
"@types/node": "^25.1.0",
|
|
57
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
58
|
+
"eslint": "^9.39.2",
|
|
59
59
|
"prettier": "^3.2.0",
|
|
60
60
|
"tsup": "^8.0.0",
|
|
61
61
|
"typescript": "^5.4.0",
|
|
62
|
-
"vitest": "^
|
|
62
|
+
"vitest": "^4.0.18"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"ulid": "^
|
|
65
|
+
"ulid": "^3.0.2"
|
|
66
66
|
}
|
|
67
67
|
}
|