@n8n/agents 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.tsbuildinfo +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.js +30 -10
- package/dist/index.js.map +1 -1
- package/dist/runtime/agent-runtime.d.ts +24 -12
- package/dist/runtime/agent-runtime.js +241 -91
- package/dist/runtime/agent-runtime.js.map +1 -1
- package/dist/runtime/background-task-tracker.d.ts +6 -0
- package/dist/runtime/background-task-tracker.js +26 -0
- package/dist/runtime/background-task-tracker.js.map +1 -0
- package/dist/runtime/deferred-tool-manager.d.ts +28 -0
- package/dist/runtime/deferred-tool-manager.js +205 -0
- package/dist/runtime/deferred-tool-manager.js.map +1 -0
- package/dist/runtime/memory-store.d.ts +21 -36
- package/dist/runtime/memory-store.js +118 -51
- package/dist/runtime/memory-store.js.map +1 -1
- package/dist/runtime/message-list.d.ts +1 -7
- package/dist/runtime/message-list.js +3 -6
- package/dist/runtime/message-list.js.map +1 -1
- package/dist/runtime/observation-log-defaults.d.ts +20 -0
- package/dist/runtime/observation-log-defaults.js +523 -0
- package/dist/runtime/observation-log-defaults.js.map +1 -0
- package/dist/runtime/observation-log-observer.d.ts +64 -0
- package/dist/runtime/observation-log-observer.js +235 -0
- package/dist/runtime/observation-log-observer.js.map +1 -0
- package/dist/runtime/observation-log-reflector.d.ts +36 -0
- package/dist/runtime/observation-log-reflector.js +292 -0
- package/dist/runtime/observation-log-reflector.js.map +1 -0
- package/dist/runtime/observation-log-renderer.d.ts +6 -0
- package/dist/runtime/observation-log-renderer.js +73 -0
- package/dist/runtime/observation-log-renderer.js.map +1 -0
- package/dist/runtime/observation-log-store.d.ts +3 -0
- package/dist/runtime/observation-log-store.js +26 -0
- package/dist/runtime/observation-log-store.js.map +1 -0
- package/dist/runtime/scoped-memory-task-runner.d.ts +79 -0
- package/dist/runtime/scoped-memory-task-runner.js +134 -0
- package/dist/runtime/scoped-memory-task-runner.js.map +1 -0
- package/dist/sdk/agent.d.ts +13 -1
- package/dist/sdk/agent.js +58 -9
- package/dist/sdk/agent.js.map +1 -1
- package/dist/sdk/catalog.d.ts +1 -0
- package/dist/sdk/catalog.js +1 -0
- package/dist/sdk/catalog.js.map +1 -1
- package/dist/sdk/memory.d.ts +12 -12
- package/dist/sdk/memory.js +71 -51
- package/dist/sdk/memory.js.map +1 -1
- package/dist/storage/base-memory.d.ts +0 -10
- package/dist/storage/base-memory.js +0 -6
- package/dist/storage/base-memory.js.map +1 -1
- package/dist/types/index.d.ts +5 -4
- package/dist/types/index.js +7 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/runtime/event.d.ts +1 -0
- package/dist/types/sdk/agent-builder.d.ts +5 -0
- package/dist/types/sdk/agent.d.ts +6 -0
- package/dist/types/sdk/memory.d.ts +16 -24
- package/dist/types/sdk/observation-log.d.ts +99 -0
- package/dist/types/sdk/observation-log.js +17 -0
- package/dist/types/sdk/observation-log.js.map +1 -0
- package/dist/types/sdk/observation.d.ts +3 -94
- package/dist/types/sdk/observation.js +0 -2
- package/dist/types/sdk/observation.js.map +1 -1
- package/dist/types/sdk/provider.d.ts +5 -2
- package/package.json +3 -7
- package/dist/runtime/working-memory.d.ts +0 -14
- package/dist/runtime/working-memory.js +0 -69
- package/dist/runtime/working-memory.js.map +0 -1
- package/dist/storage/postgres-memory.d.ts +0 -96
- package/dist/storage/postgres-memory.js +0 -431
- package/dist/storage/postgres-memory.js.map +0 -1
- package/dist/storage/sqlite-memory.d.ts +0 -70
- package/dist/storage/sqlite-memory.js +0 -354
- package/dist/storage/sqlite-memory.js.map +0 -1
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SqliteMemory = exports.SqliteMemoryConfigSchema = void 0;
|
|
37
|
-
const zod_1 = require("zod");
|
|
38
|
-
const base_memory_1 = require("./base-memory");
|
|
39
|
-
function parseJsonSafe(text) {
|
|
40
|
-
try {
|
|
41
|
-
return JSON.parse(text);
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function float32ToBuffer(arr) {
|
|
48
|
-
const f32 = new Float32Array(arr);
|
|
49
|
-
return Buffer.from(f32.buffer);
|
|
50
|
-
}
|
|
51
|
-
exports.SqliteMemoryConfigSchema = zod_1.z.object({
|
|
52
|
-
url: zod_1.z.string().min(1),
|
|
53
|
-
namespace: zod_1.z
|
|
54
|
-
.string()
|
|
55
|
-
.regex(/^[a-zA-Z0-9_]+$/)
|
|
56
|
-
.optional(),
|
|
57
|
-
});
|
|
58
|
-
class SqliteMemory extends base_memory_1.BaseMemory {
|
|
59
|
-
constructor(constructorOptions) {
|
|
60
|
-
super('sqlite', constructorOptions);
|
|
61
|
-
this.constructorOptions = constructorOptions;
|
|
62
|
-
this.initPromise = null;
|
|
63
|
-
this.embeddingsInitPromise = null;
|
|
64
|
-
this.embeddingDimension = null;
|
|
65
|
-
this.config = exports.SqliteMemoryConfigSchema.parse(constructorOptions);
|
|
66
|
-
this.ns = constructorOptions.namespace ? `${constructorOptions.namespace}_` : '';
|
|
67
|
-
}
|
|
68
|
-
async ensureInitialized() {
|
|
69
|
-
this.initPromise ??= this._initialize().catch((error) => {
|
|
70
|
-
this.initPromise = null;
|
|
71
|
-
throw error;
|
|
72
|
-
});
|
|
73
|
-
return await this.initPromise;
|
|
74
|
-
}
|
|
75
|
-
async _initialize() {
|
|
76
|
-
const { createClient } = await Promise.resolve().then(() => __importStar(require('@libsql/client')));
|
|
77
|
-
const client = createClient({ url: this.config.url });
|
|
78
|
-
await client.batch([
|
|
79
|
-
`CREATE TABLE IF NOT EXISTS ${this.ns}threads (
|
|
80
|
-
id TEXT PRIMARY KEY,
|
|
81
|
-
resourceId TEXT NOT NULL,
|
|
82
|
-
title TEXT,
|
|
83
|
-
metadata TEXT,
|
|
84
|
-
createdAt TEXT NOT NULL,
|
|
85
|
-
updatedAt TEXT NOT NULL
|
|
86
|
-
)`,
|
|
87
|
-
`CREATE TABLE IF NOT EXISTS ${this.ns}messages (
|
|
88
|
-
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
89
|
-
id TEXT NOT NULL UNIQUE,
|
|
90
|
-
threadId TEXT NOT NULL,
|
|
91
|
-
role TEXT NOT NULL,
|
|
92
|
-
content TEXT NOT NULL,
|
|
93
|
-
createdAt TEXT NOT NULL
|
|
94
|
-
)`,
|
|
95
|
-
`CREATE TABLE IF NOT EXISTS ${this.ns}working_memory (
|
|
96
|
-
key TEXT NOT NULL,
|
|
97
|
-
scope TEXT NOT NULL CHECK(scope IN ('resource', 'thread')),
|
|
98
|
-
content TEXT NOT NULL,
|
|
99
|
-
updatedAt TEXT NOT NULL,
|
|
100
|
-
PRIMARY KEY (key, scope)
|
|
101
|
-
)`,
|
|
102
|
-
], 'write');
|
|
103
|
-
return client;
|
|
104
|
-
}
|
|
105
|
-
async getThread(threadId) {
|
|
106
|
-
const db = await this.ensureInitialized();
|
|
107
|
-
const result = await db.execute({
|
|
108
|
-
sql: `SELECT id, resourceId, title, metadata, createdAt, updatedAt FROM ${this.ns}threads WHERE id = ?`,
|
|
109
|
-
args: [threadId],
|
|
110
|
-
});
|
|
111
|
-
if (result.rows.length === 0)
|
|
112
|
-
return null;
|
|
113
|
-
const row = result.rows[0];
|
|
114
|
-
return {
|
|
115
|
-
id: row.id,
|
|
116
|
-
resourceId: row.resourceId,
|
|
117
|
-
title: row.title ?? undefined,
|
|
118
|
-
metadata: row.metadata
|
|
119
|
-
? parseJsonSafe(row.metadata)
|
|
120
|
-
: undefined,
|
|
121
|
-
createdAt: new Date(row.createdAt),
|
|
122
|
-
updatedAt: new Date(row.updatedAt),
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
async saveThread(thread) {
|
|
126
|
-
const db = await this.ensureInitialized();
|
|
127
|
-
const now = new Date().toISOString();
|
|
128
|
-
const titleArg = thread.title ?? null;
|
|
129
|
-
const metadataArg = thread.metadata ? JSON.stringify(thread.metadata) : null;
|
|
130
|
-
await db.execute({
|
|
131
|
-
sql: `INSERT INTO ${this.ns}threads (id, resourceId, title, metadata, createdAt, updatedAt)
|
|
132
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
133
|
-
ON CONFLICT(id) DO UPDATE SET
|
|
134
|
-
resourceId = excluded.resourceId,
|
|
135
|
-
title = COALESCE(excluded.title, title),
|
|
136
|
-
metadata = COALESCE(excluded.metadata, metadata),
|
|
137
|
-
updatedAt = excluded.updatedAt`,
|
|
138
|
-
args: [thread.id, thread.resourceId, titleArg, metadataArg, now, now],
|
|
139
|
-
});
|
|
140
|
-
const saved = await this.getThread(thread.id);
|
|
141
|
-
return saved;
|
|
142
|
-
}
|
|
143
|
-
async deleteThread(threadId) {
|
|
144
|
-
const db = await this.ensureInitialized();
|
|
145
|
-
const statements = [
|
|
146
|
-
{ sql: `DELETE FROM ${this.ns}messages WHERE threadId = ?`, args: [threadId] },
|
|
147
|
-
{ sql: `DELETE FROM ${this.ns}threads WHERE id = ?`, args: [threadId] },
|
|
148
|
-
];
|
|
149
|
-
await db.batch(statements, 'write');
|
|
150
|
-
try {
|
|
151
|
-
await db.execute({
|
|
152
|
-
sql: `DELETE FROM ${this.ns}message_embeddings WHERE threadId = ?`,
|
|
153
|
-
args: [threadId],
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
catch (e) {
|
|
157
|
-
if (!(e instanceof Error && /no such table/i.test(e.message)))
|
|
158
|
-
throw e;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
async getMessages(threadId, opts) {
|
|
162
|
-
const db = await this.ensureInitialized();
|
|
163
|
-
let sql;
|
|
164
|
-
const args = [threadId];
|
|
165
|
-
if (opts?.limit !== undefined && opts?.before !== undefined) {
|
|
166
|
-
sql = `SELECT * FROM (
|
|
167
|
-
SELECT id, threadId, role, content, createdAt, seq
|
|
168
|
-
FROM ${this.ns}messages
|
|
169
|
-
WHERE threadId = ? AND createdAt < ?
|
|
170
|
-
ORDER BY createdAt DESC, seq DESC
|
|
171
|
-
LIMIT ?
|
|
172
|
-
) ORDER BY createdAt ASC, seq ASC`;
|
|
173
|
-
args.push(opts.before.toISOString(), opts.limit);
|
|
174
|
-
}
|
|
175
|
-
else if (opts?.limit !== undefined) {
|
|
176
|
-
sql = `SELECT * FROM (
|
|
177
|
-
SELECT id, threadId, role, content, createdAt, seq
|
|
178
|
-
FROM ${this.ns}messages
|
|
179
|
-
WHERE threadId = ?
|
|
180
|
-
ORDER BY createdAt DESC, seq DESC
|
|
181
|
-
LIMIT ?
|
|
182
|
-
) ORDER BY createdAt ASC, seq ASC`;
|
|
183
|
-
args.push(opts.limit);
|
|
184
|
-
}
|
|
185
|
-
else if (opts?.before !== undefined) {
|
|
186
|
-
sql = `SELECT id, threadId, role, content, createdAt
|
|
187
|
-
FROM ${this.ns}messages
|
|
188
|
-
WHERE threadId = ? AND createdAt < ?
|
|
189
|
-
ORDER BY createdAt ASC, seq ASC`;
|
|
190
|
-
args.push(opts.before.toISOString());
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
sql = `SELECT id, threadId, role, content, createdAt
|
|
194
|
-
FROM ${this.ns}messages
|
|
195
|
-
WHERE threadId = ?
|
|
196
|
-
ORDER BY createdAt ASC, seq ASC`;
|
|
197
|
-
}
|
|
198
|
-
const result = await db.execute({ sql, args });
|
|
199
|
-
return result.rows
|
|
200
|
-
.map((row) => {
|
|
201
|
-
const msg = parseJsonSafe(row.content);
|
|
202
|
-
if (!msg)
|
|
203
|
-
return undefined;
|
|
204
|
-
msg.id = row.id;
|
|
205
|
-
msg.createdAt = new Date(row.createdAt);
|
|
206
|
-
return msg;
|
|
207
|
-
})
|
|
208
|
-
.filter((m) => m !== undefined);
|
|
209
|
-
}
|
|
210
|
-
async saveMessages(args) {
|
|
211
|
-
const db = await this.ensureInitialized();
|
|
212
|
-
if (args.messages.length === 0)
|
|
213
|
-
return;
|
|
214
|
-
const statements = args.messages.map((msg) => {
|
|
215
|
-
const createdAt = msg.createdAt instanceof Date ? msg.createdAt.toISOString() : new Date().toISOString();
|
|
216
|
-
const role = 'role' in msg ? msg.role : 'custom';
|
|
217
|
-
return {
|
|
218
|
-
sql: `INSERT OR REPLACE INTO ${this.ns}messages (id, threadId, role, content, createdAt)
|
|
219
|
-
VALUES (?, ?, ?, ?, ?)`,
|
|
220
|
-
args: [msg.id, args.threadId, role, JSON.stringify(msg), createdAt],
|
|
221
|
-
};
|
|
222
|
-
});
|
|
223
|
-
await db.batch(statements, 'write');
|
|
224
|
-
}
|
|
225
|
-
async deleteMessages(messageIds) {
|
|
226
|
-
const db = await this.ensureInitialized();
|
|
227
|
-
if (messageIds.length === 0)
|
|
228
|
-
return;
|
|
229
|
-
const placeholders = messageIds.map(() => '?').join(', ');
|
|
230
|
-
await db.execute({
|
|
231
|
-
sql: `DELETE FROM ${this.ns}messages WHERE id IN (${placeholders})`,
|
|
232
|
-
args: messageIds,
|
|
233
|
-
});
|
|
234
|
-
try {
|
|
235
|
-
await db.execute({
|
|
236
|
-
sql: `DELETE FROM ${this.ns}message_embeddings WHERE id IN (${placeholders})`,
|
|
237
|
-
args: messageIds,
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
catch (e) {
|
|
241
|
-
if (!(e instanceof Error && /no such table/i.test(e.message)))
|
|
242
|
-
throw e;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
async getWorkingMemory(params) {
|
|
246
|
-
const db = await this.ensureInitialized();
|
|
247
|
-
const key = params.resourceId ?? params.threadId;
|
|
248
|
-
const scope = params.resourceId !== undefined ? 'resource' : 'thread';
|
|
249
|
-
const result = await db.execute({
|
|
250
|
-
sql: `SELECT content FROM ${this.ns}working_memory WHERE key = ? AND scope = ?`,
|
|
251
|
-
args: [key, scope],
|
|
252
|
-
});
|
|
253
|
-
if (result.rows.length === 0)
|
|
254
|
-
return null;
|
|
255
|
-
return result.rows[0].content;
|
|
256
|
-
}
|
|
257
|
-
async saveWorkingMemory(params, content) {
|
|
258
|
-
const db = await this.ensureInitialized();
|
|
259
|
-
const key = params.resourceId ?? params.threadId;
|
|
260
|
-
const scope = params.resourceId !== undefined ? 'resource' : 'thread';
|
|
261
|
-
const now = new Date().toISOString();
|
|
262
|
-
await db.execute({
|
|
263
|
-
sql: `INSERT OR REPLACE INTO ${this.ns}working_memory (key, scope, content, updatedAt)
|
|
264
|
-
VALUES (?, ?, ?, ?)`,
|
|
265
|
-
args: [key, scope, content, now],
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
async ensureEmbeddingsTable(db, dimension) {
|
|
269
|
-
if (this.embeddingDimension !== null && this.embeddingDimension !== dimension) {
|
|
270
|
-
throw new Error(`Embedding dimension mismatch: table was created with ${this.embeddingDimension} but received ${dimension}. ` +
|
|
271
|
-
'This usually means the embedder model changed. Drop the embeddings table and re-index.');
|
|
272
|
-
}
|
|
273
|
-
this.embeddingsInitPromise ??= this._initializeEmbeddingsTable(db, dimension).catch((error) => {
|
|
274
|
-
this.embeddingsInitPromise = null;
|
|
275
|
-
throw error;
|
|
276
|
-
});
|
|
277
|
-
await this.embeddingsInitPromise;
|
|
278
|
-
}
|
|
279
|
-
async _initializeEmbeddingsTable(db, dimension) {
|
|
280
|
-
const existing = await db.execute(`SELECT sql FROM sqlite_master WHERE type='table' AND name='${this.ns}message_embeddings'`);
|
|
281
|
-
if (existing.rows.length > 0) {
|
|
282
|
-
const sql = existing.rows[0].sql;
|
|
283
|
-
const match = /F32_BLOB\((\d+)\)/i.exec(sql);
|
|
284
|
-
if (match) {
|
|
285
|
-
const existingDim = parseInt(match[1], 10);
|
|
286
|
-
if (existingDim !== dimension) {
|
|
287
|
-
throw new Error(`Embedding dimension mismatch: table was created with ${existingDim} but received ${dimension}. ` +
|
|
288
|
-
'This usually means the embedder model changed. Drop the embeddings table and re-index.');
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
await db.execute(`CREATE TABLE IF NOT EXISTS ${this.ns}message_embeddings (
|
|
294
|
-
id TEXT PRIMARY KEY,
|
|
295
|
-
threadId TEXT NOT NULL,
|
|
296
|
-
resourceId TEXT NOT NULL DEFAULT '',
|
|
297
|
-
embedding F32_BLOB(${dimension}) NOT NULL,
|
|
298
|
-
contentText TEXT NOT NULL,
|
|
299
|
-
createdAt TEXT NOT NULL
|
|
300
|
-
)`);
|
|
301
|
-
await db.execute(`CREATE INDEX IF NOT EXISTS ${this.ns}idx_embeddings_vector
|
|
302
|
-
ON ${this.ns}message_embeddings (libsql_vector_idx(embedding))`);
|
|
303
|
-
}
|
|
304
|
-
this.embeddingDimension = dimension;
|
|
305
|
-
}
|
|
306
|
-
async saveEmbeddings(opts) {
|
|
307
|
-
const db = await this.ensureInitialized();
|
|
308
|
-
if (opts.entries.length === 0)
|
|
309
|
-
return;
|
|
310
|
-
const threadId = opts.threadId ?? '';
|
|
311
|
-
const resourceId = opts.resourceId ?? '';
|
|
312
|
-
const dimension = opts.entries[0].vector.length;
|
|
313
|
-
await this.ensureEmbeddingsTable(db, dimension);
|
|
314
|
-
const statements = opts.entries.map((entry) => ({
|
|
315
|
-
sql: `INSERT OR REPLACE INTO ${this.ns}message_embeddings (id, threadId, resourceId, embedding, contentText, createdAt)
|
|
316
|
-
VALUES (?, ?, ?, ?, ?, ?)`,
|
|
317
|
-
args: [
|
|
318
|
-
entry.id,
|
|
319
|
-
threadId,
|
|
320
|
-
resourceId,
|
|
321
|
-
float32ToBuffer(entry.vector),
|
|
322
|
-
entry.text,
|
|
323
|
-
new Date().toISOString(),
|
|
324
|
-
],
|
|
325
|
-
}));
|
|
326
|
-
await db.batch(statements, 'write');
|
|
327
|
-
}
|
|
328
|
-
async queryEmbeddings(opts) {
|
|
329
|
-
const db = await this.ensureInitialized();
|
|
330
|
-
await this.ensureEmbeddingsTable(db, opts.vector.length);
|
|
331
|
-
const queryBuffer = float32ToBuffer(opts.vector);
|
|
332
|
-
let sql = `SELECT id, vector_distance_cos(embedding, ?) as distance
|
|
333
|
-
FROM ${this.ns}message_embeddings`;
|
|
334
|
-
const params = [queryBuffer];
|
|
335
|
-
const scope = opts.scope ?? 'resource';
|
|
336
|
-
if (scope === 'thread' && opts.threadId) {
|
|
337
|
-
sql += ' WHERE threadId = ?';
|
|
338
|
-
params.push(opts.threadId);
|
|
339
|
-
}
|
|
340
|
-
else if (scope === 'resource' && opts.resourceId) {
|
|
341
|
-
sql += ' WHERE resourceId = ?';
|
|
342
|
-
params.push(opts.resourceId);
|
|
343
|
-
}
|
|
344
|
-
sql += ' ORDER BY distance ASC LIMIT ?';
|
|
345
|
-
params.push(opts.topK);
|
|
346
|
-
const result = await db.execute({ sql, args: params });
|
|
347
|
-
return result.rows.map((r) => ({
|
|
348
|
-
id: r.id,
|
|
349
|
-
score: 1 - r.distance,
|
|
350
|
-
}));
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
exports.SqliteMemory = SqliteMemory;
|
|
354
|
-
//# sourceMappingURL=sqlite-memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-memory.js","sourceRoot":"","sources":["../../src/storage/sqlite-memory.ts"],"names":[],"mappings":"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"}
|