@happyvertical/smrt-messages 0.30.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 (153) hide show
  1. package/AGENTS.md +31 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +103 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/collections/AccountCollection.d.ts +42 -0
  8. package/dist/collections/AccountCollection.d.ts.map +1 -0
  9. package/dist/collections/AttachmentCollection.d.ts +67 -0
  10. package/dist/collections/AttachmentCollection.d.ts.map +1 -0
  11. package/dist/collections/BlacklistCollection.d.ts +14 -0
  12. package/dist/collections/BlacklistCollection.d.ts.map +1 -0
  13. package/dist/collections/EmailAccountCollection.d.ts +74 -0
  14. package/dist/collections/EmailAccountCollection.d.ts.map +1 -0
  15. package/dist/collections/EmailAttachmentCollection.d.ts +38 -0
  16. package/dist/collections/EmailAttachmentCollection.d.ts.map +1 -0
  17. package/dist/collections/EmailCollection.d.ts +81 -0
  18. package/dist/collections/EmailCollection.d.ts.map +1 -0
  19. package/dist/collections/EmailFolderCollection.d.ts +85 -0
  20. package/dist/collections/EmailFolderCollection.d.ts.map +1 -0
  21. package/dist/collections/MessageCollection.d.ts +74 -0
  22. package/dist/collections/MessageCollection.d.ts.map +1 -0
  23. package/dist/collections/WhitelistCollection.d.ts +18 -0
  24. package/dist/collections/WhitelistCollection.d.ts.map +1 -0
  25. package/dist/index.d.ts +27 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +3068 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/manifest.json +10576 -0
  30. package/dist/models/Account.d.ts +47 -0
  31. package/dist/models/Account.d.ts.map +1 -0
  32. package/dist/models/Attachment.d.ts +48 -0
  33. package/dist/models/Attachment.d.ts.map +1 -0
  34. package/dist/models/Blacklist.d.ts +21 -0
  35. package/dist/models/Blacklist.d.ts.map +1 -0
  36. package/dist/models/Email.d.ts +98 -0
  37. package/dist/models/Email.d.ts.map +1 -0
  38. package/dist/models/EmailAccount.d.ts +65 -0
  39. package/dist/models/EmailAccount.d.ts.map +1 -0
  40. package/dist/models/EmailAttachment.d.ts +19 -0
  41. package/dist/models/EmailAttachment.d.ts.map +1 -0
  42. package/dist/models/EmailFolder.d.ts +65 -0
  43. package/dist/models/EmailFolder.d.ts.map +1 -0
  44. package/dist/models/Message.d.ts +105 -0
  45. package/dist/models/Message.d.ts.map +1 -0
  46. package/dist/models/SlackAccount.d.ts +13 -0
  47. package/dist/models/SlackAccount.d.ts.map +1 -0
  48. package/dist/models/SlackMessage.d.ts +34 -0
  49. package/dist/models/SlackMessage.d.ts.map +1 -0
  50. package/dist/models/Tweet.d.ts +31 -0
  51. package/dist/models/Tweet.d.ts.map +1 -0
  52. package/dist/models/TwitterAccount.d.ts +12 -0
  53. package/dist/models/TwitterAccount.d.ts.map +1 -0
  54. package/dist/models/Whitelist.d.ts +21 -0
  55. package/dist/models/Whitelist.d.ts.map +1 -0
  56. package/dist/playground.d.ts +2 -0
  57. package/dist/playground.d.ts.map +1 -0
  58. package/dist/playground.js +176 -0
  59. package/dist/playground.js.map +1 -0
  60. package/dist/senders/EmailSender.d.ts +13 -0
  61. package/dist/senders/EmailSender.d.ts.map +1 -0
  62. package/dist/senders/SlackSender.d.ts +11 -0
  63. package/dist/senders/SlackSender.d.ts.map +1 -0
  64. package/dist/senders/TweetSender.d.ts +11 -0
  65. package/dist/senders/TweetSender.d.ts.map +1 -0
  66. package/dist/smrt-knowledge.json +4234 -0
  67. package/dist/svelte/components/AccountAvatar.svelte +107 -0
  68. package/dist/svelte/components/AccountAvatar.svelte.d.ts +12 -0
  69. package/dist/svelte/components/AccountAvatar.svelte.d.ts.map +1 -0
  70. package/dist/svelte/components/AccountCard.svelte +173 -0
  71. package/dist/svelte/components/AccountCard.svelte.d.ts +12 -0
  72. package/dist/svelte/components/AccountCard.svelte.d.ts.map +1 -0
  73. package/dist/svelte/components/AccountList.svelte +90 -0
  74. package/dist/svelte/components/AccountList.svelte.d.ts +12 -0
  75. package/dist/svelte/components/AccountList.svelte.d.ts.map +1 -0
  76. package/dist/svelte/components/AttachmentChip.svelte +99 -0
  77. package/dist/svelte/components/AttachmentChip.svelte.d.ts +12 -0
  78. package/dist/svelte/components/AttachmentChip.svelte.d.ts.map +1 -0
  79. package/dist/svelte/components/AttachmentUpload.svelte +160 -0
  80. package/dist/svelte/components/AttachmentUpload.svelte.d.ts +11 -0
  81. package/dist/svelte/components/AttachmentUpload.svelte.d.ts.map +1 -0
  82. package/dist/svelte/components/ComposeForm.svelte +387 -0
  83. package/dist/svelte/components/ComposeForm.svelte.d.ts +13 -0
  84. package/dist/svelte/components/ComposeForm.svelte.d.ts.map +1 -0
  85. package/dist/svelte/components/EmailAccountManager.svelte +690 -0
  86. package/dist/svelte/components/EmailAccountManager.svelte.d.ts +15 -0
  87. package/dist/svelte/components/EmailAccountManager.svelte.d.ts.map +1 -0
  88. package/dist/svelte/components/EmailFilterManager.svelte +687 -0
  89. package/dist/svelte/components/EmailFilterManager.svelte.d.ts +14 -0
  90. package/dist/svelte/components/EmailFilterManager.svelte.d.ts.map +1 -0
  91. package/dist/svelte/components/FolderNav.svelte +171 -0
  92. package/dist/svelte/components/FolderNav.svelte.d.ts +11 -0
  93. package/dist/svelte/components/FolderNav.svelte.d.ts.map +1 -0
  94. package/dist/svelte/components/ForwardForm.svelte +166 -0
  95. package/dist/svelte/components/ForwardForm.svelte.d.ts +10 -0
  96. package/dist/svelte/components/ForwardForm.svelte.d.ts.map +1 -0
  97. package/dist/svelte/components/MessageCard.svelte +336 -0
  98. package/dist/svelte/components/MessageCard.svelte.d.ts +20 -0
  99. package/dist/svelte/components/MessageCard.svelte.d.ts.map +1 -0
  100. package/dist/svelte/components/MessageDetail.svelte +309 -0
  101. package/dist/svelte/components/MessageDetail.svelte.d.ts +18 -0
  102. package/dist/svelte/components/MessageDetail.svelte.d.ts.map +1 -0
  103. package/dist/svelte/components/MessageFilters.svelte +228 -0
  104. package/dist/svelte/components/MessageFilters.svelte.d.ts +13 -0
  105. package/dist/svelte/components/MessageFilters.svelte.d.ts.map +1 -0
  106. package/dist/svelte/components/MessageList.svelte +101 -0
  107. package/dist/svelte/components/MessageList.svelte.d.ts +23 -0
  108. package/dist/svelte/components/MessageList.svelte.d.ts.map +1 -0
  109. package/dist/svelte/components/MessageStatusIndicator.svelte +82 -0
  110. package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts +11 -0
  111. package/dist/svelte/components/MessageStatusIndicator.svelte.d.ts.map +1 -0
  112. package/dist/svelte/components/MessageToolbar.svelte +131 -0
  113. package/dist/svelte/components/MessageToolbar.svelte.d.ts +14 -0
  114. package/dist/svelte/components/MessageToolbar.svelte.d.ts.map +1 -0
  115. package/dist/svelte/components/MessageTypeBadge.svelte +59 -0
  116. package/dist/svelte/components/MessageTypeBadge.svelte.d.ts +9 -0
  117. package/dist/svelte/components/MessageTypeBadge.svelte.d.ts.map +1 -0
  118. package/dist/svelte/components/RecipientInput.svelte +150 -0
  119. package/dist/svelte/components/RecipientInput.svelte.d.ts +11 -0
  120. package/dist/svelte/components/RecipientInput.svelte.d.ts.map +1 -0
  121. package/dist/svelte/components/ReplyForm.svelte +159 -0
  122. package/dist/svelte/components/ReplyForm.svelte.d.ts +11 -0
  123. package/dist/svelte/components/ReplyForm.svelte.d.ts.map +1 -0
  124. package/dist/svelte/components/SendStatusBadge.svelte +64 -0
  125. package/dist/svelte/components/SendStatusBadge.svelte.d.ts +8 -0
  126. package/dist/svelte/components/SendStatusBadge.svelte.d.ts.map +1 -0
  127. package/dist/svelte/components/ThreadView.svelte +240 -0
  128. package/dist/svelte/components/ThreadView.svelte.d.ts +12 -0
  129. package/dist/svelte/components/ThreadView.svelte.d.ts.map +1 -0
  130. package/dist/svelte/i18n.d.ts +42 -0
  131. package/dist/svelte/i18n.d.ts.map +1 -0
  132. package/dist/svelte/i18n.js +60 -0
  133. package/dist/svelte/i18n.messages.d.ts +32 -0
  134. package/dist/svelte/i18n.messages.d.ts.map +1 -0
  135. package/dist/svelte/i18n.messages.js +46 -0
  136. package/dist/svelte/index.d.ts +54 -0
  137. package/dist/svelte/index.d.ts.map +1 -0
  138. package/dist/svelte/index.js +44 -0
  139. package/dist/svelte/playground.d.ts +341 -0
  140. package/dist/svelte/playground.d.ts.map +1 -0
  141. package/dist/svelte/playground.js +171 -0
  142. package/dist/svelte/types.d.ts +195 -0
  143. package/dist/svelte/types.d.ts.map +1 -0
  144. package/dist/svelte/types.js +6 -0
  145. package/dist/types.d.ts +316 -0
  146. package/dist/types.d.ts.map +1 -0
  147. package/dist/types.js +2 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/ui.d.ts +4 -0
  150. package/dist/ui.d.ts.map +1 -0
  151. package/dist/ui.js +103 -0
  152. package/dist/ui.js.map +1 -0
  153. package/package.json +104 -0
@@ -0,0 +1,4234 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:11:24.364Z",
4
+ "packageName": "@happyvertical/smrt-messages",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "1062b209e360e95b94e907f6ca68608541cee7e1fc2b16bbc2cec5135ef819c0",
10
+ "packageJson": "5ea267b3bbe8926ed94864742e778d4ea644c7a47d7272d531cb5ad3a4e43398",
11
+ "agents": "32563a30ceeb21bd8732042f894e2a148fd83727caffc1eec7c97540005c6fdc"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./playground",
18
+ "./svelte",
19
+ "./ui"
20
+ ],
21
+ "dependencies": {
22
+ "@happyvertical/ai": "catalog:",
23
+ "@happyvertical/email": "catalog:",
24
+ "@happyvertical/files": "catalog:",
25
+ "@happyvertical/logger": "catalog:",
26
+ "@happyvertical/messages": "catalog:",
27
+ "@happyvertical/smrt-core": "workspace:*",
28
+ "@happyvertical/smrt-types": "workspace:*",
29
+ "@happyvertical/smrt-secrets": "workspace:*",
30
+ "@happyvertical/smrt-tenancy": "workspace:*",
31
+ "@happyvertical/smrt-ui": "workspace:*",
32
+ "@happyvertical/sql": "catalog:",
33
+ "@happyvertical/utils": "catalog:",
34
+ "@happyvertical/smrt-vitest": "workspace:*",
35
+ "@sveltejs/package": "^2.5.7",
36
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
37
+ "@types/node": "25.0.9",
38
+ "svelte": "^5.18.0",
39
+ "svelte-check": "^4.3.5",
40
+ "typescript": "^5.9.3",
41
+ "vite": "^7.3.1",
42
+ "vitest": "^4.0.17",
43
+ "@happyvertical/encryption": "*"
44
+ },
45
+ "smrtDependencies": [
46
+ "@happyvertical/smrt-core",
47
+ "@happyvertical/smrt-secrets",
48
+ "@happyvertical/smrt-tenancy",
49
+ "@happyvertical/smrt-types",
50
+ "@happyvertical/smrt-ui",
51
+ "@happyvertical/smrt-vitest"
52
+ ],
53
+ "sdkDependencies": [
54
+ "@happyvertical/ai",
55
+ "@happyvertical/email",
56
+ "@happyvertical/encryption",
57
+ "@happyvertical/files",
58
+ "@happyvertical/logger",
59
+ "@happyvertical/messages",
60
+ "@happyvertical/sql",
61
+ "@happyvertical/utils"
62
+ ],
63
+ "tags": [],
64
+ "risks": [],
65
+ "objects": [
66
+ {
67
+ "name": "AccountCollection",
68
+ "qualifiedName": "@happyvertical/smrt-messages:AccountCollection",
69
+ "collection": "accounts",
70
+ "tableName": "account_collections",
71
+ "packageName": "@happyvertical/smrt-messages",
72
+ "extends": "SmrtCollection",
73
+ "fields": [],
74
+ "relationships": [],
75
+ "methods": [
76
+ "findByTenant",
77
+ "findGlobal",
78
+ "findWithGlobals",
79
+ "getActive",
80
+ "getByProviderType",
81
+ "getByType",
82
+ "getInactive",
83
+ "getStats",
84
+ "search"
85
+ ],
86
+ "surfaces": [],
87
+ "relationshipFeatures": [
88
+ "uuidColumns"
89
+ ],
90
+ "tags": [],
91
+ "risks": []
92
+ },
93
+ {
94
+ "name": "AttachmentCollection",
95
+ "qualifiedName": "@happyvertical/smrt-messages:AttachmentCollection",
96
+ "collection": "attachments",
97
+ "tableName": "attachment_collections",
98
+ "packageName": "@happyvertical/smrt-messages",
99
+ "extends": "SmrtCollection",
100
+ "fields": [],
101
+ "relationships": [],
102
+ "methods": [
103
+ "deleteByMessage",
104
+ "findByTenant",
105
+ "findGlobal",
106
+ "findWithGlobals",
107
+ "getByContentType",
108
+ "getByExtension",
109
+ "getByMessage",
110
+ "getImages",
111
+ "getInline",
112
+ "getLargest",
113
+ "getPdfs",
114
+ "getRegular",
115
+ "getStats",
116
+ "getTotalSize",
117
+ "getWithExternalFiles",
118
+ "searchByFilename"
119
+ ],
120
+ "surfaces": [],
121
+ "relationshipFeatures": [
122
+ "uuidColumns"
123
+ ],
124
+ "tags": [],
125
+ "risks": []
126
+ },
127
+ {
128
+ "name": "BlacklistCollection",
129
+ "qualifiedName": "@happyvertical/smrt-messages:BlacklistCollection",
130
+ "collection": "blacklists",
131
+ "tableName": "blacklist_collections",
132
+ "packageName": "@happyvertical/smrt-messages",
133
+ "extends": "SmrtCollection",
134
+ "fields": [],
135
+ "relationships": [],
136
+ "methods": [
137
+ "getMatchingEntry",
138
+ "isBlacklisted"
139
+ ],
140
+ "surfaces": [],
141
+ "relationshipFeatures": [
142
+ "uuidColumns"
143
+ ],
144
+ "tags": [],
145
+ "risks": []
146
+ },
147
+ {
148
+ "name": "EmailAccountCollection",
149
+ "qualifiedName": "@happyvertical/smrt-messages:EmailAccountCollection",
150
+ "collection": "accounts",
151
+ "tableName": "accounts",
152
+ "packageName": "@happyvertical/smrt-messages",
153
+ "extends": "AccountCollection",
154
+ "fields": [],
155
+ "relationships": [],
156
+ "methods": [
157
+ "findByTenant",
158
+ "findGlobal",
159
+ "findWithGlobals",
160
+ "getActive",
161
+ "getByEmail",
162
+ "getByEmailProviderType",
163
+ "getByProviderType",
164
+ "getEmailStats",
165
+ "getInactive",
166
+ "getNeedingSync",
167
+ "getStats",
168
+ "getTotalUnreadCount",
169
+ "search",
170
+ "searchEmailAccounts",
171
+ "syncAll"
172
+ ],
173
+ "surfaces": [],
174
+ "relationshipFeatures": [
175
+ "uuidColumns"
176
+ ],
177
+ "tags": [],
178
+ "risks": []
179
+ },
180
+ {
181
+ "name": "EmailAttachmentCollection",
182
+ "qualifiedName": "@happyvertical/smrt-messages:EmailAttachmentCollection",
183
+ "collection": "emailattachments",
184
+ "tableName": "email_attachment_collections",
185
+ "packageName": "@happyvertical/smrt-messages",
186
+ "extends": "AttachmentCollection",
187
+ "fields": [],
188
+ "relationships": [],
189
+ "methods": [
190
+ "deleteByEmail",
191
+ "findByTenant",
192
+ "findGlobal",
193
+ "findWithGlobals",
194
+ "getByEmail",
195
+ "getImages",
196
+ "getInline",
197
+ "getPdfs",
198
+ "getRegular"
199
+ ],
200
+ "surfaces": [],
201
+ "relationshipFeatures": [
202
+ "uuidColumns"
203
+ ],
204
+ "tags": [],
205
+ "risks": []
206
+ },
207
+ {
208
+ "name": "EmailCollection",
209
+ "qualifiedName": "@happyvertical/smrt-messages:EmailCollection",
210
+ "collection": "messages",
211
+ "tableName": "messages",
212
+ "packageName": "@happyvertical/smrt-messages",
213
+ "extends": "MessageCollection",
214
+ "fields": [],
215
+ "relationships": [],
216
+ "methods": [
217
+ "countByFolder",
218
+ "countUnreadByAccount",
219
+ "countUnreadByFolder",
220
+ "deleteByFolder",
221
+ "findByTenant",
222
+ "findGlobal",
223
+ "findWithGlobals",
224
+ "getAccountStats",
225
+ "getByAccount",
226
+ "getByFolder",
227
+ "getByMessageId",
228
+ "getByThread",
229
+ "getFlagged",
230
+ "getRecent",
231
+ "getUnread",
232
+ "getWithAttachments",
233
+ "markFolderRead",
234
+ "search",
235
+ "searchEmails"
236
+ ],
237
+ "surfaces": [],
238
+ "relationshipFeatures": [
239
+ "uuidColumns"
240
+ ],
241
+ "tags": [],
242
+ "risks": []
243
+ },
244
+ {
245
+ "name": "EmailFolderCollection",
246
+ "qualifiedName": "@happyvertical/smrt-messages:EmailFolderCollection",
247
+ "collection": "emailfolders",
248
+ "tableName": "email_folder_collections",
249
+ "packageName": "@happyvertical/smrt-messages",
250
+ "extends": "SmrtCollection",
251
+ "fields": [],
252
+ "relationships": [],
253
+ "methods": [
254
+ "createSystemFolders",
255
+ "findByTenant",
256
+ "findGlobal",
257
+ "findWithGlobals",
258
+ "getAccountStats",
259
+ "getByAccount",
260
+ "getByPath",
261
+ "getDrafts",
262
+ "getInbox",
263
+ "getSent",
264
+ "getSpam",
265
+ "getSubscribed",
266
+ "getSystemFolders",
267
+ "getTrash",
268
+ "getUserFolders",
269
+ "getWithUnread",
270
+ "refreshAllCounts",
271
+ "search"
272
+ ],
273
+ "surfaces": [],
274
+ "relationshipFeatures": [
275
+ "uuidColumns"
276
+ ],
277
+ "tags": [],
278
+ "risks": []
279
+ },
280
+ {
281
+ "name": "MessageCollection",
282
+ "qualifiedName": "@happyvertical/smrt-messages:MessageCollection",
283
+ "collection": "messages",
284
+ "tableName": "message_collections",
285
+ "packageName": "@happyvertical/smrt-messages",
286
+ "extends": "SmrtCollection",
287
+ "fields": [],
288
+ "relationships": [],
289
+ "methods": [
290
+ "findByTenant",
291
+ "findGlobal",
292
+ "findWithGlobals",
293
+ "getAccountStats",
294
+ "getByAccounts",
295
+ "getByThread",
296
+ "getByType",
297
+ "getDrafts",
298
+ "getFailedSends",
299
+ "getFlagged",
300
+ "getOutbox",
301
+ "getRecent",
302
+ "getScheduled",
303
+ "getSent",
304
+ "getUnread",
305
+ "markAllRead",
306
+ "search"
307
+ ],
308
+ "surfaces": [],
309
+ "relationshipFeatures": [
310
+ "uuidColumns"
311
+ ],
312
+ "tags": [],
313
+ "risks": []
314
+ },
315
+ {
316
+ "name": "WhitelistCollection",
317
+ "qualifiedName": "@happyvertical/smrt-messages:WhitelistCollection",
318
+ "collection": "whitelists",
319
+ "tableName": "whitelist_collections",
320
+ "packageName": "@happyvertical/smrt-messages",
321
+ "extends": "SmrtCollection",
322
+ "fields": [],
323
+ "relationships": [],
324
+ "methods": [
325
+ "getByCategory",
326
+ "getMatchingEntry",
327
+ "isWhitelisted"
328
+ ],
329
+ "surfaces": [],
330
+ "relationshipFeatures": [
331
+ "uuidColumns"
332
+ ],
333
+ "tags": [],
334
+ "risks": []
335
+ },
336
+ {
337
+ "name": "Account",
338
+ "qualifiedName": "@happyvertical/smrt-messages:Account",
339
+ "collection": "accounts",
340
+ "tableName": "accounts",
341
+ "packageName": "@happyvertical/smrt-messages",
342
+ "extends": "SmrtObject",
343
+ "fields": [
344
+ {
345
+ "name": "created_at",
346
+ "type": "datetime",
347
+ "required": false,
348
+ "columnType": "TIMESTAMP"
349
+ },
350
+ {
351
+ "name": "updated_at",
352
+ "type": "datetime",
353
+ "required": false,
354
+ "columnType": "TIMESTAMP"
355
+ },
356
+ {
357
+ "name": "tenantId",
358
+ "type": "text",
359
+ "required": false,
360
+ "columnType": "UUID"
361
+ },
362
+ {
363
+ "name": "name",
364
+ "type": "text",
365
+ "required": false,
366
+ "columnType": "TEXT"
367
+ },
368
+ {
369
+ "name": "providerType",
370
+ "type": "text",
371
+ "required": false,
372
+ "columnType": "TEXT"
373
+ },
374
+ {
375
+ "name": "credentialSecretId",
376
+ "type": "text",
377
+ "required": false,
378
+ "columnType": "TEXT"
379
+ },
380
+ {
381
+ "name": "isActive",
382
+ "type": "boolean",
383
+ "required": true,
384
+ "columnType": "BOOLEAN"
385
+ },
386
+ {
387
+ "name": "lastSyncAt",
388
+ "type": "datetime",
389
+ "required": false,
390
+ "columnType": "TIMESTAMP"
391
+ },
392
+ {
393
+ "name": "settings",
394
+ "type": "text",
395
+ "required": false,
396
+ "columnType": "TEXT"
397
+ },
398
+ {
399
+ "name": "createdAt",
400
+ "type": "text",
401
+ "required": false,
402
+ "columnType": "TIMESTAMP"
403
+ },
404
+ {
405
+ "name": "updatedAt",
406
+ "type": "text",
407
+ "required": false,
408
+ "columnType": "TIMESTAMP"
409
+ }
410
+ ],
411
+ "relationships": [],
412
+ "methods": [
413
+ "activate",
414
+ "classifyConstraintError",
415
+ "clearEmbeddings",
416
+ "createSender",
417
+ "deactivate",
418
+ "delete",
419
+ "describe",
420
+ "destroy",
421
+ "do",
422
+ "executeToolCall",
423
+ "forget",
424
+ "forgetScope",
425
+ "generateEmbeddings",
426
+ "getAiUsageSnapshot",
427
+ "getAvailableTools",
428
+ "getCredentials",
429
+ "getEmbedding",
430
+ "getFields",
431
+ "getId",
432
+ "getRelated",
433
+ "getSavedId",
434
+ "getSettings",
435
+ "getSlug",
436
+ "hasStaleEmbeddings",
437
+ "initialize",
438
+ "is",
439
+ "isRelatedLoaded",
440
+ "isSaved",
441
+ "listAiUsage",
442
+ "loadDataFromDb",
443
+ "loadFromId",
444
+ "loadFromSlug",
445
+ "loadRelated",
446
+ "loadRelatedMany",
447
+ "markAsPersisted",
448
+ "recall",
449
+ "recallAll",
450
+ "remember",
451
+ "resetAiUsage",
452
+ "save",
453
+ "setCredentials",
454
+ "setSettings",
455
+ "summarizeAiUsage",
456
+ "toJSON",
457
+ "toPlainObject",
458
+ "toPublicJSON"
459
+ ],
460
+ "surfaces": [
461
+ {
462
+ "kind": "api",
463
+ "name": "accounts.list",
464
+ "operation": "list",
465
+ "objectName": "@happyvertical/smrt-messages:Account",
466
+ "path": "/accounts",
467
+ "method": "GET"
468
+ },
469
+ {
470
+ "kind": "api",
471
+ "name": "accounts.get",
472
+ "operation": "get",
473
+ "objectName": "@happyvertical/smrt-messages:Account",
474
+ "path": "/accounts/[id]",
475
+ "method": "GET"
476
+ },
477
+ {
478
+ "kind": "api",
479
+ "name": "accounts.create",
480
+ "operation": "create",
481
+ "objectName": "@happyvertical/smrt-messages:Account",
482
+ "path": "/accounts",
483
+ "method": "POST"
484
+ },
485
+ {
486
+ "kind": "api",
487
+ "name": "accounts.update",
488
+ "operation": "update",
489
+ "objectName": "@happyvertical/smrt-messages:Account",
490
+ "path": "/accounts/[id]",
491
+ "method": "PATCH"
492
+ },
493
+ {
494
+ "kind": "api",
495
+ "name": "accounts.delete",
496
+ "operation": "delete",
497
+ "objectName": "@happyvertical/smrt-messages:Account",
498
+ "path": "/accounts/[id]",
499
+ "method": "DELETE"
500
+ },
501
+ {
502
+ "kind": "cli",
503
+ "name": "account_list",
504
+ "operation": "list",
505
+ "objectName": "@happyvertical/smrt-messages:Account"
506
+ },
507
+ {
508
+ "kind": "cli",
509
+ "name": "account_get",
510
+ "operation": "get",
511
+ "objectName": "@happyvertical/smrt-messages:Account"
512
+ },
513
+ {
514
+ "kind": "cli",
515
+ "name": "account_create",
516
+ "operation": "create",
517
+ "objectName": "@happyvertical/smrt-messages:Account"
518
+ },
519
+ {
520
+ "kind": "cli",
521
+ "name": "account_update",
522
+ "operation": "update",
523
+ "objectName": "@happyvertical/smrt-messages:Account"
524
+ },
525
+ {
526
+ "kind": "cli",
527
+ "name": "account_delete",
528
+ "operation": "delete",
529
+ "objectName": "@happyvertical/smrt-messages:Account"
530
+ },
531
+ {
532
+ "kind": "mcp",
533
+ "name": "account_list",
534
+ "operation": "list",
535
+ "objectName": "@happyvertical/smrt-messages:Account"
536
+ },
537
+ {
538
+ "kind": "mcp",
539
+ "name": "account_get",
540
+ "operation": "get",
541
+ "objectName": "@happyvertical/smrt-messages:Account"
542
+ }
543
+ ],
544
+ "relationshipFeatures": [
545
+ "uuidColumns"
546
+ ],
547
+ "tags": [],
548
+ "risks": []
549
+ },
550
+ {
551
+ "name": "Attachment",
552
+ "qualifiedName": "@happyvertical/smrt-messages:Attachment",
553
+ "collection": "attachments",
554
+ "tableName": "attachments",
555
+ "packageName": "@happyvertical/smrt-messages",
556
+ "extends": "SmrtObject",
557
+ "fields": [
558
+ {
559
+ "name": "tenantId",
560
+ "type": "text",
561
+ "required": false,
562
+ "columnType": "UUID"
563
+ },
564
+ {
565
+ "name": "messageId",
566
+ "type": "foreignKey",
567
+ "required": false,
568
+ "related": "Message",
569
+ "columnType": "UUID"
570
+ },
571
+ {
572
+ "name": "filename",
573
+ "type": "text",
574
+ "required": false,
575
+ "columnType": "TEXT"
576
+ },
577
+ {
578
+ "name": "contentType",
579
+ "type": "text",
580
+ "required": false,
581
+ "columnType": "TEXT"
582
+ },
583
+ {
584
+ "name": "size",
585
+ "type": "integer",
586
+ "required": true,
587
+ "columnType": "INTEGER"
588
+ },
589
+ {
590
+ "name": "contentId",
591
+ "type": "text",
592
+ "required": false,
593
+ "columnType": "TEXT"
594
+ },
595
+ {
596
+ "name": "contentDisposition",
597
+ "type": "text",
598
+ "required": false,
599
+ "columnType": "TEXT"
600
+ },
601
+ {
602
+ "name": "filePath",
603
+ "type": "text",
604
+ "required": false,
605
+ "columnType": "TEXT"
606
+ },
607
+ {
608
+ "name": "sourceUrl",
609
+ "type": "text",
610
+ "required": false,
611
+ "columnType": "TEXT"
612
+ },
613
+ {
614
+ "name": "createdAt",
615
+ "type": "text",
616
+ "required": false,
617
+ "columnType": "TIMESTAMP"
618
+ }
619
+ ],
620
+ "relationships": [
621
+ {
622
+ "name": "messageId",
623
+ "type": "foreignKey",
624
+ "required": false,
625
+ "related": "Message",
626
+ "columnType": "UUID"
627
+ }
628
+ ],
629
+ "methods": [
630
+ "getExtension",
631
+ "getFormattedSize",
632
+ "getMessage",
633
+ "hasExternalFile",
634
+ "isImage",
635
+ "isInline",
636
+ "isPdf",
637
+ "readContent"
638
+ ],
639
+ "surfaces": [
640
+ {
641
+ "kind": "api",
642
+ "name": "attachments.list",
643
+ "operation": "list",
644
+ "objectName": "@happyvertical/smrt-messages:Attachment",
645
+ "path": "/attachments",
646
+ "method": "GET"
647
+ },
648
+ {
649
+ "kind": "api",
650
+ "name": "attachments.get",
651
+ "operation": "get",
652
+ "objectName": "@happyvertical/smrt-messages:Attachment",
653
+ "path": "/attachments/[id]",
654
+ "method": "GET"
655
+ },
656
+ {
657
+ "kind": "api",
658
+ "name": "attachments.create",
659
+ "operation": "create",
660
+ "objectName": "@happyvertical/smrt-messages:Attachment",
661
+ "path": "/attachments",
662
+ "method": "POST"
663
+ },
664
+ {
665
+ "kind": "api",
666
+ "name": "attachments.delete",
667
+ "operation": "delete",
668
+ "objectName": "@happyvertical/smrt-messages:Attachment",
669
+ "path": "/attachments/[id]",
670
+ "method": "DELETE"
671
+ },
672
+ {
673
+ "kind": "cli",
674
+ "name": "attachment_list",
675
+ "operation": "list",
676
+ "objectName": "@happyvertical/smrt-messages:Attachment"
677
+ },
678
+ {
679
+ "kind": "cli",
680
+ "name": "attachment_get",
681
+ "operation": "get",
682
+ "objectName": "@happyvertical/smrt-messages:Attachment"
683
+ },
684
+ {
685
+ "kind": "cli",
686
+ "name": "attachment_create",
687
+ "operation": "create",
688
+ "objectName": "@happyvertical/smrt-messages:Attachment"
689
+ },
690
+ {
691
+ "kind": "cli",
692
+ "name": "attachment_update",
693
+ "operation": "update",
694
+ "objectName": "@happyvertical/smrt-messages:Attachment"
695
+ },
696
+ {
697
+ "kind": "cli",
698
+ "name": "attachment_delete",
699
+ "operation": "delete",
700
+ "objectName": "@happyvertical/smrt-messages:Attachment"
701
+ },
702
+ {
703
+ "kind": "mcp",
704
+ "name": "attachment_list",
705
+ "operation": "list",
706
+ "objectName": "@happyvertical/smrt-messages:Attachment"
707
+ },
708
+ {
709
+ "kind": "mcp",
710
+ "name": "attachment_get",
711
+ "operation": "get",
712
+ "objectName": "@happyvertical/smrt-messages:Attachment"
713
+ }
714
+ ],
715
+ "relationshipFeatures": [
716
+ "foreignKey",
717
+ "uuidColumns"
718
+ ],
719
+ "tags": [],
720
+ "risks": []
721
+ },
722
+ {
723
+ "name": "Blacklist",
724
+ "qualifiedName": "@happyvertical/smrt-messages:Blacklist",
725
+ "collection": "blacklists",
726
+ "tableName": "blacklists",
727
+ "packageName": "@happyvertical/smrt-messages",
728
+ "extends": "SmrtObject",
729
+ "fields": [
730
+ {
731
+ "name": "pattern",
732
+ "type": "text",
733
+ "required": false,
734
+ "columnType": "TEXT"
735
+ },
736
+ {
737
+ "name": "type",
738
+ "type": "text",
739
+ "required": false,
740
+ "columnType": "TEXT"
741
+ },
742
+ {
743
+ "name": "reason",
744
+ "type": "text",
745
+ "required": false,
746
+ "columnType": "TEXT"
747
+ },
748
+ {
749
+ "name": "autoArchive",
750
+ "type": "boolean",
751
+ "required": false,
752
+ "columnType": "BOOLEAN"
753
+ },
754
+ {
755
+ "name": "tenantId",
756
+ "type": "text",
757
+ "required": false,
758
+ "columnType": "UUID"
759
+ }
760
+ ],
761
+ "relationships": [],
762
+ "methods": [
763
+ "matches"
764
+ ],
765
+ "surfaces": [
766
+ {
767
+ "kind": "api",
768
+ "name": "blacklists.list",
769
+ "operation": "list",
770
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
771
+ "path": "/blacklists",
772
+ "method": "GET"
773
+ },
774
+ {
775
+ "kind": "api",
776
+ "name": "blacklists.get",
777
+ "operation": "get",
778
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
779
+ "path": "/blacklists/[id]",
780
+ "method": "GET"
781
+ },
782
+ {
783
+ "kind": "api",
784
+ "name": "blacklists.create",
785
+ "operation": "create",
786
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
787
+ "path": "/blacklists",
788
+ "method": "POST"
789
+ },
790
+ {
791
+ "kind": "api",
792
+ "name": "blacklists.update",
793
+ "operation": "update",
794
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
795
+ "path": "/blacklists/[id]",
796
+ "method": "PATCH"
797
+ },
798
+ {
799
+ "kind": "api",
800
+ "name": "blacklists.delete",
801
+ "operation": "delete",
802
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
803
+ "path": "/blacklists/[id]",
804
+ "method": "DELETE"
805
+ },
806
+ {
807
+ "kind": "cli",
808
+ "name": "blacklist_list",
809
+ "operation": "list",
810
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
811
+ },
812
+ {
813
+ "kind": "cli",
814
+ "name": "blacklist_get",
815
+ "operation": "get",
816
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
817
+ },
818
+ {
819
+ "kind": "cli",
820
+ "name": "blacklist_create",
821
+ "operation": "create",
822
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
823
+ },
824
+ {
825
+ "kind": "cli",
826
+ "name": "blacklist_update",
827
+ "operation": "update",
828
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
829
+ },
830
+ {
831
+ "kind": "cli",
832
+ "name": "blacklist_delete",
833
+ "operation": "delete",
834
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
835
+ }
836
+ ],
837
+ "relationshipFeatures": [
838
+ "uuidColumns"
839
+ ],
840
+ "tags": [],
841
+ "risks": []
842
+ },
843
+ {
844
+ "name": "Email",
845
+ "qualifiedName": "@happyvertical/smrt-messages:Email",
846
+ "collection": "messages",
847
+ "tableName": "messages",
848
+ "packageName": "@happyvertical/smrt-messages",
849
+ "extends": "Message",
850
+ "fields": [
851
+ {
852
+ "name": "created_at",
853
+ "type": "datetime",
854
+ "required": false,
855
+ "columnType": "TIMESTAMP"
856
+ },
857
+ {
858
+ "name": "updated_at",
859
+ "type": "datetime",
860
+ "required": false,
861
+ "columnType": "TIMESTAMP"
862
+ },
863
+ {
864
+ "name": "tenantId",
865
+ "type": "text",
866
+ "required": false,
867
+ "columnType": "UUID"
868
+ },
869
+ {
870
+ "name": "accountId",
871
+ "type": "foreignKey",
872
+ "required": false,
873
+ "related": "Account",
874
+ "columnType": "UUID"
875
+ },
876
+ {
877
+ "name": "threadId",
878
+ "type": "text",
879
+ "required": false,
880
+ "columnType": "TEXT"
881
+ },
882
+ {
883
+ "name": "subject",
884
+ "type": "text",
885
+ "required": false,
886
+ "columnType": "TEXT"
887
+ },
888
+ {
889
+ "name": "body",
890
+ "type": "text",
891
+ "required": false,
892
+ "columnType": "TEXT"
893
+ },
894
+ {
895
+ "name": "fromAddress",
896
+ "type": "text",
897
+ "required": false,
898
+ "columnType": "TEXT"
899
+ },
900
+ {
901
+ "name": "fromName",
902
+ "type": "text",
903
+ "required": false,
904
+ "columnType": "TEXT"
905
+ },
906
+ {
907
+ "name": "toAddresses",
908
+ "type": "text",
909
+ "required": false,
910
+ "columnType": "TEXT"
911
+ },
912
+ {
913
+ "name": "date",
914
+ "type": "datetime",
915
+ "required": false,
916
+ "columnType": "TIMESTAMP"
917
+ },
918
+ {
919
+ "name": "isRead",
920
+ "type": "boolean",
921
+ "required": true,
922
+ "columnType": "BOOLEAN"
923
+ },
924
+ {
925
+ "name": "isFlagged",
926
+ "type": "boolean",
927
+ "required": true,
928
+ "columnType": "BOOLEAN"
929
+ },
930
+ {
931
+ "name": "hasAttachments",
932
+ "type": "boolean",
933
+ "required": true,
934
+ "columnType": "BOOLEAN"
935
+ },
936
+ {
937
+ "name": "size",
938
+ "type": "integer",
939
+ "required": true,
940
+ "columnType": "INTEGER"
941
+ },
942
+ {
943
+ "name": "metadata",
944
+ "type": "text",
945
+ "required": false,
946
+ "columnType": "TEXT"
947
+ },
948
+ {
949
+ "name": "sendStatus",
950
+ "type": "text",
951
+ "required": false,
952
+ "columnType": "TEXT"
953
+ },
954
+ {
955
+ "name": "sentAt",
956
+ "type": "datetime",
957
+ "required": false,
958
+ "columnType": "TIMESTAMP"
959
+ },
960
+ {
961
+ "name": "sendError",
962
+ "type": "text",
963
+ "required": false,
964
+ "columnType": "TEXT"
965
+ },
966
+ {
967
+ "name": "retryCount",
968
+ "type": "integer",
969
+ "required": true,
970
+ "columnType": "INTEGER"
971
+ },
972
+ {
973
+ "name": "maxRetries",
974
+ "type": "integer",
975
+ "required": true,
976
+ "columnType": "INTEGER"
977
+ },
978
+ {
979
+ "name": "scheduledSendAt",
980
+ "type": "datetime",
981
+ "required": false,
982
+ "columnType": "TIMESTAMP"
983
+ },
984
+ {
985
+ "name": "inReplyToMessageId",
986
+ "type": "foreignKey",
987
+ "required": false,
988
+ "related": "Message",
989
+ "columnType": "UUID"
990
+ },
991
+ {
992
+ "name": "createdAt",
993
+ "type": "text",
994
+ "required": false,
995
+ "columnType": "TIMESTAMP"
996
+ },
997
+ {
998
+ "name": "updatedAt",
999
+ "type": "text",
1000
+ "required": false,
1001
+ "columnType": "TIMESTAMP"
1002
+ },
1003
+ {
1004
+ "name": "messageId",
1005
+ "type": "text",
1006
+ "required": false,
1007
+ "columnType": "TEXT"
1008
+ },
1009
+ {
1010
+ "name": "inReplyTo",
1011
+ "type": "text",
1012
+ "required": false,
1013
+ "columnType": "TEXT"
1014
+ },
1015
+ {
1016
+ "name": "ccAddresses",
1017
+ "type": "text",
1018
+ "required": false,
1019
+ "columnType": "TEXT"
1020
+ },
1021
+ {
1022
+ "name": "bccAddresses",
1023
+ "type": "text",
1024
+ "required": false,
1025
+ "columnType": "TEXT"
1026
+ },
1027
+ {
1028
+ "name": "replyToAddress",
1029
+ "type": "text",
1030
+ "required": false,
1031
+ "columnType": "TEXT"
1032
+ },
1033
+ {
1034
+ "name": "replyToName",
1035
+ "type": "text",
1036
+ "required": false,
1037
+ "columnType": "TEXT"
1038
+ },
1039
+ {
1040
+ "name": "textBody",
1041
+ "type": "text",
1042
+ "required": false,
1043
+ "columnType": "TEXT"
1044
+ },
1045
+ {
1046
+ "name": "htmlBody",
1047
+ "type": "text",
1048
+ "required": false,
1049
+ "columnType": "TEXT"
1050
+ },
1051
+ {
1052
+ "name": "folderId",
1053
+ "type": "text",
1054
+ "required": false,
1055
+ "columnType": "TEXT"
1056
+ },
1057
+ {
1058
+ "name": "folderPath",
1059
+ "type": "text",
1060
+ "required": false,
1061
+ "columnType": "TEXT"
1062
+ },
1063
+ {
1064
+ "name": "labels",
1065
+ "type": "text",
1066
+ "required": false,
1067
+ "columnType": "TEXT"
1068
+ },
1069
+ {
1070
+ "name": "flags",
1071
+ "type": "text",
1072
+ "required": false,
1073
+ "columnType": "TEXT"
1074
+ },
1075
+ {
1076
+ "name": "isAnswered",
1077
+ "type": "boolean",
1078
+ "required": true,
1079
+ "columnType": "BOOLEAN"
1080
+ },
1081
+ {
1082
+ "name": "isDraft",
1083
+ "type": "boolean",
1084
+ "required": true,
1085
+ "columnType": "BOOLEAN"
1086
+ },
1087
+ {
1088
+ "name": "rawMessage",
1089
+ "type": "text",
1090
+ "required": false,
1091
+ "columnType": "TEXT"
1092
+ },
1093
+ {
1094
+ "name": "headers",
1095
+ "type": "text",
1096
+ "required": false,
1097
+ "columnType": "TEXT"
1098
+ }
1099
+ ],
1100
+ "relationships": [
1101
+ {
1102
+ "name": "accountId",
1103
+ "type": "foreignKey",
1104
+ "required": false,
1105
+ "related": "Account",
1106
+ "columnType": "UUID"
1107
+ },
1108
+ {
1109
+ "name": "inReplyToMessageId",
1110
+ "type": "foreignKey",
1111
+ "required": false,
1112
+ "related": "Message",
1113
+ "columnType": "UUID"
1114
+ }
1115
+ ],
1116
+ "methods": [
1117
+ "classifyConstraintError",
1118
+ "clearEmbeddings",
1119
+ "createForward",
1120
+ "createReply",
1121
+ "delete",
1122
+ "describe",
1123
+ "destroy",
1124
+ "do",
1125
+ "executeToolCall",
1126
+ "forget",
1127
+ "forgetScope",
1128
+ "generateEmbeddings",
1129
+ "getAccount",
1130
+ "getAiUsageSnapshot",
1131
+ "getAttachments",
1132
+ "getAvailableTools",
1133
+ "getBccAddresses",
1134
+ "getCcAddresses",
1135
+ "getEmbedding",
1136
+ "getFields",
1137
+ "getFlags",
1138
+ "getFolder",
1139
+ "getHeaders",
1140
+ "getId",
1141
+ "getLabels",
1142
+ "getMetadata",
1143
+ "getPreview",
1144
+ "getReferences",
1145
+ "getRelated",
1146
+ "getSavedId",
1147
+ "getSlug",
1148
+ "getThreadEmails",
1149
+ "getThreadMessages",
1150
+ "getToAddresses",
1151
+ "hasStaleEmbeddings",
1152
+ "initialize",
1153
+ "is",
1154
+ "isRelatedLoaded",
1155
+ "isSaved",
1156
+ "isUnread",
1157
+ "listAiUsage",
1158
+ "loadDataFromDb",
1159
+ "loadFromId",
1160
+ "loadFromSlug",
1161
+ "loadRelated",
1162
+ "loadRelatedMany",
1163
+ "markAsPersisted",
1164
+ "markRead",
1165
+ "markUnread",
1166
+ "recall",
1167
+ "recallAll",
1168
+ "remember",
1169
+ "resetAiUsage",
1170
+ "retrySend",
1171
+ "save",
1172
+ "send",
1173
+ "setFlags",
1174
+ "setHeaders",
1175
+ "setLabels",
1176
+ "setMetadata",
1177
+ "setToAddresses",
1178
+ "summarizeAiUsage",
1179
+ "toJSON",
1180
+ "toPlainObject",
1181
+ "toPublicJSON",
1182
+ "toggleFlagged"
1183
+ ],
1184
+ "surfaces": [
1185
+ {
1186
+ "kind": "api",
1187
+ "name": "messages.list",
1188
+ "operation": "list",
1189
+ "objectName": "@happyvertical/smrt-messages:Email",
1190
+ "path": "/messages",
1191
+ "method": "GET"
1192
+ },
1193
+ {
1194
+ "kind": "api",
1195
+ "name": "messages.get",
1196
+ "operation": "get",
1197
+ "objectName": "@happyvertical/smrt-messages:Email",
1198
+ "path": "/messages/[id]",
1199
+ "method": "GET"
1200
+ },
1201
+ {
1202
+ "kind": "api",
1203
+ "name": "messages.create",
1204
+ "operation": "create",
1205
+ "objectName": "@happyvertical/smrt-messages:Email",
1206
+ "path": "/messages",
1207
+ "method": "POST"
1208
+ },
1209
+ {
1210
+ "kind": "api",
1211
+ "name": "messages.update",
1212
+ "operation": "update",
1213
+ "objectName": "@happyvertical/smrt-messages:Email",
1214
+ "path": "/messages/[id]",
1215
+ "method": "PATCH"
1216
+ },
1217
+ {
1218
+ "kind": "api",
1219
+ "name": "messages.delete",
1220
+ "operation": "delete",
1221
+ "objectName": "@happyvertical/smrt-messages:Email",
1222
+ "path": "/messages/[id]",
1223
+ "method": "DELETE"
1224
+ },
1225
+ {
1226
+ "kind": "cli",
1227
+ "name": "email_list",
1228
+ "operation": "list",
1229
+ "objectName": "@happyvertical/smrt-messages:Email"
1230
+ },
1231
+ {
1232
+ "kind": "cli",
1233
+ "name": "email_get",
1234
+ "operation": "get",
1235
+ "objectName": "@happyvertical/smrt-messages:Email"
1236
+ },
1237
+ {
1238
+ "kind": "cli",
1239
+ "name": "email_create",
1240
+ "operation": "create",
1241
+ "objectName": "@happyvertical/smrt-messages:Email"
1242
+ },
1243
+ {
1244
+ "kind": "cli",
1245
+ "name": "email_update",
1246
+ "operation": "update",
1247
+ "objectName": "@happyvertical/smrt-messages:Email"
1248
+ },
1249
+ {
1250
+ "kind": "cli",
1251
+ "name": "email_delete",
1252
+ "operation": "delete",
1253
+ "objectName": "@happyvertical/smrt-messages:Email"
1254
+ },
1255
+ {
1256
+ "kind": "mcp",
1257
+ "name": "email_list",
1258
+ "operation": "list",
1259
+ "objectName": "@happyvertical/smrt-messages:Email"
1260
+ },
1261
+ {
1262
+ "kind": "mcp",
1263
+ "name": "email_get",
1264
+ "operation": "get",
1265
+ "objectName": "@happyvertical/smrt-messages:Email"
1266
+ }
1267
+ ],
1268
+ "relationshipFeatures": [
1269
+ "foreignKey",
1270
+ "uuidColumns"
1271
+ ],
1272
+ "tags": [],
1273
+ "risks": []
1274
+ },
1275
+ {
1276
+ "name": "EmailAccount",
1277
+ "qualifiedName": "@happyvertical/smrt-messages:EmailAccount",
1278
+ "collection": "accounts",
1279
+ "tableName": "accounts",
1280
+ "packageName": "@happyvertical/smrt-messages",
1281
+ "extends": "Account",
1282
+ "fields": [
1283
+ {
1284
+ "name": "created_at",
1285
+ "type": "datetime",
1286
+ "required": false,
1287
+ "columnType": "TIMESTAMP"
1288
+ },
1289
+ {
1290
+ "name": "updated_at",
1291
+ "type": "datetime",
1292
+ "required": false,
1293
+ "columnType": "TIMESTAMP"
1294
+ },
1295
+ {
1296
+ "name": "tenantId",
1297
+ "type": "text",
1298
+ "required": false,
1299
+ "columnType": "UUID"
1300
+ },
1301
+ {
1302
+ "name": "name",
1303
+ "type": "text",
1304
+ "required": false,
1305
+ "columnType": "TEXT"
1306
+ },
1307
+ {
1308
+ "name": "providerType",
1309
+ "type": "text",
1310
+ "required": false,
1311
+ "columnType": "TEXT"
1312
+ },
1313
+ {
1314
+ "name": "credentialSecretId",
1315
+ "type": "text",
1316
+ "required": false,
1317
+ "columnType": "TEXT"
1318
+ },
1319
+ {
1320
+ "name": "isActive",
1321
+ "type": "boolean",
1322
+ "required": true,
1323
+ "columnType": "BOOLEAN"
1324
+ },
1325
+ {
1326
+ "name": "lastSyncAt",
1327
+ "type": "datetime",
1328
+ "required": false,
1329
+ "columnType": "TIMESTAMP"
1330
+ },
1331
+ {
1332
+ "name": "settings",
1333
+ "type": "text",
1334
+ "required": false,
1335
+ "columnType": "TEXT"
1336
+ },
1337
+ {
1338
+ "name": "createdAt",
1339
+ "type": "text",
1340
+ "required": false,
1341
+ "columnType": "TIMESTAMP"
1342
+ },
1343
+ {
1344
+ "name": "updatedAt",
1345
+ "type": "text",
1346
+ "required": false,
1347
+ "columnType": "TIMESTAMP"
1348
+ },
1349
+ {
1350
+ "name": "email",
1351
+ "type": "text",
1352
+ "required": false,
1353
+ "columnType": "TEXT"
1354
+ },
1355
+ {
1356
+ "name": "syncIntervalMinutes",
1357
+ "type": "integer",
1358
+ "required": true,
1359
+ "columnType": "INTEGER"
1360
+ }
1361
+ ],
1362
+ "relationships": [],
1363
+ "methods": [
1364
+ "activate",
1365
+ "classifyConstraintError",
1366
+ "clearEmbeddings",
1367
+ "createClient",
1368
+ "createSender",
1369
+ "deactivate",
1370
+ "delete",
1371
+ "describe",
1372
+ "destroy",
1373
+ "do",
1374
+ "executeToolCall",
1375
+ "forget",
1376
+ "forgetScope",
1377
+ "generateEmbeddings",
1378
+ "getAiUsageSnapshot",
1379
+ "getAvailableTools",
1380
+ "getCredentials",
1381
+ "getEmails",
1382
+ "getEmbedding",
1383
+ "getFields",
1384
+ "getFolders",
1385
+ "getId",
1386
+ "getRelated",
1387
+ "getSavedId",
1388
+ "getSettings",
1389
+ "getSlug",
1390
+ "getUnreadCount",
1391
+ "hasStaleEmbeddings",
1392
+ "initialize",
1393
+ "is",
1394
+ "isRelatedLoaded",
1395
+ "isSaved",
1396
+ "listAiUsage",
1397
+ "loadDataFromDb",
1398
+ "loadFromId",
1399
+ "loadFromSlug",
1400
+ "loadRelated",
1401
+ "loadRelatedMany",
1402
+ "markAsPersisted",
1403
+ "migrateToSecrets",
1404
+ "recall",
1405
+ "recallAll",
1406
+ "remember",
1407
+ "resetAiUsage",
1408
+ "save",
1409
+ "setCredentials",
1410
+ "setSettings",
1411
+ "summarizeAiUsage",
1412
+ "syncAll",
1413
+ "syncFrom",
1414
+ "toJSON",
1415
+ "toPlainObject",
1416
+ "toPublicJSON"
1417
+ ],
1418
+ "surfaces": [
1419
+ {
1420
+ "kind": "api",
1421
+ "name": "accounts.list",
1422
+ "operation": "list",
1423
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
1424
+ "path": "/accounts",
1425
+ "method": "GET"
1426
+ },
1427
+ {
1428
+ "kind": "api",
1429
+ "name": "accounts.get",
1430
+ "operation": "get",
1431
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
1432
+ "path": "/accounts/[id]",
1433
+ "method": "GET"
1434
+ },
1435
+ {
1436
+ "kind": "api",
1437
+ "name": "accounts.create",
1438
+ "operation": "create",
1439
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
1440
+ "path": "/accounts",
1441
+ "method": "POST"
1442
+ },
1443
+ {
1444
+ "kind": "api",
1445
+ "name": "accounts.update",
1446
+ "operation": "update",
1447
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
1448
+ "path": "/accounts/[id]",
1449
+ "method": "PATCH"
1450
+ },
1451
+ {
1452
+ "kind": "api",
1453
+ "name": "accounts.delete",
1454
+ "operation": "delete",
1455
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
1456
+ "path": "/accounts/[id]",
1457
+ "method": "DELETE"
1458
+ },
1459
+ {
1460
+ "kind": "cli",
1461
+ "name": "emailaccount_list",
1462
+ "operation": "list",
1463
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1464
+ },
1465
+ {
1466
+ "kind": "cli",
1467
+ "name": "emailaccount_get",
1468
+ "operation": "get",
1469
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1470
+ },
1471
+ {
1472
+ "kind": "cli",
1473
+ "name": "emailaccount_create",
1474
+ "operation": "create",
1475
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1476
+ },
1477
+ {
1478
+ "kind": "cli",
1479
+ "name": "emailaccount_update",
1480
+ "operation": "update",
1481
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1482
+ },
1483
+ {
1484
+ "kind": "cli",
1485
+ "name": "emailaccount_delete",
1486
+ "operation": "delete",
1487
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1488
+ },
1489
+ {
1490
+ "kind": "mcp",
1491
+ "name": "emailaccount_list",
1492
+ "operation": "list",
1493
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1494
+ },
1495
+ {
1496
+ "kind": "mcp",
1497
+ "name": "emailaccount_get",
1498
+ "operation": "get",
1499
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
1500
+ }
1501
+ ],
1502
+ "relationshipFeatures": [
1503
+ "uuidColumns"
1504
+ ],
1505
+ "tags": [],
1506
+ "risks": []
1507
+ },
1508
+ {
1509
+ "name": "EmailAttachment",
1510
+ "qualifiedName": "@happyvertical/smrt-messages:EmailAttachment",
1511
+ "collection": "emailattachments",
1512
+ "tableName": "email_attachments",
1513
+ "packageName": "@happyvertical/smrt-messages",
1514
+ "extends": "Attachment",
1515
+ "fields": [],
1516
+ "relationships": [],
1517
+ "methods": [
1518
+ "getEmail"
1519
+ ],
1520
+ "surfaces": [],
1521
+ "relationshipFeatures": [
1522
+ "uuidColumns"
1523
+ ],
1524
+ "tags": [],
1525
+ "risks": []
1526
+ },
1527
+ {
1528
+ "name": "EmailFolder",
1529
+ "qualifiedName": "@happyvertical/smrt-messages:EmailFolder",
1530
+ "collection": "emailfolders",
1531
+ "tableName": "email_folders",
1532
+ "packageName": "@happyvertical/smrt-messages",
1533
+ "extends": "SmrtObject",
1534
+ "fields": [
1535
+ {
1536
+ "name": "tenantId",
1537
+ "type": "text",
1538
+ "required": false,
1539
+ "columnType": "UUID"
1540
+ },
1541
+ {
1542
+ "name": "accountId",
1543
+ "type": "foreignKey",
1544
+ "required": false,
1545
+ "related": "Account",
1546
+ "columnType": "UUID"
1547
+ },
1548
+ {
1549
+ "name": "name",
1550
+ "type": "text",
1551
+ "required": false,
1552
+ "columnType": "TEXT"
1553
+ },
1554
+ {
1555
+ "name": "path",
1556
+ "type": "text",
1557
+ "required": false,
1558
+ "columnType": "TEXT"
1559
+ },
1560
+ {
1561
+ "name": "delimiter",
1562
+ "type": "text",
1563
+ "required": false,
1564
+ "columnType": "TEXT"
1565
+ },
1566
+ {
1567
+ "name": "specialUse",
1568
+ "type": "text",
1569
+ "required": false,
1570
+ "columnType": "TEXT"
1571
+ },
1572
+ {
1573
+ "name": "messageCount",
1574
+ "type": "integer",
1575
+ "required": true,
1576
+ "columnType": "INTEGER"
1577
+ },
1578
+ {
1579
+ "name": "unreadCount",
1580
+ "type": "integer",
1581
+ "required": true,
1582
+ "columnType": "INTEGER"
1583
+ },
1584
+ {
1585
+ "name": "subscribed",
1586
+ "type": "boolean",
1587
+ "required": true,
1588
+ "columnType": "BOOLEAN"
1589
+ },
1590
+ {
1591
+ "name": "createdAt",
1592
+ "type": "text",
1593
+ "required": false,
1594
+ "columnType": "TIMESTAMP"
1595
+ },
1596
+ {
1597
+ "name": "updatedAt",
1598
+ "type": "text",
1599
+ "required": false,
1600
+ "columnType": "TIMESTAMP"
1601
+ }
1602
+ ],
1603
+ "relationships": [
1604
+ {
1605
+ "name": "accountId",
1606
+ "type": "foreignKey",
1607
+ "required": false,
1608
+ "related": "Account",
1609
+ "columnType": "UUID"
1610
+ }
1611
+ ],
1612
+ "methods": [
1613
+ "getAccount",
1614
+ "getEmails",
1615
+ "getUnreadEmails",
1616
+ "isDrafts",
1617
+ "isInbox",
1618
+ "isSent",
1619
+ "isSpam",
1620
+ "isSystemFolder",
1621
+ "isTrash",
1622
+ "refreshCounts",
1623
+ "subscribe",
1624
+ "unsubscribe"
1625
+ ],
1626
+ "surfaces": [
1627
+ {
1628
+ "kind": "api",
1629
+ "name": "emailfolders.list",
1630
+ "operation": "list",
1631
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
1632
+ "path": "/emailfolders",
1633
+ "method": "GET"
1634
+ },
1635
+ {
1636
+ "kind": "api",
1637
+ "name": "emailfolders.get",
1638
+ "operation": "get",
1639
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
1640
+ "path": "/emailfolders/[id]",
1641
+ "method": "GET"
1642
+ },
1643
+ {
1644
+ "kind": "api",
1645
+ "name": "emailfolders.create",
1646
+ "operation": "create",
1647
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
1648
+ "path": "/emailfolders",
1649
+ "method": "POST"
1650
+ },
1651
+ {
1652
+ "kind": "api",
1653
+ "name": "emailfolders.update",
1654
+ "operation": "update",
1655
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
1656
+ "path": "/emailfolders/[id]",
1657
+ "method": "PATCH"
1658
+ },
1659
+ {
1660
+ "kind": "api",
1661
+ "name": "emailfolders.delete",
1662
+ "operation": "delete",
1663
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
1664
+ "path": "/emailfolders/[id]",
1665
+ "method": "DELETE"
1666
+ },
1667
+ {
1668
+ "kind": "cli",
1669
+ "name": "emailfolder_list",
1670
+ "operation": "list",
1671
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1672
+ },
1673
+ {
1674
+ "kind": "cli",
1675
+ "name": "emailfolder_get",
1676
+ "operation": "get",
1677
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1678
+ },
1679
+ {
1680
+ "kind": "cli",
1681
+ "name": "emailfolder_create",
1682
+ "operation": "create",
1683
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1684
+ },
1685
+ {
1686
+ "kind": "cli",
1687
+ "name": "emailfolder_update",
1688
+ "operation": "update",
1689
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1690
+ },
1691
+ {
1692
+ "kind": "cli",
1693
+ "name": "emailfolder_delete",
1694
+ "operation": "delete",
1695
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1696
+ },
1697
+ {
1698
+ "kind": "mcp",
1699
+ "name": "emailfolder_list",
1700
+ "operation": "list",
1701
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1702
+ },
1703
+ {
1704
+ "kind": "mcp",
1705
+ "name": "emailfolder_get",
1706
+ "operation": "get",
1707
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
1708
+ }
1709
+ ],
1710
+ "relationshipFeatures": [
1711
+ "foreignKey",
1712
+ "uuidColumns"
1713
+ ],
1714
+ "tags": [],
1715
+ "risks": []
1716
+ },
1717
+ {
1718
+ "name": "Message",
1719
+ "qualifiedName": "@happyvertical/smrt-messages:Message",
1720
+ "collection": "messages",
1721
+ "tableName": "messages",
1722
+ "packageName": "@happyvertical/smrt-messages",
1723
+ "extends": "SmrtObject",
1724
+ "fields": [
1725
+ {
1726
+ "name": "created_at",
1727
+ "type": "datetime",
1728
+ "required": false,
1729
+ "columnType": "TIMESTAMP"
1730
+ },
1731
+ {
1732
+ "name": "updated_at",
1733
+ "type": "datetime",
1734
+ "required": false,
1735
+ "columnType": "TIMESTAMP"
1736
+ },
1737
+ {
1738
+ "name": "tenantId",
1739
+ "type": "text",
1740
+ "required": false,
1741
+ "columnType": "UUID"
1742
+ },
1743
+ {
1744
+ "name": "accountId",
1745
+ "type": "foreignKey",
1746
+ "required": false,
1747
+ "related": "Account",
1748
+ "columnType": "UUID"
1749
+ },
1750
+ {
1751
+ "name": "threadId",
1752
+ "type": "text",
1753
+ "required": false,
1754
+ "columnType": "TEXT"
1755
+ },
1756
+ {
1757
+ "name": "subject",
1758
+ "type": "text",
1759
+ "required": false,
1760
+ "columnType": "TEXT"
1761
+ },
1762
+ {
1763
+ "name": "body",
1764
+ "type": "text",
1765
+ "required": false,
1766
+ "columnType": "TEXT"
1767
+ },
1768
+ {
1769
+ "name": "fromAddress",
1770
+ "type": "text",
1771
+ "required": false,
1772
+ "columnType": "TEXT"
1773
+ },
1774
+ {
1775
+ "name": "fromName",
1776
+ "type": "text",
1777
+ "required": false,
1778
+ "columnType": "TEXT"
1779
+ },
1780
+ {
1781
+ "name": "toAddresses",
1782
+ "type": "text",
1783
+ "required": false,
1784
+ "columnType": "TEXT"
1785
+ },
1786
+ {
1787
+ "name": "date",
1788
+ "type": "datetime",
1789
+ "required": false,
1790
+ "columnType": "TIMESTAMP"
1791
+ },
1792
+ {
1793
+ "name": "isRead",
1794
+ "type": "boolean",
1795
+ "required": true,
1796
+ "columnType": "BOOLEAN"
1797
+ },
1798
+ {
1799
+ "name": "isFlagged",
1800
+ "type": "boolean",
1801
+ "required": true,
1802
+ "columnType": "BOOLEAN"
1803
+ },
1804
+ {
1805
+ "name": "hasAttachments",
1806
+ "type": "boolean",
1807
+ "required": true,
1808
+ "columnType": "BOOLEAN"
1809
+ },
1810
+ {
1811
+ "name": "size",
1812
+ "type": "integer",
1813
+ "required": true,
1814
+ "columnType": "INTEGER"
1815
+ },
1816
+ {
1817
+ "name": "metadata",
1818
+ "type": "text",
1819
+ "required": false,
1820
+ "columnType": "TEXT"
1821
+ },
1822
+ {
1823
+ "name": "sendStatus",
1824
+ "type": "text",
1825
+ "required": false,
1826
+ "columnType": "TEXT"
1827
+ },
1828
+ {
1829
+ "name": "sentAt",
1830
+ "type": "datetime",
1831
+ "required": false,
1832
+ "columnType": "TIMESTAMP"
1833
+ },
1834
+ {
1835
+ "name": "sendError",
1836
+ "type": "text",
1837
+ "required": false,
1838
+ "columnType": "TEXT"
1839
+ },
1840
+ {
1841
+ "name": "retryCount",
1842
+ "type": "integer",
1843
+ "required": true,
1844
+ "columnType": "INTEGER"
1845
+ },
1846
+ {
1847
+ "name": "maxRetries",
1848
+ "type": "integer",
1849
+ "required": true,
1850
+ "columnType": "INTEGER"
1851
+ },
1852
+ {
1853
+ "name": "scheduledSendAt",
1854
+ "type": "datetime",
1855
+ "required": false,
1856
+ "columnType": "TIMESTAMP"
1857
+ },
1858
+ {
1859
+ "name": "inReplyToMessageId",
1860
+ "type": "foreignKey",
1861
+ "required": false,
1862
+ "related": "Message",
1863
+ "columnType": "UUID"
1864
+ },
1865
+ {
1866
+ "name": "createdAt",
1867
+ "type": "text",
1868
+ "required": false,
1869
+ "columnType": "TIMESTAMP"
1870
+ },
1871
+ {
1872
+ "name": "updatedAt",
1873
+ "type": "text",
1874
+ "required": false,
1875
+ "columnType": "TIMESTAMP"
1876
+ }
1877
+ ],
1878
+ "relationships": [
1879
+ {
1880
+ "name": "accountId",
1881
+ "type": "foreignKey",
1882
+ "required": false,
1883
+ "related": "Account",
1884
+ "columnType": "UUID"
1885
+ },
1886
+ {
1887
+ "name": "inReplyToMessageId",
1888
+ "type": "foreignKey",
1889
+ "required": false,
1890
+ "related": "Message",
1891
+ "columnType": "UUID"
1892
+ }
1893
+ ],
1894
+ "methods": [
1895
+ "classifyConstraintError",
1896
+ "clearEmbeddings",
1897
+ "createForward",
1898
+ "createReply",
1899
+ "delete",
1900
+ "describe",
1901
+ "destroy",
1902
+ "do",
1903
+ "executeToolCall",
1904
+ "forget",
1905
+ "forgetScope",
1906
+ "generateEmbeddings",
1907
+ "getAccount",
1908
+ "getAiUsageSnapshot",
1909
+ "getAttachments",
1910
+ "getAvailableTools",
1911
+ "getEmbedding",
1912
+ "getFields",
1913
+ "getId",
1914
+ "getMetadata",
1915
+ "getPreview",
1916
+ "getRelated",
1917
+ "getSavedId",
1918
+ "getSlug",
1919
+ "getThreadMessages",
1920
+ "getToAddresses",
1921
+ "hasStaleEmbeddings",
1922
+ "initialize",
1923
+ "is",
1924
+ "isRelatedLoaded",
1925
+ "isSaved",
1926
+ "isUnread",
1927
+ "listAiUsage",
1928
+ "loadDataFromDb",
1929
+ "loadFromId",
1930
+ "loadFromSlug",
1931
+ "loadRelated",
1932
+ "loadRelatedMany",
1933
+ "markAsPersisted",
1934
+ "markRead",
1935
+ "markUnread",
1936
+ "recall",
1937
+ "recallAll",
1938
+ "remember",
1939
+ "resetAiUsage",
1940
+ "retrySend",
1941
+ "save",
1942
+ "send",
1943
+ "setMetadata",
1944
+ "setToAddresses",
1945
+ "summarizeAiUsage",
1946
+ "toJSON",
1947
+ "toPlainObject",
1948
+ "toPublicJSON",
1949
+ "toggleFlagged"
1950
+ ],
1951
+ "surfaces": [
1952
+ {
1953
+ "kind": "api",
1954
+ "name": "messages.list",
1955
+ "operation": "list",
1956
+ "objectName": "@happyvertical/smrt-messages:Message",
1957
+ "path": "/messages",
1958
+ "method": "GET"
1959
+ },
1960
+ {
1961
+ "kind": "api",
1962
+ "name": "messages.get",
1963
+ "operation": "get",
1964
+ "objectName": "@happyvertical/smrt-messages:Message",
1965
+ "path": "/messages/[id]",
1966
+ "method": "GET"
1967
+ },
1968
+ {
1969
+ "kind": "cli",
1970
+ "name": "message_list",
1971
+ "operation": "list",
1972
+ "objectName": "@happyvertical/smrt-messages:Message"
1973
+ },
1974
+ {
1975
+ "kind": "cli",
1976
+ "name": "message_get",
1977
+ "operation": "get",
1978
+ "objectName": "@happyvertical/smrt-messages:Message"
1979
+ },
1980
+ {
1981
+ "kind": "cli",
1982
+ "name": "message_create",
1983
+ "operation": "create",
1984
+ "objectName": "@happyvertical/smrt-messages:Message"
1985
+ },
1986
+ {
1987
+ "kind": "cli",
1988
+ "name": "message_update",
1989
+ "operation": "update",
1990
+ "objectName": "@happyvertical/smrt-messages:Message"
1991
+ },
1992
+ {
1993
+ "kind": "cli",
1994
+ "name": "message_delete",
1995
+ "operation": "delete",
1996
+ "objectName": "@happyvertical/smrt-messages:Message"
1997
+ },
1998
+ {
1999
+ "kind": "mcp",
2000
+ "name": "message_list",
2001
+ "operation": "list",
2002
+ "objectName": "@happyvertical/smrt-messages:Message"
2003
+ },
2004
+ {
2005
+ "kind": "mcp",
2006
+ "name": "message_get",
2007
+ "operation": "get",
2008
+ "objectName": "@happyvertical/smrt-messages:Message"
2009
+ }
2010
+ ],
2011
+ "relationshipFeatures": [
2012
+ "foreignKey",
2013
+ "uuidColumns"
2014
+ ],
2015
+ "tags": [],
2016
+ "risks": []
2017
+ },
2018
+ {
2019
+ "name": "SlackAccount",
2020
+ "qualifiedName": "@happyvertical/smrt-messages:SlackAccount",
2021
+ "collection": "accounts",
2022
+ "tableName": "accounts",
2023
+ "packageName": "@happyvertical/smrt-messages",
2024
+ "extends": "Account",
2025
+ "fields": [
2026
+ {
2027
+ "name": "created_at",
2028
+ "type": "datetime",
2029
+ "required": false,
2030
+ "columnType": "TIMESTAMP"
2031
+ },
2032
+ {
2033
+ "name": "updated_at",
2034
+ "type": "datetime",
2035
+ "required": false,
2036
+ "columnType": "TIMESTAMP"
2037
+ },
2038
+ {
2039
+ "name": "tenantId",
2040
+ "type": "text",
2041
+ "required": false,
2042
+ "columnType": "UUID"
2043
+ },
2044
+ {
2045
+ "name": "name",
2046
+ "type": "text",
2047
+ "required": false,
2048
+ "columnType": "TEXT"
2049
+ },
2050
+ {
2051
+ "name": "providerType",
2052
+ "type": "text",
2053
+ "required": false,
2054
+ "columnType": "TEXT"
2055
+ },
2056
+ {
2057
+ "name": "credentialSecretId",
2058
+ "type": "text",
2059
+ "required": false,
2060
+ "columnType": "TEXT"
2061
+ },
2062
+ {
2063
+ "name": "isActive",
2064
+ "type": "boolean",
2065
+ "required": true,
2066
+ "columnType": "BOOLEAN"
2067
+ },
2068
+ {
2069
+ "name": "lastSyncAt",
2070
+ "type": "datetime",
2071
+ "required": false,
2072
+ "columnType": "TIMESTAMP"
2073
+ },
2074
+ {
2075
+ "name": "settings",
2076
+ "type": "text",
2077
+ "required": false,
2078
+ "columnType": "TEXT"
2079
+ },
2080
+ {
2081
+ "name": "createdAt",
2082
+ "type": "text",
2083
+ "required": false,
2084
+ "columnType": "TIMESTAMP"
2085
+ },
2086
+ {
2087
+ "name": "updatedAt",
2088
+ "type": "text",
2089
+ "required": false,
2090
+ "columnType": "TIMESTAMP"
2091
+ },
2092
+ {
2093
+ "name": "workspaceId",
2094
+ "type": "text",
2095
+ "required": false,
2096
+ "columnType": "TEXT"
2097
+ },
2098
+ {
2099
+ "name": "workspaceName",
2100
+ "type": "text",
2101
+ "required": false,
2102
+ "columnType": "TEXT"
2103
+ },
2104
+ {
2105
+ "name": "botUserId",
2106
+ "type": "text",
2107
+ "required": false,
2108
+ "columnType": "TEXT"
2109
+ }
2110
+ ],
2111
+ "relationships": [],
2112
+ "methods": [
2113
+ "activate",
2114
+ "classifyConstraintError",
2115
+ "clearEmbeddings",
2116
+ "createSender",
2117
+ "deactivate",
2118
+ "delete",
2119
+ "describe",
2120
+ "destroy",
2121
+ "do",
2122
+ "executeToolCall",
2123
+ "forget",
2124
+ "forgetScope",
2125
+ "generateEmbeddings",
2126
+ "getAiUsageSnapshot",
2127
+ "getAvailableTools",
2128
+ "getCredentials",
2129
+ "getEmbedding",
2130
+ "getFields",
2131
+ "getId",
2132
+ "getRelated",
2133
+ "getSavedId",
2134
+ "getSettings",
2135
+ "getSlug",
2136
+ "hasStaleEmbeddings",
2137
+ "initialize",
2138
+ "is",
2139
+ "isRelatedLoaded",
2140
+ "isSaved",
2141
+ "listAiUsage",
2142
+ "loadDataFromDb",
2143
+ "loadFromId",
2144
+ "loadFromSlug",
2145
+ "loadRelated",
2146
+ "loadRelatedMany",
2147
+ "markAsPersisted",
2148
+ "recall",
2149
+ "recallAll",
2150
+ "remember",
2151
+ "resetAiUsage",
2152
+ "save",
2153
+ "setCredentials",
2154
+ "setSettings",
2155
+ "summarizeAiUsage",
2156
+ "toJSON",
2157
+ "toPlainObject",
2158
+ "toPublicJSON"
2159
+ ],
2160
+ "surfaces": [
2161
+ {
2162
+ "kind": "api",
2163
+ "name": "accounts.list",
2164
+ "operation": "list",
2165
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
2166
+ "path": "/accounts",
2167
+ "method": "GET"
2168
+ },
2169
+ {
2170
+ "kind": "api",
2171
+ "name": "accounts.get",
2172
+ "operation": "get",
2173
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
2174
+ "path": "/accounts/[id]",
2175
+ "method": "GET"
2176
+ },
2177
+ {
2178
+ "kind": "api",
2179
+ "name": "accounts.create",
2180
+ "operation": "create",
2181
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
2182
+ "path": "/accounts",
2183
+ "method": "POST"
2184
+ },
2185
+ {
2186
+ "kind": "api",
2187
+ "name": "accounts.update",
2188
+ "operation": "update",
2189
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
2190
+ "path": "/accounts/[id]",
2191
+ "method": "PATCH"
2192
+ },
2193
+ {
2194
+ "kind": "api",
2195
+ "name": "accounts.delete",
2196
+ "operation": "delete",
2197
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
2198
+ "path": "/accounts/[id]",
2199
+ "method": "DELETE"
2200
+ },
2201
+ {
2202
+ "kind": "cli",
2203
+ "name": "slackaccount_list",
2204
+ "operation": "list",
2205
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2206
+ },
2207
+ {
2208
+ "kind": "cli",
2209
+ "name": "slackaccount_get",
2210
+ "operation": "get",
2211
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2212
+ },
2213
+ {
2214
+ "kind": "cli",
2215
+ "name": "slackaccount_create",
2216
+ "operation": "create",
2217
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2218
+ },
2219
+ {
2220
+ "kind": "cli",
2221
+ "name": "slackaccount_update",
2222
+ "operation": "update",
2223
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2224
+ },
2225
+ {
2226
+ "kind": "cli",
2227
+ "name": "slackaccount_delete",
2228
+ "operation": "delete",
2229
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2230
+ },
2231
+ {
2232
+ "kind": "mcp",
2233
+ "name": "slackaccount_list",
2234
+ "operation": "list",
2235
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2236
+ },
2237
+ {
2238
+ "kind": "mcp",
2239
+ "name": "slackaccount_get",
2240
+ "operation": "get",
2241
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
2242
+ }
2243
+ ],
2244
+ "relationshipFeatures": [
2245
+ "uuidColumns"
2246
+ ],
2247
+ "tags": [],
2248
+ "risks": []
2249
+ },
2250
+ {
2251
+ "name": "SlackMessage",
2252
+ "qualifiedName": "@happyvertical/smrt-messages:SlackMessage",
2253
+ "collection": "messages",
2254
+ "tableName": "messages",
2255
+ "packageName": "@happyvertical/smrt-messages",
2256
+ "extends": "Message",
2257
+ "fields": [
2258
+ {
2259
+ "name": "created_at",
2260
+ "type": "datetime",
2261
+ "required": false,
2262
+ "columnType": "TIMESTAMP"
2263
+ },
2264
+ {
2265
+ "name": "updated_at",
2266
+ "type": "datetime",
2267
+ "required": false,
2268
+ "columnType": "TIMESTAMP"
2269
+ },
2270
+ {
2271
+ "name": "tenantId",
2272
+ "type": "text",
2273
+ "required": false,
2274
+ "columnType": "UUID"
2275
+ },
2276
+ {
2277
+ "name": "accountId",
2278
+ "type": "foreignKey",
2279
+ "required": false,
2280
+ "related": "Account",
2281
+ "columnType": "UUID"
2282
+ },
2283
+ {
2284
+ "name": "threadId",
2285
+ "type": "text",
2286
+ "required": false,
2287
+ "columnType": "TEXT"
2288
+ },
2289
+ {
2290
+ "name": "subject",
2291
+ "type": "text",
2292
+ "required": false,
2293
+ "columnType": "TEXT"
2294
+ },
2295
+ {
2296
+ "name": "body",
2297
+ "type": "text",
2298
+ "required": false,
2299
+ "columnType": "TEXT"
2300
+ },
2301
+ {
2302
+ "name": "fromAddress",
2303
+ "type": "text",
2304
+ "required": false,
2305
+ "columnType": "TEXT"
2306
+ },
2307
+ {
2308
+ "name": "fromName",
2309
+ "type": "text",
2310
+ "required": false,
2311
+ "columnType": "TEXT"
2312
+ },
2313
+ {
2314
+ "name": "toAddresses",
2315
+ "type": "text",
2316
+ "required": false,
2317
+ "columnType": "TEXT"
2318
+ },
2319
+ {
2320
+ "name": "date",
2321
+ "type": "datetime",
2322
+ "required": false,
2323
+ "columnType": "TIMESTAMP"
2324
+ },
2325
+ {
2326
+ "name": "isRead",
2327
+ "type": "boolean",
2328
+ "required": true,
2329
+ "columnType": "BOOLEAN"
2330
+ },
2331
+ {
2332
+ "name": "isFlagged",
2333
+ "type": "boolean",
2334
+ "required": true,
2335
+ "columnType": "BOOLEAN"
2336
+ },
2337
+ {
2338
+ "name": "hasAttachments",
2339
+ "type": "boolean",
2340
+ "required": true,
2341
+ "columnType": "BOOLEAN"
2342
+ },
2343
+ {
2344
+ "name": "size",
2345
+ "type": "integer",
2346
+ "required": true,
2347
+ "columnType": "INTEGER"
2348
+ },
2349
+ {
2350
+ "name": "metadata",
2351
+ "type": "text",
2352
+ "required": false,
2353
+ "columnType": "TEXT"
2354
+ },
2355
+ {
2356
+ "name": "sendStatus",
2357
+ "type": "text",
2358
+ "required": false,
2359
+ "columnType": "TEXT"
2360
+ },
2361
+ {
2362
+ "name": "sentAt",
2363
+ "type": "datetime",
2364
+ "required": false,
2365
+ "columnType": "TIMESTAMP"
2366
+ },
2367
+ {
2368
+ "name": "sendError",
2369
+ "type": "text",
2370
+ "required": false,
2371
+ "columnType": "TEXT"
2372
+ },
2373
+ {
2374
+ "name": "retryCount",
2375
+ "type": "integer",
2376
+ "required": true,
2377
+ "columnType": "INTEGER"
2378
+ },
2379
+ {
2380
+ "name": "maxRetries",
2381
+ "type": "integer",
2382
+ "required": true,
2383
+ "columnType": "INTEGER"
2384
+ },
2385
+ {
2386
+ "name": "scheduledSendAt",
2387
+ "type": "datetime",
2388
+ "required": false,
2389
+ "columnType": "TIMESTAMP"
2390
+ },
2391
+ {
2392
+ "name": "inReplyToMessageId",
2393
+ "type": "foreignKey",
2394
+ "required": false,
2395
+ "related": "Message",
2396
+ "columnType": "UUID"
2397
+ },
2398
+ {
2399
+ "name": "createdAt",
2400
+ "type": "text",
2401
+ "required": false,
2402
+ "columnType": "TIMESTAMP"
2403
+ },
2404
+ {
2405
+ "name": "updatedAt",
2406
+ "type": "text",
2407
+ "required": false,
2408
+ "columnType": "TIMESTAMP"
2409
+ },
2410
+ {
2411
+ "name": "channelId",
2412
+ "type": "text",
2413
+ "required": false,
2414
+ "columnType": "TEXT"
2415
+ },
2416
+ {
2417
+ "name": "channelName",
2418
+ "type": "text",
2419
+ "required": false,
2420
+ "columnType": "TEXT"
2421
+ },
2422
+ {
2423
+ "name": "slackTs",
2424
+ "type": "text",
2425
+ "required": false,
2426
+ "columnType": "TEXT"
2427
+ },
2428
+ {
2429
+ "name": "slackThreadTs",
2430
+ "type": "text",
2431
+ "required": false,
2432
+ "columnType": "TEXT"
2433
+ },
2434
+ {
2435
+ "name": "reactions",
2436
+ "type": "text",
2437
+ "required": false,
2438
+ "columnType": "TEXT"
2439
+ },
2440
+ {
2441
+ "name": "isEdited",
2442
+ "type": "boolean",
2443
+ "required": true,
2444
+ "columnType": "BOOLEAN"
2445
+ },
2446
+ {
2447
+ "name": "messageType",
2448
+ "type": "text",
2449
+ "required": false,
2450
+ "columnType": "TEXT"
2451
+ },
2452
+ {
2453
+ "name": "blocks",
2454
+ "type": "text",
2455
+ "required": false,
2456
+ "columnType": "TEXT"
2457
+ }
2458
+ ],
2459
+ "relationships": [
2460
+ {
2461
+ "name": "accountId",
2462
+ "type": "foreignKey",
2463
+ "required": false,
2464
+ "related": "Account",
2465
+ "columnType": "UUID"
2466
+ },
2467
+ {
2468
+ "name": "inReplyToMessageId",
2469
+ "type": "foreignKey",
2470
+ "required": false,
2471
+ "related": "Message",
2472
+ "columnType": "UUID"
2473
+ }
2474
+ ],
2475
+ "methods": [
2476
+ "classifyConstraintError",
2477
+ "clearEmbeddings",
2478
+ "createForward",
2479
+ "createReply",
2480
+ "delete",
2481
+ "describe",
2482
+ "destroy",
2483
+ "do",
2484
+ "executeToolCall",
2485
+ "forget",
2486
+ "forgetScope",
2487
+ "generateEmbeddings",
2488
+ "getAccount",
2489
+ "getAiUsageSnapshot",
2490
+ "getAttachments",
2491
+ "getAvailableTools",
2492
+ "getBlocks",
2493
+ "getEmbedding",
2494
+ "getFields",
2495
+ "getId",
2496
+ "getMetadata",
2497
+ "getPreview",
2498
+ "getReactions",
2499
+ "getRelated",
2500
+ "getSavedId",
2501
+ "getSlug",
2502
+ "getThreadMessages",
2503
+ "getToAddresses",
2504
+ "getTotalReactions",
2505
+ "hasStaleEmbeddings",
2506
+ "initialize",
2507
+ "is",
2508
+ "isInThread",
2509
+ "isRelatedLoaded",
2510
+ "isSaved",
2511
+ "isUnread",
2512
+ "listAiUsage",
2513
+ "loadDataFromDb",
2514
+ "loadFromId",
2515
+ "loadFromSlug",
2516
+ "loadRelated",
2517
+ "loadRelatedMany",
2518
+ "markAsPersisted",
2519
+ "markRead",
2520
+ "markUnread",
2521
+ "recall",
2522
+ "recallAll",
2523
+ "remember",
2524
+ "resetAiUsage",
2525
+ "retrySend",
2526
+ "save",
2527
+ "send",
2528
+ "setMetadata",
2529
+ "setToAddresses",
2530
+ "summarizeAiUsage",
2531
+ "toJSON",
2532
+ "toPlainObject",
2533
+ "toPublicJSON",
2534
+ "toggleFlagged"
2535
+ ],
2536
+ "surfaces": [
2537
+ {
2538
+ "kind": "api",
2539
+ "name": "messages.list",
2540
+ "operation": "list",
2541
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
2542
+ "path": "/messages",
2543
+ "method": "GET"
2544
+ },
2545
+ {
2546
+ "kind": "api",
2547
+ "name": "messages.get",
2548
+ "operation": "get",
2549
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
2550
+ "path": "/messages/[id]",
2551
+ "method": "GET"
2552
+ },
2553
+ {
2554
+ "kind": "api",
2555
+ "name": "messages.create",
2556
+ "operation": "create",
2557
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
2558
+ "path": "/messages",
2559
+ "method": "POST"
2560
+ },
2561
+ {
2562
+ "kind": "cli",
2563
+ "name": "slackmessage_list",
2564
+ "operation": "list",
2565
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2566
+ },
2567
+ {
2568
+ "kind": "cli",
2569
+ "name": "slackmessage_get",
2570
+ "operation": "get",
2571
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2572
+ },
2573
+ {
2574
+ "kind": "cli",
2575
+ "name": "slackmessage_create",
2576
+ "operation": "create",
2577
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2578
+ },
2579
+ {
2580
+ "kind": "cli",
2581
+ "name": "slackmessage_update",
2582
+ "operation": "update",
2583
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2584
+ },
2585
+ {
2586
+ "kind": "cli",
2587
+ "name": "slackmessage_delete",
2588
+ "operation": "delete",
2589
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2590
+ },
2591
+ {
2592
+ "kind": "mcp",
2593
+ "name": "slackmessage_list",
2594
+ "operation": "list",
2595
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2596
+ },
2597
+ {
2598
+ "kind": "mcp",
2599
+ "name": "slackmessage_get",
2600
+ "operation": "get",
2601
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
2602
+ }
2603
+ ],
2604
+ "relationshipFeatures": [
2605
+ "foreignKey",
2606
+ "uuidColumns"
2607
+ ],
2608
+ "tags": [],
2609
+ "risks": []
2610
+ },
2611
+ {
2612
+ "name": "Tweet",
2613
+ "qualifiedName": "@happyvertical/smrt-messages:Tweet",
2614
+ "collection": "messages",
2615
+ "tableName": "messages",
2616
+ "packageName": "@happyvertical/smrt-messages",
2617
+ "extends": "Message",
2618
+ "fields": [
2619
+ {
2620
+ "name": "created_at",
2621
+ "type": "datetime",
2622
+ "required": false,
2623
+ "columnType": "TIMESTAMP"
2624
+ },
2625
+ {
2626
+ "name": "updated_at",
2627
+ "type": "datetime",
2628
+ "required": false,
2629
+ "columnType": "TIMESTAMP"
2630
+ },
2631
+ {
2632
+ "name": "tenantId",
2633
+ "type": "text",
2634
+ "required": false,
2635
+ "columnType": "UUID"
2636
+ },
2637
+ {
2638
+ "name": "accountId",
2639
+ "type": "foreignKey",
2640
+ "required": false,
2641
+ "related": "Account",
2642
+ "columnType": "UUID"
2643
+ },
2644
+ {
2645
+ "name": "threadId",
2646
+ "type": "text",
2647
+ "required": false,
2648
+ "columnType": "TEXT"
2649
+ },
2650
+ {
2651
+ "name": "subject",
2652
+ "type": "text",
2653
+ "required": false,
2654
+ "columnType": "TEXT"
2655
+ },
2656
+ {
2657
+ "name": "body",
2658
+ "type": "text",
2659
+ "required": false,
2660
+ "columnType": "TEXT"
2661
+ },
2662
+ {
2663
+ "name": "fromAddress",
2664
+ "type": "text",
2665
+ "required": false,
2666
+ "columnType": "TEXT"
2667
+ },
2668
+ {
2669
+ "name": "fromName",
2670
+ "type": "text",
2671
+ "required": false,
2672
+ "columnType": "TEXT"
2673
+ },
2674
+ {
2675
+ "name": "toAddresses",
2676
+ "type": "text",
2677
+ "required": false,
2678
+ "columnType": "TEXT"
2679
+ },
2680
+ {
2681
+ "name": "date",
2682
+ "type": "datetime",
2683
+ "required": false,
2684
+ "columnType": "TIMESTAMP"
2685
+ },
2686
+ {
2687
+ "name": "isRead",
2688
+ "type": "boolean",
2689
+ "required": true,
2690
+ "columnType": "BOOLEAN"
2691
+ },
2692
+ {
2693
+ "name": "isFlagged",
2694
+ "type": "boolean",
2695
+ "required": true,
2696
+ "columnType": "BOOLEAN"
2697
+ },
2698
+ {
2699
+ "name": "hasAttachments",
2700
+ "type": "boolean",
2701
+ "required": true,
2702
+ "columnType": "BOOLEAN"
2703
+ },
2704
+ {
2705
+ "name": "size",
2706
+ "type": "integer",
2707
+ "required": true,
2708
+ "columnType": "INTEGER"
2709
+ },
2710
+ {
2711
+ "name": "metadata",
2712
+ "type": "text",
2713
+ "required": false,
2714
+ "columnType": "TEXT"
2715
+ },
2716
+ {
2717
+ "name": "sendStatus",
2718
+ "type": "text",
2719
+ "required": false,
2720
+ "columnType": "TEXT"
2721
+ },
2722
+ {
2723
+ "name": "sentAt",
2724
+ "type": "datetime",
2725
+ "required": false,
2726
+ "columnType": "TIMESTAMP"
2727
+ },
2728
+ {
2729
+ "name": "sendError",
2730
+ "type": "text",
2731
+ "required": false,
2732
+ "columnType": "TEXT"
2733
+ },
2734
+ {
2735
+ "name": "retryCount",
2736
+ "type": "integer",
2737
+ "required": true,
2738
+ "columnType": "INTEGER"
2739
+ },
2740
+ {
2741
+ "name": "maxRetries",
2742
+ "type": "integer",
2743
+ "required": true,
2744
+ "columnType": "INTEGER"
2745
+ },
2746
+ {
2747
+ "name": "scheduledSendAt",
2748
+ "type": "datetime",
2749
+ "required": false,
2750
+ "columnType": "TIMESTAMP"
2751
+ },
2752
+ {
2753
+ "name": "inReplyToMessageId",
2754
+ "type": "foreignKey",
2755
+ "required": false,
2756
+ "related": "Message",
2757
+ "columnType": "UUID"
2758
+ },
2759
+ {
2760
+ "name": "createdAt",
2761
+ "type": "text",
2762
+ "required": false,
2763
+ "columnType": "TIMESTAMP"
2764
+ },
2765
+ {
2766
+ "name": "updatedAt",
2767
+ "type": "text",
2768
+ "required": false,
2769
+ "columnType": "TIMESTAMP"
2770
+ },
2771
+ {
2772
+ "name": "tweetId",
2773
+ "type": "text",
2774
+ "required": false,
2775
+ "columnType": "TEXT"
2776
+ },
2777
+ {
2778
+ "name": "retweetCount",
2779
+ "type": "integer",
2780
+ "required": true,
2781
+ "columnType": "INTEGER"
2782
+ },
2783
+ {
2784
+ "name": "likeCount",
2785
+ "type": "integer",
2786
+ "required": true,
2787
+ "columnType": "INTEGER"
2788
+ },
2789
+ {
2790
+ "name": "replyCount",
2791
+ "type": "integer",
2792
+ "required": true,
2793
+ "columnType": "INTEGER"
2794
+ },
2795
+ {
2796
+ "name": "isRetweet",
2797
+ "type": "boolean",
2798
+ "required": true,
2799
+ "columnType": "BOOLEAN"
2800
+ },
2801
+ {
2802
+ "name": "isReply",
2803
+ "type": "boolean",
2804
+ "required": true,
2805
+ "columnType": "BOOLEAN"
2806
+ },
2807
+ {
2808
+ "name": "mediaUrls",
2809
+ "type": "text",
2810
+ "required": false,
2811
+ "columnType": "TEXT"
2812
+ },
2813
+ {
2814
+ "name": "hashtags",
2815
+ "type": "text",
2816
+ "required": false,
2817
+ "columnType": "TEXT"
2818
+ },
2819
+ {
2820
+ "name": "mentions",
2821
+ "type": "text",
2822
+ "required": false,
2823
+ "columnType": "TEXT"
2824
+ }
2825
+ ],
2826
+ "relationships": [
2827
+ {
2828
+ "name": "accountId",
2829
+ "type": "foreignKey",
2830
+ "required": false,
2831
+ "related": "Account",
2832
+ "columnType": "UUID"
2833
+ },
2834
+ {
2835
+ "name": "inReplyToMessageId",
2836
+ "type": "foreignKey",
2837
+ "required": false,
2838
+ "related": "Message",
2839
+ "columnType": "UUID"
2840
+ }
2841
+ ],
2842
+ "methods": [
2843
+ "classifyConstraintError",
2844
+ "clearEmbeddings",
2845
+ "createForward",
2846
+ "createReply",
2847
+ "delete",
2848
+ "describe",
2849
+ "destroy",
2850
+ "do",
2851
+ "executeToolCall",
2852
+ "forget",
2853
+ "forgetScope",
2854
+ "generateEmbeddings",
2855
+ "getAccount",
2856
+ "getAiUsageSnapshot",
2857
+ "getAttachments",
2858
+ "getAvailableTools",
2859
+ "getEmbedding",
2860
+ "getEngagement",
2861
+ "getFields",
2862
+ "getHashtags",
2863
+ "getId",
2864
+ "getMediaUrls",
2865
+ "getMentions",
2866
+ "getMetadata",
2867
+ "getPreview",
2868
+ "getRelated",
2869
+ "getSavedId",
2870
+ "getSlug",
2871
+ "getThreadMessages",
2872
+ "getToAddresses",
2873
+ "hasStaleEmbeddings",
2874
+ "initialize",
2875
+ "is",
2876
+ "isRelatedLoaded",
2877
+ "isSaved",
2878
+ "isUnread",
2879
+ "listAiUsage",
2880
+ "loadDataFromDb",
2881
+ "loadFromId",
2882
+ "loadFromSlug",
2883
+ "loadRelated",
2884
+ "loadRelatedMany",
2885
+ "markAsPersisted",
2886
+ "markRead",
2887
+ "markUnread",
2888
+ "recall",
2889
+ "recallAll",
2890
+ "remember",
2891
+ "resetAiUsage",
2892
+ "retrySend",
2893
+ "save",
2894
+ "send",
2895
+ "setMetadata",
2896
+ "setToAddresses",
2897
+ "summarizeAiUsage",
2898
+ "toJSON",
2899
+ "toPlainObject",
2900
+ "toPublicJSON",
2901
+ "toggleFlagged"
2902
+ ],
2903
+ "surfaces": [
2904
+ {
2905
+ "kind": "api",
2906
+ "name": "messages.list",
2907
+ "operation": "list",
2908
+ "objectName": "@happyvertical/smrt-messages:Tweet",
2909
+ "path": "/messages",
2910
+ "method": "GET"
2911
+ },
2912
+ {
2913
+ "kind": "api",
2914
+ "name": "messages.get",
2915
+ "operation": "get",
2916
+ "objectName": "@happyvertical/smrt-messages:Tweet",
2917
+ "path": "/messages/[id]",
2918
+ "method": "GET"
2919
+ },
2920
+ {
2921
+ "kind": "api",
2922
+ "name": "messages.create",
2923
+ "operation": "create",
2924
+ "objectName": "@happyvertical/smrt-messages:Tweet",
2925
+ "path": "/messages",
2926
+ "method": "POST"
2927
+ },
2928
+ {
2929
+ "kind": "cli",
2930
+ "name": "tweet_list",
2931
+ "operation": "list",
2932
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2933
+ },
2934
+ {
2935
+ "kind": "cli",
2936
+ "name": "tweet_get",
2937
+ "operation": "get",
2938
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2939
+ },
2940
+ {
2941
+ "kind": "cli",
2942
+ "name": "tweet_create",
2943
+ "operation": "create",
2944
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2945
+ },
2946
+ {
2947
+ "kind": "cli",
2948
+ "name": "tweet_update",
2949
+ "operation": "update",
2950
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2951
+ },
2952
+ {
2953
+ "kind": "cli",
2954
+ "name": "tweet_delete",
2955
+ "operation": "delete",
2956
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2957
+ },
2958
+ {
2959
+ "kind": "mcp",
2960
+ "name": "tweet_list",
2961
+ "operation": "list",
2962
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2963
+ },
2964
+ {
2965
+ "kind": "mcp",
2966
+ "name": "tweet_get",
2967
+ "operation": "get",
2968
+ "objectName": "@happyvertical/smrt-messages:Tweet"
2969
+ }
2970
+ ],
2971
+ "relationshipFeatures": [
2972
+ "foreignKey",
2973
+ "uuidColumns"
2974
+ ],
2975
+ "tags": [],
2976
+ "risks": []
2977
+ },
2978
+ {
2979
+ "name": "TwitterAccount",
2980
+ "qualifiedName": "@happyvertical/smrt-messages:TwitterAccount",
2981
+ "collection": "accounts",
2982
+ "tableName": "accounts",
2983
+ "packageName": "@happyvertical/smrt-messages",
2984
+ "extends": "Account",
2985
+ "fields": [
2986
+ {
2987
+ "name": "created_at",
2988
+ "type": "datetime",
2989
+ "required": false,
2990
+ "columnType": "TIMESTAMP"
2991
+ },
2992
+ {
2993
+ "name": "updated_at",
2994
+ "type": "datetime",
2995
+ "required": false,
2996
+ "columnType": "TIMESTAMP"
2997
+ },
2998
+ {
2999
+ "name": "tenantId",
3000
+ "type": "text",
3001
+ "required": false,
3002
+ "columnType": "UUID"
3003
+ },
3004
+ {
3005
+ "name": "name",
3006
+ "type": "text",
3007
+ "required": false,
3008
+ "columnType": "TEXT"
3009
+ },
3010
+ {
3011
+ "name": "providerType",
3012
+ "type": "text",
3013
+ "required": false,
3014
+ "columnType": "TEXT"
3015
+ },
3016
+ {
3017
+ "name": "credentialSecretId",
3018
+ "type": "text",
3019
+ "required": false,
3020
+ "columnType": "TEXT"
3021
+ },
3022
+ {
3023
+ "name": "isActive",
3024
+ "type": "boolean",
3025
+ "required": true,
3026
+ "columnType": "BOOLEAN"
3027
+ },
3028
+ {
3029
+ "name": "lastSyncAt",
3030
+ "type": "datetime",
3031
+ "required": false,
3032
+ "columnType": "TIMESTAMP"
3033
+ },
3034
+ {
3035
+ "name": "settings",
3036
+ "type": "text",
3037
+ "required": false,
3038
+ "columnType": "TEXT"
3039
+ },
3040
+ {
3041
+ "name": "createdAt",
3042
+ "type": "text",
3043
+ "required": false,
3044
+ "columnType": "TIMESTAMP"
3045
+ },
3046
+ {
3047
+ "name": "updatedAt",
3048
+ "type": "text",
3049
+ "required": false,
3050
+ "columnType": "TIMESTAMP"
3051
+ },
3052
+ {
3053
+ "name": "handle",
3054
+ "type": "text",
3055
+ "required": false,
3056
+ "columnType": "TEXT"
3057
+ },
3058
+ {
3059
+ "name": "twitterUserId",
3060
+ "type": "text",
3061
+ "required": false,
3062
+ "columnType": "TEXT"
3063
+ }
3064
+ ],
3065
+ "relationships": [],
3066
+ "methods": [
3067
+ "activate",
3068
+ "classifyConstraintError",
3069
+ "clearEmbeddings",
3070
+ "createSender",
3071
+ "deactivate",
3072
+ "delete",
3073
+ "describe",
3074
+ "destroy",
3075
+ "do",
3076
+ "executeToolCall",
3077
+ "forget",
3078
+ "forgetScope",
3079
+ "generateEmbeddings",
3080
+ "getAiUsageSnapshot",
3081
+ "getAvailableTools",
3082
+ "getCredentials",
3083
+ "getEmbedding",
3084
+ "getFields",
3085
+ "getId",
3086
+ "getRelated",
3087
+ "getSavedId",
3088
+ "getSettings",
3089
+ "getSlug",
3090
+ "hasStaleEmbeddings",
3091
+ "initialize",
3092
+ "is",
3093
+ "isRelatedLoaded",
3094
+ "isSaved",
3095
+ "listAiUsage",
3096
+ "loadDataFromDb",
3097
+ "loadFromId",
3098
+ "loadFromSlug",
3099
+ "loadRelated",
3100
+ "loadRelatedMany",
3101
+ "markAsPersisted",
3102
+ "recall",
3103
+ "recallAll",
3104
+ "remember",
3105
+ "resetAiUsage",
3106
+ "save",
3107
+ "setCredentials",
3108
+ "setSettings",
3109
+ "summarizeAiUsage",
3110
+ "toJSON",
3111
+ "toPlainObject",
3112
+ "toPublicJSON"
3113
+ ],
3114
+ "surfaces": [
3115
+ {
3116
+ "kind": "api",
3117
+ "name": "accounts.list",
3118
+ "operation": "list",
3119
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
3120
+ "path": "/accounts",
3121
+ "method": "GET"
3122
+ },
3123
+ {
3124
+ "kind": "api",
3125
+ "name": "accounts.get",
3126
+ "operation": "get",
3127
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
3128
+ "path": "/accounts/[id]",
3129
+ "method": "GET"
3130
+ },
3131
+ {
3132
+ "kind": "api",
3133
+ "name": "accounts.create",
3134
+ "operation": "create",
3135
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
3136
+ "path": "/accounts",
3137
+ "method": "POST"
3138
+ },
3139
+ {
3140
+ "kind": "api",
3141
+ "name": "accounts.update",
3142
+ "operation": "update",
3143
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
3144
+ "path": "/accounts/[id]",
3145
+ "method": "PATCH"
3146
+ },
3147
+ {
3148
+ "kind": "api",
3149
+ "name": "accounts.delete",
3150
+ "operation": "delete",
3151
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
3152
+ "path": "/accounts/[id]",
3153
+ "method": "DELETE"
3154
+ },
3155
+ {
3156
+ "kind": "cli",
3157
+ "name": "twitteraccount_list",
3158
+ "operation": "list",
3159
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3160
+ },
3161
+ {
3162
+ "kind": "cli",
3163
+ "name": "twitteraccount_get",
3164
+ "operation": "get",
3165
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3166
+ },
3167
+ {
3168
+ "kind": "cli",
3169
+ "name": "twitteraccount_create",
3170
+ "operation": "create",
3171
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3172
+ },
3173
+ {
3174
+ "kind": "cli",
3175
+ "name": "twitteraccount_update",
3176
+ "operation": "update",
3177
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3178
+ },
3179
+ {
3180
+ "kind": "cli",
3181
+ "name": "twitteraccount_delete",
3182
+ "operation": "delete",
3183
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3184
+ },
3185
+ {
3186
+ "kind": "mcp",
3187
+ "name": "twitteraccount_list",
3188
+ "operation": "list",
3189
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3190
+ },
3191
+ {
3192
+ "kind": "mcp",
3193
+ "name": "twitteraccount_get",
3194
+ "operation": "get",
3195
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
3196
+ }
3197
+ ],
3198
+ "relationshipFeatures": [
3199
+ "uuidColumns"
3200
+ ],
3201
+ "tags": [],
3202
+ "risks": []
3203
+ },
3204
+ {
3205
+ "name": "Whitelist",
3206
+ "qualifiedName": "@happyvertical/smrt-messages:Whitelist",
3207
+ "collection": "whitelists",
3208
+ "tableName": "whitelists",
3209
+ "packageName": "@happyvertical/smrt-messages",
3210
+ "extends": "SmrtObject",
3211
+ "fields": [
3212
+ {
3213
+ "name": "pattern",
3214
+ "type": "text",
3215
+ "required": false,
3216
+ "columnType": "TEXT"
3217
+ },
3218
+ {
3219
+ "name": "type",
3220
+ "type": "text",
3221
+ "required": false,
3222
+ "columnType": "TEXT"
3223
+ },
3224
+ {
3225
+ "name": "category",
3226
+ "type": "text",
3227
+ "required": false,
3228
+ "columnType": "TEXT"
3229
+ },
3230
+ {
3231
+ "name": "description",
3232
+ "type": "text",
3233
+ "required": false,
3234
+ "columnType": "TEXT"
3235
+ },
3236
+ {
3237
+ "name": "tenantId",
3238
+ "type": "text",
3239
+ "required": false,
3240
+ "columnType": "UUID"
3241
+ }
3242
+ ],
3243
+ "relationships": [],
3244
+ "methods": [
3245
+ "matches"
3246
+ ],
3247
+ "surfaces": [
3248
+ {
3249
+ "kind": "api",
3250
+ "name": "whitelists.list",
3251
+ "operation": "list",
3252
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
3253
+ "path": "/whitelists",
3254
+ "method": "GET"
3255
+ },
3256
+ {
3257
+ "kind": "api",
3258
+ "name": "whitelists.get",
3259
+ "operation": "get",
3260
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
3261
+ "path": "/whitelists/[id]",
3262
+ "method": "GET"
3263
+ },
3264
+ {
3265
+ "kind": "api",
3266
+ "name": "whitelists.create",
3267
+ "operation": "create",
3268
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
3269
+ "path": "/whitelists",
3270
+ "method": "POST"
3271
+ },
3272
+ {
3273
+ "kind": "api",
3274
+ "name": "whitelists.update",
3275
+ "operation": "update",
3276
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
3277
+ "path": "/whitelists/[id]",
3278
+ "method": "PATCH"
3279
+ },
3280
+ {
3281
+ "kind": "api",
3282
+ "name": "whitelists.delete",
3283
+ "operation": "delete",
3284
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
3285
+ "path": "/whitelists/[id]",
3286
+ "method": "DELETE"
3287
+ },
3288
+ {
3289
+ "kind": "cli",
3290
+ "name": "whitelist_list",
3291
+ "operation": "list",
3292
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
3293
+ },
3294
+ {
3295
+ "kind": "cli",
3296
+ "name": "whitelist_get",
3297
+ "operation": "get",
3298
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
3299
+ },
3300
+ {
3301
+ "kind": "cli",
3302
+ "name": "whitelist_create",
3303
+ "operation": "create",
3304
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
3305
+ },
3306
+ {
3307
+ "kind": "cli",
3308
+ "name": "whitelist_update",
3309
+ "operation": "update",
3310
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
3311
+ },
3312
+ {
3313
+ "kind": "cli",
3314
+ "name": "whitelist_delete",
3315
+ "operation": "delete",
3316
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
3317
+ }
3318
+ ],
3319
+ "relationshipFeatures": [
3320
+ "uuidColumns"
3321
+ ],
3322
+ "tags": [],
3323
+ "risks": []
3324
+ }
3325
+ ],
3326
+ "surfaces": [
3327
+ {
3328
+ "kind": "api",
3329
+ "name": "accounts.list",
3330
+ "operation": "list",
3331
+ "objectName": "@happyvertical/smrt-messages:Account",
3332
+ "path": "/accounts",
3333
+ "method": "GET"
3334
+ },
3335
+ {
3336
+ "kind": "api",
3337
+ "name": "accounts.get",
3338
+ "operation": "get",
3339
+ "objectName": "@happyvertical/smrt-messages:Account",
3340
+ "path": "/accounts/[id]",
3341
+ "method": "GET"
3342
+ },
3343
+ {
3344
+ "kind": "api",
3345
+ "name": "accounts.create",
3346
+ "operation": "create",
3347
+ "objectName": "@happyvertical/smrt-messages:Account",
3348
+ "path": "/accounts",
3349
+ "method": "POST"
3350
+ },
3351
+ {
3352
+ "kind": "api",
3353
+ "name": "accounts.update",
3354
+ "operation": "update",
3355
+ "objectName": "@happyvertical/smrt-messages:Account",
3356
+ "path": "/accounts/[id]",
3357
+ "method": "PATCH"
3358
+ },
3359
+ {
3360
+ "kind": "api",
3361
+ "name": "accounts.delete",
3362
+ "operation": "delete",
3363
+ "objectName": "@happyvertical/smrt-messages:Account",
3364
+ "path": "/accounts/[id]",
3365
+ "method": "DELETE"
3366
+ },
3367
+ {
3368
+ "kind": "cli",
3369
+ "name": "account_list",
3370
+ "operation": "list",
3371
+ "objectName": "@happyvertical/smrt-messages:Account"
3372
+ },
3373
+ {
3374
+ "kind": "cli",
3375
+ "name": "account_get",
3376
+ "operation": "get",
3377
+ "objectName": "@happyvertical/smrt-messages:Account"
3378
+ },
3379
+ {
3380
+ "kind": "cli",
3381
+ "name": "account_create",
3382
+ "operation": "create",
3383
+ "objectName": "@happyvertical/smrt-messages:Account"
3384
+ },
3385
+ {
3386
+ "kind": "cli",
3387
+ "name": "account_update",
3388
+ "operation": "update",
3389
+ "objectName": "@happyvertical/smrt-messages:Account"
3390
+ },
3391
+ {
3392
+ "kind": "cli",
3393
+ "name": "account_delete",
3394
+ "operation": "delete",
3395
+ "objectName": "@happyvertical/smrt-messages:Account"
3396
+ },
3397
+ {
3398
+ "kind": "mcp",
3399
+ "name": "account_list",
3400
+ "operation": "list",
3401
+ "objectName": "@happyvertical/smrt-messages:Account"
3402
+ },
3403
+ {
3404
+ "kind": "mcp",
3405
+ "name": "account_get",
3406
+ "operation": "get",
3407
+ "objectName": "@happyvertical/smrt-messages:Account"
3408
+ },
3409
+ {
3410
+ "kind": "api",
3411
+ "name": "attachments.list",
3412
+ "operation": "list",
3413
+ "objectName": "@happyvertical/smrt-messages:Attachment",
3414
+ "path": "/attachments",
3415
+ "method": "GET"
3416
+ },
3417
+ {
3418
+ "kind": "api",
3419
+ "name": "attachments.get",
3420
+ "operation": "get",
3421
+ "objectName": "@happyvertical/smrt-messages:Attachment",
3422
+ "path": "/attachments/[id]",
3423
+ "method": "GET"
3424
+ },
3425
+ {
3426
+ "kind": "api",
3427
+ "name": "attachments.create",
3428
+ "operation": "create",
3429
+ "objectName": "@happyvertical/smrt-messages:Attachment",
3430
+ "path": "/attachments",
3431
+ "method": "POST"
3432
+ },
3433
+ {
3434
+ "kind": "api",
3435
+ "name": "attachments.delete",
3436
+ "operation": "delete",
3437
+ "objectName": "@happyvertical/smrt-messages:Attachment",
3438
+ "path": "/attachments/[id]",
3439
+ "method": "DELETE"
3440
+ },
3441
+ {
3442
+ "kind": "cli",
3443
+ "name": "attachment_list",
3444
+ "operation": "list",
3445
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3446
+ },
3447
+ {
3448
+ "kind": "cli",
3449
+ "name": "attachment_get",
3450
+ "operation": "get",
3451
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3452
+ },
3453
+ {
3454
+ "kind": "cli",
3455
+ "name": "attachment_create",
3456
+ "operation": "create",
3457
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3458
+ },
3459
+ {
3460
+ "kind": "cli",
3461
+ "name": "attachment_update",
3462
+ "operation": "update",
3463
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3464
+ },
3465
+ {
3466
+ "kind": "cli",
3467
+ "name": "attachment_delete",
3468
+ "operation": "delete",
3469
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3470
+ },
3471
+ {
3472
+ "kind": "mcp",
3473
+ "name": "attachment_list",
3474
+ "operation": "list",
3475
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3476
+ },
3477
+ {
3478
+ "kind": "mcp",
3479
+ "name": "attachment_get",
3480
+ "operation": "get",
3481
+ "objectName": "@happyvertical/smrt-messages:Attachment"
3482
+ },
3483
+ {
3484
+ "kind": "api",
3485
+ "name": "blacklists.list",
3486
+ "operation": "list",
3487
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
3488
+ "path": "/blacklists",
3489
+ "method": "GET"
3490
+ },
3491
+ {
3492
+ "kind": "api",
3493
+ "name": "blacklists.get",
3494
+ "operation": "get",
3495
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
3496
+ "path": "/blacklists/[id]",
3497
+ "method": "GET"
3498
+ },
3499
+ {
3500
+ "kind": "api",
3501
+ "name": "blacklists.create",
3502
+ "operation": "create",
3503
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
3504
+ "path": "/blacklists",
3505
+ "method": "POST"
3506
+ },
3507
+ {
3508
+ "kind": "api",
3509
+ "name": "blacklists.update",
3510
+ "operation": "update",
3511
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
3512
+ "path": "/blacklists/[id]",
3513
+ "method": "PATCH"
3514
+ },
3515
+ {
3516
+ "kind": "api",
3517
+ "name": "blacklists.delete",
3518
+ "operation": "delete",
3519
+ "objectName": "@happyvertical/smrt-messages:Blacklist",
3520
+ "path": "/blacklists/[id]",
3521
+ "method": "DELETE"
3522
+ },
3523
+ {
3524
+ "kind": "cli",
3525
+ "name": "blacklist_list",
3526
+ "operation": "list",
3527
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
3528
+ },
3529
+ {
3530
+ "kind": "cli",
3531
+ "name": "blacklist_get",
3532
+ "operation": "get",
3533
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
3534
+ },
3535
+ {
3536
+ "kind": "cli",
3537
+ "name": "blacklist_create",
3538
+ "operation": "create",
3539
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
3540
+ },
3541
+ {
3542
+ "kind": "cli",
3543
+ "name": "blacklist_update",
3544
+ "operation": "update",
3545
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
3546
+ },
3547
+ {
3548
+ "kind": "cli",
3549
+ "name": "blacklist_delete",
3550
+ "operation": "delete",
3551
+ "objectName": "@happyvertical/smrt-messages:Blacklist"
3552
+ },
3553
+ {
3554
+ "kind": "api",
3555
+ "name": "messages.list",
3556
+ "operation": "list",
3557
+ "objectName": "@happyvertical/smrt-messages:Email",
3558
+ "path": "/messages",
3559
+ "method": "GET"
3560
+ },
3561
+ {
3562
+ "kind": "api",
3563
+ "name": "messages.get",
3564
+ "operation": "get",
3565
+ "objectName": "@happyvertical/smrt-messages:Email",
3566
+ "path": "/messages/[id]",
3567
+ "method": "GET"
3568
+ },
3569
+ {
3570
+ "kind": "api",
3571
+ "name": "messages.create",
3572
+ "operation": "create",
3573
+ "objectName": "@happyvertical/smrt-messages:Email",
3574
+ "path": "/messages",
3575
+ "method": "POST"
3576
+ },
3577
+ {
3578
+ "kind": "api",
3579
+ "name": "messages.update",
3580
+ "operation": "update",
3581
+ "objectName": "@happyvertical/smrt-messages:Email",
3582
+ "path": "/messages/[id]",
3583
+ "method": "PATCH"
3584
+ },
3585
+ {
3586
+ "kind": "api",
3587
+ "name": "messages.delete",
3588
+ "operation": "delete",
3589
+ "objectName": "@happyvertical/smrt-messages:Email",
3590
+ "path": "/messages/[id]",
3591
+ "method": "DELETE"
3592
+ },
3593
+ {
3594
+ "kind": "cli",
3595
+ "name": "email_list",
3596
+ "operation": "list",
3597
+ "objectName": "@happyvertical/smrt-messages:Email"
3598
+ },
3599
+ {
3600
+ "kind": "cli",
3601
+ "name": "email_get",
3602
+ "operation": "get",
3603
+ "objectName": "@happyvertical/smrt-messages:Email"
3604
+ },
3605
+ {
3606
+ "kind": "cli",
3607
+ "name": "email_create",
3608
+ "operation": "create",
3609
+ "objectName": "@happyvertical/smrt-messages:Email"
3610
+ },
3611
+ {
3612
+ "kind": "cli",
3613
+ "name": "email_update",
3614
+ "operation": "update",
3615
+ "objectName": "@happyvertical/smrt-messages:Email"
3616
+ },
3617
+ {
3618
+ "kind": "cli",
3619
+ "name": "email_delete",
3620
+ "operation": "delete",
3621
+ "objectName": "@happyvertical/smrt-messages:Email"
3622
+ },
3623
+ {
3624
+ "kind": "mcp",
3625
+ "name": "email_list",
3626
+ "operation": "list",
3627
+ "objectName": "@happyvertical/smrt-messages:Email"
3628
+ },
3629
+ {
3630
+ "kind": "mcp",
3631
+ "name": "email_get",
3632
+ "operation": "get",
3633
+ "objectName": "@happyvertical/smrt-messages:Email"
3634
+ },
3635
+ {
3636
+ "kind": "api",
3637
+ "name": "accounts.list",
3638
+ "operation": "list",
3639
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
3640
+ "path": "/accounts",
3641
+ "method": "GET"
3642
+ },
3643
+ {
3644
+ "kind": "api",
3645
+ "name": "accounts.get",
3646
+ "operation": "get",
3647
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
3648
+ "path": "/accounts/[id]",
3649
+ "method": "GET"
3650
+ },
3651
+ {
3652
+ "kind": "api",
3653
+ "name": "accounts.create",
3654
+ "operation": "create",
3655
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
3656
+ "path": "/accounts",
3657
+ "method": "POST"
3658
+ },
3659
+ {
3660
+ "kind": "api",
3661
+ "name": "accounts.update",
3662
+ "operation": "update",
3663
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
3664
+ "path": "/accounts/[id]",
3665
+ "method": "PATCH"
3666
+ },
3667
+ {
3668
+ "kind": "api",
3669
+ "name": "accounts.delete",
3670
+ "operation": "delete",
3671
+ "objectName": "@happyvertical/smrt-messages:EmailAccount",
3672
+ "path": "/accounts/[id]",
3673
+ "method": "DELETE"
3674
+ },
3675
+ {
3676
+ "kind": "cli",
3677
+ "name": "emailaccount_list",
3678
+ "operation": "list",
3679
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3680
+ },
3681
+ {
3682
+ "kind": "cli",
3683
+ "name": "emailaccount_get",
3684
+ "operation": "get",
3685
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3686
+ },
3687
+ {
3688
+ "kind": "cli",
3689
+ "name": "emailaccount_create",
3690
+ "operation": "create",
3691
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3692
+ },
3693
+ {
3694
+ "kind": "cli",
3695
+ "name": "emailaccount_update",
3696
+ "operation": "update",
3697
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3698
+ },
3699
+ {
3700
+ "kind": "cli",
3701
+ "name": "emailaccount_delete",
3702
+ "operation": "delete",
3703
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3704
+ },
3705
+ {
3706
+ "kind": "mcp",
3707
+ "name": "emailaccount_list",
3708
+ "operation": "list",
3709
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3710
+ },
3711
+ {
3712
+ "kind": "mcp",
3713
+ "name": "emailaccount_get",
3714
+ "operation": "get",
3715
+ "objectName": "@happyvertical/smrt-messages:EmailAccount"
3716
+ },
3717
+ {
3718
+ "kind": "api",
3719
+ "name": "emailfolders.list",
3720
+ "operation": "list",
3721
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
3722
+ "path": "/emailfolders",
3723
+ "method": "GET"
3724
+ },
3725
+ {
3726
+ "kind": "api",
3727
+ "name": "emailfolders.get",
3728
+ "operation": "get",
3729
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
3730
+ "path": "/emailfolders/[id]",
3731
+ "method": "GET"
3732
+ },
3733
+ {
3734
+ "kind": "api",
3735
+ "name": "emailfolders.create",
3736
+ "operation": "create",
3737
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
3738
+ "path": "/emailfolders",
3739
+ "method": "POST"
3740
+ },
3741
+ {
3742
+ "kind": "api",
3743
+ "name": "emailfolders.update",
3744
+ "operation": "update",
3745
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
3746
+ "path": "/emailfolders/[id]",
3747
+ "method": "PATCH"
3748
+ },
3749
+ {
3750
+ "kind": "api",
3751
+ "name": "emailfolders.delete",
3752
+ "operation": "delete",
3753
+ "objectName": "@happyvertical/smrt-messages:EmailFolder",
3754
+ "path": "/emailfolders/[id]",
3755
+ "method": "DELETE"
3756
+ },
3757
+ {
3758
+ "kind": "cli",
3759
+ "name": "emailfolder_list",
3760
+ "operation": "list",
3761
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3762
+ },
3763
+ {
3764
+ "kind": "cli",
3765
+ "name": "emailfolder_get",
3766
+ "operation": "get",
3767
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3768
+ },
3769
+ {
3770
+ "kind": "cli",
3771
+ "name": "emailfolder_create",
3772
+ "operation": "create",
3773
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3774
+ },
3775
+ {
3776
+ "kind": "cli",
3777
+ "name": "emailfolder_update",
3778
+ "operation": "update",
3779
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3780
+ },
3781
+ {
3782
+ "kind": "cli",
3783
+ "name": "emailfolder_delete",
3784
+ "operation": "delete",
3785
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3786
+ },
3787
+ {
3788
+ "kind": "mcp",
3789
+ "name": "emailfolder_list",
3790
+ "operation": "list",
3791
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3792
+ },
3793
+ {
3794
+ "kind": "mcp",
3795
+ "name": "emailfolder_get",
3796
+ "operation": "get",
3797
+ "objectName": "@happyvertical/smrt-messages:EmailFolder"
3798
+ },
3799
+ {
3800
+ "kind": "api",
3801
+ "name": "messages.list",
3802
+ "operation": "list",
3803
+ "objectName": "@happyvertical/smrt-messages:Message",
3804
+ "path": "/messages",
3805
+ "method": "GET"
3806
+ },
3807
+ {
3808
+ "kind": "api",
3809
+ "name": "messages.get",
3810
+ "operation": "get",
3811
+ "objectName": "@happyvertical/smrt-messages:Message",
3812
+ "path": "/messages/[id]",
3813
+ "method": "GET"
3814
+ },
3815
+ {
3816
+ "kind": "cli",
3817
+ "name": "message_list",
3818
+ "operation": "list",
3819
+ "objectName": "@happyvertical/smrt-messages:Message"
3820
+ },
3821
+ {
3822
+ "kind": "cli",
3823
+ "name": "message_get",
3824
+ "operation": "get",
3825
+ "objectName": "@happyvertical/smrt-messages:Message"
3826
+ },
3827
+ {
3828
+ "kind": "cli",
3829
+ "name": "message_create",
3830
+ "operation": "create",
3831
+ "objectName": "@happyvertical/smrt-messages:Message"
3832
+ },
3833
+ {
3834
+ "kind": "cli",
3835
+ "name": "message_update",
3836
+ "operation": "update",
3837
+ "objectName": "@happyvertical/smrt-messages:Message"
3838
+ },
3839
+ {
3840
+ "kind": "cli",
3841
+ "name": "message_delete",
3842
+ "operation": "delete",
3843
+ "objectName": "@happyvertical/smrt-messages:Message"
3844
+ },
3845
+ {
3846
+ "kind": "mcp",
3847
+ "name": "message_list",
3848
+ "operation": "list",
3849
+ "objectName": "@happyvertical/smrt-messages:Message"
3850
+ },
3851
+ {
3852
+ "kind": "mcp",
3853
+ "name": "message_get",
3854
+ "operation": "get",
3855
+ "objectName": "@happyvertical/smrt-messages:Message"
3856
+ },
3857
+ {
3858
+ "kind": "api",
3859
+ "name": "accounts.list",
3860
+ "operation": "list",
3861
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
3862
+ "path": "/accounts",
3863
+ "method": "GET"
3864
+ },
3865
+ {
3866
+ "kind": "api",
3867
+ "name": "accounts.get",
3868
+ "operation": "get",
3869
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
3870
+ "path": "/accounts/[id]",
3871
+ "method": "GET"
3872
+ },
3873
+ {
3874
+ "kind": "api",
3875
+ "name": "accounts.create",
3876
+ "operation": "create",
3877
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
3878
+ "path": "/accounts",
3879
+ "method": "POST"
3880
+ },
3881
+ {
3882
+ "kind": "api",
3883
+ "name": "accounts.update",
3884
+ "operation": "update",
3885
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
3886
+ "path": "/accounts/[id]",
3887
+ "method": "PATCH"
3888
+ },
3889
+ {
3890
+ "kind": "api",
3891
+ "name": "accounts.delete",
3892
+ "operation": "delete",
3893
+ "objectName": "@happyvertical/smrt-messages:SlackAccount",
3894
+ "path": "/accounts/[id]",
3895
+ "method": "DELETE"
3896
+ },
3897
+ {
3898
+ "kind": "cli",
3899
+ "name": "slackaccount_list",
3900
+ "operation": "list",
3901
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3902
+ },
3903
+ {
3904
+ "kind": "cli",
3905
+ "name": "slackaccount_get",
3906
+ "operation": "get",
3907
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3908
+ },
3909
+ {
3910
+ "kind": "cli",
3911
+ "name": "slackaccount_create",
3912
+ "operation": "create",
3913
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3914
+ },
3915
+ {
3916
+ "kind": "cli",
3917
+ "name": "slackaccount_update",
3918
+ "operation": "update",
3919
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3920
+ },
3921
+ {
3922
+ "kind": "cli",
3923
+ "name": "slackaccount_delete",
3924
+ "operation": "delete",
3925
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3926
+ },
3927
+ {
3928
+ "kind": "mcp",
3929
+ "name": "slackaccount_list",
3930
+ "operation": "list",
3931
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3932
+ },
3933
+ {
3934
+ "kind": "mcp",
3935
+ "name": "slackaccount_get",
3936
+ "operation": "get",
3937
+ "objectName": "@happyvertical/smrt-messages:SlackAccount"
3938
+ },
3939
+ {
3940
+ "kind": "api",
3941
+ "name": "messages.list",
3942
+ "operation": "list",
3943
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
3944
+ "path": "/messages",
3945
+ "method": "GET"
3946
+ },
3947
+ {
3948
+ "kind": "api",
3949
+ "name": "messages.get",
3950
+ "operation": "get",
3951
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
3952
+ "path": "/messages/[id]",
3953
+ "method": "GET"
3954
+ },
3955
+ {
3956
+ "kind": "api",
3957
+ "name": "messages.create",
3958
+ "operation": "create",
3959
+ "objectName": "@happyvertical/smrt-messages:SlackMessage",
3960
+ "path": "/messages",
3961
+ "method": "POST"
3962
+ },
3963
+ {
3964
+ "kind": "cli",
3965
+ "name": "slackmessage_list",
3966
+ "operation": "list",
3967
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3968
+ },
3969
+ {
3970
+ "kind": "cli",
3971
+ "name": "slackmessage_get",
3972
+ "operation": "get",
3973
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3974
+ },
3975
+ {
3976
+ "kind": "cli",
3977
+ "name": "slackmessage_create",
3978
+ "operation": "create",
3979
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3980
+ },
3981
+ {
3982
+ "kind": "cli",
3983
+ "name": "slackmessage_update",
3984
+ "operation": "update",
3985
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3986
+ },
3987
+ {
3988
+ "kind": "cli",
3989
+ "name": "slackmessage_delete",
3990
+ "operation": "delete",
3991
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3992
+ },
3993
+ {
3994
+ "kind": "mcp",
3995
+ "name": "slackmessage_list",
3996
+ "operation": "list",
3997
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
3998
+ },
3999
+ {
4000
+ "kind": "mcp",
4001
+ "name": "slackmessage_get",
4002
+ "operation": "get",
4003
+ "objectName": "@happyvertical/smrt-messages:SlackMessage"
4004
+ },
4005
+ {
4006
+ "kind": "api",
4007
+ "name": "messages.list",
4008
+ "operation": "list",
4009
+ "objectName": "@happyvertical/smrt-messages:Tweet",
4010
+ "path": "/messages",
4011
+ "method": "GET"
4012
+ },
4013
+ {
4014
+ "kind": "api",
4015
+ "name": "messages.get",
4016
+ "operation": "get",
4017
+ "objectName": "@happyvertical/smrt-messages:Tweet",
4018
+ "path": "/messages/[id]",
4019
+ "method": "GET"
4020
+ },
4021
+ {
4022
+ "kind": "api",
4023
+ "name": "messages.create",
4024
+ "operation": "create",
4025
+ "objectName": "@happyvertical/smrt-messages:Tweet",
4026
+ "path": "/messages",
4027
+ "method": "POST"
4028
+ },
4029
+ {
4030
+ "kind": "cli",
4031
+ "name": "tweet_list",
4032
+ "operation": "list",
4033
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4034
+ },
4035
+ {
4036
+ "kind": "cli",
4037
+ "name": "tweet_get",
4038
+ "operation": "get",
4039
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4040
+ },
4041
+ {
4042
+ "kind": "cli",
4043
+ "name": "tweet_create",
4044
+ "operation": "create",
4045
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4046
+ },
4047
+ {
4048
+ "kind": "cli",
4049
+ "name": "tweet_update",
4050
+ "operation": "update",
4051
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4052
+ },
4053
+ {
4054
+ "kind": "cli",
4055
+ "name": "tweet_delete",
4056
+ "operation": "delete",
4057
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4058
+ },
4059
+ {
4060
+ "kind": "mcp",
4061
+ "name": "tweet_list",
4062
+ "operation": "list",
4063
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4064
+ },
4065
+ {
4066
+ "kind": "mcp",
4067
+ "name": "tweet_get",
4068
+ "operation": "get",
4069
+ "objectName": "@happyvertical/smrt-messages:Tweet"
4070
+ },
4071
+ {
4072
+ "kind": "api",
4073
+ "name": "accounts.list",
4074
+ "operation": "list",
4075
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
4076
+ "path": "/accounts",
4077
+ "method": "GET"
4078
+ },
4079
+ {
4080
+ "kind": "api",
4081
+ "name": "accounts.get",
4082
+ "operation": "get",
4083
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
4084
+ "path": "/accounts/[id]",
4085
+ "method": "GET"
4086
+ },
4087
+ {
4088
+ "kind": "api",
4089
+ "name": "accounts.create",
4090
+ "operation": "create",
4091
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
4092
+ "path": "/accounts",
4093
+ "method": "POST"
4094
+ },
4095
+ {
4096
+ "kind": "api",
4097
+ "name": "accounts.update",
4098
+ "operation": "update",
4099
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
4100
+ "path": "/accounts/[id]",
4101
+ "method": "PATCH"
4102
+ },
4103
+ {
4104
+ "kind": "api",
4105
+ "name": "accounts.delete",
4106
+ "operation": "delete",
4107
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount",
4108
+ "path": "/accounts/[id]",
4109
+ "method": "DELETE"
4110
+ },
4111
+ {
4112
+ "kind": "cli",
4113
+ "name": "twitteraccount_list",
4114
+ "operation": "list",
4115
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4116
+ },
4117
+ {
4118
+ "kind": "cli",
4119
+ "name": "twitteraccount_get",
4120
+ "operation": "get",
4121
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4122
+ },
4123
+ {
4124
+ "kind": "cli",
4125
+ "name": "twitteraccount_create",
4126
+ "operation": "create",
4127
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4128
+ },
4129
+ {
4130
+ "kind": "cli",
4131
+ "name": "twitteraccount_update",
4132
+ "operation": "update",
4133
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4134
+ },
4135
+ {
4136
+ "kind": "cli",
4137
+ "name": "twitteraccount_delete",
4138
+ "operation": "delete",
4139
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4140
+ },
4141
+ {
4142
+ "kind": "mcp",
4143
+ "name": "twitteraccount_list",
4144
+ "operation": "list",
4145
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4146
+ },
4147
+ {
4148
+ "kind": "mcp",
4149
+ "name": "twitteraccount_get",
4150
+ "operation": "get",
4151
+ "objectName": "@happyvertical/smrt-messages:TwitterAccount"
4152
+ },
4153
+ {
4154
+ "kind": "api",
4155
+ "name": "whitelists.list",
4156
+ "operation": "list",
4157
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
4158
+ "path": "/whitelists",
4159
+ "method": "GET"
4160
+ },
4161
+ {
4162
+ "kind": "api",
4163
+ "name": "whitelists.get",
4164
+ "operation": "get",
4165
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
4166
+ "path": "/whitelists/[id]",
4167
+ "method": "GET"
4168
+ },
4169
+ {
4170
+ "kind": "api",
4171
+ "name": "whitelists.create",
4172
+ "operation": "create",
4173
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
4174
+ "path": "/whitelists",
4175
+ "method": "POST"
4176
+ },
4177
+ {
4178
+ "kind": "api",
4179
+ "name": "whitelists.update",
4180
+ "operation": "update",
4181
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
4182
+ "path": "/whitelists/[id]",
4183
+ "method": "PATCH"
4184
+ },
4185
+ {
4186
+ "kind": "api",
4187
+ "name": "whitelists.delete",
4188
+ "operation": "delete",
4189
+ "objectName": "@happyvertical/smrt-messages:Whitelist",
4190
+ "path": "/whitelists/[id]",
4191
+ "method": "DELETE"
4192
+ },
4193
+ {
4194
+ "kind": "cli",
4195
+ "name": "whitelist_list",
4196
+ "operation": "list",
4197
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
4198
+ },
4199
+ {
4200
+ "kind": "cli",
4201
+ "name": "whitelist_get",
4202
+ "operation": "get",
4203
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
4204
+ },
4205
+ {
4206
+ "kind": "cli",
4207
+ "name": "whitelist_create",
4208
+ "operation": "create",
4209
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
4210
+ },
4211
+ {
4212
+ "kind": "cli",
4213
+ "name": "whitelist_update",
4214
+ "operation": "update",
4215
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
4216
+ },
4217
+ {
4218
+ "kind": "cli",
4219
+ "name": "whitelist_delete",
4220
+ "operation": "delete",
4221
+ "objectName": "@happyvertical/smrt-messages:Whitelist"
4222
+ }
4223
+ ],
4224
+ "prompts": [],
4225
+ "relationshipsV2": {
4226
+ "foreignKeyFields": 10,
4227
+ "crossPackageRefFields": 0,
4228
+ "junctionCollections": 0,
4229
+ "hierarchicalObjects": 0,
4230
+ "polymorphicAssociations": 0,
4231
+ "uuidColumns": 44
4232
+ },
4233
+ "agentDoc": "# @happyvertical/smrt-messages\n\nMulti-channel messaging with STI hierarchies for both messages and accounts. Credential encryption via smrt-secrets.\n\n## STI Hierarchies\n\n**Messages** (share `messages` table):\n- `Message` (base): accountId, threadId, subject, body, fromAddress, toAddresses (JSON), sendStatus (draft/sending/sent/failed), retryCount\n- `Email`: messageId (RFC 822), inReplyTo, ccAddresses, bccAddresses, htmlBody, textBody, folderId, labels, headers\n- `Tweet`: tweetId, retweetCount, likeCount, mediaUrls, hashtags, mentions\n- `SlackMessage`: channelId, slackTs, slackThreadTs, reactions, blocks\n\n**Accounts** (share `accounts` table):\n- `Account` (base): providerType, credentialSecretId, isActive, lastSyncAt, settings\n- `EmailAccount`, `TwitterAccount`, `SlackAccount`: provider-specific fields + sync methods\n\n## Credential Security\n\nAccount credentials stored via `credentialSecretId` → smrt-secrets. Use `setCredentials()`/`getCredentials()` — never store passwords directly.\n\n## Send Lifecycle\n\n`message.send()`: resolves account → creates provider sender → updates sendStatus. Retry support with `maxRetries` budget.\n\n## Gotchas\n\n- **STI `_meta_type`**: qualified format `@happyvertical/smrt-messages:Email`\n- **JSON fields**: all address/metadata fields are JSON strings with `getX()`/`setX()` helpers\n- **RFC 822 threading**: Email uses `inReplyTo`/`messageId`/`references` — manual management required\n- **Attachment.messageId**: use this field (not `emailId`); old getter/setter mapped via deprecation wrapper\n- **Optional tenancy**: `@TenantScoped({ mode: 'optional' })` on Message, Account, Attachment\n"
4234
+ }