@assistkick/create 1.2.0 → 1.4.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 (54) hide show
  1. package/package.json +2 -1
  2. package/templates/assistkick-product-system/GITHUB_APP_SETUP.md +88 -0
  3. package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
  4. package/templates/assistkick-product-system/packages/backend/src/routes/kanban.ts +4 -4
  5. package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +49 -2
  6. package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
  7. package/templates/assistkick-product-system/packages/backend/src/server.ts +19 -6
  8. package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
  9. package/templates/assistkick-product-system/packages/backend/src/services/init.ts +69 -2
  10. package/templates/assistkick-product-system/packages/backend/src/services/project_service.ts +71 -0
  11. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
  12. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
  13. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +88 -17
  14. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.ts +114 -39
  15. package/templates/assistkick-product-system/packages/backend/src/services/terminal_ws_handler.ts +28 -14
  16. package/templates/assistkick-product-system/packages/frontend/src/App.tsx +1 -1
  17. package/templates/assistkick-product-system/packages/frontend/src/api/client.ts +151 -0
  18. package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
  19. package/templates/assistkick-product-system/packages/frontend/src/components/KanbanView.tsx +208 -95
  20. package/templates/assistkick-product-system/packages/frontend/src/components/ProjectSelector.tsx +17 -1
  21. package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +238 -105
  22. package/templates/assistkick-product-system/packages/frontend/src/components/Toolbar.tsx +15 -13
  23. package/templates/assistkick-product-system/packages/frontend/src/constants/graph.ts +1 -0
  24. package/templates/assistkick-product-system/packages/frontend/src/hooks/useProjects.ts +4 -0
  25. package/templates/assistkick-product-system/packages/frontend/src/routes/dashboard.tsx +22 -4
  26. package/templates/assistkick-product-system/packages/frontend/src/styles/index.css +486 -38
  27. package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
  28. package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
  29. package/templates/assistkick-product-system/packages/shared/db/migrations/0003_lonely_cyclops.sql +17 -0
  30. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
  31. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
  32. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0003_snapshot.json +862 -0
  33. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +21 -0
  34. package/templates/assistkick-product-system/packages/shared/db/schema.ts +10 -3
  35. package/templates/assistkick-product-system/packages/shared/lib/claude-service.ts +54 -1
  36. package/templates/assistkick-product-system/packages/shared/lib/git_workflow.ts +25 -0
  37. package/templates/assistkick-product-system/packages/shared/lib/pipeline-state-store.ts +4 -0
  38. package/templates/assistkick-product-system/packages/shared/lib/pipeline.ts +329 -89
  39. package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
  40. package/templates/assistkick-product-system/packages/shared/lib/session.ts +10 -6
  41. package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
  42. package/templates/assistkick-product-system/packages/shared/tools/end_session.ts +2 -2
  43. package/templates/assistkick-product-system/packages/shared/tools/get_kanban.ts +2 -1
  44. package/templates/assistkick-product-system/packages/shared/tools/move_card.ts +3 -2
  45. package/templates/assistkick-product-system/packages/shared/tools/update_node.ts +2 -2
  46. package/templates/assistkick-product-system/tests/kanban.test.ts +1 -1
  47. package/templates/assistkick-product-system/tests/pipeline_stats_all_cards.test.ts +1 -1
  48. package/templates/assistkick-product-system/tests/web_terminal.test.ts +189 -150
  49. package/templates/skills/assistkick-bootstrap/SKILL.md +33 -25
  50. package/templates/skills/assistkick-code-reviewer/SKILL.md +23 -15
  51. package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
  52. package/templates/skills/assistkick-debugger/SKILL.md +30 -22
  53. package/templates/skills/assistkick-developer/SKILL.md +37 -29
  54. package/templates/skills/assistkick-interview/SKILL.md +34 -26
@@ -0,0 +1,854 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "fc7b29f6-601b-4577-a78e-69ce32763e2d",
5
+ "prevId": "75275db8-649d-413c-b89f-d78f75475504",
6
+ "tables": {
7
+ "coherence_reviews": {
8
+ "name": "coherence_reviews",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false
16
+ },
17
+ "type": {
18
+ "name": "type",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true,
22
+ "autoincrement": false
23
+ },
24
+ "from_id": {
25
+ "name": "from_id",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": false,
29
+ "autoincrement": false
30
+ },
31
+ "to_id": {
32
+ "name": "to_id",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": false,
36
+ "autoincrement": false
37
+ },
38
+ "relation": {
39
+ "name": "relation",
40
+ "type": "text",
41
+ "primaryKey": false,
42
+ "notNull": false,
43
+ "autoincrement": false
44
+ },
45
+ "proposed_node_type": {
46
+ "name": "proposed_node_type",
47
+ "type": "text",
48
+ "primaryKey": false,
49
+ "notNull": false,
50
+ "autoincrement": false
51
+ },
52
+ "proposed_node_name": {
53
+ "name": "proposed_node_name",
54
+ "type": "text",
55
+ "primaryKey": false,
56
+ "notNull": false,
57
+ "autoincrement": false
58
+ },
59
+ "target_node_id": {
60
+ "name": "target_node_id",
61
+ "type": "text",
62
+ "primaryKey": false,
63
+ "notNull": false,
64
+ "autoincrement": false
65
+ },
66
+ "proposed_description": {
67
+ "name": "proposed_description",
68
+ "type": "text",
69
+ "primaryKey": false,
70
+ "notNull": false,
71
+ "autoincrement": false
72
+ },
73
+ "confidence": {
74
+ "name": "confidence",
75
+ "type": "text",
76
+ "primaryKey": false,
77
+ "notNull": false,
78
+ "autoincrement": false
79
+ },
80
+ "batch_id": {
81
+ "name": "batch_id",
82
+ "type": "text",
83
+ "primaryKey": false,
84
+ "notNull": false,
85
+ "autoincrement": false
86
+ },
87
+ "reasoning": {
88
+ "name": "reasoning",
89
+ "type": "text",
90
+ "primaryKey": false,
91
+ "notNull": true,
92
+ "autoincrement": false
93
+ },
94
+ "status": {
95
+ "name": "status",
96
+ "type": "text",
97
+ "primaryKey": false,
98
+ "notNull": true,
99
+ "autoincrement": false
100
+ },
101
+ "created_at": {
102
+ "name": "created_at",
103
+ "type": "text",
104
+ "primaryKey": false,
105
+ "notNull": true,
106
+ "autoincrement": false
107
+ },
108
+ "resolved_at": {
109
+ "name": "resolved_at",
110
+ "type": "text",
111
+ "primaryKey": false,
112
+ "notNull": false,
113
+ "autoincrement": false
114
+ },
115
+ "project_id": {
116
+ "name": "project_id",
117
+ "type": "text",
118
+ "primaryKey": false,
119
+ "notNull": false,
120
+ "autoincrement": false
121
+ }
122
+ },
123
+ "indexes": {},
124
+ "foreignKeys": {},
125
+ "compositePrimaryKeys": {},
126
+ "uniqueConstraints": {},
127
+ "checkConstraints": {}
128
+ },
129
+ "edges": {
130
+ "name": "edges",
131
+ "columns": {
132
+ "from_id": {
133
+ "name": "from_id",
134
+ "type": "text",
135
+ "primaryKey": false,
136
+ "notNull": true,
137
+ "autoincrement": false
138
+ },
139
+ "relation": {
140
+ "name": "relation",
141
+ "type": "text",
142
+ "primaryKey": false,
143
+ "notNull": true,
144
+ "autoincrement": false
145
+ },
146
+ "to_id": {
147
+ "name": "to_id",
148
+ "type": "text",
149
+ "primaryKey": false,
150
+ "notNull": true,
151
+ "autoincrement": false
152
+ },
153
+ "project_id": {
154
+ "name": "project_id",
155
+ "type": "text",
156
+ "primaryKey": false,
157
+ "notNull": false,
158
+ "autoincrement": false
159
+ }
160
+ },
161
+ "indexes": {},
162
+ "foreignKeys": {},
163
+ "compositePrimaryKeys": {
164
+ "edges_from_id_relation_to_id_pk": {
165
+ "columns": [
166
+ "from_id",
167
+ "relation",
168
+ "to_id"
169
+ ],
170
+ "name": "edges_from_id_relation_to_id_pk"
171
+ }
172
+ },
173
+ "uniqueConstraints": {},
174
+ "checkConstraints": {}
175
+ },
176
+ "invitations": {
177
+ "name": "invitations",
178
+ "columns": {
179
+ "id": {
180
+ "name": "id",
181
+ "type": "text",
182
+ "primaryKey": true,
183
+ "notNull": true,
184
+ "autoincrement": false
185
+ },
186
+ "email": {
187
+ "name": "email",
188
+ "type": "text",
189
+ "primaryKey": false,
190
+ "notNull": true,
191
+ "autoincrement": false
192
+ },
193
+ "token_hash": {
194
+ "name": "token_hash",
195
+ "type": "text",
196
+ "primaryKey": false,
197
+ "notNull": true,
198
+ "autoincrement": false
199
+ },
200
+ "invited_by": {
201
+ "name": "invited_by",
202
+ "type": "text",
203
+ "primaryKey": false,
204
+ "notNull": true,
205
+ "autoincrement": false
206
+ },
207
+ "expires_at": {
208
+ "name": "expires_at",
209
+ "type": "text",
210
+ "primaryKey": false,
211
+ "notNull": true,
212
+ "autoincrement": false
213
+ },
214
+ "accepted_at": {
215
+ "name": "accepted_at",
216
+ "type": "text",
217
+ "primaryKey": false,
218
+ "notNull": false,
219
+ "autoincrement": false
220
+ },
221
+ "created_at": {
222
+ "name": "created_at",
223
+ "type": "text",
224
+ "primaryKey": false,
225
+ "notNull": true,
226
+ "autoincrement": false
227
+ }
228
+ },
229
+ "indexes": {},
230
+ "foreignKeys": {
231
+ "invitations_invited_by_users_id_fk": {
232
+ "name": "invitations_invited_by_users_id_fk",
233
+ "tableFrom": "invitations",
234
+ "tableTo": "users",
235
+ "columnsFrom": [
236
+ "invited_by"
237
+ ],
238
+ "columnsTo": [
239
+ "id"
240
+ ],
241
+ "onDelete": "no action",
242
+ "onUpdate": "no action"
243
+ }
244
+ },
245
+ "compositePrimaryKeys": {},
246
+ "uniqueConstraints": {},
247
+ "checkConstraints": {}
248
+ },
249
+ "kanban": {
250
+ "name": "kanban",
251
+ "columns": {
252
+ "node_id": {
253
+ "name": "node_id",
254
+ "type": "text",
255
+ "primaryKey": true,
256
+ "notNull": true,
257
+ "autoincrement": false
258
+ },
259
+ "column_name": {
260
+ "name": "column_name",
261
+ "type": "text",
262
+ "primaryKey": false,
263
+ "notNull": true,
264
+ "autoincrement": false
265
+ },
266
+ "position": {
267
+ "name": "position",
268
+ "type": "integer",
269
+ "primaryKey": false,
270
+ "notNull": true,
271
+ "autoincrement": false
272
+ },
273
+ "project_id": {
274
+ "name": "project_id",
275
+ "type": "text",
276
+ "primaryKey": false,
277
+ "notNull": false,
278
+ "autoincrement": false
279
+ }
280
+ },
281
+ "indexes": {},
282
+ "foreignKeys": {
283
+ "kanban_node_id_nodes_id_fk": {
284
+ "name": "kanban_node_id_nodes_id_fk",
285
+ "tableFrom": "kanban",
286
+ "tableTo": "nodes",
287
+ "columnsFrom": [
288
+ "node_id"
289
+ ],
290
+ "columnsTo": [
291
+ "id"
292
+ ],
293
+ "onDelete": "no action",
294
+ "onUpdate": "no action"
295
+ }
296
+ },
297
+ "compositePrimaryKeys": {},
298
+ "uniqueConstraints": {},
299
+ "checkConstraints": {}
300
+ },
301
+ "nodes": {
302
+ "name": "nodes",
303
+ "columns": {
304
+ "id": {
305
+ "name": "id",
306
+ "type": "text",
307
+ "primaryKey": true,
308
+ "notNull": true,
309
+ "autoincrement": false
310
+ },
311
+ "type": {
312
+ "name": "type",
313
+ "type": "text",
314
+ "primaryKey": false,
315
+ "notNull": true,
316
+ "autoincrement": false
317
+ },
318
+ "name": {
319
+ "name": "name",
320
+ "type": "text",
321
+ "primaryKey": false,
322
+ "notNull": true,
323
+ "autoincrement": false
324
+ },
325
+ "status": {
326
+ "name": "status",
327
+ "type": "text",
328
+ "primaryKey": false,
329
+ "notNull": true,
330
+ "autoincrement": false
331
+ },
332
+ "priority": {
333
+ "name": "priority",
334
+ "type": "text",
335
+ "primaryKey": false,
336
+ "notNull": true,
337
+ "autoincrement": false
338
+ },
339
+ "completeness": {
340
+ "name": "completeness",
341
+ "type": "real",
342
+ "primaryKey": false,
343
+ "notNull": true,
344
+ "autoincrement": false,
345
+ "default": 0
346
+ },
347
+ "open_questions_count": {
348
+ "name": "open_questions_count",
349
+ "type": "integer",
350
+ "primaryKey": false,
351
+ "notNull": true,
352
+ "autoincrement": false,
353
+ "default": 0
354
+ },
355
+ "kind": {
356
+ "name": "kind",
357
+ "type": "text",
358
+ "primaryKey": false,
359
+ "notNull": false,
360
+ "autoincrement": false
361
+ },
362
+ "created_at": {
363
+ "name": "created_at",
364
+ "type": "text",
365
+ "primaryKey": false,
366
+ "notNull": true,
367
+ "autoincrement": false
368
+ },
369
+ "updated_at": {
370
+ "name": "updated_at",
371
+ "type": "text",
372
+ "primaryKey": false,
373
+ "notNull": true,
374
+ "autoincrement": false
375
+ },
376
+ "body": {
377
+ "name": "body",
378
+ "type": "text",
379
+ "primaryKey": false,
380
+ "notNull": false,
381
+ "autoincrement": false
382
+ },
383
+ "project_id": {
384
+ "name": "project_id",
385
+ "type": "text",
386
+ "primaryKey": false,
387
+ "notNull": false,
388
+ "autoincrement": false
389
+ }
390
+ },
391
+ "indexes": {},
392
+ "foreignKeys": {},
393
+ "compositePrimaryKeys": {},
394
+ "uniqueConstraints": {},
395
+ "checkConstraints": {}
396
+ },
397
+ "password_reset_tokens": {
398
+ "name": "password_reset_tokens",
399
+ "columns": {
400
+ "id": {
401
+ "name": "id",
402
+ "type": "text",
403
+ "primaryKey": true,
404
+ "notNull": true,
405
+ "autoincrement": false
406
+ },
407
+ "user_id": {
408
+ "name": "user_id",
409
+ "type": "text",
410
+ "primaryKey": false,
411
+ "notNull": true,
412
+ "autoincrement": false
413
+ },
414
+ "token_hash": {
415
+ "name": "token_hash",
416
+ "type": "text",
417
+ "primaryKey": false,
418
+ "notNull": true,
419
+ "autoincrement": false
420
+ },
421
+ "expires_at": {
422
+ "name": "expires_at",
423
+ "type": "text",
424
+ "primaryKey": false,
425
+ "notNull": true,
426
+ "autoincrement": false
427
+ },
428
+ "created_at": {
429
+ "name": "created_at",
430
+ "type": "text",
431
+ "primaryKey": false,
432
+ "notNull": true,
433
+ "autoincrement": false
434
+ },
435
+ "used_at": {
436
+ "name": "used_at",
437
+ "type": "text",
438
+ "primaryKey": false,
439
+ "notNull": false,
440
+ "autoincrement": false
441
+ }
442
+ },
443
+ "indexes": {},
444
+ "foreignKeys": {
445
+ "password_reset_tokens_user_id_users_id_fk": {
446
+ "name": "password_reset_tokens_user_id_users_id_fk",
447
+ "tableFrom": "password_reset_tokens",
448
+ "tableTo": "users",
449
+ "columnsFrom": [
450
+ "user_id"
451
+ ],
452
+ "columnsTo": [
453
+ "id"
454
+ ],
455
+ "onDelete": "no action",
456
+ "onUpdate": "no action"
457
+ }
458
+ },
459
+ "compositePrimaryKeys": {},
460
+ "uniqueConstraints": {},
461
+ "checkConstraints": {}
462
+ },
463
+ "pipeline_state": {
464
+ "name": "pipeline_state",
465
+ "columns": {
466
+ "feature_id": {
467
+ "name": "feature_id",
468
+ "type": "text",
469
+ "primaryKey": true,
470
+ "notNull": true,
471
+ "autoincrement": false
472
+ },
473
+ "status": {
474
+ "name": "status",
475
+ "type": "text",
476
+ "primaryKey": false,
477
+ "notNull": true,
478
+ "autoincrement": false
479
+ },
480
+ "cycle": {
481
+ "name": "cycle",
482
+ "type": "integer",
483
+ "primaryKey": false,
484
+ "notNull": true,
485
+ "autoincrement": false,
486
+ "default": 1
487
+ },
488
+ "tasks_json": {
489
+ "name": "tasks_json",
490
+ "type": "text",
491
+ "primaryKey": false,
492
+ "notNull": false,
493
+ "autoincrement": false
494
+ },
495
+ "tool_calls_json": {
496
+ "name": "tool_calls_json",
497
+ "type": "text",
498
+ "primaryKey": false,
499
+ "notNull": false,
500
+ "autoincrement": false
501
+ },
502
+ "work_summaries_json": {
503
+ "name": "work_summaries_json",
504
+ "type": "text",
505
+ "primaryKey": false,
506
+ "notNull": false,
507
+ "autoincrement": false
508
+ },
509
+ "stage_stats_json": {
510
+ "name": "stage_stats_json",
511
+ "type": "text",
512
+ "primaryKey": false,
513
+ "notNull": false,
514
+ "autoincrement": false
515
+ },
516
+ "error": {
517
+ "name": "error",
518
+ "type": "text",
519
+ "primaryKey": false,
520
+ "notNull": false,
521
+ "autoincrement": false
522
+ },
523
+ "updated_at": {
524
+ "name": "updated_at",
525
+ "type": "text",
526
+ "primaryKey": false,
527
+ "notNull": true,
528
+ "autoincrement": false
529
+ },
530
+ "project_id": {
531
+ "name": "project_id",
532
+ "type": "text",
533
+ "primaryKey": false,
534
+ "notNull": false,
535
+ "autoincrement": false
536
+ }
537
+ },
538
+ "indexes": {},
539
+ "foreignKeys": {},
540
+ "compositePrimaryKeys": {},
541
+ "uniqueConstraints": {},
542
+ "checkConstraints": {}
543
+ },
544
+ "projects": {
545
+ "name": "projects",
546
+ "columns": {
547
+ "id": {
548
+ "name": "id",
549
+ "type": "text",
550
+ "primaryKey": true,
551
+ "notNull": true,
552
+ "autoincrement": false
553
+ },
554
+ "name": {
555
+ "name": "name",
556
+ "type": "text",
557
+ "primaryKey": false,
558
+ "notNull": true,
559
+ "autoincrement": false
560
+ },
561
+ "is_default": {
562
+ "name": "is_default",
563
+ "type": "integer",
564
+ "primaryKey": false,
565
+ "notNull": true,
566
+ "autoincrement": false,
567
+ "default": 0
568
+ },
569
+ "archived_at": {
570
+ "name": "archived_at",
571
+ "type": "text",
572
+ "primaryKey": false,
573
+ "notNull": false,
574
+ "autoincrement": false
575
+ },
576
+ "repo_url": {
577
+ "name": "repo_url",
578
+ "type": "text",
579
+ "primaryKey": false,
580
+ "notNull": false,
581
+ "autoincrement": false
582
+ },
583
+ "github_installation_id": {
584
+ "name": "github_installation_id",
585
+ "type": "text",
586
+ "primaryKey": false,
587
+ "notNull": false,
588
+ "autoincrement": false
589
+ },
590
+ "github_repo_full_name": {
591
+ "name": "github_repo_full_name",
592
+ "type": "text",
593
+ "primaryKey": false,
594
+ "notNull": false,
595
+ "autoincrement": false
596
+ },
597
+ "base_branch": {
598
+ "name": "base_branch",
599
+ "type": "text",
600
+ "primaryKey": false,
601
+ "notNull": false,
602
+ "autoincrement": false
603
+ },
604
+ "created_at": {
605
+ "name": "created_at",
606
+ "type": "text",
607
+ "primaryKey": false,
608
+ "notNull": true,
609
+ "autoincrement": false
610
+ },
611
+ "updated_at": {
612
+ "name": "updated_at",
613
+ "type": "text",
614
+ "primaryKey": false,
615
+ "notNull": true,
616
+ "autoincrement": false
617
+ }
618
+ },
619
+ "indexes": {},
620
+ "foreignKeys": {},
621
+ "compositePrimaryKeys": {},
622
+ "uniqueConstraints": {},
623
+ "checkConstraints": {}
624
+ },
625
+ "refresh_tokens": {
626
+ "name": "refresh_tokens",
627
+ "columns": {
628
+ "id": {
629
+ "name": "id",
630
+ "type": "text",
631
+ "primaryKey": true,
632
+ "notNull": true,
633
+ "autoincrement": false
634
+ },
635
+ "user_id": {
636
+ "name": "user_id",
637
+ "type": "text",
638
+ "primaryKey": false,
639
+ "notNull": true,
640
+ "autoincrement": false
641
+ },
642
+ "token_hash": {
643
+ "name": "token_hash",
644
+ "type": "text",
645
+ "primaryKey": false,
646
+ "notNull": true,
647
+ "autoincrement": false
648
+ },
649
+ "expires_at": {
650
+ "name": "expires_at",
651
+ "type": "text",
652
+ "primaryKey": false,
653
+ "notNull": true,
654
+ "autoincrement": false
655
+ },
656
+ "created_at": {
657
+ "name": "created_at",
658
+ "type": "text",
659
+ "primaryKey": false,
660
+ "notNull": true,
661
+ "autoincrement": false
662
+ }
663
+ },
664
+ "indexes": {},
665
+ "foreignKeys": {
666
+ "refresh_tokens_user_id_users_id_fk": {
667
+ "name": "refresh_tokens_user_id_users_id_fk",
668
+ "tableFrom": "refresh_tokens",
669
+ "tableTo": "users",
670
+ "columnsFrom": [
671
+ "user_id"
672
+ ],
673
+ "columnsTo": [
674
+ "id"
675
+ ],
676
+ "onDelete": "no action",
677
+ "onUpdate": "no action"
678
+ }
679
+ },
680
+ "compositePrimaryKeys": {},
681
+ "uniqueConstraints": {},
682
+ "checkConstraints": {}
683
+ },
684
+ "review_meta": {
685
+ "name": "review_meta",
686
+ "columns": {
687
+ "key": {
688
+ "name": "key",
689
+ "type": "text",
690
+ "primaryKey": true,
691
+ "notNull": true,
692
+ "autoincrement": false
693
+ },
694
+ "value": {
695
+ "name": "value",
696
+ "type": "text",
697
+ "primaryKey": false,
698
+ "notNull": true,
699
+ "autoincrement": false
700
+ },
701
+ "project_id": {
702
+ "name": "project_id",
703
+ "type": "text",
704
+ "primaryKey": false,
705
+ "notNull": false,
706
+ "autoincrement": false
707
+ }
708
+ },
709
+ "indexes": {},
710
+ "foreignKeys": {},
711
+ "compositePrimaryKeys": {},
712
+ "uniqueConstraints": {},
713
+ "checkConstraints": {}
714
+ },
715
+ "sessions": {
716
+ "name": "sessions",
717
+ "columns": {
718
+ "session_number": {
719
+ "name": "session_number",
720
+ "type": "integer",
721
+ "primaryKey": true,
722
+ "notNull": true,
723
+ "autoincrement": false
724
+ },
725
+ "started_at": {
726
+ "name": "started_at",
727
+ "type": "text",
728
+ "primaryKey": false,
729
+ "notNull": true,
730
+ "autoincrement": false
731
+ },
732
+ "ended_at": {
733
+ "name": "ended_at",
734
+ "type": "text",
735
+ "primaryKey": false,
736
+ "notNull": false,
737
+ "autoincrement": false
738
+ },
739
+ "summary": {
740
+ "name": "summary",
741
+ "type": "text",
742
+ "primaryKey": false,
743
+ "notNull": false,
744
+ "autoincrement": false
745
+ },
746
+ "nodes_touched": {
747
+ "name": "nodes_touched",
748
+ "type": "text",
749
+ "primaryKey": false,
750
+ "notNull": false,
751
+ "autoincrement": false
752
+ },
753
+ "questions_resolved": {
754
+ "name": "questions_resolved",
755
+ "type": "integer",
756
+ "primaryKey": false,
757
+ "notNull": true,
758
+ "autoincrement": false,
759
+ "default": 0
760
+ },
761
+ "body": {
762
+ "name": "body",
763
+ "type": "text",
764
+ "primaryKey": false,
765
+ "notNull": false,
766
+ "autoincrement": false
767
+ },
768
+ "project_id": {
769
+ "name": "project_id",
770
+ "type": "text",
771
+ "primaryKey": false,
772
+ "notNull": false,
773
+ "autoincrement": false
774
+ }
775
+ },
776
+ "indexes": {},
777
+ "foreignKeys": {},
778
+ "compositePrimaryKeys": {},
779
+ "uniqueConstraints": {},
780
+ "checkConstraints": {}
781
+ },
782
+ "users": {
783
+ "name": "users",
784
+ "columns": {
785
+ "id": {
786
+ "name": "id",
787
+ "type": "text",
788
+ "primaryKey": true,
789
+ "notNull": true,
790
+ "autoincrement": false
791
+ },
792
+ "email": {
793
+ "name": "email",
794
+ "type": "text",
795
+ "primaryKey": false,
796
+ "notNull": true,
797
+ "autoincrement": false
798
+ },
799
+ "password_hash": {
800
+ "name": "password_hash",
801
+ "type": "text",
802
+ "primaryKey": false,
803
+ "notNull": true,
804
+ "autoincrement": false
805
+ },
806
+ "role": {
807
+ "name": "role",
808
+ "type": "text",
809
+ "primaryKey": false,
810
+ "notNull": true,
811
+ "autoincrement": false,
812
+ "default": "'user'"
813
+ },
814
+ "created_at": {
815
+ "name": "created_at",
816
+ "type": "text",
817
+ "primaryKey": false,
818
+ "notNull": true,
819
+ "autoincrement": false
820
+ },
821
+ "updated_at": {
822
+ "name": "updated_at",
823
+ "type": "text",
824
+ "primaryKey": false,
825
+ "notNull": true,
826
+ "autoincrement": false
827
+ }
828
+ },
829
+ "indexes": {
830
+ "users_email_unique": {
831
+ "name": "users_email_unique",
832
+ "columns": [
833
+ "email"
834
+ ],
835
+ "isUnique": true
836
+ }
837
+ },
838
+ "foreignKeys": {},
839
+ "compositePrimaryKeys": {},
840
+ "uniqueConstraints": {},
841
+ "checkConstraints": {}
842
+ }
843
+ },
844
+ "views": {},
845
+ "enums": {},
846
+ "_meta": {
847
+ "schemas": {},
848
+ "tables": {},
849
+ "columns": {}
850
+ },
851
+ "internal": {
852
+ "indexes": {}
853
+ }
854
+ }