cognova 0.1.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 (205) hide show
  1. package/.env.example +58 -0
  2. package/Claude/CLAUDE.md +92 -0
  3. package/Claude/hooks/lib/__init__.py +1 -0
  4. package/Claude/hooks/lib/hook_client.py +207 -0
  5. package/Claude/hooks/log-event.py +97 -0
  6. package/Claude/hooks/pre-compact.py +46 -0
  7. package/Claude/hooks/session-end.py +26 -0
  8. package/Claude/hooks/session-start.py +35 -0
  9. package/Claude/hooks/stop-extract.py +40 -0
  10. package/Claude/rules/frontmatter.md +54 -0
  11. package/Claude/rules/markdown.md +43 -0
  12. package/Claude/rules/note-organization.md +33 -0
  13. package/Claude/settings.json +54 -0
  14. package/Claude/skills/README.md +136 -0
  15. package/Claude/skills/_lib/__init__.py +1 -0
  16. package/Claude/skills/_lib/api.py +164 -0
  17. package/Claude/skills/_lib/output.py +95 -0
  18. package/Claude/skills/environment/SKILL.md +73 -0
  19. package/Claude/skills/environment/environment.py +239 -0
  20. package/Claude/skills/memory/SKILL.md +153 -0
  21. package/Claude/skills/memory/memory.py +270 -0
  22. package/Claude/skills/project/SKILL.md +105 -0
  23. package/Claude/skills/project/project.py +203 -0
  24. package/Claude/skills/skill-creator/SKILL.md +261 -0
  25. package/Claude/skills/task/SKILL.md +135 -0
  26. package/Claude/skills/task/task.py +310 -0
  27. package/LICENSE +21 -0
  28. package/README.md +176 -0
  29. package/app/app.config.ts +8 -0
  30. package/app/app.vue +39 -0
  31. package/app/assets/css/main.css +10 -0
  32. package/app/components/AppLogo.vue +40 -0
  33. package/app/components/AssistantPanel.client.vue +518 -0
  34. package/app/components/ConfirmModal.vue +84 -0
  35. package/app/components/TemplateMenu.vue +49 -0
  36. package/app/components/agents/AgentActivityChart.client.vue +105 -0
  37. package/app/components/agents/AgentActivityChart.server.vue +25 -0
  38. package/app/components/agents/AgentForm.vue +304 -0
  39. package/app/components/agents/AgentRunModal.vue +154 -0
  40. package/app/components/agents/AgentStatsCards.vue +98 -0
  41. package/app/components/chat/ChatInput.vue +85 -0
  42. package/app/components/chat/ConversationList.vue +78 -0
  43. package/app/components/chat/MessageBubble.vue +81 -0
  44. package/app/components/chat/StreamingMessage.vue +36 -0
  45. package/app/components/chat/ToolCallBlock.vue +77 -0
  46. package/app/components/editor/CodeEditor.client.vue +212 -0
  47. package/app/components/editor/CodeEditorFallback.vue +12 -0
  48. package/app/components/editor/DocumentEditor.vue +326 -0
  49. package/app/components/editor/DocumentMetadata.vue +140 -0
  50. package/app/components/editor/MarkdownEditor.vue +146 -0
  51. package/app/components/files/FileTree.vue +436 -0
  52. package/app/components/hooks/HookActivityChart.client.vue +117 -0
  53. package/app/components/hooks/HookActivityChart.server.vue +25 -0
  54. package/app/components/hooks/HookStatsCards.vue +63 -0
  55. package/app/components/hooks/RecentEventsTable.vue +123 -0
  56. package/app/components/hooks/ToolBreakdownTable.vue +72 -0
  57. package/app/components/search/DashboardSearch.vue +122 -0
  58. package/app/components/tasks/ProjectSelect.vue +35 -0
  59. package/app/components/tasks/TaskCard.vue +182 -0
  60. package/app/components/tasks/TaskDetail.vue +160 -0
  61. package/app/components/tasks/TaskForm.vue +280 -0
  62. package/app/components/tasks/TaskList.vue +69 -0
  63. package/app/components/view/ViewToc.vue +85 -0
  64. package/app/composables/useAgents.ts +153 -0
  65. package/app/composables/useAuth.ts +73 -0
  66. package/app/composables/useChat.ts +298 -0
  67. package/app/composables/useDocument.ts +141 -0
  68. package/app/composables/useEditor.ts +100 -0
  69. package/app/composables/useFileTree.ts +220 -0
  70. package/app/composables/useHookEvents.ts +68 -0
  71. package/app/composables/useMemories.ts +83 -0
  72. package/app/composables/useNotificationBus.ts +154 -0
  73. package/app/composables/usePreferences.ts +131 -0
  74. package/app/composables/useProjects.ts +97 -0
  75. package/app/composables/useSearch.ts +52 -0
  76. package/app/composables/useTasks.ts +201 -0
  77. package/app/composables/useTerminal.ts +135 -0
  78. package/app/layouts/auth.vue +20 -0
  79. package/app/layouts/dashboard.vue +186 -0
  80. package/app/layouts/view.vue +60 -0
  81. package/app/middleware/auth.ts +9 -0
  82. package/app/pages/agents/[id].vue +602 -0
  83. package/app/pages/agents/index.vue +412 -0
  84. package/app/pages/chat.vue +146 -0
  85. package/app/pages/dashboard.vue +80 -0
  86. package/app/pages/docs.vue +131 -0
  87. package/app/pages/hooks.vue +163 -0
  88. package/app/pages/index.vue +249 -0
  89. package/app/pages/login.vue +60 -0
  90. package/app/pages/memories.vue +282 -0
  91. package/app/pages/settings.vue +625 -0
  92. package/app/pages/tasks.vue +312 -0
  93. package/app/pages/view/[uuid].vue +376 -0
  94. package/dist/cli/index.js +2711 -0
  95. package/drizzle.config.ts +10 -0
  96. package/nuxt.config.ts +98 -0
  97. package/package.json +107 -0
  98. package/server/api/agents/[id]/cancel.post.ts +27 -0
  99. package/server/api/agents/[id]/run.post.ts +34 -0
  100. package/server/api/agents/[id]/runs.get.ts +45 -0
  101. package/server/api/agents/[id]/stats.get.ts +94 -0
  102. package/server/api/agents/[id].delete.ts +29 -0
  103. package/server/api/agents/[id].get.ts +25 -0
  104. package/server/api/agents/[id].patch.ts +55 -0
  105. package/server/api/agents/index.get.ts +15 -0
  106. package/server/api/agents/index.post.ts +48 -0
  107. package/server/api/agents/stats.get.ts +86 -0
  108. package/server/api/auth/[...all].ts +5 -0
  109. package/server/api/conversations/[id].delete.ts +16 -0
  110. package/server/api/conversations/[id].get.ts +34 -0
  111. package/server/api/conversations/index.get.ts +17 -0
  112. package/server/api/documents/[id]/index.delete.ts +47 -0
  113. package/server/api/documents/[id]/index.put.ts +102 -0
  114. package/server/api/documents/[id]/public.get.ts +60 -0
  115. package/server/api/documents/[id]/restore.post.ts +65 -0
  116. package/server/api/documents/by-path.post.ts +168 -0
  117. package/server/api/documents/index.get.ts +48 -0
  118. package/server/api/fs/delete.post.ts +41 -0
  119. package/server/api/fs/list.get.ts +99 -0
  120. package/server/api/fs/mkdir.post.ts +44 -0
  121. package/server/api/fs/move.post.ts +68 -0
  122. package/server/api/fs/read.post.ts +48 -0
  123. package/server/api/fs/rename.post.ts +55 -0
  124. package/server/api/fs/write.post.ts +51 -0
  125. package/server/api/health.get.ts +40 -0
  126. package/server/api/home.get.ts +26 -0
  127. package/server/api/hooks/events/index.get.ts +56 -0
  128. package/server/api/hooks/events/index.post.ts +36 -0
  129. package/server/api/hooks/stats.get.ts +99 -0
  130. package/server/api/memory/[id].delete.ts +26 -0
  131. package/server/api/memory/context.get.ts +83 -0
  132. package/server/api/memory/extract.post.ts +42 -0
  133. package/server/api/memory/search.get.ts +70 -0
  134. package/server/api/memory/store.post.ts +31 -0
  135. package/server/api/projects/[id]/index.delete.ts +40 -0
  136. package/server/api/projects/[id]/index.get.ts +25 -0
  137. package/server/api/projects/[id]/index.put.ts +50 -0
  138. package/server/api/projects/index.get.ts +20 -0
  139. package/server/api/projects/index.post.ts +34 -0
  140. package/server/api/secrets/[key].delete.ts +31 -0
  141. package/server/api/secrets/[key].get.ts +30 -0
  142. package/server/api/secrets/[key].put.ts +52 -0
  143. package/server/api/secrets/index.get.ts +20 -0
  144. package/server/api/secrets/index.post.ts +58 -0
  145. package/server/api/tasks/[id]/index.delete.ts +46 -0
  146. package/server/api/tasks/[id]/index.get.ts +24 -0
  147. package/server/api/tasks/[id]/index.put.ts +70 -0
  148. package/server/api/tasks/[id]/restore.post.ts +49 -0
  149. package/server/api/tasks/index.get.ts +53 -0
  150. package/server/api/tasks/index.post.ts +47 -0
  151. package/server/api/tasks/tags.get.ts +21 -0
  152. package/server/api/user/email.patch.ts +56 -0
  153. package/server/db/index.ts +76 -0
  154. package/server/db/migrate.ts +41 -0
  155. package/server/db/schema.ts +345 -0
  156. package/server/db/seed.ts +46 -0
  157. package/server/db/types.ts +28 -0
  158. package/server/drizzle/migrations/0000_brown_george_stacy.sql +34 -0
  159. package/server/drizzle/migrations/0001_stormy_pyro.sql +16 -0
  160. package/server/drizzle/migrations/0002_clean_colossus.sql +50 -0
  161. package/server/drizzle/migrations/0003_fine_joystick.sql +12 -0
  162. package/server/drizzle/migrations/0004_tan_groot.sql +26 -0
  163. package/server/drizzle/migrations/0005_cloudy_lilith.sql +33 -0
  164. package/server/drizzle/migrations/0006_ordinary_retro_girl.sql +13 -0
  165. package/server/drizzle/migrations/0007_flowery_venus.sql +15 -0
  166. package/server/drizzle/migrations/0008_talented_zombie.sql +13 -0
  167. package/server/drizzle/migrations/0009_gray_shen.sql +15 -0
  168. package/server/drizzle/migrations/meta/0000_snapshot.json +230 -0
  169. package/server/drizzle/migrations/meta/0001_snapshot.json +306 -0
  170. package/server/drizzle/migrations/meta/0002_snapshot.json +615 -0
  171. package/server/drizzle/migrations/meta/0003_snapshot.json +730 -0
  172. package/server/drizzle/migrations/meta/0004_snapshot.json +916 -0
  173. package/server/drizzle/migrations/meta/0005_snapshot.json +1127 -0
  174. package/server/drizzle/migrations/meta/0006_snapshot.json +1213 -0
  175. package/server/drizzle/migrations/meta/0007_snapshot.json +1307 -0
  176. package/server/drizzle/migrations/meta/0008_snapshot.json +1390 -0
  177. package/server/drizzle/migrations/meta/0009_snapshot.json +1487 -0
  178. package/server/drizzle/migrations/meta/_journal.json +76 -0
  179. package/server/middleware/auth.ts +79 -0
  180. package/server/plugins/00.env-validate.ts +38 -0
  181. package/server/plugins/01.api-token.ts +31 -0
  182. package/server/plugins/02.database.ts +54 -0
  183. package/server/plugins/03.file-watcher.ts +65 -0
  184. package/server/plugins/04.cron-agents.ts +26 -0
  185. package/server/routes/_ws/chat.ts +252 -0
  186. package/server/routes/notifications.ts +47 -0
  187. package/server/routes/terminal.ts +98 -0
  188. package/server/services/agent-executor.ts +218 -0
  189. package/server/services/cron-scheduler.ts +78 -0
  190. package/server/services/memory-extractor.ts +120 -0
  191. package/server/utils/agent-cleanup.ts +91 -0
  192. package/server/utils/agent-registry.ts +95 -0
  193. package/server/utils/auth.ts +33 -0
  194. package/server/utils/chat-session-manager.ts +59 -0
  195. package/server/utils/crypto.ts +40 -0
  196. package/server/utils/db-guard.ts +12 -0
  197. package/server/utils/db-state.ts +63 -0
  198. package/server/utils/document-sync.ts +207 -0
  199. package/server/utils/frontmatter.ts +84 -0
  200. package/server/utils/notification-bus.ts +60 -0
  201. package/server/utils/path-validator.ts +55 -0
  202. package/server/utils/pty-manager.ts +130 -0
  203. package/shared/types/index.ts +604 -0
  204. package/shared/utils/language-detection.ts +87 -0
  205. package/tsconfig.json +10 -0
@@ -0,0 +1,230 @@
1
+ {
2
+ "id": "ea411e1f-ba22-4fef-9154-4d1931fbcb2e",
3
+ "prevId": "00000000-0000-0000-0000-000000000000",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.conversations": {
8
+ "name": "conversations",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "gen_random_uuid()"
17
+ },
18
+ "session_id": {
19
+ "name": "session_id",
20
+ "type": "text",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "summary": {
25
+ "name": "summary",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": false
29
+ },
30
+ "started_at": {
31
+ "name": "started_at",
32
+ "type": "timestamp with time zone",
33
+ "primaryKey": false,
34
+ "notNull": true,
35
+ "default": "now()"
36
+ },
37
+ "ended_at": {
38
+ "name": "ended_at",
39
+ "type": "timestamp with time zone",
40
+ "primaryKey": false,
41
+ "notNull": false
42
+ },
43
+ "message_count": {
44
+ "name": "message_count",
45
+ "type": "integer",
46
+ "primaryKey": false,
47
+ "notNull": true,
48
+ "default": 0
49
+ }
50
+ },
51
+ "indexes": {},
52
+ "foreignKeys": {},
53
+ "compositePrimaryKeys": {},
54
+ "uniqueConstraints": {
55
+ "conversations_session_id_unique": {
56
+ "name": "conversations_session_id_unique",
57
+ "nullsNotDistinct": false,
58
+ "columns": [
59
+ "session_id"
60
+ ]
61
+ }
62
+ },
63
+ "policies": {},
64
+ "checkConstraints": {},
65
+ "isRLSEnabled": false
66
+ },
67
+ "public.reminders": {
68
+ "name": "reminders",
69
+ "schema": "",
70
+ "columns": {
71
+ "id": {
72
+ "name": "id",
73
+ "type": "uuid",
74
+ "primaryKey": true,
75
+ "notNull": true,
76
+ "default": "gen_random_uuid()"
77
+ },
78
+ "task_id": {
79
+ "name": "task_id",
80
+ "type": "uuid",
81
+ "primaryKey": false,
82
+ "notNull": false
83
+ },
84
+ "message": {
85
+ "name": "message",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": true
89
+ },
90
+ "remind_at": {
91
+ "name": "remind_at",
92
+ "type": "timestamp with time zone",
93
+ "primaryKey": false,
94
+ "notNull": true
95
+ },
96
+ "notified": {
97
+ "name": "notified",
98
+ "type": "boolean",
99
+ "primaryKey": false,
100
+ "notNull": true,
101
+ "default": false
102
+ },
103
+ "created_at": {
104
+ "name": "created_at",
105
+ "type": "timestamp with time zone",
106
+ "primaryKey": false,
107
+ "notNull": true,
108
+ "default": "now()"
109
+ }
110
+ },
111
+ "indexes": {},
112
+ "foreignKeys": {
113
+ "reminders_task_id_tasks_id_fk": {
114
+ "name": "reminders_task_id_tasks_id_fk",
115
+ "tableFrom": "reminders",
116
+ "tableTo": "tasks",
117
+ "columnsFrom": [
118
+ "task_id"
119
+ ],
120
+ "columnsTo": [
121
+ "id"
122
+ ],
123
+ "onDelete": "cascade",
124
+ "onUpdate": "no action"
125
+ }
126
+ },
127
+ "compositePrimaryKeys": {},
128
+ "uniqueConstraints": {},
129
+ "policies": {},
130
+ "checkConstraints": {},
131
+ "isRLSEnabled": false
132
+ },
133
+ "public.tasks": {
134
+ "name": "tasks",
135
+ "schema": "",
136
+ "columns": {
137
+ "id": {
138
+ "name": "id",
139
+ "type": "uuid",
140
+ "primaryKey": true,
141
+ "notNull": true,
142
+ "default": "gen_random_uuid()"
143
+ },
144
+ "title": {
145
+ "name": "title",
146
+ "type": "text",
147
+ "primaryKey": false,
148
+ "notNull": true
149
+ },
150
+ "description": {
151
+ "name": "description",
152
+ "type": "text",
153
+ "primaryKey": false,
154
+ "notNull": false
155
+ },
156
+ "status": {
157
+ "name": "status",
158
+ "type": "text",
159
+ "primaryKey": false,
160
+ "notNull": true,
161
+ "default": "'todo'"
162
+ },
163
+ "priority": {
164
+ "name": "priority",
165
+ "type": "integer",
166
+ "primaryKey": false,
167
+ "notNull": true,
168
+ "default": 0
169
+ },
170
+ "project": {
171
+ "name": "project",
172
+ "type": "text",
173
+ "primaryKey": false,
174
+ "notNull": false
175
+ },
176
+ "due_date": {
177
+ "name": "due_date",
178
+ "type": "timestamp with time zone",
179
+ "primaryKey": false,
180
+ "notNull": false
181
+ },
182
+ "tags": {
183
+ "name": "tags",
184
+ "type": "text[]",
185
+ "primaryKey": false,
186
+ "notNull": false,
187
+ "default": "'{}'"
188
+ },
189
+ "created_at": {
190
+ "name": "created_at",
191
+ "type": "timestamp with time zone",
192
+ "primaryKey": false,
193
+ "notNull": true,
194
+ "default": "now()"
195
+ },
196
+ "updated_at": {
197
+ "name": "updated_at",
198
+ "type": "timestamp with time zone",
199
+ "primaryKey": false,
200
+ "notNull": true,
201
+ "default": "now()"
202
+ },
203
+ "completed_at": {
204
+ "name": "completed_at",
205
+ "type": "timestamp with time zone",
206
+ "primaryKey": false,
207
+ "notNull": false
208
+ }
209
+ },
210
+ "indexes": {},
211
+ "foreignKeys": {},
212
+ "compositePrimaryKeys": {},
213
+ "uniqueConstraints": {},
214
+ "policies": {},
215
+ "checkConstraints": {},
216
+ "isRLSEnabled": false
217
+ }
218
+ },
219
+ "enums": {},
220
+ "schemas": {},
221
+ "sequences": {},
222
+ "roles": {},
223
+ "policies": {},
224
+ "views": {},
225
+ "_meta": {
226
+ "columns": {},
227
+ "schemas": {},
228
+ "tables": {}
229
+ }
230
+ }
@@ -0,0 +1,306 @@
1
+ {
2
+ "id": "501d5c15-0d95-4c0d-9296-5b09e794c263",
3
+ "prevId": "ea411e1f-ba22-4fef-9154-4d1931fbcb2e",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.conversations": {
8
+ "name": "conversations",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "gen_random_uuid()"
17
+ },
18
+ "session_id": {
19
+ "name": "session_id",
20
+ "type": "text",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "summary": {
25
+ "name": "summary",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": false
29
+ },
30
+ "started_at": {
31
+ "name": "started_at",
32
+ "type": "timestamp with time zone",
33
+ "primaryKey": false,
34
+ "notNull": true,
35
+ "default": "now()"
36
+ },
37
+ "ended_at": {
38
+ "name": "ended_at",
39
+ "type": "timestamp with time zone",
40
+ "primaryKey": false,
41
+ "notNull": false
42
+ },
43
+ "message_count": {
44
+ "name": "message_count",
45
+ "type": "integer",
46
+ "primaryKey": false,
47
+ "notNull": true,
48
+ "default": 0
49
+ }
50
+ },
51
+ "indexes": {},
52
+ "foreignKeys": {},
53
+ "compositePrimaryKeys": {},
54
+ "uniqueConstraints": {
55
+ "conversations_session_id_unique": {
56
+ "name": "conversations_session_id_unique",
57
+ "nullsNotDistinct": false,
58
+ "columns": [
59
+ "session_id"
60
+ ]
61
+ }
62
+ },
63
+ "policies": {},
64
+ "checkConstraints": {},
65
+ "isRLSEnabled": false
66
+ },
67
+ "public.projects": {
68
+ "name": "projects",
69
+ "schema": "",
70
+ "columns": {
71
+ "id": {
72
+ "name": "id",
73
+ "type": "uuid",
74
+ "primaryKey": true,
75
+ "notNull": true,
76
+ "default": "gen_random_uuid()"
77
+ },
78
+ "name": {
79
+ "name": "name",
80
+ "type": "text",
81
+ "primaryKey": false,
82
+ "notNull": true
83
+ },
84
+ "color": {
85
+ "name": "color",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": true
89
+ },
90
+ "description": {
91
+ "name": "description",
92
+ "type": "text",
93
+ "primaryKey": false,
94
+ "notNull": false
95
+ },
96
+ "created_at": {
97
+ "name": "created_at",
98
+ "type": "timestamp with time zone",
99
+ "primaryKey": false,
100
+ "notNull": true,
101
+ "default": "now()"
102
+ },
103
+ "modified_at": {
104
+ "name": "modified_at",
105
+ "type": "timestamp with time zone",
106
+ "primaryKey": false,
107
+ "notNull": false
108
+ },
109
+ "deleted_at": {
110
+ "name": "deleted_at",
111
+ "type": "timestamp with time zone",
112
+ "primaryKey": false,
113
+ "notNull": false
114
+ }
115
+ },
116
+ "indexes": {},
117
+ "foreignKeys": {},
118
+ "compositePrimaryKeys": {},
119
+ "uniqueConstraints": {},
120
+ "policies": {},
121
+ "checkConstraints": {},
122
+ "isRLSEnabled": false
123
+ },
124
+ "public.reminders": {
125
+ "name": "reminders",
126
+ "schema": "",
127
+ "columns": {
128
+ "id": {
129
+ "name": "id",
130
+ "type": "uuid",
131
+ "primaryKey": true,
132
+ "notNull": true,
133
+ "default": "gen_random_uuid()"
134
+ },
135
+ "task_id": {
136
+ "name": "task_id",
137
+ "type": "uuid",
138
+ "primaryKey": false,
139
+ "notNull": false
140
+ },
141
+ "message": {
142
+ "name": "message",
143
+ "type": "text",
144
+ "primaryKey": false,
145
+ "notNull": true
146
+ },
147
+ "remind_at": {
148
+ "name": "remind_at",
149
+ "type": "timestamp with time zone",
150
+ "primaryKey": false,
151
+ "notNull": true
152
+ },
153
+ "notified": {
154
+ "name": "notified",
155
+ "type": "boolean",
156
+ "primaryKey": false,
157
+ "notNull": true,
158
+ "default": false
159
+ },
160
+ "created_at": {
161
+ "name": "created_at",
162
+ "type": "timestamp with time zone",
163
+ "primaryKey": false,
164
+ "notNull": true,
165
+ "default": "now()"
166
+ }
167
+ },
168
+ "indexes": {},
169
+ "foreignKeys": {
170
+ "reminders_task_id_tasks_id_fk": {
171
+ "name": "reminders_task_id_tasks_id_fk",
172
+ "tableFrom": "reminders",
173
+ "tableTo": "tasks",
174
+ "columnsFrom": [
175
+ "task_id"
176
+ ],
177
+ "columnsTo": [
178
+ "id"
179
+ ],
180
+ "onDelete": "cascade",
181
+ "onUpdate": "no action"
182
+ }
183
+ },
184
+ "compositePrimaryKeys": {},
185
+ "uniqueConstraints": {},
186
+ "policies": {},
187
+ "checkConstraints": {},
188
+ "isRLSEnabled": false
189
+ },
190
+ "public.tasks": {
191
+ "name": "tasks",
192
+ "schema": "",
193
+ "columns": {
194
+ "id": {
195
+ "name": "id",
196
+ "type": "uuid",
197
+ "primaryKey": true,
198
+ "notNull": true,
199
+ "default": "gen_random_uuid()"
200
+ },
201
+ "title": {
202
+ "name": "title",
203
+ "type": "text",
204
+ "primaryKey": false,
205
+ "notNull": true
206
+ },
207
+ "description": {
208
+ "name": "description",
209
+ "type": "text",
210
+ "primaryKey": false,
211
+ "notNull": false
212
+ },
213
+ "status": {
214
+ "name": "status",
215
+ "type": "text",
216
+ "primaryKey": false,
217
+ "notNull": true,
218
+ "default": "'todo'"
219
+ },
220
+ "priority": {
221
+ "name": "priority",
222
+ "type": "integer",
223
+ "primaryKey": false,
224
+ "notNull": true,
225
+ "default": 2
226
+ },
227
+ "project_id": {
228
+ "name": "project_id",
229
+ "type": "uuid",
230
+ "primaryKey": false,
231
+ "notNull": false
232
+ },
233
+ "due_date": {
234
+ "name": "due_date",
235
+ "type": "timestamp with time zone",
236
+ "primaryKey": false,
237
+ "notNull": false
238
+ },
239
+ "tags": {
240
+ "name": "tags",
241
+ "type": "text[]",
242
+ "primaryKey": false,
243
+ "notNull": false,
244
+ "default": "'{}'"
245
+ },
246
+ "created_at": {
247
+ "name": "created_at",
248
+ "type": "timestamp with time zone",
249
+ "primaryKey": false,
250
+ "notNull": true,
251
+ "default": "now()"
252
+ },
253
+ "modified_at": {
254
+ "name": "modified_at",
255
+ "type": "timestamp with time zone",
256
+ "primaryKey": false,
257
+ "notNull": false
258
+ },
259
+ "completed_at": {
260
+ "name": "completed_at",
261
+ "type": "timestamp with time zone",
262
+ "primaryKey": false,
263
+ "notNull": false
264
+ },
265
+ "deleted_at": {
266
+ "name": "deleted_at",
267
+ "type": "timestamp with time zone",
268
+ "primaryKey": false,
269
+ "notNull": false
270
+ }
271
+ },
272
+ "indexes": {},
273
+ "foreignKeys": {
274
+ "tasks_project_id_projects_id_fk": {
275
+ "name": "tasks_project_id_projects_id_fk",
276
+ "tableFrom": "tasks",
277
+ "tableTo": "projects",
278
+ "columnsFrom": [
279
+ "project_id"
280
+ ],
281
+ "columnsTo": [
282
+ "id"
283
+ ],
284
+ "onDelete": "set null",
285
+ "onUpdate": "no action"
286
+ }
287
+ },
288
+ "compositePrimaryKeys": {},
289
+ "uniqueConstraints": {},
290
+ "policies": {},
291
+ "checkConstraints": {},
292
+ "isRLSEnabled": false
293
+ }
294
+ },
295
+ "enums": {},
296
+ "schemas": {},
297
+ "sequences": {},
298
+ "roles": {},
299
+ "policies": {},
300
+ "views": {},
301
+ "_meta": {
302
+ "columns": {},
303
+ "schemas": {},
304
+ "tables": {}
305
+ }
306
+ }