@assistkick/create 1.2.0 → 1.3.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 (49) hide show
  1. package/package.json +2 -1
  2. package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
  3. package/templates/assistkick-product-system/packages/backend/src/routes/kanban.ts +4 -4
  4. package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +49 -2
  5. package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
  6. package/templates/assistkick-product-system/packages/backend/src/server.ts +19 -6
  7. package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
  8. package/templates/assistkick-product-system/packages/backend/src/services/init.ts +69 -2
  9. package/templates/assistkick-product-system/packages/backend/src/services/project_service.ts +71 -0
  10. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
  11. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
  12. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +88 -17
  13. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.ts +114 -39
  14. package/templates/assistkick-product-system/packages/backend/src/services/terminal_ws_handler.ts +28 -14
  15. package/templates/assistkick-product-system/packages/frontend/src/App.tsx +1 -1
  16. package/templates/assistkick-product-system/packages/frontend/src/api/client.ts +151 -0
  17. package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
  18. package/templates/assistkick-product-system/packages/frontend/src/components/KanbanView.tsx +208 -95
  19. package/templates/assistkick-product-system/packages/frontend/src/components/ProjectSelector.tsx +17 -1
  20. package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +238 -105
  21. package/templates/assistkick-product-system/packages/frontend/src/components/Toolbar.tsx +15 -13
  22. package/templates/assistkick-product-system/packages/frontend/src/constants/graph.ts +1 -0
  23. package/templates/assistkick-product-system/packages/frontend/src/hooks/useProjects.ts +4 -0
  24. package/templates/assistkick-product-system/packages/frontend/src/routes/dashboard.tsx +22 -4
  25. package/templates/assistkick-product-system/packages/frontend/src/styles/index.css +486 -38
  26. package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
  27. package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
  28. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
  29. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
  30. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +14 -0
  31. package/templates/assistkick-product-system/packages/shared/db/schema.ts +5 -0
  32. package/templates/assistkick-product-system/packages/shared/lib/claude-service.ts +54 -1
  33. package/templates/assistkick-product-system/packages/shared/lib/git_workflow.ts +25 -0
  34. package/templates/assistkick-product-system/packages/shared/lib/pipeline-state-store.ts +4 -0
  35. package/templates/assistkick-product-system/packages/shared/lib/pipeline.ts +329 -89
  36. package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
  37. package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
  38. package/templates/assistkick-product-system/packages/shared/tools/get_kanban.ts +2 -1
  39. package/templates/assistkick-product-system/packages/shared/tools/move_card.ts +3 -2
  40. package/templates/assistkick-product-system/packages/shared/tools/update_node.ts +2 -2
  41. package/templates/assistkick-product-system/tests/kanban.test.ts +1 -1
  42. package/templates/assistkick-product-system/tests/pipeline_stats_all_cards.test.ts +1 -1
  43. package/templates/assistkick-product-system/tests/web_terminal.test.ts +189 -150
  44. package/templates/skills/assistkick-bootstrap/SKILL.md +33 -25
  45. package/templates/skills/assistkick-code-reviewer/SKILL.md +23 -15
  46. package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
  47. package/templates/skills/assistkick-debugger/SKILL.md +30 -22
  48. package/templates/skills/assistkick-developer/SKILL.md +37 -29
  49. package/templates/skills/assistkick-interview/SKILL.md +34 -26
@@ -0,0 +1,826 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "75275db8-649d-413c-b89f-d78f75475504",
5
+ "prevId": "9a02b464-8560-485f-a247-6669f71c84bd",
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
+ "created_at": {
577
+ "name": "created_at",
578
+ "type": "text",
579
+ "primaryKey": false,
580
+ "notNull": true,
581
+ "autoincrement": false
582
+ },
583
+ "updated_at": {
584
+ "name": "updated_at",
585
+ "type": "text",
586
+ "primaryKey": false,
587
+ "notNull": true,
588
+ "autoincrement": false
589
+ }
590
+ },
591
+ "indexes": {},
592
+ "foreignKeys": {},
593
+ "compositePrimaryKeys": {},
594
+ "uniqueConstraints": {},
595
+ "checkConstraints": {}
596
+ },
597
+ "refresh_tokens": {
598
+ "name": "refresh_tokens",
599
+ "columns": {
600
+ "id": {
601
+ "name": "id",
602
+ "type": "text",
603
+ "primaryKey": true,
604
+ "notNull": true,
605
+ "autoincrement": false
606
+ },
607
+ "user_id": {
608
+ "name": "user_id",
609
+ "type": "text",
610
+ "primaryKey": false,
611
+ "notNull": true,
612
+ "autoincrement": false
613
+ },
614
+ "token_hash": {
615
+ "name": "token_hash",
616
+ "type": "text",
617
+ "primaryKey": false,
618
+ "notNull": true,
619
+ "autoincrement": false
620
+ },
621
+ "expires_at": {
622
+ "name": "expires_at",
623
+ "type": "text",
624
+ "primaryKey": false,
625
+ "notNull": true,
626
+ "autoincrement": false
627
+ },
628
+ "created_at": {
629
+ "name": "created_at",
630
+ "type": "text",
631
+ "primaryKey": false,
632
+ "notNull": true,
633
+ "autoincrement": false
634
+ }
635
+ },
636
+ "indexes": {},
637
+ "foreignKeys": {
638
+ "refresh_tokens_user_id_users_id_fk": {
639
+ "name": "refresh_tokens_user_id_users_id_fk",
640
+ "tableFrom": "refresh_tokens",
641
+ "tableTo": "users",
642
+ "columnsFrom": [
643
+ "user_id"
644
+ ],
645
+ "columnsTo": [
646
+ "id"
647
+ ],
648
+ "onDelete": "no action",
649
+ "onUpdate": "no action"
650
+ }
651
+ },
652
+ "compositePrimaryKeys": {},
653
+ "uniqueConstraints": {},
654
+ "checkConstraints": {}
655
+ },
656
+ "review_meta": {
657
+ "name": "review_meta",
658
+ "columns": {
659
+ "key": {
660
+ "name": "key",
661
+ "type": "text",
662
+ "primaryKey": true,
663
+ "notNull": true,
664
+ "autoincrement": false
665
+ },
666
+ "value": {
667
+ "name": "value",
668
+ "type": "text",
669
+ "primaryKey": false,
670
+ "notNull": true,
671
+ "autoincrement": false
672
+ },
673
+ "project_id": {
674
+ "name": "project_id",
675
+ "type": "text",
676
+ "primaryKey": false,
677
+ "notNull": false,
678
+ "autoincrement": false
679
+ }
680
+ },
681
+ "indexes": {},
682
+ "foreignKeys": {},
683
+ "compositePrimaryKeys": {},
684
+ "uniqueConstraints": {},
685
+ "checkConstraints": {}
686
+ },
687
+ "sessions": {
688
+ "name": "sessions",
689
+ "columns": {
690
+ "session_number": {
691
+ "name": "session_number",
692
+ "type": "integer",
693
+ "primaryKey": true,
694
+ "notNull": true,
695
+ "autoincrement": false
696
+ },
697
+ "started_at": {
698
+ "name": "started_at",
699
+ "type": "text",
700
+ "primaryKey": false,
701
+ "notNull": true,
702
+ "autoincrement": false
703
+ },
704
+ "ended_at": {
705
+ "name": "ended_at",
706
+ "type": "text",
707
+ "primaryKey": false,
708
+ "notNull": false,
709
+ "autoincrement": false
710
+ },
711
+ "summary": {
712
+ "name": "summary",
713
+ "type": "text",
714
+ "primaryKey": false,
715
+ "notNull": false,
716
+ "autoincrement": false
717
+ },
718
+ "nodes_touched": {
719
+ "name": "nodes_touched",
720
+ "type": "text",
721
+ "primaryKey": false,
722
+ "notNull": false,
723
+ "autoincrement": false
724
+ },
725
+ "questions_resolved": {
726
+ "name": "questions_resolved",
727
+ "type": "integer",
728
+ "primaryKey": false,
729
+ "notNull": true,
730
+ "autoincrement": false,
731
+ "default": 0
732
+ },
733
+ "body": {
734
+ "name": "body",
735
+ "type": "text",
736
+ "primaryKey": false,
737
+ "notNull": false,
738
+ "autoincrement": false
739
+ },
740
+ "project_id": {
741
+ "name": "project_id",
742
+ "type": "text",
743
+ "primaryKey": false,
744
+ "notNull": false,
745
+ "autoincrement": false
746
+ }
747
+ },
748
+ "indexes": {},
749
+ "foreignKeys": {},
750
+ "compositePrimaryKeys": {},
751
+ "uniqueConstraints": {},
752
+ "checkConstraints": {}
753
+ },
754
+ "users": {
755
+ "name": "users",
756
+ "columns": {
757
+ "id": {
758
+ "name": "id",
759
+ "type": "text",
760
+ "primaryKey": true,
761
+ "notNull": true,
762
+ "autoincrement": false
763
+ },
764
+ "email": {
765
+ "name": "email",
766
+ "type": "text",
767
+ "primaryKey": false,
768
+ "notNull": true,
769
+ "autoincrement": false
770
+ },
771
+ "password_hash": {
772
+ "name": "password_hash",
773
+ "type": "text",
774
+ "primaryKey": false,
775
+ "notNull": true,
776
+ "autoincrement": false
777
+ },
778
+ "role": {
779
+ "name": "role",
780
+ "type": "text",
781
+ "primaryKey": false,
782
+ "notNull": true,
783
+ "autoincrement": false,
784
+ "default": "'user'"
785
+ },
786
+ "created_at": {
787
+ "name": "created_at",
788
+ "type": "text",
789
+ "primaryKey": false,
790
+ "notNull": true,
791
+ "autoincrement": false
792
+ },
793
+ "updated_at": {
794
+ "name": "updated_at",
795
+ "type": "text",
796
+ "primaryKey": false,
797
+ "notNull": true,
798
+ "autoincrement": false
799
+ }
800
+ },
801
+ "indexes": {
802
+ "users_email_unique": {
803
+ "name": "users_email_unique",
804
+ "columns": [
805
+ "email"
806
+ ],
807
+ "isUnique": true
808
+ }
809
+ },
810
+ "foreignKeys": {},
811
+ "compositePrimaryKeys": {},
812
+ "uniqueConstraints": {},
813
+ "checkConstraints": {}
814
+ }
815
+ },
816
+ "views": {},
817
+ "enums": {},
818
+ "_meta": {
819
+ "schemas": {},
820
+ "tables": {},
821
+ "columns": {}
822
+ },
823
+ "internal": {
824
+ "indexes": {}
825
+ }
826
+ }