@cereworker/core 0.6.0 → 0.6.2
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/conversation.d.ts +1 -2
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +191 -58
- package/dist/conversation.js.map +1 -1
- package/package.json +4 -2
package/dist/conversation.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { Conversation, Message, MessageRole } from './types.js';
|
|
2
2
|
export declare class ConversationStore {
|
|
3
|
-
private
|
|
3
|
+
private backend;
|
|
4
4
|
constructor(dbPath?: string);
|
|
5
|
-
private ensureSchema;
|
|
6
5
|
create(): Conversation;
|
|
7
6
|
get(id: string): Conversation | undefined;
|
|
8
7
|
list(): Conversation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4QrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,MAAM,CAAC,EAAE,MAAM;IAyB3B,MAAM,IAAI,YAAY;IActB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAYzC,IAAI,IAAI,YAAY,EAAE;IAStB,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;IAgB5G,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE;IAI9C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAM3B,kFAAkF;IAClF,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIjD,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/conversation.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { nanoid } from 'nanoid';
|
|
2
|
-
import { existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
6
6
|
import { createLogger } from './logger.js';
|
|
7
7
|
const log = createLogger('conversation');
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
function tryOpenDb(dbPath) {
|
|
10
|
+
try {
|
|
11
|
+
const Database = require('better-sqlite3');
|
|
12
|
+
return new Database(dbPath);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
18
|
const DEFAULT_DB_PATH = join(homedir(), '.cereworker', 'conversations.db');
|
|
14
|
-
|
|
19
|
+
/** SQLite-backed storage using better-sqlite3 */
|
|
20
|
+
class SqliteBackend {
|
|
15
21
|
db;
|
|
16
|
-
constructor(
|
|
17
|
-
|
|
18
|
-
const dir = dirname(path);
|
|
19
|
-
if (!existsSync(dir)) {
|
|
20
|
-
mkdirSync(dir, { recursive: true });
|
|
21
|
-
}
|
|
22
|
-
this.db = openDb(path);
|
|
22
|
+
constructor(db) {
|
|
23
|
+
this.db = db;
|
|
23
24
|
this.db.pragma('journal_mode = WAL');
|
|
24
25
|
this.db.pragma('foreign_keys = ON');
|
|
25
26
|
this.ensureSchema();
|
|
26
|
-
log.info('Opened conversation database', { path });
|
|
27
27
|
}
|
|
28
28
|
ensureSchema() {
|
|
29
29
|
this.db.exec(`
|
|
@@ -49,6 +49,173 @@ export class ConversationStore {
|
|
|
49
49
|
ON messages(conversationId, timestamp);
|
|
50
50
|
`);
|
|
51
51
|
}
|
|
52
|
+
createConversation(id, now) {
|
|
53
|
+
this.db
|
|
54
|
+
.prepare('INSERT INTO conversations (id, createdAt, updatedAt) VALUES (?, ?, ?)')
|
|
55
|
+
.run(id, now, now);
|
|
56
|
+
}
|
|
57
|
+
getConversation(id) {
|
|
58
|
+
return this.db
|
|
59
|
+
.prepare('SELECT id, createdAt, updatedAt FROM conversations WHERE id = ?')
|
|
60
|
+
.get(id);
|
|
61
|
+
}
|
|
62
|
+
listConversations() {
|
|
63
|
+
return this.db
|
|
64
|
+
.prepare('SELECT id, createdAt, updatedAt FROM conversations ORDER BY updatedAt DESC')
|
|
65
|
+
.all();
|
|
66
|
+
}
|
|
67
|
+
insertMessage(conversationId, message) {
|
|
68
|
+
this.db
|
|
69
|
+
.prepare(`INSERT INTO messages (id, conversationId, role, content, timestamp, toolCalls, toolResult, metadata)
|
|
70
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
71
|
+
.run(message.id, conversationId, message.role, message.content, message.timestamp, message.toolCalls ? JSON.stringify(message.toolCalls) : null, message.toolResult ? JSON.stringify(message.toolResult) : null, message.metadata ? JSON.stringify(message.metadata) : null);
|
|
72
|
+
this.db
|
|
73
|
+
.prepare('UPDATE conversations SET updatedAt = ? WHERE id = ?')
|
|
74
|
+
.run(Date.now(), conversationId);
|
|
75
|
+
}
|
|
76
|
+
getMessages(conversationId) {
|
|
77
|
+
const rows = this.db
|
|
78
|
+
.prepare(`SELECT id, role, content, timestamp, toolCalls, toolResult, metadata
|
|
79
|
+
FROM messages WHERE conversationId = ? ORDER BY timestamp`)
|
|
80
|
+
.all(conversationId);
|
|
81
|
+
return rows.map((row) => ({
|
|
82
|
+
id: row.id,
|
|
83
|
+
role: row.role,
|
|
84
|
+
content: row.content,
|
|
85
|
+
timestamp: row.timestamp,
|
|
86
|
+
...(row.toolCalls ? { toolCalls: JSON.parse(row.toolCalls) } : {}),
|
|
87
|
+
...(row.toolResult ? { toolResult: JSON.parse(row.toolResult) } : {}),
|
|
88
|
+
...(row.metadata ? { metadata: JSON.parse(row.metadata) } : {}),
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
deleteConversation(id) {
|
|
92
|
+
const result = this.db
|
|
93
|
+
.prepare('DELETE FROM conversations WHERE id = ?')
|
|
94
|
+
.run(id);
|
|
95
|
+
return result.changes > 0;
|
|
96
|
+
}
|
|
97
|
+
getPreview(conversationId) {
|
|
98
|
+
const row = this.db
|
|
99
|
+
.prepare(`SELECT content FROM messages
|
|
100
|
+
WHERE conversationId = ? AND role = 'user'
|
|
101
|
+
ORDER BY timestamp ASC LIMIT 1`)
|
|
102
|
+
.get(conversationId);
|
|
103
|
+
return row?.content ?? null;
|
|
104
|
+
}
|
|
105
|
+
close() {
|
|
106
|
+
this.db.close();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
class JsonFileBackend {
|
|
110
|
+
data;
|
|
111
|
+
filePath;
|
|
112
|
+
dirty = false;
|
|
113
|
+
flushTimer = null;
|
|
114
|
+
constructor(filePath) {
|
|
115
|
+
this.filePath = filePath;
|
|
116
|
+
this.data = { conversations: {}, messages: {} };
|
|
117
|
+
if (filePath && existsSync(filePath)) {
|
|
118
|
+
try {
|
|
119
|
+
this.data = JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
log.warn('Failed to parse conversation JSON, starting fresh');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
createConversation(id, now) {
|
|
127
|
+
this.data.conversations[id] = { id, createdAt: now, updatedAt: now };
|
|
128
|
+
this.data.messages[id] = [];
|
|
129
|
+
this.scheduleFlush();
|
|
130
|
+
}
|
|
131
|
+
getConversation(id) {
|
|
132
|
+
return this.data.conversations[id];
|
|
133
|
+
}
|
|
134
|
+
listConversations() {
|
|
135
|
+
return Object.values(this.data.conversations).sort((a, b) => b.updatedAt - a.updatedAt);
|
|
136
|
+
}
|
|
137
|
+
insertMessage(conversationId, message) {
|
|
138
|
+
const msgs = this.data.messages[conversationId];
|
|
139
|
+
if (msgs) {
|
|
140
|
+
msgs.push(message);
|
|
141
|
+
const conv = this.data.conversations[conversationId];
|
|
142
|
+
if (conv)
|
|
143
|
+
conv.updatedAt = Date.now();
|
|
144
|
+
this.scheduleFlush();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
getMessages(conversationId) {
|
|
148
|
+
return [...(this.data.messages[conversationId] ?? [])];
|
|
149
|
+
}
|
|
150
|
+
deleteConversation(id) {
|
|
151
|
+
const existed = id in this.data.conversations;
|
|
152
|
+
delete this.data.conversations[id];
|
|
153
|
+
delete this.data.messages[id];
|
|
154
|
+
if (existed)
|
|
155
|
+
this.scheduleFlush();
|
|
156
|
+
return existed;
|
|
157
|
+
}
|
|
158
|
+
getPreview(conversationId) {
|
|
159
|
+
const msgs = this.data.messages[conversationId] ?? [];
|
|
160
|
+
const first = msgs.find((m) => m.role === 'user');
|
|
161
|
+
return first?.content ?? null;
|
|
162
|
+
}
|
|
163
|
+
close() {
|
|
164
|
+
if (this.flushTimer) {
|
|
165
|
+
clearTimeout(this.flushTimer);
|
|
166
|
+
this.flushTimer = null;
|
|
167
|
+
}
|
|
168
|
+
this.flush();
|
|
169
|
+
}
|
|
170
|
+
/** Debounced write — flush at most once per 500ms to avoid excessive I/O */
|
|
171
|
+
scheduleFlush() {
|
|
172
|
+
this.dirty = true;
|
|
173
|
+
if (this.flushTimer)
|
|
174
|
+
return;
|
|
175
|
+
this.flushTimer = setTimeout(() => {
|
|
176
|
+
this.flushTimer = null;
|
|
177
|
+
this.flush();
|
|
178
|
+
}, 500);
|
|
179
|
+
}
|
|
180
|
+
flush() {
|
|
181
|
+
if (!this.dirty || !this.filePath)
|
|
182
|
+
return;
|
|
183
|
+
try {
|
|
184
|
+
writeFileSync(this.filePath, JSON.stringify(this.data), 'utf-8');
|
|
185
|
+
this.dirty = false;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
log.warn('Failed to write conversation JSON', {
|
|
189
|
+
error: err instanceof Error ? err.message : String(err),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export class ConversationStore {
|
|
195
|
+
backend;
|
|
196
|
+
constructor(dbPath) {
|
|
197
|
+
const path = dbPath ?? DEFAULT_DB_PATH;
|
|
198
|
+
// Try SQLite first
|
|
199
|
+
if (path !== ':memory:') {
|
|
200
|
+
const dir = dirname(path);
|
|
201
|
+
if (!existsSync(dir)) {
|
|
202
|
+
mkdirSync(dir, { recursive: true });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const db = tryOpenDb(path);
|
|
206
|
+
if (db) {
|
|
207
|
+
this.backend = new SqliteBackend(db);
|
|
208
|
+
log.info('Opened conversation database', { path });
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Fall back to JSON file alongside where the .db would have been
|
|
212
|
+
const jsonPath = path === ':memory:' ? null : path.replace(/\.db$/, '.json');
|
|
213
|
+
this.backend = new JsonFileBackend(jsonPath);
|
|
214
|
+
if (jsonPath) {
|
|
215
|
+
log.info('better-sqlite3 not available, using JSON file store', { path: jsonPath });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
52
219
|
create() {
|
|
53
220
|
const now = Date.now();
|
|
54
221
|
const conversation = {
|
|
@@ -57,16 +224,12 @@ export class ConversationStore {
|
|
|
57
224
|
createdAt: now,
|
|
58
225
|
updatedAt: now,
|
|
59
226
|
};
|
|
60
|
-
this.
|
|
61
|
-
.prepare('INSERT INTO conversations (id, createdAt, updatedAt) VALUES (?, ?, ?)')
|
|
62
|
-
.run(conversation.id, now, now);
|
|
227
|
+
this.backend.createConversation(conversation.id, now);
|
|
63
228
|
log.debug('Created conversation', { id: conversation.id });
|
|
64
229
|
return conversation;
|
|
65
230
|
}
|
|
66
231
|
get(id) {
|
|
67
|
-
const row = this.
|
|
68
|
-
.prepare('SELECT id, createdAt, updatedAt FROM conversations WHERE id = ?')
|
|
69
|
-
.get(id);
|
|
232
|
+
const row = this.backend.getConversation(id);
|
|
70
233
|
if (!row)
|
|
71
234
|
return undefined;
|
|
72
235
|
return {
|
|
@@ -77,10 +240,7 @@ export class ConversationStore {
|
|
|
77
240
|
};
|
|
78
241
|
}
|
|
79
242
|
list() {
|
|
80
|
-
|
|
81
|
-
.prepare('SELECT id, createdAt, updatedAt FROM conversations ORDER BY updatedAt DESC')
|
|
82
|
-
.all();
|
|
83
|
-
return rows.map((row) => ({
|
|
243
|
+
return this.backend.listConversations().map((row) => ({
|
|
84
244
|
id: row.id,
|
|
85
245
|
messages: [], // Don't load messages for list view
|
|
86
246
|
createdAt: row.createdAt,
|
|
@@ -88,9 +248,7 @@ export class ConversationStore {
|
|
|
88
248
|
}));
|
|
89
249
|
}
|
|
90
250
|
appendMessage(conversationId, role, content, extra) {
|
|
91
|
-
const row = this.
|
|
92
|
-
.prepare('SELECT id FROM conversations WHERE id = ?')
|
|
93
|
-
.get(conversationId);
|
|
251
|
+
const row = this.backend.getConversation(conversationId);
|
|
94
252
|
if (!row)
|
|
95
253
|
throw new Error(`Conversation ${conversationId} not found`);
|
|
96
254
|
const message = {
|
|
@@ -100,48 +258,23 @@ export class ConversationStore {
|
|
|
100
258
|
timestamp: Date.now(),
|
|
101
259
|
...extra,
|
|
102
260
|
};
|
|
103
|
-
this.
|
|
104
|
-
.prepare(`INSERT INTO messages (id, conversationId, role, content, timestamp, toolCalls, toolResult, metadata)
|
|
105
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
106
|
-
.run(message.id, conversationId, message.role, message.content, message.timestamp, message.toolCalls ? JSON.stringify(message.toolCalls) : null, message.toolResult ? JSON.stringify(message.toolResult) : null, message.metadata ? JSON.stringify(message.metadata) : null);
|
|
107
|
-
this.db
|
|
108
|
-
.prepare('UPDATE conversations SET updatedAt = ? WHERE id = ?')
|
|
109
|
-
.run(Date.now(), conversationId);
|
|
261
|
+
this.backend.insertMessage(conversationId, message);
|
|
110
262
|
return message;
|
|
111
263
|
}
|
|
112
264
|
getMessages(conversationId) {
|
|
113
|
-
|
|
114
|
-
.prepare(`SELECT id, role, content, timestamp, toolCalls, toolResult, metadata
|
|
115
|
-
FROM messages WHERE conversationId = ? ORDER BY timestamp`)
|
|
116
|
-
.all(conversationId);
|
|
117
|
-
return rows.map((row) => ({
|
|
118
|
-
id: row.id,
|
|
119
|
-
role: row.role,
|
|
120
|
-
content: row.content,
|
|
121
|
-
timestamp: row.timestamp,
|
|
122
|
-
...(row.toolCalls ? { toolCalls: JSON.parse(row.toolCalls) } : {}),
|
|
123
|
-
...(row.toolResult ? { toolResult: JSON.parse(row.toolResult) } : {}),
|
|
124
|
-
...(row.metadata ? { metadata: JSON.parse(row.metadata) } : {}),
|
|
125
|
-
}));
|
|
265
|
+
return this.backend.getMessages(conversationId);
|
|
126
266
|
}
|
|
127
267
|
delete(id) {
|
|
128
|
-
const result = this.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
log.debug('Deleted conversation', { id, deleted: result.changes > 0 });
|
|
132
|
-
return result.changes > 0;
|
|
268
|
+
const result = this.backend.deleteConversation(id);
|
|
269
|
+
log.debug('Deleted conversation', { id, deleted: result });
|
|
270
|
+
return result;
|
|
133
271
|
}
|
|
134
272
|
/** Get the most recent message content from a conversation (for list previews) */
|
|
135
273
|
getPreview(conversationId) {
|
|
136
|
-
|
|
137
|
-
.prepare(`SELECT content FROM messages
|
|
138
|
-
WHERE conversationId = ? AND role = 'user'
|
|
139
|
-
ORDER BY timestamp ASC LIMIT 1`)
|
|
140
|
-
.get(conversationId);
|
|
141
|
-
return row?.content ?? null;
|
|
274
|
+
return this.backend.getPreview(conversationId);
|
|
142
275
|
}
|
|
143
276
|
close() {
|
|
144
|
-
this.
|
|
277
|
+
this.backend.close();
|
|
145
278
|
}
|
|
146
279
|
}
|
|
147
280
|
//# sourceMappingURL=conversation.js.map
|
package/dist/conversation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cereworker/core",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
"directory": "packages/core"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"better-sqlite3": "^11.7.0",
|
|
20
19
|
"nanoid": "^5.0.9",
|
|
21
20
|
"@cereworker/config": "0.6.0"
|
|
22
21
|
},
|
|
22
|
+
"optionalDependencies": {
|
|
23
|
+
"better-sqlite3": "^11.7.0"
|
|
24
|
+
},
|
|
23
25
|
"devDependencies": {
|
|
24
26
|
"@types/better-sqlite3": "^7.6.12",
|
|
25
27
|
"typescript": "^5.7.3"
|