@sovant/sdk 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -13
- package/dist/index.d.ts +105 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +130 -54
- package/dist/index.js.map +1 -1
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @sovant/sdk
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
3
|
+
**Sovant is a governed AI memory layer for LLM applications.**
|
|
4
|
+
It gives your apps hybrid recall, profile-aware context, and a structured memory store you can audit, inspect, and control.
|
|
5
|
+
|
|
6
|
+
The official **JavaScript and TypeScript** SDK for the Sovant Memory API.
|
|
5
7
|
|
|
6
8
|
[](https://www.npmjs.com/package/@sovant/sdk)
|
|
7
9
|
[](https://sovant.ai/docs)
|
|
@@ -32,31 +34,173 @@ pnpm add @sovant/sdk
|
|
|
32
34
|
|
|
33
35
|
## 60-Second Quickstart
|
|
34
36
|
|
|
37
|
+
### TypeScript
|
|
38
|
+
|
|
35
39
|
```typescript
|
|
36
40
|
import { Sovant } from "@sovant/sdk";
|
|
37
41
|
|
|
38
42
|
const sv = new Sovant({ apiKey: process.env.SOVANT_API_KEY! });
|
|
39
43
|
|
|
40
44
|
// Create a memory
|
|
41
|
-
await sv.memory.create({
|
|
42
|
-
data: { note: "User prefers morning meetings" },
|
|
45
|
+
await sv.memory.create({
|
|
46
|
+
data: { note: "User prefers morning meetings" },
|
|
47
|
+
type: "preference"
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Search memories
|
|
51
|
+
const results = await sv.memory.search({
|
|
52
|
+
query: "meeting preferences",
|
|
53
|
+
limit: 3
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
console.log(results);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### JavaScript (ESM)
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
import { Sovant } from "@sovant/sdk";
|
|
63
|
+
|
|
64
|
+
const sv = new Sovant({ apiKey: process.env.SOVANT_API_KEY });
|
|
65
|
+
|
|
66
|
+
// Create a memory
|
|
67
|
+
await sv.memory.create({
|
|
68
|
+
data: "User prefers morning meetings",
|
|
43
69
|
type: "preference"
|
|
44
70
|
});
|
|
45
71
|
|
|
46
72
|
// Search memories
|
|
47
|
-
const results = await sv.memory.search({
|
|
48
|
-
query: "meeting preferences",
|
|
49
|
-
|
|
73
|
+
const results = await sv.memory.search({
|
|
74
|
+
query: "meeting preferences",
|
|
75
|
+
limit: 3
|
|
50
76
|
});
|
|
51
77
|
|
|
52
78
|
console.log(results);
|
|
53
79
|
```
|
|
54
80
|
|
|
81
|
+
### JavaScript (CommonJS)
|
|
82
|
+
|
|
83
|
+
```javascript
|
|
84
|
+
const { Sovant } = require("@sovant/sdk");
|
|
85
|
+
|
|
86
|
+
const sv = new Sovant({ apiKey: process.env.SOVANT_API_KEY });
|
|
87
|
+
|
|
88
|
+
// Works the same as ESM
|
|
89
|
+
sv.memory.create({ data: "User likes coffee", type: "preference" })
|
|
90
|
+
.then(() => console.log("Memory saved!"));
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Recall vs Search
|
|
94
|
+
|
|
95
|
+
Sovant provides two ways to query memories:
|
|
96
|
+
|
|
97
|
+
- **`memory.recall()`** – Hybrid recall, profile-aware
|
|
98
|
+
Best for conversational AI queries like "What do you know about me?" or "What happened on Project X?".
|
|
99
|
+
Uses Sovant's hybrid pipeline (profile fast-path + thread-scoped lexical + vector semantic search) and prioritizes profile facts (name/age/location) when available.
|
|
100
|
+
|
|
101
|
+
- **`memory.search()`** – Semantic search
|
|
102
|
+
Best for topic-based lookup and discovery, e.g., "hiking", "Q1 marketing plan".
|
|
103
|
+
Pure vector similarity search without profile logic. Behavior unchanged from previous versions.
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// Recall for conversational queries
|
|
107
|
+
const context = await sv.memory.recall({
|
|
108
|
+
query: "what do you know about me?",
|
|
109
|
+
limit: 10
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Search for topic discovery
|
|
113
|
+
const topics = await sv.memory.search({
|
|
114
|
+
query: "project updates",
|
|
115
|
+
limit: 5
|
|
116
|
+
});
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Working with Threads
|
|
120
|
+
|
|
121
|
+
Threads let you organize related memories into conversations or sessions. Each thread has a `title` and can contain multiple memories.
|
|
122
|
+
|
|
123
|
+
### Create a thread and store memories
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// Create a new thread
|
|
127
|
+
const thread = await sv.threads.create({
|
|
128
|
+
title: "Project Alpha Discussion",
|
|
129
|
+
description: "Q1 planning meeting notes",
|
|
130
|
+
metadata: { project: "alpha", quarter: "Q1" }
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// Store memories in the thread
|
|
134
|
+
await sv.memory.create({
|
|
135
|
+
data: "Decided to launch in March",
|
|
136
|
+
type: "journal",
|
|
137
|
+
thread_id: thread.id
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
await sv.memory.create({
|
|
141
|
+
data: "Budget approved: $50k",
|
|
142
|
+
type: "insight",
|
|
143
|
+
thread_id: thread.id
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Recall memories from this specific thread
|
|
147
|
+
const threadMemories = await sv.memory.recall({
|
|
148
|
+
query: "launch date",
|
|
149
|
+
thread_id: thread.id,
|
|
150
|
+
limit: 10
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### List and manage threads
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// List all threads
|
|
158
|
+
const { threads, total } = await sv.threads.list({
|
|
159
|
+
limit: 20,
|
|
160
|
+
offset: 0
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// Get a specific thread with its memories
|
|
164
|
+
const result = await sv.threads.get(thread.id, {
|
|
165
|
+
include_memories: true,
|
|
166
|
+
limit: 50
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// Update thread details
|
|
170
|
+
await sv.threads.update(thread.id, {
|
|
171
|
+
title: "Project Alpha - Q1 Launch",
|
|
172
|
+
status: "completed"
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Delete a thread (keeps memories by default)
|
|
176
|
+
await sv.threads.delete(thread.id);
|
|
177
|
+
|
|
178
|
+
// Delete a thread and all its memories
|
|
179
|
+
await sv.threads.delete(thread.id, true);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Default mode (without threads)
|
|
183
|
+
|
|
184
|
+
You can still use Sovant without threads - just omit `thread_id`:
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
// Store memory globally
|
|
188
|
+
await sv.memory.create({
|
|
189
|
+
data: "User prefers email notifications",
|
|
190
|
+
type: "preference"
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Recall from all memories
|
|
194
|
+
const allMemories = await sv.memory.recall({
|
|
195
|
+
query: "notification preferences"
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
55
199
|
## Features
|
|
56
200
|
|
|
57
201
|
- **Memory CRUD** — create, retrieve, update, delete memories
|
|
58
202
|
- **Semantic Search** — query memories with filters and topK ranking
|
|
59
|
-
- **Threads** —
|
|
203
|
+
- **Threads** — organize memories into conversations or sessions (fully supported in SDK)
|
|
60
204
|
- **Batch Operations (Beta)** — atomic multi-operation support
|
|
61
205
|
- **Compliance-ready** — audit trails, PDPA/GDPR-friendly by design
|
|
62
206
|
- **SDKs** — official TypeScript and Python SDKs, with REST API reference
|
|
@@ -89,14 +233,14 @@ console.log(results);
|
|
|
89
233
|
## Status of Advanced Features
|
|
90
234
|
|
|
91
235
|
- **Batch API:** Available, marked Beta.
|
|
92
|
-
- **Threads:** Fully supported
|
|
236
|
+
- **Threads:** Fully supported in TypeScript SDK (v1.4.0+).
|
|
93
237
|
- **Webhooks, personalization, multi-channel sync:** Coming soon.
|
|
94
238
|
|
|
95
239
|
## Versioning & Changelog
|
|
96
240
|
|
|
97
|
-
- **
|
|
98
|
-
- Version 1.0
|
|
99
|
-
-
|
|
241
|
+
- **Current release:** 1.4.0
|
|
242
|
+
- Version 1.4.0 adds full threads support (create, list, get, update, delete)
|
|
243
|
+
- Version 1.3.0 added hybrid recall with profile awareness
|
|
100
244
|
- See [CHANGELOG.md](./CHANGELOG.md) for details.
|
|
101
245
|
|
|
102
246
|
## License & Use
|
package/dist/index.d.ts
CHANGED
|
@@ -85,19 +85,117 @@ export declare class Sovant {
|
|
|
85
85
|
transaction_id: string;
|
|
86
86
|
}>;
|
|
87
87
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
88
|
+
* Hybrid recall with profile awareness
|
|
89
|
+
* Uses multi-stage pipeline (profile fast-path + lexical + semantic)
|
|
90
|
+
* Guarantees profile facts (name/age/location) when available
|
|
91
|
+
*
|
|
92
|
+
* Use recall() for conversational queries ("who am I?", "what do you know about me?")
|
|
93
|
+
* Use search() for pure semantic topic lookup
|
|
90
94
|
*/
|
|
91
95
|
recall: (q: {
|
|
92
|
-
query
|
|
93
|
-
type?: string;
|
|
94
|
-
tags?: string[];
|
|
96
|
+
query: string;
|
|
95
97
|
thread_id?: string;
|
|
96
98
|
limit?: number;
|
|
97
|
-
from_date?: string;
|
|
98
|
-
to_date?: string;
|
|
99
99
|
}) => Promise<unknown>;
|
|
100
100
|
};
|
|
101
|
+
threads: {
|
|
102
|
+
/**
|
|
103
|
+
* Create a new thread
|
|
104
|
+
* @param input Thread creation parameters
|
|
105
|
+
* @returns Created thread with ID
|
|
106
|
+
*/
|
|
107
|
+
create: (input: {
|
|
108
|
+
title: string;
|
|
109
|
+
description?: string;
|
|
110
|
+
metadata?: Record<string, any>;
|
|
111
|
+
}) => Promise<{
|
|
112
|
+
ok: boolean;
|
|
113
|
+
id: string;
|
|
114
|
+
title: string;
|
|
115
|
+
description?: string;
|
|
116
|
+
metadata?: Record<string, any>;
|
|
117
|
+
created_at: string;
|
|
118
|
+
updated_at: string;
|
|
119
|
+
}>;
|
|
120
|
+
/**
|
|
121
|
+
* List threads with optional filtering
|
|
122
|
+
* @param params List parameters
|
|
123
|
+
* @returns Paginated thread list
|
|
124
|
+
*/
|
|
125
|
+
list: (params?: {
|
|
126
|
+
limit?: number;
|
|
127
|
+
offset?: number;
|
|
128
|
+
status?: "active" | "archived" | "completed";
|
|
129
|
+
}) => Promise<{
|
|
130
|
+
threads: Array<{
|
|
131
|
+
id: string;
|
|
132
|
+
title: string;
|
|
133
|
+
description?: string;
|
|
134
|
+
metadata?: Record<string, any>;
|
|
135
|
+
created_at: string;
|
|
136
|
+
updated_at: string;
|
|
137
|
+
}>;
|
|
138
|
+
total: number;
|
|
139
|
+
limit: number;
|
|
140
|
+
offset: number;
|
|
141
|
+
has_more: boolean;
|
|
142
|
+
}>;
|
|
143
|
+
/**
|
|
144
|
+
* Get a thread by ID
|
|
145
|
+
* @param threadId Thread UUID
|
|
146
|
+
* @param options Optional parameters
|
|
147
|
+
* @returns Thread details
|
|
148
|
+
*/
|
|
149
|
+
get: (threadId: string, options?: {
|
|
150
|
+
include_memories?: boolean;
|
|
151
|
+
limit?: number;
|
|
152
|
+
}) => Promise<{
|
|
153
|
+
thread: {
|
|
154
|
+
id: string;
|
|
155
|
+
title: string;
|
|
156
|
+
description?: string;
|
|
157
|
+
status?: string;
|
|
158
|
+
metadata?: Record<string, any>;
|
|
159
|
+
created_at: string;
|
|
160
|
+
updated_at: string;
|
|
161
|
+
memory_ids?: string[];
|
|
162
|
+
memories?: any[];
|
|
163
|
+
};
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* Update a thread
|
|
167
|
+
* @param threadId Thread UUID
|
|
168
|
+
* @param updates Fields to update
|
|
169
|
+
* @returns Updated thread
|
|
170
|
+
*/
|
|
171
|
+
update: (threadId: string, updates: {
|
|
172
|
+
title?: string;
|
|
173
|
+
description?: string;
|
|
174
|
+
status?: "active" | "archived" | "completed";
|
|
175
|
+
metadata?: Record<string, any>;
|
|
176
|
+
}) => Promise<{
|
|
177
|
+
thread: {
|
|
178
|
+
id: string;
|
|
179
|
+
title: string;
|
|
180
|
+
description?: string;
|
|
181
|
+
status?: string;
|
|
182
|
+
metadata?: Record<string, any>;
|
|
183
|
+
created_at: string;
|
|
184
|
+
updated_at: string;
|
|
185
|
+
};
|
|
186
|
+
message: string;
|
|
187
|
+
}>;
|
|
188
|
+
/**
|
|
189
|
+
* Delete a thread
|
|
190
|
+
* @param threadId Thread UUID
|
|
191
|
+
* @param deleteMemories If true, also delete associated memories
|
|
192
|
+
* @returns Deletion confirmation
|
|
193
|
+
*/
|
|
194
|
+
delete: (threadId: string, deleteMemories?: boolean) => Promise<{
|
|
195
|
+
message: string;
|
|
196
|
+
memories_deleted: boolean;
|
|
197
|
+
}>;
|
|
198
|
+
};
|
|
101
199
|
}
|
|
102
200
|
export declare class SovantError extends Error {
|
|
103
201
|
code: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,9 @@ export class Sovant {
|
|
|
11
11
|
if (!opts?.apiKey)
|
|
12
12
|
throw new Error("Missing apiKey");
|
|
13
13
|
this.apiKey = opts.apiKey;
|
|
14
|
-
this.baseUrl = (opts.baseUrl ??
|
|
14
|
+
this.baseUrl = (opts.baseUrl ??
|
|
15
|
+
process.env.SOVANT_BASE_URL ??
|
|
16
|
+
"https://sovant.ai").replace(/\/+$/, "");
|
|
15
17
|
this.timeout = opts.timeoutMs ?? 30000;
|
|
16
18
|
this.maxRetries = opts.maxRetries ?? 3;
|
|
17
19
|
this.retryDelay = opts.retryDelay ?? 1000;
|
|
@@ -20,7 +22,7 @@ export class Sovant {
|
|
|
20
22
|
this.onError = opts.onError;
|
|
21
23
|
}
|
|
22
24
|
async req(path, init) {
|
|
23
|
-
const method = init.method ||
|
|
25
|
+
const method = init.method || "GET";
|
|
24
26
|
const startTime = Date.now();
|
|
25
27
|
// Telemetry: onRequest hook
|
|
26
28
|
if (this.onRequest) {
|
|
@@ -39,10 +41,10 @@ export class Sovant {
|
|
|
39
41
|
...init,
|
|
40
42
|
headers: {
|
|
41
43
|
"content-type": "application/json",
|
|
42
|
-
|
|
43
|
-
...(init.headers || {})
|
|
44
|
+
authorization: `Bearer ${this.apiKey}`,
|
|
45
|
+
...(init.headers || {}),
|
|
44
46
|
},
|
|
45
|
-
signal: ctl.signal
|
|
47
|
+
signal: ctl.signal,
|
|
46
48
|
});
|
|
47
49
|
clearTimeout(timeoutId);
|
|
48
50
|
const text = await res.text();
|
|
@@ -58,10 +60,11 @@ export class Sovant {
|
|
|
58
60
|
const code = body?.code || `HTTP_${res.status}`;
|
|
59
61
|
const error = new SovantError(msg, code, res.status, body);
|
|
60
62
|
// Retry on 429 (rate limit) or 5xx errors
|
|
61
|
-
if (attempt < this.maxRetries &&
|
|
63
|
+
if (attempt < this.maxRetries &&
|
|
64
|
+
(res.status === 429 || res.status >= 500)) {
|
|
62
65
|
lastError = error;
|
|
63
66
|
const delay = this.retryDelay * Math.pow(2, attempt); // Exponential backoff
|
|
64
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
67
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
65
68
|
continue;
|
|
66
69
|
}
|
|
67
70
|
// Telemetry: onError hook
|
|
@@ -86,23 +89,23 @@ export class Sovant {
|
|
|
86
89
|
catch (err) {
|
|
87
90
|
clearTimeout(timeoutId);
|
|
88
91
|
// Handle abort/timeout errors
|
|
89
|
-
if (err instanceof Error && err.name ===
|
|
90
|
-
const error = new SovantError(
|
|
92
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
93
|
+
const error = new SovantError("Request timeout", "TIMEOUT", 408);
|
|
91
94
|
if (attempt < this.maxRetries) {
|
|
92
95
|
lastError = error;
|
|
93
96
|
const delay = this.retryDelay * Math.pow(2, attempt);
|
|
94
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
97
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
95
98
|
continue;
|
|
96
99
|
}
|
|
97
100
|
throw error;
|
|
98
101
|
}
|
|
99
102
|
// Network errors
|
|
100
103
|
if (err instanceof Error) {
|
|
101
|
-
const error = new SovantError(err.message,
|
|
104
|
+
const error = new SovantError(err.message, "NETWORK_ERROR", 0);
|
|
102
105
|
if (attempt < this.maxRetries) {
|
|
103
106
|
lastError = error;
|
|
104
107
|
const delay = this.retryDelay * Math.pow(2, attempt);
|
|
105
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
108
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
106
109
|
continue;
|
|
107
110
|
}
|
|
108
111
|
throw error;
|
|
@@ -111,55 +114,61 @@ export class Sovant {
|
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
// If we exhausted retries, throw the last error
|
|
114
|
-
throw lastError || new SovantError(
|
|
117
|
+
throw (lastError || new SovantError("Max retries exceeded", "MAX_RETRIES", 0));
|
|
115
118
|
}
|
|
116
119
|
memory = {
|
|
117
120
|
create: (input) => this.req("/api/v1/memory", {
|
|
118
121
|
method: "POST",
|
|
119
122
|
body: JSON.stringify({
|
|
120
|
-
content: typeof input.data ===
|
|
121
|
-
|
|
123
|
+
content: typeof input.data === "string"
|
|
124
|
+
? input.data
|
|
125
|
+
: JSON.stringify(input.data),
|
|
126
|
+
type: input.type || "journal",
|
|
122
127
|
ttl: input.ttl,
|
|
123
128
|
tags: input.tags,
|
|
124
129
|
metadata: input.metadata,
|
|
125
|
-
thread_id: input.thread_id
|
|
126
|
-
})
|
|
130
|
+
thread_id: input.thread_id,
|
|
131
|
+
}),
|
|
127
132
|
}),
|
|
128
133
|
get: (id) => this.req(`/api/v1/memories/${encodeURIComponent(id)}`, {
|
|
129
|
-
method: "GET"
|
|
134
|
+
method: "GET",
|
|
130
135
|
}),
|
|
131
136
|
search: (q) => {
|
|
132
137
|
const params = new URLSearchParams();
|
|
133
138
|
if (q.query)
|
|
134
|
-
params.append(
|
|
139
|
+
params.append("query", q.query);
|
|
135
140
|
if (q.type)
|
|
136
|
-
params.append(
|
|
141
|
+
params.append("type", q.type);
|
|
137
142
|
if (q.tags)
|
|
138
|
-
params.append(
|
|
143
|
+
params.append("tags", q.tags.join(","));
|
|
139
144
|
if (q.thread_id)
|
|
140
|
-
params.append(
|
|
145
|
+
params.append("thread_id", q.thread_id);
|
|
141
146
|
if (q.limit)
|
|
142
|
-
params.append(
|
|
147
|
+
params.append("limit", q.limit.toString());
|
|
143
148
|
if (q.from_date)
|
|
144
|
-
params.append(
|
|
149
|
+
params.append("from_date", q.from_date);
|
|
145
150
|
if (q.to_date)
|
|
146
|
-
params.append(
|
|
151
|
+
params.append("to_date", q.to_date);
|
|
147
152
|
return this.req(`/api/v1/memory/search?${params.toString()}`, {
|
|
148
|
-
method: "GET"
|
|
153
|
+
method: "GET",
|
|
149
154
|
});
|
|
150
155
|
},
|
|
151
156
|
update: (id, patch) => this.req(`/api/v1/memories/${encodeURIComponent(id)}`, {
|
|
152
157
|
method: "PATCH",
|
|
153
158
|
body: JSON.stringify({
|
|
154
|
-
content: patch.data
|
|
159
|
+
content: patch.data
|
|
160
|
+
? typeof patch.data === "string"
|
|
161
|
+
? patch.data
|
|
162
|
+
: JSON.stringify(patch.data)
|
|
163
|
+
: undefined,
|
|
155
164
|
type: patch.type,
|
|
156
165
|
ttl: patch.ttl,
|
|
157
166
|
tags: patch.tags,
|
|
158
|
-
metadata: patch.metadata
|
|
159
|
-
})
|
|
167
|
+
metadata: patch.metadata,
|
|
168
|
+
}),
|
|
160
169
|
}),
|
|
161
170
|
delete: (id) => this.req(`/api/v1/memories/${encodeURIComponent(id)}`, {
|
|
162
|
-
method: "DELETE"
|
|
171
|
+
method: "DELETE",
|
|
163
172
|
}),
|
|
164
173
|
/**
|
|
165
174
|
* Batch create multiple memories in a single request
|
|
@@ -167,45 +176,112 @@ export class Sovant {
|
|
|
167
176
|
* @returns BatchResponse with individual results
|
|
168
177
|
*/
|
|
169
178
|
createBatch: (memories) => {
|
|
170
|
-
const operations = memories.map(mem => ({
|
|
171
|
-
operation:
|
|
179
|
+
const operations = memories.map((mem) => ({
|
|
180
|
+
operation: "create",
|
|
172
181
|
data: {
|
|
173
|
-
content: typeof mem.data ===
|
|
174
|
-
type: mem.type ||
|
|
182
|
+
content: typeof mem.data === "string" ? mem.data : JSON.stringify(mem.data),
|
|
183
|
+
type: mem.type || "journal",
|
|
175
184
|
tags: mem.tags,
|
|
176
185
|
metadata: mem.metadata,
|
|
177
|
-
thread_id: mem.thread_id
|
|
178
|
-
}
|
|
186
|
+
thread_id: mem.thread_id,
|
|
187
|
+
},
|
|
179
188
|
}));
|
|
180
189
|
return this.req("/api/v1/memory/batch", {
|
|
181
190
|
method: "POST",
|
|
182
|
-
body: JSON.stringify(operations)
|
|
191
|
+
body: JSON.stringify(operations),
|
|
183
192
|
});
|
|
184
193
|
},
|
|
185
194
|
/**
|
|
186
|
-
*
|
|
187
|
-
*
|
|
195
|
+
* Hybrid recall with profile awareness
|
|
196
|
+
* Uses multi-stage pipeline (profile fast-path + lexical + semantic)
|
|
197
|
+
* Guarantees profile facts (name/age/location) when available
|
|
198
|
+
*
|
|
199
|
+
* Use recall() for conversational queries ("who am I?", "what do you know about me?")
|
|
200
|
+
* Use search() for pure semantic topic lookup
|
|
188
201
|
*/
|
|
189
202
|
recall: (q) => {
|
|
190
203
|
const params = new URLSearchParams();
|
|
191
|
-
|
|
192
|
-
params.append('query', q.query);
|
|
193
|
-
if (q.type)
|
|
194
|
-
params.append('type', q.type);
|
|
195
|
-
if (q.tags)
|
|
196
|
-
params.append('tags', q.tags.join(','));
|
|
204
|
+
params.append("query", q.query);
|
|
197
205
|
if (q.thread_id)
|
|
198
|
-
params.append(
|
|
206
|
+
params.append("thread_id", q.thread_id);
|
|
199
207
|
if (q.limit)
|
|
200
|
-
params.append(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (q.to_date)
|
|
204
|
-
params.append('to_date', q.to_date);
|
|
205
|
-
return this.req(`/api/v1/memory/search?${params.toString()}`, {
|
|
206
|
-
method: "GET"
|
|
208
|
+
params.append("limit", q.limit.toString());
|
|
209
|
+
return this.req(`/api/v1/memory/recall?${params.toString()}`, {
|
|
210
|
+
method: "GET",
|
|
207
211
|
});
|
|
208
|
-
}
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
threads = {
|
|
215
|
+
/**
|
|
216
|
+
* Create a new thread
|
|
217
|
+
* @param input Thread creation parameters
|
|
218
|
+
* @returns Created thread with ID
|
|
219
|
+
*/
|
|
220
|
+
create: (input) => this.req("/api/v1/threads", {
|
|
221
|
+
method: "POST",
|
|
222
|
+
body: JSON.stringify({
|
|
223
|
+
title: input.title,
|
|
224
|
+
description: input.description,
|
|
225
|
+
metadata: input.metadata,
|
|
226
|
+
}),
|
|
227
|
+
}),
|
|
228
|
+
/**
|
|
229
|
+
* List threads with optional filtering
|
|
230
|
+
* @param params List parameters
|
|
231
|
+
* @returns Paginated thread list
|
|
232
|
+
*/
|
|
233
|
+
list: (params) => {
|
|
234
|
+
const query = new URLSearchParams();
|
|
235
|
+
if (params?.limit)
|
|
236
|
+
query.append("limit", params.limit.toString());
|
|
237
|
+
if (params?.offset)
|
|
238
|
+
query.append("offset", params.offset.toString());
|
|
239
|
+
if (params?.status)
|
|
240
|
+
query.append("status", params.status);
|
|
241
|
+
return this.req(`/api/v1/threads?${query.toString()}`, {
|
|
242
|
+
method: "GET",
|
|
243
|
+
});
|
|
244
|
+
},
|
|
245
|
+
/**
|
|
246
|
+
* Get a thread by ID
|
|
247
|
+
* @param threadId Thread UUID
|
|
248
|
+
* @param options Optional parameters
|
|
249
|
+
* @returns Thread details
|
|
250
|
+
*/
|
|
251
|
+
get: (threadId, options) => {
|
|
252
|
+
const query = new URLSearchParams();
|
|
253
|
+
if (options?.include_memories)
|
|
254
|
+
query.append("include_memories", "true");
|
|
255
|
+
if (options?.limit)
|
|
256
|
+
query.append("limit", options.limit.toString());
|
|
257
|
+
return this.req(`/api/v1/threads/${encodeURIComponent(threadId)}?${query.toString()}`, {
|
|
258
|
+
method: "GET",
|
|
259
|
+
});
|
|
260
|
+
},
|
|
261
|
+
/**
|
|
262
|
+
* Update a thread
|
|
263
|
+
* @param threadId Thread UUID
|
|
264
|
+
* @param updates Fields to update
|
|
265
|
+
* @returns Updated thread
|
|
266
|
+
*/
|
|
267
|
+
update: (threadId, updates) => this.req(`/api/v1/threads/${encodeURIComponent(threadId)}`, {
|
|
268
|
+
method: "PUT",
|
|
269
|
+
body: JSON.stringify(updates),
|
|
270
|
+
}),
|
|
271
|
+
/**
|
|
272
|
+
* Delete a thread
|
|
273
|
+
* @param threadId Thread UUID
|
|
274
|
+
* @param deleteMemories If true, also delete associated memories
|
|
275
|
+
* @returns Deletion confirmation
|
|
276
|
+
*/
|
|
277
|
+
delete: (threadId, deleteMemories = false) => {
|
|
278
|
+
const query = new URLSearchParams();
|
|
279
|
+
if (deleteMemories)
|
|
280
|
+
query.append("delete_memories", "true");
|
|
281
|
+
return this.req(`/api/v1/threads/${encodeURIComponent(threadId)}?${query.toString()}`, {
|
|
282
|
+
method: "DELETE",
|
|
283
|
+
});
|
|
284
|
+
},
|
|
209
285
|
};
|
|
210
286
|
}
|
|
211
287
|
export class SovantError extends Error {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sovant/sdk",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Sovant Memory-as-a-Service TypeScript
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "Official Sovant Memory-as-a-Service SDK for JavaScript and TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs",
|
|
11
12
|
"types": "./dist/index.d.ts"
|
|
12
13
|
}
|
|
13
14
|
},
|
|
@@ -26,7 +27,12 @@
|
|
|
26
27
|
"sovant",
|
|
27
28
|
"memory",
|
|
28
29
|
"maas",
|
|
29
|
-
"sdk"
|
|
30
|
+
"sdk",
|
|
31
|
+
"ai",
|
|
32
|
+
"typescript",
|
|
33
|
+
"javascript",
|
|
34
|
+
"llm",
|
|
35
|
+
"agent"
|
|
30
36
|
],
|
|
31
37
|
"author": "Sovant",
|
|
32
38
|
"license": "MIT",
|