c0de-agent 1.11.0 → 1.13.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.
Files changed (177) hide show
  1. package/README.md +63 -16
  2. package/dist/cli/commands/acp.js +26 -8
  3. package/dist/cli/commands/chat.js +151 -1
  4. package/dist/cli/commands/config.d.ts +2 -0
  5. package/dist/cli/commands/config.js +63 -3
  6. package/dist/cli/commands/serve.js +11 -2
  7. package/dist/cli/commands/sessions.js +109 -3
  8. package/dist/cli/commands/trust.d.ts +11 -0
  9. package/dist/cli/commands/trust.js +31 -0
  10. package/dist/cli/commands/update.js +4 -0
  11. package/dist/cli/deps.d.ts +9 -6
  12. package/dist/cli/deps.js +66 -19
  13. package/dist/cli/index.d.ts +4 -1
  14. package/dist/cli/index.js +110 -11
  15. package/dist/cli/modes/acp.js +39 -8
  16. package/dist/cli/modes/print.d.ts +3 -0
  17. package/dist/cli/modes/print.js +78 -8
  18. package/dist/core/agent.d.ts +1 -1
  19. package/dist/core/agent.js +9 -4
  20. package/dist/core/agents/builtin.js +2 -2
  21. package/dist/core/agents/index.d.ts +0 -1
  22. package/dist/core/agents/index.js +0 -1
  23. package/dist/core/compact.d.ts +2 -0
  24. package/dist/core/compact.js +1 -0
  25. package/dist/core/config.d.ts +53 -2
  26. package/dist/core/config.js +235 -19
  27. package/dist/core/loop/compaction.d.ts +2 -1
  28. package/dist/core/loop/compaction.js +19 -6
  29. package/dist/core/loop/segment.d.ts +3 -1
  30. package/dist/core/loop/segment.js +24 -1
  31. package/dist/core/loop/stream-collect.js +9 -1
  32. package/dist/core/loop/subagent.js +88 -37
  33. package/dist/core/loop.d.ts +7 -0
  34. package/dist/core/loop.js +90 -6
  35. package/dist/core/redact.d.ts +11 -0
  36. package/dist/core/redact.js +49 -0
  37. package/dist/core/slash.d.ts +10 -0
  38. package/dist/core/slash.js +237 -65
  39. package/dist/core/title.js +7 -1
  40. package/dist/core/types.d.ts +22 -1
  41. package/dist/core/workflows/context.js +44 -4
  42. package/dist/core/workflows/discovery.d.ts +2 -2
  43. package/dist/core/workflows/discovery.js +5 -7
  44. package/dist/core/workflows/index.d.ts +2 -1
  45. package/dist/core/workflows/index.js +2 -1
  46. package/dist/core/workflows/registry.d.ts +13 -3
  47. package/dist/core/workflows/registry.js +14 -9
  48. package/dist/core/workflows/resolve.d.ts +22 -0
  49. package/dist/core/workflows/resolve.js +23 -0
  50. package/dist/core/workflows/runtime.d.ts +6 -1
  51. package/dist/core/workflows/runtime.js +19 -2
  52. package/dist/db/schema.d.ts +373 -1
  53. package/dist/db/schema.js +60 -4
  54. package/dist/kanban/index.d.ts +2 -1
  55. package/dist/kanban/index.js +1 -1
  56. package/dist/kanban/store.d.ts +87 -1
  57. package/dist/kanban/store.js +429 -22
  58. package/dist/llm/index.d.ts +1 -1
  59. package/dist/llm/index.js +1 -1
  60. package/dist/llm/provider.js +1 -1
  61. package/dist/llm/registry.d.ts +7 -1
  62. package/dist/llm/registry.js +7 -1
  63. package/dist/llm/retry.d.ts +5 -2
  64. package/dist/llm/retry.js +6 -5
  65. package/dist/llm/routing.d.ts +24 -1
  66. package/dist/llm/routing.js +29 -1
  67. package/dist/plugins/init.d.ts +7 -0
  68. package/dist/plugins/init.js +22 -1
  69. package/dist/plugins/loader.d.ts +7 -1
  70. package/dist/plugins/loader.js +12 -4
  71. package/dist/project/index.d.ts +1 -1
  72. package/dist/project/index.js +1 -1
  73. package/dist/project/project.d.ts +37 -0
  74. package/dist/project/project.js +142 -1
  75. package/dist/project/trust.d.ts +65 -0
  76. package/dist/project/trust.js +328 -0
  77. package/dist/server/agent-manager.d.ts +15 -2
  78. package/dist/server/agent-manager.js +18 -3
  79. package/dist/server/app.js +45 -30
  80. package/dist/server/auth-manager.d.ts +26 -9
  81. package/dist/server/auth-manager.js +78 -42
  82. package/dist/server/context.js +14 -1
  83. package/dist/server/index.d.ts +1 -1
  84. package/dist/server/index.js +1 -1
  85. package/dist/server/middleware/auth.d.ts +11 -1
  86. package/dist/server/middleware/auth.js +25 -3
  87. package/dist/server/permission/interactive.d.ts +11 -3
  88. package/dist/server/permission/interactive.js +23 -4
  89. package/dist/server/permission/store.d.ts +14 -2
  90. package/dist/server/permission/store.js +39 -3
  91. package/dist/server/registry-config.d.ts +14 -0
  92. package/dist/server/registry-config.js +44 -0
  93. package/dist/server/routes/auth.js +66 -10
  94. package/dist/server/routes/chat.d.ts +21 -0
  95. package/dist/server/routes/chat.js +685 -52
  96. package/dist/server/routes/commands.d.ts +4 -2
  97. package/dist/server/routes/commands.js +9 -4
  98. package/dist/server/routes/config.js +180 -23
  99. package/dist/server/routes/files.js +142 -28
  100. package/dist/server/routes/kanban.js +218 -26
  101. package/dist/server/routes/permissions.d.ts +0 -4
  102. package/dist/server/routes/permissions.js +140 -7
  103. package/dist/server/routes/project.js +132 -29
  104. package/dist/server/routes/provider.js +54 -3
  105. package/dist/server/routes/session.js +463 -23
  106. package/dist/server/routes/tool.js +24 -5
  107. package/dist/server/routes/update.d.ts +11 -5
  108. package/dist/server/routes/update.js +145 -29
  109. package/dist/server/routes/usage.d.ts +4 -0
  110. package/dist/server/routes/usage.js +133 -0
  111. package/dist/server/routes/workflows.js +476 -87
  112. package/dist/server/server.d.ts +16 -13
  113. package/dist/server/server.js +364 -107
  114. package/dist/server/terminal/pty-manager.d.ts +12 -0
  115. package/dist/server/terminal/pty-manager.js +63 -7
  116. package/dist/server/types.d.ts +16 -0
  117. package/dist/session/archive.d.ts +3 -1
  118. package/dist/session/archive.js +13 -1
  119. package/dist/session/branch.d.ts +2 -1
  120. package/dist/session/branch.js +92 -9
  121. package/dist/session/context.js +28 -2
  122. package/dist/session/import.d.ts +44 -0
  123. package/dist/session/import.js +83 -0
  124. package/dist/session/index.d.ts +1 -1
  125. package/dist/session/index.js +1 -1
  126. package/dist/session/jobs.d.ts +12 -0
  127. package/dist/session/jobs.js +53 -0
  128. package/dist/session/message.d.ts +7 -1
  129. package/dist/session/message.js +21 -1
  130. package/dist/session/session.d.ts +186 -12
  131. package/dist/session/session.js +577 -33
  132. package/dist/session/snapshot.d.ts +5 -2
  133. package/dist/session/snapshot.js +10 -2
  134. package/dist/session/types.d.ts +13 -1
  135. package/dist/session/usage.d.ts +62 -0
  136. package/dist/session/usage.js +194 -0
  137. package/dist/shared/types/agent.d.ts +29 -2
  138. package/dist/shared/types/config.d.ts +64 -5
  139. package/dist/shared/types/kanban.d.ts +17 -2
  140. package/dist/shared/types/message.d.ts +23 -0
  141. package/dist/tools/builtin/kanban.js +13 -2
  142. package/dist/tools/index.d.ts +14 -3
  143. package/dist/tools/index.js +23 -5
  144. package/dist/tools/websearch/index.d.ts +5 -1
  145. package/dist/tools/websearch/index.js +46 -7
  146. package/dist/tools/websearch/providers/brave.js +2 -2
  147. package/dist/tools/websearch/providers/duckduckgo.js +2 -1
  148. package/dist/tools/websearch/providers/tavily.js +2 -2
  149. package/dist/tools/websearch/types.d.ts +5 -1
  150. package/dist/tools/websearch/types.js +7 -1
  151. package/dist/update/index.d.ts +3 -3
  152. package/dist/update/index.js +2 -2
  153. package/dist/update/ipc.d.ts +13 -2
  154. package/dist/update/ipc.js +36 -2
  155. package/dist/update/scheduler.js +5 -2
  156. package/dist/update/snapshot.d.ts +18 -3
  157. package/dist/update/snapshot.js +5 -2
  158. package/dist/update/updater.d.ts +17 -1
  159. package/dist/update/updater.js +47 -18
  160. package/dist/update/version.d.ts +3 -0
  161. package/dist/update/version.js +9 -3
  162. package/drizzle/0008_tranquil_lily_hollister.sql +1 -0
  163. package/drizzle/0010_usage_events_ledger.sql +17 -0
  164. package/drizzle/0011_slow_slapstick.sql +12 -0
  165. package/drizzle/0012_chief_timeslip.sql +1 -0
  166. package/drizzle/0013_swift_zeigeist.sql +1 -0
  167. package/drizzle/0014_flimsy_legion.sql +1 -0
  168. package/drizzle/meta/0008_snapshot.json +875 -0
  169. package/drizzle/meta/0010_snapshot.json +1010 -0
  170. package/drizzle/meta/0011_snapshot.json +1055 -0
  171. package/drizzle/meta/0012_snapshot.json +1062 -0
  172. package/drizzle/meta/0013_snapshot.json +1068 -0
  173. package/drizzle/meta/0014_snapshot.json +1075 -0
  174. package/drizzle/meta/_journal.json +42 -0
  175. package/package.json +42 -42
  176. package/dist/core/agents/discovery.d.ts +0 -6
  177. package/dist/core/agents/discovery.js +0 -96
@@ -0,0 +1,1055 @@
1
+ {
2
+ "id": "6106a615-3cf2-4d16-a445-1b9354ad2e6b",
3
+ "prevId": "6679e1ee-b9b2-4573-a918-b41243577c79",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.app_meta": {
8
+ "name": "app_meta",
9
+ "schema": "",
10
+ "columns": {
11
+ "key": {
12
+ "name": "key",
13
+ "type": "text",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "value": {
18
+ "name": "value",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true
22
+ }
23
+ },
24
+ "indexes": {},
25
+ "foreignKeys": {},
26
+ "compositePrimaryKeys": {},
27
+ "uniqueConstraints": {},
28
+ "policies": {},
29
+ "checkConstraints": {},
30
+ "isRLSEnabled": false
31
+ },
32
+ "public.compaction_archives": {
33
+ "name": "compaction_archives",
34
+ "schema": "",
35
+ "columns": {
36
+ "id": {
37
+ "name": "id",
38
+ "type": "uuid",
39
+ "primaryKey": true,
40
+ "notNull": true,
41
+ "default": "gen_random_uuid()"
42
+ },
43
+ "session_id": {
44
+ "name": "session_id",
45
+ "type": "uuid",
46
+ "primaryKey": false,
47
+ "notNull": true
48
+ },
49
+ "compaction_id": {
50
+ "name": "compaction_id",
51
+ "type": "uuid",
52
+ "primaryKey": false,
53
+ "notNull": true
54
+ },
55
+ "archive_type": {
56
+ "name": "archive_type",
57
+ "type": "text",
58
+ "primaryKey": false,
59
+ "notNull": true
60
+ },
61
+ "original_entries": {
62
+ "name": "original_entries",
63
+ "type": "jsonb",
64
+ "primaryKey": false,
65
+ "notNull": true
66
+ },
67
+ "file_snapshots": {
68
+ "name": "file_snapshots",
69
+ "type": "jsonb",
70
+ "primaryKey": false,
71
+ "notNull": false,
72
+ "default": "'[]'::jsonb"
73
+ },
74
+ "summary": {
75
+ "name": "summary",
76
+ "type": "text",
77
+ "primaryKey": false,
78
+ "notNull": true
79
+ },
80
+ "token_count": {
81
+ "name": "token_count",
82
+ "type": "integer",
83
+ "primaryKey": false,
84
+ "notNull": false
85
+ },
86
+ "searchable_text": {
87
+ "name": "searchable_text",
88
+ "type": "text",
89
+ "primaryKey": false,
90
+ "notNull": false
91
+ },
92
+ "created_at": {
93
+ "name": "created_at",
94
+ "type": "timestamp with time zone",
95
+ "primaryKey": false,
96
+ "notNull": true,
97
+ "default": "now()"
98
+ }
99
+ },
100
+ "indexes": {
101
+ "idx_archives_session": {
102
+ "name": "idx_archives_session",
103
+ "columns": [
104
+ {
105
+ "expression": "session_id",
106
+ "isExpression": false,
107
+ "asc": true,
108
+ "nulls": "last"
109
+ }
110
+ ],
111
+ "isUnique": false,
112
+ "concurrently": false,
113
+ "method": "btree",
114
+ "with": {}
115
+ }
116
+ },
117
+ "foreignKeys": {
118
+ "compaction_archives_session_id_sessions_id_fk": {
119
+ "name": "compaction_archives_session_id_sessions_id_fk",
120
+ "tableFrom": "compaction_archives",
121
+ "tableTo": "sessions",
122
+ "columnsFrom": [
123
+ "session_id"
124
+ ],
125
+ "columnsTo": [
126
+ "id"
127
+ ],
128
+ "onDelete": "cascade",
129
+ "onUpdate": "no action"
130
+ }
131
+ },
132
+ "compositePrimaryKeys": {},
133
+ "uniqueConstraints": {},
134
+ "policies": {},
135
+ "checkConstraints": {},
136
+ "isRLSEnabled": false
137
+ },
138
+ "public.file_snapshots": {
139
+ "name": "file_snapshots",
140
+ "schema": "",
141
+ "columns": {
142
+ "id": {
143
+ "name": "id",
144
+ "type": "uuid",
145
+ "primaryKey": true,
146
+ "notNull": true,
147
+ "default": "gen_random_uuid()"
148
+ },
149
+ "session_id": {
150
+ "name": "session_id",
151
+ "type": "uuid",
152
+ "primaryKey": false,
153
+ "notNull": true
154
+ },
155
+ "entry_id": {
156
+ "name": "entry_id",
157
+ "type": "uuid",
158
+ "primaryKey": false,
159
+ "notNull": false
160
+ },
161
+ "file_path": {
162
+ "name": "file_path",
163
+ "type": "text",
164
+ "primaryKey": false,
165
+ "notNull": true
166
+ },
167
+ "content": {
168
+ "name": "content",
169
+ "type": "text",
170
+ "primaryKey": false,
171
+ "notNull": true
172
+ },
173
+ "content_hash": {
174
+ "name": "content_hash",
175
+ "type": "text",
176
+ "primaryKey": false,
177
+ "notNull": true
178
+ },
179
+ "token_count": {
180
+ "name": "token_count",
181
+ "type": "integer",
182
+ "primaryKey": false,
183
+ "notNull": false,
184
+ "default": 0
185
+ },
186
+ "version": {
187
+ "name": "version",
188
+ "type": "integer",
189
+ "primaryKey": false,
190
+ "notNull": false,
191
+ "default": 1
192
+ },
193
+ "mtime_ms": {
194
+ "name": "mtime_ms",
195
+ "type": "bigint",
196
+ "primaryKey": false,
197
+ "notNull": false
198
+ },
199
+ "created_at": {
200
+ "name": "created_at",
201
+ "type": "timestamp with time zone",
202
+ "primaryKey": false,
203
+ "notNull": true,
204
+ "default": "now()"
205
+ }
206
+ },
207
+ "indexes": {
208
+ "idx_snapshots_session_path": {
209
+ "name": "idx_snapshots_session_path",
210
+ "columns": [
211
+ {
212
+ "expression": "session_id",
213
+ "isExpression": false,
214
+ "asc": true,
215
+ "nulls": "last"
216
+ },
217
+ {
218
+ "expression": "file_path",
219
+ "isExpression": false,
220
+ "asc": true,
221
+ "nulls": "last"
222
+ }
223
+ ],
224
+ "isUnique": false,
225
+ "concurrently": false,
226
+ "method": "btree",
227
+ "with": {}
228
+ },
229
+ "idx_snapshots_latest": {
230
+ "name": "idx_snapshots_latest",
231
+ "columns": [
232
+ {
233
+ "expression": "session_id",
234
+ "isExpression": false,
235
+ "asc": true,
236
+ "nulls": "last"
237
+ },
238
+ {
239
+ "expression": "file_path",
240
+ "isExpression": false,
241
+ "asc": true,
242
+ "nulls": "last"
243
+ },
244
+ {
245
+ "expression": "version",
246
+ "isExpression": false,
247
+ "asc": true,
248
+ "nulls": "last"
249
+ }
250
+ ],
251
+ "isUnique": true,
252
+ "concurrently": false,
253
+ "method": "btree",
254
+ "with": {}
255
+ }
256
+ },
257
+ "foreignKeys": {
258
+ "file_snapshots_session_id_sessions_id_fk": {
259
+ "name": "file_snapshots_session_id_sessions_id_fk",
260
+ "tableFrom": "file_snapshots",
261
+ "tableTo": "sessions",
262
+ "columnsFrom": [
263
+ "session_id"
264
+ ],
265
+ "columnsTo": [
266
+ "id"
267
+ ],
268
+ "onDelete": "cascade",
269
+ "onUpdate": "no action"
270
+ }
271
+ },
272
+ "compositePrimaryKeys": {},
273
+ "uniqueConstraints": {},
274
+ "policies": {},
275
+ "checkConstraints": {},
276
+ "isRLSEnabled": false
277
+ },
278
+ "public.kanban_boards": {
279
+ "name": "kanban_boards",
280
+ "schema": "",
281
+ "columns": {
282
+ "id": {
283
+ "name": "id",
284
+ "type": "uuid",
285
+ "primaryKey": true,
286
+ "notNull": true,
287
+ "default": "gen_random_uuid()"
288
+ },
289
+ "project_id": {
290
+ "name": "project_id",
291
+ "type": "text",
292
+ "primaryKey": false,
293
+ "notNull": false
294
+ },
295
+ "columns": {
296
+ "name": "columns",
297
+ "type": "jsonb",
298
+ "primaryKey": false,
299
+ "notNull": true
300
+ },
301
+ "labels": {
302
+ "name": "labels",
303
+ "type": "jsonb",
304
+ "primaryKey": false,
305
+ "notNull": true,
306
+ "default": "'[]'::jsonb"
307
+ },
308
+ "deleted_at": {
309
+ "name": "deleted_at",
310
+ "type": "timestamp with time zone",
311
+ "primaryKey": false,
312
+ "notNull": false,
313
+ "default": "null"
314
+ },
315
+ "deleted_project_name": {
316
+ "name": "deleted_project_name",
317
+ "type": "text",
318
+ "primaryKey": false,
319
+ "notNull": false
320
+ },
321
+ "created_at": {
322
+ "name": "created_at",
323
+ "type": "timestamp with time zone",
324
+ "primaryKey": false,
325
+ "notNull": true,
326
+ "default": "now()"
327
+ },
328
+ "updated_at": {
329
+ "name": "updated_at",
330
+ "type": "timestamp with time zone",
331
+ "primaryKey": false,
332
+ "notNull": true,
333
+ "default": "now()"
334
+ }
335
+ },
336
+ "indexes": {
337
+ "uq_kanban_boards_project": {
338
+ "name": "uq_kanban_boards_project",
339
+ "columns": [
340
+ {
341
+ "expression": "project_id",
342
+ "isExpression": false,
343
+ "asc": true,
344
+ "nulls": "last"
345
+ }
346
+ ],
347
+ "isUnique": true,
348
+ "concurrently": false,
349
+ "method": "btree",
350
+ "with": {}
351
+ }
352
+ },
353
+ "foreignKeys": {
354
+ "kanban_boards_project_id_projects_id_fk": {
355
+ "name": "kanban_boards_project_id_projects_id_fk",
356
+ "tableFrom": "kanban_boards",
357
+ "tableTo": "projects",
358
+ "columnsFrom": [
359
+ "project_id"
360
+ ],
361
+ "columnsTo": [
362
+ "id"
363
+ ],
364
+ "onDelete": "set null",
365
+ "onUpdate": "no action"
366
+ }
367
+ },
368
+ "compositePrimaryKeys": {},
369
+ "uniqueConstraints": {},
370
+ "policies": {},
371
+ "checkConstraints": {},
372
+ "isRLSEnabled": false
373
+ },
374
+ "public.kanban_cards": {
375
+ "name": "kanban_cards",
376
+ "schema": "",
377
+ "columns": {
378
+ "id": {
379
+ "name": "id",
380
+ "type": "uuid",
381
+ "primaryKey": true,
382
+ "notNull": true,
383
+ "default": "gen_random_uuid()"
384
+ },
385
+ "board_id": {
386
+ "name": "board_id",
387
+ "type": "uuid",
388
+ "primaryKey": false,
389
+ "notNull": true
390
+ },
391
+ "title": {
392
+ "name": "title",
393
+ "type": "text",
394
+ "primaryKey": false,
395
+ "notNull": true
396
+ },
397
+ "description": {
398
+ "name": "description",
399
+ "type": "text",
400
+ "primaryKey": false,
401
+ "notNull": false
402
+ },
403
+ "column_id": {
404
+ "name": "column_id",
405
+ "type": "text",
406
+ "primaryKey": false,
407
+ "notNull": true
408
+ },
409
+ "priority": {
410
+ "name": "priority",
411
+ "type": "text",
412
+ "primaryKey": false,
413
+ "notNull": true,
414
+ "default": "'medium'"
415
+ },
416
+ "position": {
417
+ "name": "position",
418
+ "type": "real",
419
+ "primaryKey": false,
420
+ "notNull": true,
421
+ "default": 0
422
+ },
423
+ "labels": {
424
+ "name": "labels",
425
+ "type": "jsonb",
426
+ "primaryKey": false,
427
+ "notNull": true,
428
+ "default": "'[]'::jsonb"
429
+ },
430
+ "created_at": {
431
+ "name": "created_at",
432
+ "type": "timestamp with time zone",
433
+ "primaryKey": false,
434
+ "notNull": true,
435
+ "default": "now()"
436
+ },
437
+ "updated_at": {
438
+ "name": "updated_at",
439
+ "type": "timestamp with time zone",
440
+ "primaryKey": false,
441
+ "notNull": true,
442
+ "default": "now()"
443
+ }
444
+ },
445
+ "indexes": {
446
+ "idx_kanban_cards_board": {
447
+ "name": "idx_kanban_cards_board",
448
+ "columns": [
449
+ {
450
+ "expression": "board_id",
451
+ "isExpression": false,
452
+ "asc": true,
453
+ "nulls": "last"
454
+ },
455
+ {
456
+ "expression": "column_id",
457
+ "isExpression": false,
458
+ "asc": true,
459
+ "nulls": "last"
460
+ },
461
+ {
462
+ "expression": "position",
463
+ "isExpression": false,
464
+ "asc": true,
465
+ "nulls": "last"
466
+ }
467
+ ],
468
+ "isUnique": false,
469
+ "concurrently": false,
470
+ "method": "btree",
471
+ "with": {}
472
+ }
473
+ },
474
+ "foreignKeys": {
475
+ "kanban_cards_board_id_kanban_boards_id_fk": {
476
+ "name": "kanban_cards_board_id_kanban_boards_id_fk",
477
+ "tableFrom": "kanban_cards",
478
+ "tableTo": "kanban_boards",
479
+ "columnsFrom": [
480
+ "board_id"
481
+ ],
482
+ "columnsTo": [
483
+ "id"
484
+ ],
485
+ "onDelete": "cascade",
486
+ "onUpdate": "no action"
487
+ }
488
+ },
489
+ "compositePrimaryKeys": {},
490
+ "uniqueConstraints": {},
491
+ "policies": {},
492
+ "checkConstraints": {},
493
+ "isRLSEnabled": false
494
+ },
495
+ "public.projects": {
496
+ "name": "projects",
497
+ "schema": "",
498
+ "columns": {
499
+ "id": {
500
+ "name": "id",
501
+ "type": "text",
502
+ "primaryKey": true,
503
+ "notNull": true
504
+ },
505
+ "worktree": {
506
+ "name": "worktree",
507
+ "type": "text",
508
+ "primaryKey": false,
509
+ "notNull": true
510
+ },
511
+ "vcs": {
512
+ "name": "vcs",
513
+ "type": "text",
514
+ "primaryKey": false,
515
+ "notNull": false
516
+ },
517
+ "name": {
518
+ "name": "name",
519
+ "type": "text",
520
+ "primaryKey": false,
521
+ "notNull": false
522
+ },
523
+ "git_remote": {
524
+ "name": "git_remote",
525
+ "type": "text",
526
+ "primaryKey": false,
527
+ "notNull": false
528
+ },
529
+ "created_at": {
530
+ "name": "created_at",
531
+ "type": "timestamp with time zone",
532
+ "primaryKey": false,
533
+ "notNull": true,
534
+ "default": "now()"
535
+ },
536
+ "updated_at": {
537
+ "name": "updated_at",
538
+ "type": "timestamp with time zone",
539
+ "primaryKey": false,
540
+ "notNull": true,
541
+ "default": "now()"
542
+ },
543
+ "trusted_at": {
544
+ "name": "trusted_at",
545
+ "type": "timestamp with time zone",
546
+ "primaryKey": false,
547
+ "notNull": false,
548
+ "default": "null"
549
+ }
550
+ },
551
+ "indexes": {},
552
+ "foreignKeys": {},
553
+ "compositePrimaryKeys": {},
554
+ "uniqueConstraints": {},
555
+ "policies": {},
556
+ "checkConstraints": {},
557
+ "isRLSEnabled": false
558
+ },
559
+ "public.session_entries": {
560
+ "name": "session_entries",
561
+ "schema": "",
562
+ "columns": {
563
+ "id": {
564
+ "name": "id",
565
+ "type": "uuid",
566
+ "primaryKey": true,
567
+ "notNull": true,
568
+ "default": "gen_random_uuid()"
569
+ },
570
+ "session_id": {
571
+ "name": "session_id",
572
+ "type": "uuid",
573
+ "primaryKey": false,
574
+ "notNull": true
575
+ },
576
+ "tag": {
577
+ "name": "tag",
578
+ "type": "text",
579
+ "primaryKey": false,
580
+ "notNull": true
581
+ },
582
+ "role": {
583
+ "name": "role",
584
+ "type": "text",
585
+ "primaryKey": false,
586
+ "notNull": false
587
+ },
588
+ "content": {
589
+ "name": "content",
590
+ "type": "jsonb",
591
+ "primaryKey": false,
592
+ "notNull": true
593
+ },
594
+ "tool_name": {
595
+ "name": "tool_name",
596
+ "type": "text",
597
+ "primaryKey": false,
598
+ "notNull": false
599
+ },
600
+ "token_count": {
601
+ "name": "token_count",
602
+ "type": "integer",
603
+ "primaryKey": false,
604
+ "notNull": false,
605
+ "default": 0
606
+ },
607
+ "created_at": {
608
+ "name": "created_at",
609
+ "type": "timestamp with time zone",
610
+ "primaryKey": false,
611
+ "notNull": true,
612
+ "default": "now()"
613
+ }
614
+ },
615
+ "indexes": {
616
+ "idx_entries_session": {
617
+ "name": "idx_entries_session",
618
+ "columns": [
619
+ {
620
+ "expression": "session_id",
621
+ "isExpression": false,
622
+ "asc": true,
623
+ "nulls": "last"
624
+ },
625
+ {
626
+ "expression": "created_at",
627
+ "isExpression": false,
628
+ "asc": true,
629
+ "nulls": "last"
630
+ }
631
+ ],
632
+ "isUnique": false,
633
+ "concurrently": false,
634
+ "method": "btree",
635
+ "with": {}
636
+ }
637
+ },
638
+ "foreignKeys": {
639
+ "session_entries_session_id_sessions_id_fk": {
640
+ "name": "session_entries_session_id_sessions_id_fk",
641
+ "tableFrom": "session_entries",
642
+ "tableTo": "sessions",
643
+ "columnsFrom": [
644
+ "session_id"
645
+ ],
646
+ "columnsTo": [
647
+ "id"
648
+ ],
649
+ "onDelete": "cascade",
650
+ "onUpdate": "no action"
651
+ }
652
+ },
653
+ "compositePrimaryKeys": {},
654
+ "uniqueConstraints": {},
655
+ "policies": {},
656
+ "checkConstraints": {},
657
+ "isRLSEnabled": false
658
+ },
659
+ "public.sessions": {
660
+ "name": "sessions",
661
+ "schema": "",
662
+ "columns": {
663
+ "id": {
664
+ "name": "id",
665
+ "type": "uuid",
666
+ "primaryKey": true,
667
+ "notNull": true,
668
+ "default": "gen_random_uuid()"
669
+ },
670
+ "title": {
671
+ "name": "title",
672
+ "type": "text",
673
+ "primaryKey": false,
674
+ "notNull": true
675
+ },
676
+ "parent_id": {
677
+ "name": "parent_id",
678
+ "type": "uuid",
679
+ "primaryKey": false,
680
+ "notNull": false
681
+ },
682
+ "project_id": {
683
+ "name": "project_id",
684
+ "type": "text",
685
+ "primaryKey": false,
686
+ "notNull": false
687
+ },
688
+ "branch_point": {
689
+ "name": "branch_point",
690
+ "type": "integer",
691
+ "primaryKey": false,
692
+ "notNull": false
693
+ },
694
+ "metadata": {
695
+ "name": "metadata",
696
+ "type": "jsonb",
697
+ "primaryKey": false,
698
+ "notNull": true,
699
+ "default": "'{}'::jsonb"
700
+ },
701
+ "agent_type": {
702
+ "name": "agent_type",
703
+ "type": "text",
704
+ "primaryKey": false,
705
+ "notNull": false
706
+ },
707
+ "worktree_path": {
708
+ "name": "worktree_path",
709
+ "type": "text",
710
+ "primaryKey": false,
711
+ "notNull": false
712
+ },
713
+ "source": {
714
+ "name": "source",
715
+ "type": "text",
716
+ "primaryKey": false,
717
+ "notNull": false,
718
+ "default": "null"
719
+ },
720
+ "deleted_at": {
721
+ "name": "deleted_at",
722
+ "type": "timestamp with time zone",
723
+ "primaryKey": false,
724
+ "notNull": false,
725
+ "default": "null"
726
+ },
727
+ "deleted_batch_id": {
728
+ "name": "deleted_batch_id",
729
+ "type": "uuid",
730
+ "primaryKey": false,
731
+ "notNull": false
732
+ },
733
+ "created_at": {
734
+ "name": "created_at",
735
+ "type": "timestamp with time zone",
736
+ "primaryKey": false,
737
+ "notNull": true,
738
+ "default": "now()"
739
+ },
740
+ "updated_at": {
741
+ "name": "updated_at",
742
+ "type": "timestamp with time zone",
743
+ "primaryKey": false,
744
+ "notNull": true,
745
+ "default": "now()"
746
+ }
747
+ },
748
+ "indexes": {
749
+ "idx_sessions_parent": {
750
+ "name": "idx_sessions_parent",
751
+ "columns": [
752
+ {
753
+ "expression": "parent_id",
754
+ "isExpression": false,
755
+ "asc": true,
756
+ "nulls": "last"
757
+ }
758
+ ],
759
+ "isUnique": false,
760
+ "concurrently": false,
761
+ "method": "btree",
762
+ "with": {}
763
+ },
764
+ "idx_sessions_project": {
765
+ "name": "idx_sessions_project",
766
+ "columns": [
767
+ {
768
+ "expression": "project_id",
769
+ "isExpression": false,
770
+ "asc": true,
771
+ "nulls": "last"
772
+ }
773
+ ],
774
+ "isUnique": false,
775
+ "concurrently": false,
776
+ "method": "btree",
777
+ "with": {}
778
+ }
779
+ },
780
+ "foreignKeys": {
781
+ "sessions_parent_id_sessions_id_fk": {
782
+ "name": "sessions_parent_id_sessions_id_fk",
783
+ "tableFrom": "sessions",
784
+ "tableTo": "sessions",
785
+ "columnsFrom": [
786
+ "parent_id"
787
+ ],
788
+ "columnsTo": [
789
+ "id"
790
+ ],
791
+ "onDelete": "no action",
792
+ "onUpdate": "no action"
793
+ },
794
+ "sessions_project_id_projects_id_fk": {
795
+ "name": "sessions_project_id_projects_id_fk",
796
+ "tableFrom": "sessions",
797
+ "tableTo": "projects",
798
+ "columnsFrom": [
799
+ "project_id"
800
+ ],
801
+ "columnsTo": [
802
+ "id"
803
+ ],
804
+ "onDelete": "set null",
805
+ "onUpdate": "no action"
806
+ }
807
+ },
808
+ "compositePrimaryKeys": {},
809
+ "uniqueConstraints": {},
810
+ "policies": {},
811
+ "checkConstraints": {},
812
+ "isRLSEnabled": false
813
+ },
814
+ "public.tool_metrics": {
815
+ "name": "tool_metrics",
816
+ "schema": "",
817
+ "columns": {
818
+ "model": {
819
+ "name": "model",
820
+ "type": "text",
821
+ "primaryKey": false,
822
+ "notNull": true
823
+ },
824
+ "tool": {
825
+ "name": "tool",
826
+ "type": "text",
827
+ "primaryKey": false,
828
+ "notNull": true
829
+ },
830
+ "mode": {
831
+ "name": "mode",
832
+ "type": "text",
833
+ "primaryKey": false,
834
+ "notNull": true
835
+ },
836
+ "attempts": {
837
+ "name": "attempts",
838
+ "type": "integer",
839
+ "primaryKey": false,
840
+ "notNull": true,
841
+ "default": 0
842
+ },
843
+ "successes": {
844
+ "name": "successes",
845
+ "type": "integer",
846
+ "primaryKey": false,
847
+ "notNull": true,
848
+ "default": 0
849
+ },
850
+ "failures": {
851
+ "name": "failures",
852
+ "type": "integer",
853
+ "primaryKey": false,
854
+ "notNull": true,
855
+ "default": 0
856
+ },
857
+ "avg_latency_ms": {
858
+ "name": "avg_latency_ms",
859
+ "type": "real",
860
+ "primaryKey": false,
861
+ "notNull": true,
862
+ "default": 0
863
+ },
864
+ "last_used": {
865
+ "name": "last_used",
866
+ "type": "timestamp with time zone",
867
+ "primaryKey": false,
868
+ "notNull": true,
869
+ "default": "now()"
870
+ }
871
+ },
872
+ "indexes": {
873
+ "uq_tool_metrics_model_tool_mode": {
874
+ "name": "uq_tool_metrics_model_tool_mode",
875
+ "columns": [
876
+ {
877
+ "expression": "model",
878
+ "isExpression": false,
879
+ "asc": true,
880
+ "nulls": "last"
881
+ },
882
+ {
883
+ "expression": "tool",
884
+ "isExpression": false,
885
+ "asc": true,
886
+ "nulls": "last"
887
+ },
888
+ {
889
+ "expression": "mode",
890
+ "isExpression": false,
891
+ "asc": true,
892
+ "nulls": "last"
893
+ }
894
+ ],
895
+ "isUnique": true,
896
+ "concurrently": false,
897
+ "method": "btree",
898
+ "with": {}
899
+ }
900
+ },
901
+ "foreignKeys": {},
902
+ "compositePrimaryKeys": {},
903
+ "uniqueConstraints": {},
904
+ "policies": {},
905
+ "checkConstraints": {},
906
+ "isRLSEnabled": false
907
+ },
908
+ "public.usage_events": {
909
+ "name": "usage_events",
910
+ "schema": "",
911
+ "columns": {
912
+ "id": {
913
+ "name": "id",
914
+ "type": "uuid",
915
+ "primaryKey": true,
916
+ "notNull": true,
917
+ "default": "gen_random_uuid()"
918
+ },
919
+ "call_id": {
920
+ "name": "call_id",
921
+ "type": "uuid",
922
+ "primaryKey": false,
923
+ "notNull": true
924
+ },
925
+ "session_id": {
926
+ "name": "session_id",
927
+ "type": "uuid",
928
+ "primaryKey": false,
929
+ "notNull": false
930
+ },
931
+ "project_id": {
932
+ "name": "project_id",
933
+ "type": "text",
934
+ "primaryKey": false,
935
+ "notNull": false
936
+ },
937
+ "provider": {
938
+ "name": "provider",
939
+ "type": "text",
940
+ "primaryKey": false,
941
+ "notNull": true
942
+ },
943
+ "model": {
944
+ "name": "model",
945
+ "type": "text",
946
+ "primaryKey": false,
947
+ "notNull": true
948
+ },
949
+ "input_tokens": {
950
+ "name": "input_tokens",
951
+ "type": "bigint",
952
+ "primaryKey": false,
953
+ "notNull": true,
954
+ "default": 0
955
+ },
956
+ "output_tokens": {
957
+ "name": "output_tokens",
958
+ "type": "bigint",
959
+ "primaryKey": false,
960
+ "notNull": true,
961
+ "default": 0
962
+ },
963
+ "cache_read": {
964
+ "name": "cache_read",
965
+ "type": "bigint",
966
+ "primaryKey": false,
967
+ "notNull": false,
968
+ "default": 0
969
+ },
970
+ "cost": {
971
+ "name": "cost",
972
+ "type": "real",
973
+ "primaryKey": false,
974
+ "notNull": false
975
+ },
976
+ "timestamp": {
977
+ "name": "timestamp",
978
+ "type": "bigint",
979
+ "primaryKey": false,
980
+ "notNull": true
981
+ }
982
+ },
983
+ "indexes": {
984
+ "uq_usage_events_call": {
985
+ "name": "uq_usage_events_call",
986
+ "columns": [
987
+ {
988
+ "expression": "call_id",
989
+ "isExpression": false,
990
+ "asc": true,
991
+ "nulls": "last"
992
+ }
993
+ ],
994
+ "isUnique": true,
995
+ "concurrently": false,
996
+ "method": "btree",
997
+ "with": {}
998
+ },
999
+ "idx_usage_events_project_ts": {
1000
+ "name": "idx_usage_events_project_ts",
1001
+ "columns": [
1002
+ {
1003
+ "expression": "project_id",
1004
+ "isExpression": false,
1005
+ "asc": true,
1006
+ "nulls": "last"
1007
+ },
1008
+ {
1009
+ "expression": "timestamp",
1010
+ "isExpression": false,
1011
+ "asc": true,
1012
+ "nulls": "last"
1013
+ }
1014
+ ],
1015
+ "isUnique": false,
1016
+ "concurrently": false,
1017
+ "method": "btree",
1018
+ "with": {}
1019
+ },
1020
+ "idx_usage_events_ts": {
1021
+ "name": "idx_usage_events_ts",
1022
+ "columns": [
1023
+ {
1024
+ "expression": "timestamp",
1025
+ "isExpression": false,
1026
+ "asc": true,
1027
+ "nulls": "last"
1028
+ }
1029
+ ],
1030
+ "isUnique": false,
1031
+ "concurrently": false,
1032
+ "method": "btree",
1033
+ "with": {}
1034
+ }
1035
+ },
1036
+ "foreignKeys": {},
1037
+ "compositePrimaryKeys": {},
1038
+ "uniqueConstraints": {},
1039
+ "policies": {},
1040
+ "checkConstraints": {},
1041
+ "isRLSEnabled": false
1042
+ }
1043
+ },
1044
+ "enums": {},
1045
+ "schemas": {},
1046
+ "sequences": {},
1047
+ "roles": {},
1048
+ "policies": {},
1049
+ "views": {},
1050
+ "_meta": {
1051
+ "columns": {},
1052
+ "schemas": {},
1053
+ "tables": {}
1054
+ }
1055
+ }