@adhd/agent-mcp 2.1.0 → 2.1.1

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.
Binary file
@@ -0,0 +1,55 @@
1
+ CREATE TABLE `agents` (
2
+ `name` text PRIMARY KEY NOT NULL,
3
+ `version` integer DEFAULT 1 NOT NULL,
4
+ `data` text NOT NULL,
5
+ `created_at` text NOT NULL,
6
+ `updated_at` text NOT NULL
7
+ );
8
+ --> statement-breakpoint
9
+ CREATE TABLE `messages` (
10
+ `id` text PRIMARY KEY NOT NULL,
11
+ `session_id` text NOT NULL,
12
+ `role` text NOT NULL,
13
+ `content` text,
14
+ `tool_calls` text,
15
+ `tool_results` text,
16
+ `created_at` text NOT NULL,
17
+ FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
18
+ );
19
+ --> statement-breakpoint
20
+ CREATE TABLE `sessions` (
21
+ `id` text PRIMARY KEY NOT NULL,
22
+ `agent_name` text NOT NULL,
23
+ `agent_version` integer NOT NULL,
24
+ `agent_data` text NOT NULL,
25
+ `status` text DEFAULT 'active' NOT NULL,
26
+ `created_at` text NOT NULL,
27
+ `updated_at` text NOT NULL,
28
+ `closed_at` text,
29
+ FOREIGN KEY (`agent_name`) REFERENCES `agents`(`name`) ON UPDATE no action ON DELETE cascade
30
+ );
31
+ --> statement-breakpoint
32
+ CREATE TABLE `task_events` (
33
+ `id` text PRIMARY KEY NOT NULL,
34
+ `task_id` text NOT NULL,
35
+ `type` text NOT NULL,
36
+ `payload` text,
37
+ `created_at` text NOT NULL,
38
+ FOREIGN KEY (`task_id`) REFERENCES `tasks`(`id`) ON UPDATE no action ON DELETE cascade
39
+ );
40
+ --> statement-breakpoint
41
+ CREATE TABLE `tasks` (
42
+ `id` text PRIMARY KEY NOT NULL,
43
+ `session_id` text NOT NULL,
44
+ `parent_task_id` text,
45
+ `recursion_depth` integer DEFAULT 0 NOT NULL,
46
+ `status` text DEFAULT 'pending' NOT NULL,
47
+ `prompt` text NOT NULL,
48
+ `result` text,
49
+ `error` text,
50
+ `created_at` text NOT NULL,
51
+ `updated_at` text NOT NULL,
52
+ `completed_at` text,
53
+ `cancelled_at` text,
54
+ FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
55
+ );
@@ -0,0 +1,16 @@
1
+ CREATE TABLE `task_usage` (
2
+ `task_id` text PRIMARY KEY NOT NULL,
3
+ `root_task_id` text,
4
+ `agent_name` text NOT NULL,
5
+ `provider_type` text NOT NULL,
6
+ `model` text NOT NULL,
7
+ `input_tokens` integer DEFAULT 0 NOT NULL,
8
+ `output_tokens` integer DEFAULT 0 NOT NULL,
9
+ `tool_call_count` integer DEFAULT 0 NOT NULL,
10
+ `model_calls` integer DEFAULT 0 NOT NULL,
11
+ `latency_ms` integer DEFAULT 0 NOT NULL,
12
+ `is_complete` integer DEFAULT 0 NOT NULL,
13
+ `created_at` text NOT NULL
14
+ );
15
+ --> statement-breakpoint
16
+ CREATE INDEX `idx_task_usage_root_task_id` ON `task_usage` (`root_task_id`);
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `task_usage` ADD `stop_reason` text;--> statement-breakpoint
2
+ ALTER TABLE `task_usage` ADD `max_tokens` integer;
@@ -0,0 +1,2 @@
1
+ ALTER TABLE `task_usage` ADD `cache_read_input_tokens` integer;--> statement-breakpoint
2
+ ALTER TABLE `task_usage` ADD `cache_creation_input_tokens` integer;
@@ -0,0 +1,4 @@
1
+ ALTER TABLE `tasks` ADD `depends_on` text;--> statement-breakpoint
2
+ ALTER TABLE `tasks` ADD `on_upstream_failure` text;--> statement-breakpoint
3
+ ALTER TABLE `tasks` ADD `inputs` text;--> statement-breakpoint
4
+ ALTER TABLE `tasks` ADD `resume_token` text;
@@ -0,0 +1,25 @@
1
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
2
+ CREATE TABLE `__new_tasks` (
3
+ `id` text PRIMARY KEY NOT NULL,
4
+ `session_id` text,
5
+ `parent_task_id` text,
6
+ `is_ephemeral` integer DEFAULT 0 NOT NULL,
7
+ `recursion_depth` integer DEFAULT 0 NOT NULL,
8
+ `status` text DEFAULT 'pending' NOT NULL,
9
+ `prompt` text NOT NULL,
10
+ `result` text,
11
+ `error` text,
12
+ `created_at` text NOT NULL,
13
+ `updated_at` text NOT NULL,
14
+ `completed_at` text,
15
+ `cancelled_at` text,
16
+ `depends_on` text,
17
+ `on_upstream_failure` text,
18
+ `inputs` text,
19
+ `resume_token` text
20
+ );
21
+ --> statement-breakpoint
22
+ INSERT INTO `__new_tasks`("id", "session_id", "parent_task_id", "is_ephemeral", "recursion_depth", "status", "prompt", "result", "error", "created_at", "updated_at", "completed_at", "cancelled_at", "depends_on", "on_upstream_failure", "inputs", "resume_token") SELECT "id", "session_id", "parent_task_id", 0, "recursion_depth", "status", "prompt", "result", "error", "created_at", "updated_at", "completed_at", "cancelled_at", "depends_on", "on_upstream_failure", "inputs", "resume_token" FROM `tasks`;--> statement-breakpoint
23
+ DROP TABLE `tasks`;--> statement-breakpoint
24
+ ALTER TABLE `__new_tasks` RENAME TO `tasks`;--> statement-breakpoint
25
+ PRAGMA foreign_keys=ON;
@@ -0,0 +1,24 @@
1
+ -- runtime-sink-schema: composed_prompts cache + experiment_assignments + sessions.composed_prompt_id
2
+ -- Migration is additive (new tables + nullable column) — backward-compatible with existing rows.
3
+
4
+ CREATE TABLE `composed_prompts` (
5
+ `id` text PRIMARY KEY NOT NULL,
6
+ `agent_slug` text NOT NULL,
7
+ `context_hash` text NOT NULL,
8
+ `content` text NOT NULL,
9
+ `component_versions` text NOT NULL,
10
+ `created_at` text NOT NULL
11
+ );
12
+ --> statement-breakpoint
13
+ CREATE UNIQUE INDEX `idx_composed_prompts_agent_ctx` ON `composed_prompts` (`agent_slug`,`context_hash`);
14
+ --> statement-breakpoint
15
+ CREATE TABLE `experiment_assignments` (
16
+ `id` text PRIMARY KEY NOT NULL,
17
+ `session_id` text NOT NULL,
18
+ `experiment_slug` text NOT NULL,
19
+ `variant` text NOT NULL,
20
+ `created_at` text NOT NULL,
21
+ FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
22
+ );
23
+ --> statement-breakpoint
24
+ ALTER TABLE `sessions` ADD COLUMN `composed_prompt_id` text;
@@ -0,0 +1,40 @@
1
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
2
+ CREATE TABLE `__new_sessions` (
3
+ `id` text PRIMARY KEY NOT NULL,
4
+ `agent_name` text NOT NULL,
5
+ `agent_version` integer NOT NULL,
6
+ `agent_data` text NOT NULL,
7
+ `status` text DEFAULT 'active' NOT NULL,
8
+ `created_at` text NOT NULL,
9
+ `updated_at` text NOT NULL,
10
+ `closed_at` text,
11
+ `composed_prompt_id` text
12
+ );
13
+ --> statement-breakpoint
14
+ INSERT INTO `__new_sessions`("id", "agent_name", "agent_version", "agent_data", "status", "created_at", "updated_at", "closed_at", "composed_prompt_id") SELECT "id", "agent_name", "agent_version", "agent_data", "status", "created_at", "updated_at", "closed_at", "composed_prompt_id" FROM `sessions`;--> statement-breakpoint
15
+ DROP TABLE `sessions`;--> statement-breakpoint
16
+ ALTER TABLE `__new_sessions` RENAME TO `sessions`;--> statement-breakpoint
17
+ PRAGMA foreign_keys=ON;--> statement-breakpoint
18
+ CREATE TABLE `__new_task_usage` (
19
+ `task_id` text PRIMARY KEY NOT NULL,
20
+ `root_task_id` text,
21
+ `agent_name` text NOT NULL,
22
+ `provider_type` text NOT NULL,
23
+ `model` text NOT NULL,
24
+ `input_tokens` integer DEFAULT 0 NOT NULL,
25
+ `output_tokens` integer DEFAULT 0 NOT NULL,
26
+ `tool_call_count` integer DEFAULT 0 NOT NULL,
27
+ `model_calls` integer DEFAULT 0 NOT NULL,
28
+ `latency_ms` integer DEFAULT 0 NOT NULL,
29
+ `is_complete` integer DEFAULT 0 NOT NULL,
30
+ `stop_reason` text,
31
+ `max_tokens` integer,
32
+ `cache_read_input_tokens` integer,
33
+ `cache_creation_input_tokens` integer,
34
+ `created_at` text NOT NULL
35
+ );
36
+ --> statement-breakpoint
37
+ INSERT INTO `__new_task_usage`("task_id", "root_task_id", "agent_name", "provider_type", "model", "input_tokens", "output_tokens", "tool_call_count", "model_calls", "latency_ms", "is_complete", "stop_reason", "max_tokens", "cache_read_input_tokens", "cache_creation_input_tokens", "created_at") SELECT "task_id", "root_task_id", "agent_name", "provider_type", "model", "input_tokens", "output_tokens", "tool_call_count", "model_calls", "latency_ms", "is_complete", "stop_reason", "max_tokens", "cache_read_input_tokens", "cache_creation_input_tokens", "created_at" FROM `task_usage`;--> statement-breakpoint
38
+ DROP TABLE `task_usage`;--> statement-breakpoint
39
+ ALTER TABLE `__new_task_usage` RENAME TO `task_usage`;--> statement-breakpoint
40
+ CREATE INDEX `idx_task_usage_root_task_id` ON `task_usage` (`root_task_id`);
@@ -0,0 +1,19 @@
1
+ -- BUG-ORCH-009 / BUG-ORCH-010 / FINDING-ORCH-007
2
+ --
3
+ -- task_usage previously recorded only CUMULATIVE input/output tokens. Two things were
4
+ -- unrepresentable:
5
+ --
6
+ -- 1. Cache performance. Cache-hit vs cache-miss input differs 50x in price on
7
+ -- deepseek-v4-flash ($0.0028/M vs $0.14/M), making it the largest cost signal in the
8
+ -- system — and it was recorded nowhere for the OpenAI-compatible provider family.
9
+ -- This is what allowed a context limiter to silently collapse cache hit rate from
10
+ -- ~98% to ~5% (BUG-ORCH-008) with no telemetry able to show it.
11
+ --
12
+ -- 2. Peak context. Every column accumulated with `+=`; nothing tracked a MAX. So a run
13
+ -- that billed 715K tokens across 24 calls was indistinguishable from one that held a
14
+ -- 715K context, when the true high-water mark was 43K. Callers could not tell "many
15
+ -- small calls" (fix: preserve the cache) from "one huge call" (fix: cap that input).
16
+ ALTER TABLE `task_usage` ADD `uncached_input_tokens` integer;--> statement-breakpoint
17
+ ALTER TABLE `task_usage` ADD `reasoning_tokens` integer;--> statement-breakpoint
18
+ ALTER TABLE `task_usage` ADD `peak_context_tokens` integer;--> statement-breakpoint
19
+ ALTER TABLE `task_usage` ADD `peak_context_at` integer;
@@ -0,0 +1,29 @@
1
+ -- BUG-ORCH-012 — restore the sessions.agent_name -> agents.name ON DELETE CASCADE FK.
2
+ --
3
+ -- Migration 0000 created `sessions` WITH this FK. The engine refactor moved `agentsTable`
4
+ -- (entrypoint/agent-mcp) and `sessionsTable` (agent-store-runtime) into different packages,
5
+ -- so drizzle-kit could no longer see the relationship and migration 0007 silently rebuilt
6
+ -- the table WITHOUT the FK. `AgentStore.delete()` relies entirely on this cascade, so with
7
+ -- it gone `agent_delete` orphans closed sessions + their messages forever, and reusing a
8
+ -- deleted agent's name resurfaces old orphaned sessions under the new agent.
9
+ --
10
+ -- This rebuilds `sessions` with the FK restored, matching the 0000 definition. The
11
+ -- migration runner disables foreign_keys for the duration of the rebuild (see
12
+ -- migrate-runner.ts), so copying existing rows will not trip the constraint mid-flight.
13
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
14
+ CREATE TABLE `__new_sessions` (
15
+ `id` text PRIMARY KEY NOT NULL,
16
+ `agent_name` text NOT NULL,
17
+ `agent_version` integer NOT NULL,
18
+ `agent_data` text NOT NULL,
19
+ `status` text DEFAULT 'active' NOT NULL,
20
+ `created_at` text NOT NULL,
21
+ `updated_at` text NOT NULL,
22
+ `closed_at` text,
23
+ `composed_prompt_id` text,
24
+ FOREIGN KEY (`agent_name`) REFERENCES `agents`(`name`) ON UPDATE no action ON DELETE cascade
25
+ );--> statement-breakpoint
26
+ INSERT INTO `__new_sessions`("id", "agent_name", "agent_version", "agent_data", "status", "created_at", "updated_at", "closed_at", "composed_prompt_id") SELECT "id", "agent_name", "agent_version", "agent_data", "status", "created_at", "updated_at", "closed_at", "composed_prompt_id" FROM `sessions`;--> statement-breakpoint
27
+ DROP TABLE `sessions`;--> statement-breakpoint
28
+ ALTER TABLE `__new_sessions` RENAME TO `sessions`;--> statement-breakpoint
29
+ PRAGMA foreign_keys=ON;
@@ -0,0 +1,387 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "2d4aefae-8746-4f36-9d30-5eac97187370",
5
+ "prevId": "00000000-0000-0000-0000-000000000000",
6
+ "tables": {
7
+ "agents": {
8
+ "name": "agents",
9
+ "columns": {
10
+ "name": {
11
+ "name": "name",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false
16
+ },
17
+ "version": {
18
+ "name": "version",
19
+ "type": "integer",
20
+ "primaryKey": false,
21
+ "notNull": true,
22
+ "autoincrement": false,
23
+ "default": 1
24
+ },
25
+ "data": {
26
+ "name": "data",
27
+ "type": "text",
28
+ "primaryKey": false,
29
+ "notNull": true,
30
+ "autoincrement": false
31
+ },
32
+ "created_at": {
33
+ "name": "created_at",
34
+ "type": "text",
35
+ "primaryKey": false,
36
+ "notNull": true,
37
+ "autoincrement": false
38
+ },
39
+ "updated_at": {
40
+ "name": "updated_at",
41
+ "type": "text",
42
+ "primaryKey": false,
43
+ "notNull": true,
44
+ "autoincrement": false
45
+ }
46
+ },
47
+ "indexes": {},
48
+ "foreignKeys": {},
49
+ "compositePrimaryKeys": {},
50
+ "uniqueConstraints": {},
51
+ "checkConstraints": {}
52
+ },
53
+ "messages": {
54
+ "name": "messages",
55
+ "columns": {
56
+ "id": {
57
+ "name": "id",
58
+ "type": "text",
59
+ "primaryKey": true,
60
+ "notNull": true,
61
+ "autoincrement": false
62
+ },
63
+ "session_id": {
64
+ "name": "session_id",
65
+ "type": "text",
66
+ "primaryKey": false,
67
+ "notNull": true,
68
+ "autoincrement": false
69
+ },
70
+ "role": {
71
+ "name": "role",
72
+ "type": "text",
73
+ "primaryKey": false,
74
+ "notNull": true,
75
+ "autoincrement": false
76
+ },
77
+ "content": {
78
+ "name": "content",
79
+ "type": "text",
80
+ "primaryKey": false,
81
+ "notNull": false,
82
+ "autoincrement": false
83
+ },
84
+ "tool_calls": {
85
+ "name": "tool_calls",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": false,
89
+ "autoincrement": false
90
+ },
91
+ "tool_results": {
92
+ "name": "tool_results",
93
+ "type": "text",
94
+ "primaryKey": false,
95
+ "notNull": false,
96
+ "autoincrement": false
97
+ },
98
+ "created_at": {
99
+ "name": "created_at",
100
+ "type": "text",
101
+ "primaryKey": false,
102
+ "notNull": true,
103
+ "autoincrement": false
104
+ }
105
+ },
106
+ "indexes": {},
107
+ "foreignKeys": {
108
+ "messages_session_id_sessions_id_fk": {
109
+ "name": "messages_session_id_sessions_id_fk",
110
+ "tableFrom": "messages",
111
+ "tableTo": "sessions",
112
+ "columnsFrom": [
113
+ "session_id"
114
+ ],
115
+ "columnsTo": [
116
+ "id"
117
+ ],
118
+ "onDelete": "cascade",
119
+ "onUpdate": "no action"
120
+ }
121
+ },
122
+ "compositePrimaryKeys": {},
123
+ "uniqueConstraints": {},
124
+ "checkConstraints": {}
125
+ },
126
+ "sessions": {
127
+ "name": "sessions",
128
+ "columns": {
129
+ "id": {
130
+ "name": "id",
131
+ "type": "text",
132
+ "primaryKey": true,
133
+ "notNull": true,
134
+ "autoincrement": false
135
+ },
136
+ "agent_name": {
137
+ "name": "agent_name",
138
+ "type": "text",
139
+ "primaryKey": false,
140
+ "notNull": true,
141
+ "autoincrement": false
142
+ },
143
+ "agent_version": {
144
+ "name": "agent_version",
145
+ "type": "integer",
146
+ "primaryKey": false,
147
+ "notNull": true,
148
+ "autoincrement": false
149
+ },
150
+ "agent_data": {
151
+ "name": "agent_data",
152
+ "type": "text",
153
+ "primaryKey": false,
154
+ "notNull": true,
155
+ "autoincrement": false
156
+ },
157
+ "status": {
158
+ "name": "status",
159
+ "type": "text",
160
+ "primaryKey": false,
161
+ "notNull": true,
162
+ "autoincrement": false,
163
+ "default": "'active'"
164
+ },
165
+ "created_at": {
166
+ "name": "created_at",
167
+ "type": "text",
168
+ "primaryKey": false,
169
+ "notNull": true,
170
+ "autoincrement": false
171
+ },
172
+ "updated_at": {
173
+ "name": "updated_at",
174
+ "type": "text",
175
+ "primaryKey": false,
176
+ "notNull": true,
177
+ "autoincrement": false
178
+ },
179
+ "closed_at": {
180
+ "name": "closed_at",
181
+ "type": "text",
182
+ "primaryKey": false,
183
+ "notNull": false,
184
+ "autoincrement": false
185
+ }
186
+ },
187
+ "indexes": {},
188
+ "foreignKeys": {
189
+ "sessions_agent_name_agents_name_fk": {
190
+ "name": "sessions_agent_name_agents_name_fk",
191
+ "tableFrom": "sessions",
192
+ "tableTo": "agents",
193
+ "columnsFrom": [
194
+ "agent_name"
195
+ ],
196
+ "columnsTo": [
197
+ "name"
198
+ ],
199
+ "onDelete": "cascade",
200
+ "onUpdate": "no action"
201
+ }
202
+ },
203
+ "compositePrimaryKeys": {},
204
+ "uniqueConstraints": {},
205
+ "checkConstraints": {}
206
+ },
207
+ "task_events": {
208
+ "name": "task_events",
209
+ "columns": {
210
+ "id": {
211
+ "name": "id",
212
+ "type": "text",
213
+ "primaryKey": true,
214
+ "notNull": true,
215
+ "autoincrement": false
216
+ },
217
+ "task_id": {
218
+ "name": "task_id",
219
+ "type": "text",
220
+ "primaryKey": false,
221
+ "notNull": true,
222
+ "autoincrement": false
223
+ },
224
+ "type": {
225
+ "name": "type",
226
+ "type": "text",
227
+ "primaryKey": false,
228
+ "notNull": true,
229
+ "autoincrement": false
230
+ },
231
+ "payload": {
232
+ "name": "payload",
233
+ "type": "text",
234
+ "primaryKey": false,
235
+ "notNull": false,
236
+ "autoincrement": false
237
+ },
238
+ "created_at": {
239
+ "name": "created_at",
240
+ "type": "text",
241
+ "primaryKey": false,
242
+ "notNull": true,
243
+ "autoincrement": false
244
+ }
245
+ },
246
+ "indexes": {},
247
+ "foreignKeys": {
248
+ "task_events_task_id_tasks_id_fk": {
249
+ "name": "task_events_task_id_tasks_id_fk",
250
+ "tableFrom": "task_events",
251
+ "tableTo": "tasks",
252
+ "columnsFrom": [
253
+ "task_id"
254
+ ],
255
+ "columnsTo": [
256
+ "id"
257
+ ],
258
+ "onDelete": "cascade",
259
+ "onUpdate": "no action"
260
+ }
261
+ },
262
+ "compositePrimaryKeys": {},
263
+ "uniqueConstraints": {},
264
+ "checkConstraints": {}
265
+ },
266
+ "tasks": {
267
+ "name": "tasks",
268
+ "columns": {
269
+ "id": {
270
+ "name": "id",
271
+ "type": "text",
272
+ "primaryKey": true,
273
+ "notNull": true,
274
+ "autoincrement": false
275
+ },
276
+ "session_id": {
277
+ "name": "session_id",
278
+ "type": "text",
279
+ "primaryKey": false,
280
+ "notNull": true,
281
+ "autoincrement": false
282
+ },
283
+ "parent_task_id": {
284
+ "name": "parent_task_id",
285
+ "type": "text",
286
+ "primaryKey": false,
287
+ "notNull": false,
288
+ "autoincrement": false
289
+ },
290
+ "recursion_depth": {
291
+ "name": "recursion_depth",
292
+ "type": "integer",
293
+ "primaryKey": false,
294
+ "notNull": true,
295
+ "autoincrement": false,
296
+ "default": 0
297
+ },
298
+ "status": {
299
+ "name": "status",
300
+ "type": "text",
301
+ "primaryKey": false,
302
+ "notNull": true,
303
+ "autoincrement": false,
304
+ "default": "'pending'"
305
+ },
306
+ "prompt": {
307
+ "name": "prompt",
308
+ "type": "text",
309
+ "primaryKey": false,
310
+ "notNull": true,
311
+ "autoincrement": false
312
+ },
313
+ "result": {
314
+ "name": "result",
315
+ "type": "text",
316
+ "primaryKey": false,
317
+ "notNull": false,
318
+ "autoincrement": false
319
+ },
320
+ "error": {
321
+ "name": "error",
322
+ "type": "text",
323
+ "primaryKey": false,
324
+ "notNull": false,
325
+ "autoincrement": false
326
+ },
327
+ "created_at": {
328
+ "name": "created_at",
329
+ "type": "text",
330
+ "primaryKey": false,
331
+ "notNull": true,
332
+ "autoincrement": false
333
+ },
334
+ "updated_at": {
335
+ "name": "updated_at",
336
+ "type": "text",
337
+ "primaryKey": false,
338
+ "notNull": true,
339
+ "autoincrement": false
340
+ },
341
+ "completed_at": {
342
+ "name": "completed_at",
343
+ "type": "text",
344
+ "primaryKey": false,
345
+ "notNull": false,
346
+ "autoincrement": false
347
+ },
348
+ "cancelled_at": {
349
+ "name": "cancelled_at",
350
+ "type": "text",
351
+ "primaryKey": false,
352
+ "notNull": false,
353
+ "autoincrement": false
354
+ }
355
+ },
356
+ "indexes": {},
357
+ "foreignKeys": {
358
+ "tasks_session_id_sessions_id_fk": {
359
+ "name": "tasks_session_id_sessions_id_fk",
360
+ "tableFrom": "tasks",
361
+ "tableTo": "sessions",
362
+ "columnsFrom": [
363
+ "session_id"
364
+ ],
365
+ "columnsTo": [
366
+ "id"
367
+ ],
368
+ "onDelete": "cascade",
369
+ "onUpdate": "no action"
370
+ }
371
+ },
372
+ "compositePrimaryKeys": {},
373
+ "uniqueConstraints": {},
374
+ "checkConstraints": {}
375
+ }
376
+ },
377
+ "views": {},
378
+ "enums": {},
379
+ "_meta": {
380
+ "schemas": {},
381
+ "tables": {},
382
+ "columns": {}
383
+ },
384
+ "internal": {
385
+ "indexes": {}
386
+ }
387
+ }