@agi-cli/database 0.1.58 → 0.1.59

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.
@@ -0,0 +1,4 @@
1
+ ALTER TABLE `messages` ADD `cached_input_tokens` integer;--> statement-breakpoint
2
+ ALTER TABLE `messages` ADD `reasoning_tokens` integer;--> statement-breakpoint
3
+ ALTER TABLE `sessions` ADD `total_cached_tokens` integer;--> statement-breakpoint
4
+ ALTER TABLE `sessions` ADD `total_reasoning_tokens` integer;
@@ -0,0 +1,472 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "2211a17e-47cd-4f4a-80ea-8e2c5a208d85",
5
+ "prevId": "dcfa8932-b15c-4c9b-9846-07331968bb2c",
6
+ "tables": {
7
+ "artifacts": {
8
+ "name": "artifacts",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false
16
+ },
17
+ "message_part_id": {
18
+ "name": "message_part_id",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": false,
22
+ "autoincrement": false
23
+ },
24
+ "kind": {
25
+ "name": "kind",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": true,
29
+ "autoincrement": false
30
+ },
31
+ "path": {
32
+ "name": "path",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": false,
36
+ "autoincrement": false
37
+ },
38
+ "mime": {
39
+ "name": "mime",
40
+ "type": "text",
41
+ "primaryKey": false,
42
+ "notNull": false,
43
+ "autoincrement": false
44
+ },
45
+ "size": {
46
+ "name": "size",
47
+ "type": "integer",
48
+ "primaryKey": false,
49
+ "notNull": false,
50
+ "autoincrement": false
51
+ },
52
+ "sha256": {
53
+ "name": "sha256",
54
+ "type": "text",
55
+ "primaryKey": false,
56
+ "notNull": false,
57
+ "autoincrement": false
58
+ }
59
+ },
60
+ "indexes": {
61
+ "artifacts_message_part_id_unique": {
62
+ "name": "artifacts_message_part_id_unique",
63
+ "columns": ["message_part_id"],
64
+ "isUnique": true
65
+ }
66
+ },
67
+ "foreignKeys": {
68
+ "artifacts_message_part_id_message_parts_id_fk": {
69
+ "name": "artifacts_message_part_id_message_parts_id_fk",
70
+ "tableFrom": "artifacts",
71
+ "tableTo": "message_parts",
72
+ "columnsFrom": ["message_part_id"],
73
+ "columnsTo": ["id"],
74
+ "onDelete": "cascade",
75
+ "onUpdate": "no action"
76
+ }
77
+ },
78
+ "compositePrimaryKeys": {},
79
+ "uniqueConstraints": {},
80
+ "checkConstraints": {}
81
+ },
82
+ "message_parts": {
83
+ "name": "message_parts",
84
+ "columns": {
85
+ "id": {
86
+ "name": "id",
87
+ "type": "text",
88
+ "primaryKey": true,
89
+ "notNull": true,
90
+ "autoincrement": false
91
+ },
92
+ "message_id": {
93
+ "name": "message_id",
94
+ "type": "text",
95
+ "primaryKey": false,
96
+ "notNull": true,
97
+ "autoincrement": false
98
+ },
99
+ "index": {
100
+ "name": "index",
101
+ "type": "integer",
102
+ "primaryKey": false,
103
+ "notNull": true,
104
+ "autoincrement": false
105
+ },
106
+ "step_index": {
107
+ "name": "step_index",
108
+ "type": "integer",
109
+ "primaryKey": false,
110
+ "notNull": false,
111
+ "autoincrement": false
112
+ },
113
+ "type": {
114
+ "name": "type",
115
+ "type": "text",
116
+ "primaryKey": false,
117
+ "notNull": true,
118
+ "autoincrement": false
119
+ },
120
+ "content": {
121
+ "name": "content",
122
+ "type": "text",
123
+ "primaryKey": false,
124
+ "notNull": true,
125
+ "autoincrement": false
126
+ },
127
+ "agent": {
128
+ "name": "agent",
129
+ "type": "text",
130
+ "primaryKey": false,
131
+ "notNull": true,
132
+ "autoincrement": false
133
+ },
134
+ "provider": {
135
+ "name": "provider",
136
+ "type": "text",
137
+ "primaryKey": false,
138
+ "notNull": true,
139
+ "autoincrement": false
140
+ },
141
+ "model": {
142
+ "name": "model",
143
+ "type": "text",
144
+ "primaryKey": false,
145
+ "notNull": true,
146
+ "autoincrement": false
147
+ },
148
+ "started_at": {
149
+ "name": "started_at",
150
+ "type": "integer",
151
+ "primaryKey": false,
152
+ "notNull": false,
153
+ "autoincrement": false
154
+ },
155
+ "completed_at": {
156
+ "name": "completed_at",
157
+ "type": "integer",
158
+ "primaryKey": false,
159
+ "notNull": false,
160
+ "autoincrement": false
161
+ },
162
+ "tool_name": {
163
+ "name": "tool_name",
164
+ "type": "text",
165
+ "primaryKey": false,
166
+ "notNull": false,
167
+ "autoincrement": false
168
+ },
169
+ "tool_call_id": {
170
+ "name": "tool_call_id",
171
+ "type": "text",
172
+ "primaryKey": false,
173
+ "notNull": false,
174
+ "autoincrement": false
175
+ },
176
+ "tool_duration_ms": {
177
+ "name": "tool_duration_ms",
178
+ "type": "integer",
179
+ "primaryKey": false,
180
+ "notNull": false,
181
+ "autoincrement": false
182
+ }
183
+ },
184
+ "indexes": {},
185
+ "foreignKeys": {
186
+ "message_parts_message_id_messages_id_fk": {
187
+ "name": "message_parts_message_id_messages_id_fk",
188
+ "tableFrom": "message_parts",
189
+ "tableTo": "messages",
190
+ "columnsFrom": ["message_id"],
191
+ "columnsTo": ["id"],
192
+ "onDelete": "cascade",
193
+ "onUpdate": "no action"
194
+ }
195
+ },
196
+ "compositePrimaryKeys": {},
197
+ "uniqueConstraints": {},
198
+ "checkConstraints": {}
199
+ },
200
+ "messages": {
201
+ "name": "messages",
202
+ "columns": {
203
+ "id": {
204
+ "name": "id",
205
+ "type": "text",
206
+ "primaryKey": true,
207
+ "notNull": true,
208
+ "autoincrement": false
209
+ },
210
+ "session_id": {
211
+ "name": "session_id",
212
+ "type": "text",
213
+ "primaryKey": false,
214
+ "notNull": true,
215
+ "autoincrement": false
216
+ },
217
+ "role": {
218
+ "name": "role",
219
+ "type": "text",
220
+ "primaryKey": false,
221
+ "notNull": true,
222
+ "autoincrement": false
223
+ },
224
+ "status": {
225
+ "name": "status",
226
+ "type": "text",
227
+ "primaryKey": false,
228
+ "notNull": true,
229
+ "autoincrement": false
230
+ },
231
+ "agent": {
232
+ "name": "agent",
233
+ "type": "text",
234
+ "primaryKey": false,
235
+ "notNull": true,
236
+ "autoincrement": false
237
+ },
238
+ "provider": {
239
+ "name": "provider",
240
+ "type": "text",
241
+ "primaryKey": false,
242
+ "notNull": true,
243
+ "autoincrement": false
244
+ },
245
+ "model": {
246
+ "name": "model",
247
+ "type": "text",
248
+ "primaryKey": false,
249
+ "notNull": true,
250
+ "autoincrement": false
251
+ },
252
+ "created_at": {
253
+ "name": "created_at",
254
+ "type": "integer",
255
+ "primaryKey": false,
256
+ "notNull": true,
257
+ "autoincrement": false
258
+ },
259
+ "completed_at": {
260
+ "name": "completed_at",
261
+ "type": "integer",
262
+ "primaryKey": false,
263
+ "notNull": false,
264
+ "autoincrement": false
265
+ },
266
+ "latency_ms": {
267
+ "name": "latency_ms",
268
+ "type": "integer",
269
+ "primaryKey": false,
270
+ "notNull": false,
271
+ "autoincrement": false
272
+ },
273
+ "prompt_tokens": {
274
+ "name": "prompt_tokens",
275
+ "type": "integer",
276
+ "primaryKey": false,
277
+ "notNull": false,
278
+ "autoincrement": false
279
+ },
280
+ "completion_tokens": {
281
+ "name": "completion_tokens",
282
+ "type": "integer",
283
+ "primaryKey": false,
284
+ "notNull": false,
285
+ "autoincrement": false
286
+ },
287
+ "total_tokens": {
288
+ "name": "total_tokens",
289
+ "type": "integer",
290
+ "primaryKey": false,
291
+ "notNull": false,
292
+ "autoincrement": false
293
+ },
294
+ "cached_input_tokens": {
295
+ "name": "cached_input_tokens",
296
+ "type": "integer",
297
+ "primaryKey": false,
298
+ "notNull": false,
299
+ "autoincrement": false
300
+ },
301
+ "reasoning_tokens": {
302
+ "name": "reasoning_tokens",
303
+ "type": "integer",
304
+ "primaryKey": false,
305
+ "notNull": false,
306
+ "autoincrement": false
307
+ },
308
+ "error": {
309
+ "name": "error",
310
+ "type": "text",
311
+ "primaryKey": false,
312
+ "notNull": false,
313
+ "autoincrement": false
314
+ },
315
+ "error_type": {
316
+ "name": "error_type",
317
+ "type": "text",
318
+ "primaryKey": false,
319
+ "notNull": false,
320
+ "autoincrement": false
321
+ },
322
+ "error_details": {
323
+ "name": "error_details",
324
+ "type": "text",
325
+ "primaryKey": false,
326
+ "notNull": false,
327
+ "autoincrement": false
328
+ },
329
+ "is_aborted": {
330
+ "name": "is_aborted",
331
+ "type": "integer",
332
+ "primaryKey": false,
333
+ "notNull": false,
334
+ "autoincrement": false
335
+ }
336
+ },
337
+ "indexes": {},
338
+ "foreignKeys": {
339
+ "messages_session_id_sessions_id_fk": {
340
+ "name": "messages_session_id_sessions_id_fk",
341
+ "tableFrom": "messages",
342
+ "tableTo": "sessions",
343
+ "columnsFrom": ["session_id"],
344
+ "columnsTo": ["id"],
345
+ "onDelete": "cascade",
346
+ "onUpdate": "no action"
347
+ }
348
+ },
349
+ "compositePrimaryKeys": {},
350
+ "uniqueConstraints": {},
351
+ "checkConstraints": {}
352
+ },
353
+ "sessions": {
354
+ "name": "sessions",
355
+ "columns": {
356
+ "id": {
357
+ "name": "id",
358
+ "type": "text",
359
+ "primaryKey": true,
360
+ "notNull": true,
361
+ "autoincrement": false
362
+ },
363
+ "title": {
364
+ "name": "title",
365
+ "type": "text",
366
+ "primaryKey": false,
367
+ "notNull": false,
368
+ "autoincrement": false
369
+ },
370
+ "agent": {
371
+ "name": "agent",
372
+ "type": "text",
373
+ "primaryKey": false,
374
+ "notNull": true,
375
+ "autoincrement": false
376
+ },
377
+ "provider": {
378
+ "name": "provider",
379
+ "type": "text",
380
+ "primaryKey": false,
381
+ "notNull": true,
382
+ "autoincrement": false
383
+ },
384
+ "model": {
385
+ "name": "model",
386
+ "type": "text",
387
+ "primaryKey": false,
388
+ "notNull": true,
389
+ "autoincrement": false
390
+ },
391
+ "project_path": {
392
+ "name": "project_path",
393
+ "type": "text",
394
+ "primaryKey": false,
395
+ "notNull": true,
396
+ "autoincrement": false
397
+ },
398
+ "created_at": {
399
+ "name": "created_at",
400
+ "type": "integer",
401
+ "primaryKey": false,
402
+ "notNull": true,
403
+ "autoincrement": false
404
+ },
405
+ "last_active_at": {
406
+ "name": "last_active_at",
407
+ "type": "integer",
408
+ "primaryKey": false,
409
+ "notNull": false,
410
+ "autoincrement": false
411
+ },
412
+ "total_input_tokens": {
413
+ "name": "total_input_tokens",
414
+ "type": "integer",
415
+ "primaryKey": false,
416
+ "notNull": false,
417
+ "autoincrement": false
418
+ },
419
+ "total_output_tokens": {
420
+ "name": "total_output_tokens",
421
+ "type": "integer",
422
+ "primaryKey": false,
423
+ "notNull": false,
424
+ "autoincrement": false
425
+ },
426
+ "total_cached_tokens": {
427
+ "name": "total_cached_tokens",
428
+ "type": "integer",
429
+ "primaryKey": false,
430
+ "notNull": false,
431
+ "autoincrement": false
432
+ },
433
+ "total_reasoning_tokens": {
434
+ "name": "total_reasoning_tokens",
435
+ "type": "integer",
436
+ "primaryKey": false,
437
+ "notNull": false,
438
+ "autoincrement": false
439
+ },
440
+ "total_tool_time_ms": {
441
+ "name": "total_tool_time_ms",
442
+ "type": "integer",
443
+ "primaryKey": false,
444
+ "notNull": false,
445
+ "autoincrement": false
446
+ },
447
+ "tool_counts_json": {
448
+ "name": "tool_counts_json",
449
+ "type": "text",
450
+ "primaryKey": false,
451
+ "notNull": false,
452
+ "autoincrement": false
453
+ }
454
+ },
455
+ "indexes": {},
456
+ "foreignKeys": {},
457
+ "compositePrimaryKeys": {},
458
+ "uniqueConstraints": {},
459
+ "checkConstraints": {}
460
+ }
461
+ },
462
+ "views": {},
463
+ "enums": {},
464
+ "_meta": {
465
+ "schemas": {},
466
+ "tables": {},
467
+ "columns": {}
468
+ },
469
+ "internal": {
470
+ "indexes": {}
471
+ }
472
+ }
@@ -29,6 +29,13 @@
29
29
  "when": 1759590176611,
30
30
  "tag": "0003_pale_violations",
31
31
  "breakpoints": true
32
+ },
33
+ {
34
+ "idx": 4,
35
+ "version": "6",
36
+ "when": 1759825214699,
37
+ "tag": "0004_left_the_professor",
38
+ "breakpoints": true
32
39
  }
33
40
  ]
34
41
  }
package/drizzle.config.ts CHANGED
@@ -1,14 +1,7 @@
1
1
  import { defineConfig } from 'drizzle-kit';
2
- import { getLocalDataDir } from '@agi-cli/sdk';
3
-
4
- const dataDir = getLocalDataDir(process.cwd());
5
- const dbPath = `${dataDir}/agi.db`;
6
2
 
7
3
  export default defineConfig({
8
4
  dialect: 'sqlite',
9
5
  schema: './src/schema.ts',
10
6
  out: './drizzle',
11
- dbCredentials: {
12
- url: dbPath,
13
- },
14
7
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agi-cli/database",
3
- "version": "0.1.58",
3
+ "version": "0.1.59",
4
4
  "description": "Database and persistence layer for AGI CLI",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -22,7 +22,7 @@
22
22
  "typecheck": "tsc --noEmit"
23
23
  },
24
24
  "dependencies": {
25
- "@agi-cli/sdk": "0.1.58",
25
+ "@agi-cli/sdk": "0.1.59",
26
26
  "drizzle-orm": "^0.44.5"
27
27
  },
28
28
  "devDependencies": {
@@ -11,10 +11,14 @@ import mig0002 from '../../drizzle/0002_vengeful_warlock.sql' with {
11
11
  import mig0003 from '../../drizzle/0003_pale_violations.sql' with {
12
12
  type: 'text',
13
13
  };
14
+ import mig0004 from '../../drizzle/0004_left_the_professor.sql' with {
15
+ type: 'text',
16
+ };
14
17
 
15
18
  export const bundledMigrations: Array<{ name: string; content: string }> = [
16
19
  { name: '0000_tense_shadow_king.sql', content: mig0000 },
17
20
  { name: '0001_past_kabuki.sql', content: mig0001 },
18
21
  { name: '0002_vengeful_warlock.sql', content: mig0002 },
19
22
  { name: '0003_pale_violations.sql', content: mig0003 },
23
+ { name: '0004_left_the_professor.sql', content: mig0004 },
20
24
  ];
@@ -18,6 +18,8 @@ export const messages = sqliteTable('messages', {
18
18
  promptTokens: integer('prompt_tokens'),
19
19
  completionTokens: integer('completion_tokens'),
20
20
  totalTokens: integer('total_tokens'),
21
+ cachedInputTokens: integer('cached_input_tokens'),
22
+ reasoningTokens: integer('reasoning_tokens'),
21
23
  // Error fields
22
24
  error: text('error'),
23
25
  errorType: text('error_type'), // 'api_error', 'abort', 'validation_error', etc.
@@ -12,6 +12,8 @@ export const sessions = sqliteTable('sessions', {
12
12
  lastActiveAt: integer('last_active_at', { mode: 'number' }),
13
13
  totalInputTokens: integer('total_input_tokens'),
14
14
  totalOutputTokens: integer('total_output_tokens'),
15
+ totalCachedTokens: integer('total_cached_tokens'),
16
+ totalReasoningTokens: integer('total_reasoning_tokens'),
15
17
  totalToolTimeMs: integer('total_tool_time_ms'),
16
18
  toolCountsJson: text('tool_counts_json'), // JSON object of name->count
17
19
  });