@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.
@@ -1,8 +1,7 @@
1
1
  import type { Conversation, Message, MessageRole } from './types.js';
2
2
  export declare class ConversationStore {
3
- private db;
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;AA4BrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAW;gBAET,MAAM,CAAC,EAAE,MAAM;IAc3B,OAAO,CAAC,YAAY;IAyBpB,MAAM,IAAI,YAAY;IAiBtB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAezC,IAAI,IAAI,YAAY,EAAE;IAatB,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;IAsC5G,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE;IA2B9C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS3B,kFAAkF;IAClF,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYjD,KAAK,IAAI,IAAI;CAGd"}
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"}
@@ -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 openDb(dbPath) {
10
- const Database = require('better-sqlite3');
11
- return new Database(dbPath);
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
- export class ConversationStore {
19
+ /** SQLite-backed storage using better-sqlite3 */
20
+ class SqliteBackend {
15
21
  db;
16
- constructor(dbPath) {
17
- const path = dbPath ?? DEFAULT_DB_PATH;
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.db
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.db
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
- const rows = this.db
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.db
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.db
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
- const rows = this.db
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.db
129
- .prepare('DELETE FROM conversations WHERE id = ?')
130
- .run(id);
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
- const row = this.db
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.db.close();
277
+ this.backend.close();
145
278
  }
146
279
  }
147
280
  //# sourceMappingURL=conversation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
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.0",
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"