@sovant/sdk 1.4.1 → 1.4.3

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 CHANGED
@@ -199,12 +199,54 @@ const recall = await sv.memory.recall({
199
199
  console.log(recall.results);
200
200
  ```
201
201
 
202
+ ## List Memories
203
+
204
+ Fetch memories with filtering and pagination. Use `list()` to retrieve recent memories or filter by criteria — it's more efficient than `search()` when you don't need vector similarity.
205
+
206
+ ```typescript
207
+ // List recent memories
208
+ const { memories, total, has_more } = await sv.memory.list({
209
+ limit: 20,
210
+ offset: 0
211
+ });
212
+
213
+ // Filter by thread
214
+ const threadMemories = await sv.memory.list({
215
+ thread_id: "thread-uuid",
216
+ limit: 50
217
+ });
218
+
219
+ // Filter by type and tags
220
+ const preferences = await sv.memory.list({
221
+ type: "preference",
222
+ tags: ["settings"],
223
+ sort_by: "updated_at",
224
+ sort_order: "desc"
225
+ });
226
+
227
+ // Pinned memories only
228
+ const pinned = await sv.memory.list({
229
+ is_pinned: true
230
+ });
231
+ ```
232
+
233
+ **Available parameters:**
234
+ - `limit` — max results (default: 20, max: 100)
235
+ - `offset` — pagination offset
236
+ - `thread_id` — filter by thread
237
+ - `type` — filter by memory type
238
+ - `tags` — filter by tags (must have all)
239
+ - `is_pinned` — filter by pinned status
240
+ - `is_archived` — filter by archived status
241
+ - `sort_by` — `created_at`, `updated_at`, `importance`, or `type`
242
+ - `sort_order` — `asc` or `desc`
243
+
202
244
  ## Features
203
245
 
204
- - **Memory CRUD** — create, retrieve, update, delete memories
205
- - **Semantic Search** — query memories with filters and topK ranking
246
+ - **Memory CRUD** — create, list, retrieve, update, delete memories
247
+ - **Semantic Search** — query memories with filters and ranking
206
248
  - **Threads** — organize memories into conversations or sessions (fully supported in SDK)
207
- - **Batch Operations (Beta)** — atomic multi-operation support
249
+ - **Batch Operations** — create multiple memories in one request
208
250
  - **Compliance-ready** — audit trails, PDPA/GDPR-friendly by design
209
251
  - **SDKs** — official TypeScript and Python SDKs, with REST API reference
210
252
 
@@ -224,27 +266,23 @@ console.log(recall.results);
224
266
  - `PATCH|PUT /api/v1/memories/{id}` — Update memory
225
267
  - `DELETE /api/v1/memories/{id}` — Delete memory
226
268
  - `GET /api/v1/memory/search` — Search memories
227
- - `POST /api/v1/memory/batch` — Batch operations (Beta)
269
+ - `POST /api/v1/memory/batch` — Batch create
228
270
 
229
271
  ## Field Mapping Note
230
272
 
231
273
  - **SDK level:** accepts `data`
232
274
  - **API level:** expects `content`
233
275
  - SDK automatically converts `data` → `content`.
234
- - `subject` is deprecated (ignored by API). Use `thread_id`, `tags`, or `metadata` for grouping.
235
-
236
- ## Status of Advanced Features
237
-
238
- - **Batch API:** Available, marked Beta.
239
- - **Threads:** Fully supported in TypeScript SDK (v1.4.0+).
240
- - **Webhooks, personalization, multi-channel sync:** Coming soon.
241
276
 
242
277
  ## Versioning & Changelog
243
278
 
244
- - **Current release:** 1.4.0
245
- - Version 1.4.0 adds full threads support (create, list, get, update, delete)
246
- - Version 1.3.0 added hybrid recall with profile awareness
247
- - See [CHANGELOG.md](./CHANGELOG.md) for details.
279
+ - **Current release:** 1.4.3
280
+ - Version 1.4.3 add `memory.list()` for filtered pagination
281
+ - Version 1.4.2 README sync
282
+ - Version 1.4.1 CJS export fix
283
+ - Version 1.4.0 — full threads support (create, list, get, update, delete)
284
+ - Version 1.3.0 — hybrid recall with profile awareness
285
+ - Version 1.2.0 — retry logic, batch operations, telemetry hooks
248
286
 
249
287
  ## License & Use
250
288
 
package/dist/index.cjs CHANGED
@@ -207,6 +207,37 @@ var Sovant = class {
207
207
  return this.req(`/api/v1/memory/recall?${params.toString()}`, {
208
208
  method: "GET"
209
209
  });
210
+ },
211
+ /**
212
+ * List memories with filtering and pagination
213
+ * Returns memories ordered by sort criteria (default: created_at desc)
214
+ *
215
+ * Use list() to fetch recent memories or filter by criteria.
216
+ * Use search() for semantic/vector-based queries.
217
+ * Use recall() for conversational AI queries.
218
+ *
219
+ * @param params - Optional filtering and pagination parameters
220
+ * @returns Paginated list of memories
221
+ */
222
+ list: (params) => {
223
+ const query = new URLSearchParams();
224
+ if (params?.limit !== void 0)
225
+ query.append("limit", params.limit.toString());
226
+ if (params?.offset !== void 0)
227
+ query.append("offset", params.offset.toString());
228
+ if (params?.thread_id) query.append("thread_id", params.thread_id);
229
+ if (params?.type) query.append("type", params.type);
230
+ if (params?.tags) query.append("tags", params.tags.join(","));
231
+ if (params?.is_pinned !== void 0)
232
+ query.append("is_pinned", params.is_pinned.toString());
233
+ if (params?.is_archived !== void 0)
234
+ query.append("is_archived", params.is_archived.toString());
235
+ if (params?.sort_by) query.append("sort_by", params.sort_by);
236
+ if (params?.sort_order) query.append("sort_order", params.sort_order);
237
+ return this.req(
238
+ `/api/v1/memory?${query.toString()}`,
239
+ { method: "GET" }
240
+ );
210
241
  }
211
242
  };
212
243
  threads = {
package/dist/index.d.cts CHANGED
@@ -17,6 +17,60 @@ type SovantClientOptions = {
17
17
  }) => void;
18
18
  onError?: (err: SovantError) => void;
19
19
  };
20
+ /**
21
+ * Parameters for listing memories
22
+ */
23
+ type MemoryListParams = {
24
+ /** Maximum number of memories to return (default: 20, max: 100) */
25
+ limit?: number;
26
+ /** Number of memories to skip for pagination (default: 0) */
27
+ offset?: number;
28
+ /** Filter by thread ID */
29
+ thread_id?: string;
30
+ /** Filter by memory type */
31
+ type?: "journal" | "insight" | "observation" | "task" | "preference";
32
+ /** Filter by tags (memories must have all specified tags) */
33
+ tags?: string[];
34
+ /** Filter by pinned status */
35
+ is_pinned?: boolean;
36
+ /** Filter by archived status */
37
+ is_archived?: boolean;
38
+ /** Sort field (default: created_at) */
39
+ sort_by?: "created_at" | "updated_at" | "importance" | "type";
40
+ /** Sort direction (default: desc) */
41
+ sort_order?: "asc" | "desc";
42
+ };
43
+ /**
44
+ * A memory object returned from the API
45
+ */
46
+ type Memory = {
47
+ id: string;
48
+ content: string;
49
+ type: string;
50
+ tags: string[];
51
+ metadata?: Record<string, any>;
52
+ thread_id?: string;
53
+ importance?: number;
54
+ created_at: string;
55
+ updated_at: string;
56
+ is_pinned: boolean;
57
+ is_archived: boolean;
58
+ };
59
+ /**
60
+ * Response from memory.list()
61
+ */
62
+ type MemoryListResponse = {
63
+ /** Array of memory objects */
64
+ memories: Memory[];
65
+ /** Total count of memories matching the filter */
66
+ total: number;
67
+ /** Limit used for this query */
68
+ limit: number;
69
+ /** Offset used for this query */
70
+ offset: number;
71
+ /** Whether more results are available */
72
+ has_more: boolean;
73
+ };
20
74
  declare class Sovant {
21
75
  private apiKey;
22
76
  private baseUrl;
@@ -97,6 +151,18 @@ declare class Sovant {
97
151
  thread_id?: string;
98
152
  limit?: number;
99
153
  }) => Promise<unknown>;
154
+ /**
155
+ * List memories with filtering and pagination
156
+ * Returns memories ordered by sort criteria (default: created_at desc)
157
+ *
158
+ * Use list() to fetch recent memories or filter by criteria.
159
+ * Use search() for semantic/vector-based queries.
160
+ * Use recall() for conversational AI queries.
161
+ *
162
+ * @param params - Optional filtering and pagination parameters
163
+ * @returns Paginated list of memories
164
+ */
165
+ list: (params?: MemoryListParams) => Promise<MemoryListResponse>;
100
166
  };
101
167
  threads: {
102
168
  /**
@@ -204,4 +270,4 @@ declare class SovantError extends Error {
204
270
  constructor(message: string, code: string, status?: number, details?: any);
205
271
  }
206
272
 
207
- export { Sovant, type SovantClientOptions, SovantError };
273
+ export { type Memory, type MemoryListParams, type MemoryListResponse, Sovant, type SovantClientOptions, SovantError };
package/dist/index.d.ts CHANGED
@@ -17,6 +17,60 @@ type SovantClientOptions = {
17
17
  }) => void;
18
18
  onError?: (err: SovantError) => void;
19
19
  };
20
+ /**
21
+ * Parameters for listing memories
22
+ */
23
+ type MemoryListParams = {
24
+ /** Maximum number of memories to return (default: 20, max: 100) */
25
+ limit?: number;
26
+ /** Number of memories to skip for pagination (default: 0) */
27
+ offset?: number;
28
+ /** Filter by thread ID */
29
+ thread_id?: string;
30
+ /** Filter by memory type */
31
+ type?: "journal" | "insight" | "observation" | "task" | "preference";
32
+ /** Filter by tags (memories must have all specified tags) */
33
+ tags?: string[];
34
+ /** Filter by pinned status */
35
+ is_pinned?: boolean;
36
+ /** Filter by archived status */
37
+ is_archived?: boolean;
38
+ /** Sort field (default: created_at) */
39
+ sort_by?: "created_at" | "updated_at" | "importance" | "type";
40
+ /** Sort direction (default: desc) */
41
+ sort_order?: "asc" | "desc";
42
+ };
43
+ /**
44
+ * A memory object returned from the API
45
+ */
46
+ type Memory = {
47
+ id: string;
48
+ content: string;
49
+ type: string;
50
+ tags: string[];
51
+ metadata?: Record<string, any>;
52
+ thread_id?: string;
53
+ importance?: number;
54
+ created_at: string;
55
+ updated_at: string;
56
+ is_pinned: boolean;
57
+ is_archived: boolean;
58
+ };
59
+ /**
60
+ * Response from memory.list()
61
+ */
62
+ type MemoryListResponse = {
63
+ /** Array of memory objects */
64
+ memories: Memory[];
65
+ /** Total count of memories matching the filter */
66
+ total: number;
67
+ /** Limit used for this query */
68
+ limit: number;
69
+ /** Offset used for this query */
70
+ offset: number;
71
+ /** Whether more results are available */
72
+ has_more: boolean;
73
+ };
20
74
  declare class Sovant {
21
75
  private apiKey;
22
76
  private baseUrl;
@@ -97,6 +151,18 @@ declare class Sovant {
97
151
  thread_id?: string;
98
152
  limit?: number;
99
153
  }) => Promise<unknown>;
154
+ /**
155
+ * List memories with filtering and pagination
156
+ * Returns memories ordered by sort criteria (default: created_at desc)
157
+ *
158
+ * Use list() to fetch recent memories or filter by criteria.
159
+ * Use search() for semantic/vector-based queries.
160
+ * Use recall() for conversational AI queries.
161
+ *
162
+ * @param params - Optional filtering and pagination parameters
163
+ * @returns Paginated list of memories
164
+ */
165
+ list: (params?: MemoryListParams) => Promise<MemoryListResponse>;
100
166
  };
101
167
  threads: {
102
168
  /**
@@ -204,4 +270,4 @@ declare class SovantError extends Error {
204
270
  constructor(message: string, code: string, status?: number, details?: any);
205
271
  }
206
272
 
207
- export { Sovant, type SovantClientOptions, SovantError };
273
+ export { type Memory, type MemoryListParams, type MemoryListResponse, Sovant, type SovantClientOptions, SovantError };
package/dist/index.js CHANGED
@@ -182,6 +182,37 @@ var Sovant = class {
182
182
  return this.req(`/api/v1/memory/recall?${params.toString()}`, {
183
183
  method: "GET"
184
184
  });
185
+ },
186
+ /**
187
+ * List memories with filtering and pagination
188
+ * Returns memories ordered by sort criteria (default: created_at desc)
189
+ *
190
+ * Use list() to fetch recent memories or filter by criteria.
191
+ * Use search() for semantic/vector-based queries.
192
+ * Use recall() for conversational AI queries.
193
+ *
194
+ * @param params - Optional filtering and pagination parameters
195
+ * @returns Paginated list of memories
196
+ */
197
+ list: (params) => {
198
+ const query = new URLSearchParams();
199
+ if (params?.limit !== void 0)
200
+ query.append("limit", params.limit.toString());
201
+ if (params?.offset !== void 0)
202
+ query.append("offset", params.offset.toString());
203
+ if (params?.thread_id) query.append("thread_id", params.thread_id);
204
+ if (params?.type) query.append("type", params.type);
205
+ if (params?.tags) query.append("tags", params.tags.join(","));
206
+ if (params?.is_pinned !== void 0)
207
+ query.append("is_pinned", params.is_pinned.toString());
208
+ if (params?.is_archived !== void 0)
209
+ query.append("is_archived", params.is_archived.toString());
210
+ if (params?.sort_by) query.append("sort_by", params.sort_by);
211
+ if (params?.sort_order) query.append("sort_order", params.sort_order);
212
+ return this.req(
213
+ `/api/v1/memory?${query.toString()}`,
214
+ { method: "GET" }
215
+ );
185
216
  }
186
217
  };
187
218
  threads = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sovant/sdk",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "Official Sovant Memory-as-a-Service SDK for JavaScript and TypeScript",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",