@happyvertical/smrt-social 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 (47) hide show
  1. package/AGENTS.md +18 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +94 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/collections/index.d.ts +5 -0
  8. package/dist/collections/index.d.ts.map +1 -0
  9. package/dist/collections/oauth-state-collection.d.ts +9 -0
  10. package/dist/collections/oauth-state-collection.d.ts.map +1 -0
  11. package/dist/collections/social-account-collection.d.ts +9 -0
  12. package/dist/collections/social-account-collection.d.ts.map +1 -0
  13. package/dist/collections/social-post-analytics-snapshot-collection.d.ts +18 -0
  14. package/dist/collections/social-post-analytics-snapshot-collection.d.ts.map +1 -0
  15. package/dist/collections/social-post-collection.d.ts +32 -0
  16. package/dist/collections/social-post-collection.d.ts.map +1 -0
  17. package/dist/index.d.ts +6 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +824 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/manifest.json +3363 -0
  22. package/dist/oauth-state.d.ts +127 -0
  23. package/dist/oauth-state.d.ts.map +1 -0
  24. package/dist/server.d.ts +18 -0
  25. package/dist/server.d.ts.map +1 -0
  26. package/dist/server.js +106 -0
  27. package/dist/server.js.map +1 -0
  28. package/dist/smrt-knowledge.json +1398 -0
  29. package/dist/social-account.d.ts +270 -0
  30. package/dist/social-account.d.ts.map +1 -0
  31. package/dist/social-post-analytics-snapshot.d.ts +40 -0
  32. package/dist/social-post-analytics-snapshot.d.ts.map +1 -0
  33. package/dist/social-post.d.ts +258 -0
  34. package/dist/social-post.d.ts.map +1 -0
  35. package/dist/svelte/components/SocialAccountSettings.svelte +243 -0
  36. package/dist/svelte/components/SocialAccountSettings.svelte.d.ts +15 -0
  37. package/dist/svelte/components/SocialAccountSettings.svelte.d.ts.map +1 -0
  38. package/dist/svelte/i18n.d.ts +9 -0
  39. package/dist/svelte/i18n.d.ts.map +1 -0
  40. package/dist/svelte/i18n.js +15 -0
  41. package/dist/svelte/index.d.ts +6 -0
  42. package/dist/svelte/index.d.ts.map +1 -0
  43. package/dist/svelte/index.js +2 -0
  44. package/dist/svelte/types.d.ts +16 -0
  45. package/dist/svelte/types.d.ts.map +1 -0
  46. package/dist/svelte/types.js +1 -0
  47. package/package.json +88 -0
@@ -0,0 +1,1398 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:12:41.607Z",
4
+ "packageName": "@happyvertical/smrt-social",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "e1d8fffa3ae8fa77dfb337a6feb77d643f389034e0b5d0dd01549340cd5d566f",
10
+ "packageJson": "8a5a064be61dd182f9ca0d71ea6a4faa30ca409583b71111c207f67157503d12",
11
+ "agents": "e52e321d32201085477380f355cbb533f5d931e2701cd4d2ceeda0d7c8720957"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./server",
18
+ "./svelte"
19
+ ],
20
+ "dependencies": {
21
+ "@happyvertical/smrt-config": "workspace:*",
22
+ "@happyvertical/smrt-content": "workspace:*",
23
+ "@happyvertical/smrt-core": "workspace:*",
24
+ "@happyvertical/smrt-secrets": "workspace:*",
25
+ "@happyvertical/smrt-tenancy": "workspace:*",
26
+ "@happyvertical/smrt-ui": "workspace:*",
27
+ "@happyvertical/smrt-video": "workspace:*",
28
+ "@happyvertical/utils": "catalog:",
29
+ "@happyvertical/logger": "catalog:",
30
+ "@happyvertical/smrt-vitest": "workspace:*",
31
+ "@happyvertical/sql": "catalog:",
32
+ "@sveltejs/package": "^2.5.7",
33
+ "@types/node": "25.0.9",
34
+ "svelte": "^5.0.0",
35
+ "svelte-check": "^4.3.5",
36
+ "typescript": "^5.9.3",
37
+ "vite": "^7.3.1",
38
+ "vitest": "^4.0.17"
39
+ },
40
+ "smrtDependencies": [
41
+ "@happyvertical/smrt-config",
42
+ "@happyvertical/smrt-content",
43
+ "@happyvertical/smrt-core",
44
+ "@happyvertical/smrt-secrets",
45
+ "@happyvertical/smrt-tenancy",
46
+ "@happyvertical/smrt-ui",
47
+ "@happyvertical/smrt-video",
48
+ "@happyvertical/smrt-vitest"
49
+ ],
50
+ "sdkDependencies": [
51
+ "@happyvertical/logger",
52
+ "@happyvertical/sql",
53
+ "@happyvertical/utils"
54
+ ],
55
+ "tags": [],
56
+ "risks": [],
57
+ "objects": [
58
+ {
59
+ "name": "OAuthState",
60
+ "qualifiedName": "@happyvertical/smrt-social:OAuthState",
61
+ "collection": "oauthstates",
62
+ "tableName": "oauth_states",
63
+ "packageName": "@happyvertical/smrt-social",
64
+ "extends": "SmrtObject",
65
+ "fields": [
66
+ {
67
+ "name": "created_at",
68
+ "type": "datetime",
69
+ "required": false,
70
+ "columnType": "TIMESTAMP"
71
+ },
72
+ {
73
+ "name": "updated_at",
74
+ "type": "datetime",
75
+ "required": false,
76
+ "columnType": "TIMESTAMP"
77
+ },
78
+ {
79
+ "name": "tenantId",
80
+ "type": "text",
81
+ "required": false,
82
+ "columnType": "UUID"
83
+ },
84
+ {
85
+ "name": "platform",
86
+ "type": "text",
87
+ "required": false,
88
+ "columnType": "TEXT"
89
+ },
90
+ {
91
+ "name": "state",
92
+ "type": "text",
93
+ "required": false,
94
+ "columnType": "TEXT"
95
+ },
96
+ {
97
+ "name": "codeVerifier",
98
+ "type": "text",
99
+ "required": false,
100
+ "columnType": "TEXT"
101
+ },
102
+ {
103
+ "name": "redirectUri",
104
+ "type": "text",
105
+ "required": false,
106
+ "columnType": "TEXT"
107
+ },
108
+ {
109
+ "name": "scopes",
110
+ "type": "json",
111
+ "required": false,
112
+ "columnType": "JSON"
113
+ },
114
+ {
115
+ "name": "expiresAt",
116
+ "type": "datetime",
117
+ "required": false,
118
+ "columnType": "TIMESTAMP"
119
+ }
120
+ ],
121
+ "relationships": [],
122
+ "methods": [
123
+ "classifyConstraintError",
124
+ "clearEmbeddings",
125
+ "delete",
126
+ "describe",
127
+ "destroy",
128
+ "do",
129
+ "executeToolCall",
130
+ "forget",
131
+ "forgetScope",
132
+ "generateCodeChallenge",
133
+ "generateCodeVerifier",
134
+ "generateEmbeddings",
135
+ "generateState",
136
+ "getAiUsageSnapshot",
137
+ "getAvailableTools",
138
+ "getEmbedding",
139
+ "getFields",
140
+ "getId",
141
+ "getRelated",
142
+ "getSavedId",
143
+ "getSlug",
144
+ "hasStaleEmbeddings",
145
+ "initialize",
146
+ "is",
147
+ "isRelatedLoaded",
148
+ "isSaved",
149
+ "listAiUsage",
150
+ "loadDataFromDb",
151
+ "loadFromId",
152
+ "loadFromSlug",
153
+ "loadRelated",
154
+ "loadRelatedMany",
155
+ "markAsPersisted",
156
+ "recall",
157
+ "recallAll",
158
+ "remember",
159
+ "resetAiUsage",
160
+ "save",
161
+ "summarizeAiUsage",
162
+ "toJSON",
163
+ "toPlainObject",
164
+ "toPublicJSON",
165
+ "verifyState"
166
+ ],
167
+ "surfaces": [
168
+ {
169
+ "kind": "api",
170
+ "name": "oauthstates.list",
171
+ "operation": "list",
172
+ "objectName": "@happyvertical/smrt-social:OAuthState",
173
+ "path": "/oauthstates",
174
+ "method": "GET"
175
+ },
176
+ {
177
+ "kind": "api",
178
+ "name": "oauthstates.get",
179
+ "operation": "get",
180
+ "objectName": "@happyvertical/smrt-social:OAuthState",
181
+ "path": "/oauthstates/[id]",
182
+ "method": "GET"
183
+ },
184
+ {
185
+ "kind": "api",
186
+ "name": "oauthstates.create",
187
+ "operation": "create",
188
+ "objectName": "@happyvertical/smrt-social:OAuthState",
189
+ "path": "/oauthstates",
190
+ "method": "POST"
191
+ },
192
+ {
193
+ "kind": "api",
194
+ "name": "oauthstates.delete",
195
+ "operation": "delete",
196
+ "objectName": "@happyvertical/smrt-social:OAuthState",
197
+ "path": "/oauthstates/[id]",
198
+ "method": "DELETE"
199
+ },
200
+ {
201
+ "kind": "cli",
202
+ "name": "oauthstate_list",
203
+ "operation": "list",
204
+ "objectName": "@happyvertical/smrt-social:OAuthState"
205
+ },
206
+ {
207
+ "kind": "cli",
208
+ "name": "oauthstate_get",
209
+ "operation": "get",
210
+ "objectName": "@happyvertical/smrt-social:OAuthState"
211
+ },
212
+ {
213
+ "kind": "cli",
214
+ "name": "oauthstate_create",
215
+ "operation": "create",
216
+ "objectName": "@happyvertical/smrt-social:OAuthState"
217
+ },
218
+ {
219
+ "kind": "cli",
220
+ "name": "oauthstate_update",
221
+ "operation": "update",
222
+ "objectName": "@happyvertical/smrt-social:OAuthState"
223
+ },
224
+ {
225
+ "kind": "cli",
226
+ "name": "oauthstate_delete",
227
+ "operation": "delete",
228
+ "objectName": "@happyvertical/smrt-social:OAuthState"
229
+ }
230
+ ],
231
+ "relationshipFeatures": [
232
+ "uuidColumns"
233
+ ],
234
+ "tags": [],
235
+ "risks": []
236
+ },
237
+ {
238
+ "name": "SocialAccount",
239
+ "qualifiedName": "@happyvertical/smrt-social:SocialAccount",
240
+ "collection": "socialaccounts",
241
+ "tableName": "social_accounts",
242
+ "packageName": "@happyvertical/smrt-social",
243
+ "extends": "SmrtObject",
244
+ "fields": [
245
+ {
246
+ "name": "created_at",
247
+ "type": "datetime",
248
+ "required": false,
249
+ "columnType": "TIMESTAMP"
250
+ },
251
+ {
252
+ "name": "updated_at",
253
+ "type": "datetime",
254
+ "required": false,
255
+ "columnType": "TIMESTAMP"
256
+ },
257
+ {
258
+ "name": "tenantId",
259
+ "type": "text",
260
+ "required": false,
261
+ "columnType": "UUID"
262
+ },
263
+ {
264
+ "name": "name",
265
+ "type": "text",
266
+ "required": false,
267
+ "columnType": "TEXT"
268
+ },
269
+ {
270
+ "name": "platform",
271
+ "type": "text",
272
+ "required": false,
273
+ "columnType": "TEXT"
274
+ },
275
+ {
276
+ "name": "platformUserId",
277
+ "type": "text",
278
+ "required": false,
279
+ "columnType": "TEXT"
280
+ },
281
+ {
282
+ "name": "platformUsername",
283
+ "type": "text",
284
+ "required": false,
285
+ "columnType": "TEXT"
286
+ },
287
+ {
288
+ "name": "platformUrl",
289
+ "type": "text",
290
+ "required": false,
291
+ "columnType": "TEXT"
292
+ },
293
+ {
294
+ "name": "accessToken",
295
+ "type": "text",
296
+ "required": false,
297
+ "columnType": "TEXT"
298
+ },
299
+ {
300
+ "name": "refreshToken",
301
+ "type": "text",
302
+ "required": false,
303
+ "columnType": "TEXT"
304
+ },
305
+ {
306
+ "name": "credentialSecretId",
307
+ "type": "text",
308
+ "required": false,
309
+ "columnType": "TEXT"
310
+ },
311
+ {
312
+ "name": "accessTokenSecretName",
313
+ "type": "text",
314
+ "required": false,
315
+ "columnType": "TEXT"
316
+ },
317
+ {
318
+ "name": "refreshTokenSecretName",
319
+ "type": "text",
320
+ "required": false,
321
+ "columnType": "TEXT"
322
+ },
323
+ {
324
+ "name": "tokenExpiresAt",
325
+ "type": "datetime",
326
+ "required": false,
327
+ "columnType": "TIMESTAMP"
328
+ },
329
+ {
330
+ "name": "isActive",
331
+ "type": "boolean",
332
+ "required": false,
333
+ "columnType": "BOOLEAN"
334
+ },
335
+ {
336
+ "name": "defaultHashtags",
337
+ "type": "json",
338
+ "required": false,
339
+ "columnType": "JSON"
340
+ },
341
+ {
342
+ "name": "scopes",
343
+ "type": "json",
344
+ "required": false,
345
+ "columnType": "JSON"
346
+ },
347
+ {
348
+ "name": "missingPermissions",
349
+ "type": "json",
350
+ "required": false,
351
+ "columnType": "JSON"
352
+ },
353
+ {
354
+ "name": "linkBehavior",
355
+ "type": "text",
356
+ "required": false,
357
+ "columnType": "TEXT"
358
+ },
359
+ {
360
+ "name": "publishMode",
361
+ "type": "text",
362
+ "required": false,
363
+ "columnType": "TEXT"
364
+ },
365
+ {
366
+ "name": "publicPublishingAllowed",
367
+ "type": "boolean",
368
+ "required": false,
369
+ "columnType": "BOOLEAN"
370
+ },
371
+ {
372
+ "name": "status",
373
+ "type": "text",
374
+ "required": false,
375
+ "columnType": "TEXT"
376
+ },
377
+ {
378
+ "name": "errorMessage",
379
+ "type": "text",
380
+ "required": false,
381
+ "columnType": "TEXT"
382
+ }
383
+ ],
384
+ "relationships": [],
385
+ "methods": [
386
+ "classifyConstraintError",
387
+ "clearEmbeddings",
388
+ "delete",
389
+ "describe",
390
+ "destroy",
391
+ "do",
392
+ "executeToolCall",
393
+ "forget",
394
+ "forgetScope",
395
+ "generateEmbeddings",
396
+ "getAiUsageSnapshot",
397
+ "getAvailableTools",
398
+ "getCredentials",
399
+ "getEmbedding",
400
+ "getFields",
401
+ "getId",
402
+ "getRelated",
403
+ "getSavedId",
404
+ "getSlug",
405
+ "hasStaleEmbeddings",
406
+ "initialize",
407
+ "is",
408
+ "isRelatedLoaded",
409
+ "isSaved",
410
+ "listAiUsage",
411
+ "loadDataFromDb",
412
+ "loadFromId",
413
+ "loadFromSlug",
414
+ "loadRelated",
415
+ "loadRelatedMany",
416
+ "markAsPersisted",
417
+ "recall",
418
+ "recallAll",
419
+ "remember",
420
+ "resetAiUsage",
421
+ "save",
422
+ "setCredentials",
423
+ "summarizeAiUsage",
424
+ "toJSON",
425
+ "toPlainObject",
426
+ "toPublicJSON"
427
+ ],
428
+ "surfaces": [
429
+ {
430
+ "kind": "api",
431
+ "name": "socialaccounts.list",
432
+ "operation": "list",
433
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
434
+ "path": "/socialaccounts",
435
+ "method": "GET"
436
+ },
437
+ {
438
+ "kind": "api",
439
+ "name": "socialaccounts.get",
440
+ "operation": "get",
441
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
442
+ "path": "/socialaccounts/[id]",
443
+ "method": "GET"
444
+ },
445
+ {
446
+ "kind": "api",
447
+ "name": "socialaccounts.create",
448
+ "operation": "create",
449
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
450
+ "path": "/socialaccounts",
451
+ "method": "POST"
452
+ },
453
+ {
454
+ "kind": "api",
455
+ "name": "socialaccounts.update",
456
+ "operation": "update",
457
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
458
+ "path": "/socialaccounts/[id]",
459
+ "method": "PATCH"
460
+ },
461
+ {
462
+ "kind": "api",
463
+ "name": "socialaccounts.delete",
464
+ "operation": "delete",
465
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
466
+ "path": "/socialaccounts/[id]",
467
+ "method": "DELETE"
468
+ },
469
+ {
470
+ "kind": "cli",
471
+ "name": "socialaccount_list",
472
+ "operation": "list",
473
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
474
+ },
475
+ {
476
+ "kind": "cli",
477
+ "name": "socialaccount_get",
478
+ "operation": "get",
479
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
480
+ },
481
+ {
482
+ "kind": "cli",
483
+ "name": "socialaccount_create",
484
+ "operation": "create",
485
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
486
+ },
487
+ {
488
+ "kind": "cli",
489
+ "name": "socialaccount_update",
490
+ "operation": "update",
491
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
492
+ },
493
+ {
494
+ "kind": "cli",
495
+ "name": "socialaccount_delete",
496
+ "operation": "delete",
497
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
498
+ },
499
+ {
500
+ "kind": "mcp",
501
+ "name": "socialaccount_list",
502
+ "operation": "list",
503
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
504
+ },
505
+ {
506
+ "kind": "mcp",
507
+ "name": "socialaccount_get",
508
+ "operation": "get",
509
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
510
+ }
511
+ ],
512
+ "relationshipFeatures": [
513
+ "uuidColumns"
514
+ ],
515
+ "tags": [],
516
+ "risks": []
517
+ },
518
+ {
519
+ "name": "SocialPostAnalyticsSnapshot",
520
+ "qualifiedName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
521
+ "collection": "socialpostanalyticssnapshots",
522
+ "tableName": "social_post_analytics_snapshots",
523
+ "packageName": "@happyvertical/smrt-social",
524
+ "extends": "SmrtObject",
525
+ "fields": [
526
+ {
527
+ "name": "created_at",
528
+ "type": "datetime",
529
+ "required": false,
530
+ "columnType": "TIMESTAMP"
531
+ },
532
+ {
533
+ "name": "updated_at",
534
+ "type": "datetime",
535
+ "required": false,
536
+ "columnType": "TIMESTAMP"
537
+ },
538
+ {
539
+ "name": "tenantId",
540
+ "type": "text",
541
+ "required": false,
542
+ "columnType": "UUID"
543
+ },
544
+ {
545
+ "name": "socialPostId",
546
+ "type": "foreignKey",
547
+ "required": false,
548
+ "related": "() => SocialPost",
549
+ "columnType": "UUID"
550
+ },
551
+ {
552
+ "name": "platform",
553
+ "type": "text",
554
+ "required": true,
555
+ "columnType": "TEXT"
556
+ },
557
+ {
558
+ "name": "analytics",
559
+ "type": "json",
560
+ "required": false,
561
+ "columnType": "JSON"
562
+ },
563
+ {
564
+ "name": "raw",
565
+ "type": "json",
566
+ "required": false,
567
+ "columnType": "JSON"
568
+ },
569
+ {
570
+ "name": "capturedAt",
571
+ "type": "datetime",
572
+ "required": false,
573
+ "columnType": "TIMESTAMP"
574
+ }
575
+ ],
576
+ "relationships": [
577
+ {
578
+ "name": "socialPostId",
579
+ "type": "foreignKey",
580
+ "required": false,
581
+ "related": "() => SocialPost",
582
+ "columnType": "UUID"
583
+ }
584
+ ],
585
+ "methods": [
586
+ "classifyConstraintError",
587
+ "clearEmbeddings",
588
+ "delete",
589
+ "describe",
590
+ "destroy",
591
+ "do",
592
+ "executeToolCall",
593
+ "forget",
594
+ "forgetScope",
595
+ "generateEmbeddings",
596
+ "getAiUsageSnapshot",
597
+ "getAvailableTools",
598
+ "getEmbedding",
599
+ "getFields",
600
+ "getId",
601
+ "getRelated",
602
+ "getSavedId",
603
+ "getSlug",
604
+ "hasStaleEmbeddings",
605
+ "initialize",
606
+ "is",
607
+ "isRelatedLoaded",
608
+ "isSaved",
609
+ "listAiUsage",
610
+ "loadDataFromDb",
611
+ "loadFromId",
612
+ "loadFromSlug",
613
+ "loadRelated",
614
+ "loadRelatedMany",
615
+ "markAsPersisted",
616
+ "recall",
617
+ "recallAll",
618
+ "remember",
619
+ "resetAiUsage",
620
+ "save",
621
+ "summarizeAiUsage",
622
+ "toJSON",
623
+ "toPlainObject",
624
+ "toPublicJSON"
625
+ ],
626
+ "surfaces": [
627
+ {
628
+ "kind": "api",
629
+ "name": "socialpostanalyticssnapshots.list",
630
+ "operation": "list",
631
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
632
+ "path": "/socialpostanalyticssnapshots",
633
+ "method": "GET"
634
+ },
635
+ {
636
+ "kind": "api",
637
+ "name": "socialpostanalyticssnapshots.get",
638
+ "operation": "get",
639
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
640
+ "path": "/socialpostanalyticssnapshots/[id]",
641
+ "method": "GET"
642
+ },
643
+ {
644
+ "kind": "api",
645
+ "name": "socialpostanalyticssnapshots.create",
646
+ "operation": "create",
647
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
648
+ "path": "/socialpostanalyticssnapshots",
649
+ "method": "POST"
650
+ },
651
+ {
652
+ "kind": "api",
653
+ "name": "socialpostanalyticssnapshots.delete",
654
+ "operation": "delete",
655
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
656
+ "path": "/socialpostanalyticssnapshots/[id]",
657
+ "method": "DELETE"
658
+ },
659
+ {
660
+ "kind": "cli",
661
+ "name": "socialpostanalyticssnapshot_list",
662
+ "operation": "list",
663
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
664
+ },
665
+ {
666
+ "kind": "cli",
667
+ "name": "socialpostanalyticssnapshot_get",
668
+ "operation": "get",
669
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
670
+ },
671
+ {
672
+ "kind": "cli",
673
+ "name": "socialpostanalyticssnapshot_create",
674
+ "operation": "create",
675
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
676
+ },
677
+ {
678
+ "kind": "cli",
679
+ "name": "socialpostanalyticssnapshot_update",
680
+ "operation": "update",
681
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
682
+ },
683
+ {
684
+ "kind": "cli",
685
+ "name": "socialpostanalyticssnapshot_delete",
686
+ "operation": "delete",
687
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
688
+ },
689
+ {
690
+ "kind": "mcp",
691
+ "name": "socialpostanalyticssnapshot_list",
692
+ "operation": "list",
693
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
694
+ },
695
+ {
696
+ "kind": "mcp",
697
+ "name": "socialpostanalyticssnapshot_get",
698
+ "operation": "get",
699
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
700
+ }
701
+ ],
702
+ "relationshipFeatures": [
703
+ "foreignKey",
704
+ "uuidColumns"
705
+ ],
706
+ "tags": [],
707
+ "risks": []
708
+ },
709
+ {
710
+ "name": "SocialPost",
711
+ "qualifiedName": "@happyvertical/smrt-social:SocialPost",
712
+ "collection": "socialposts",
713
+ "tableName": "social_posts",
714
+ "packageName": "@happyvertical/smrt-social",
715
+ "extends": "SmrtObject",
716
+ "fields": [
717
+ {
718
+ "name": "created_at",
719
+ "type": "datetime",
720
+ "required": false,
721
+ "columnType": "TIMESTAMP"
722
+ },
723
+ {
724
+ "name": "updated_at",
725
+ "type": "datetime",
726
+ "required": false,
727
+ "columnType": "TIMESTAMP"
728
+ },
729
+ {
730
+ "name": "tenantId",
731
+ "type": "text",
732
+ "required": false,
733
+ "columnType": "UUID"
734
+ },
735
+ {
736
+ "name": "socialAccountId",
737
+ "type": "foreignKey",
738
+ "required": false,
739
+ "related": "() => SocialAccount",
740
+ "columnType": "UUID"
741
+ },
742
+ {
743
+ "name": "videoContentId",
744
+ "type": "foreignKey",
745
+ "required": false,
746
+ "related": "() => VideoContent",
747
+ "columnType": "UUID"
748
+ },
749
+ {
750
+ "name": "contentId",
751
+ "type": "crossPackageRef",
752
+ "required": false,
753
+ "related": "@happyvertical/smrt-content:Content",
754
+ "columnType": "UUID"
755
+ },
756
+ {
757
+ "name": "postType",
758
+ "type": "text",
759
+ "required": false,
760
+ "columnType": "TEXT"
761
+ },
762
+ {
763
+ "name": "mediaUrl",
764
+ "type": "text",
765
+ "required": false,
766
+ "columnType": "TEXT"
767
+ },
768
+ {
769
+ "name": "title",
770
+ "type": "text",
771
+ "required": false,
772
+ "columnType": "TEXT"
773
+ },
774
+ {
775
+ "name": "description",
776
+ "type": "text",
777
+ "required": false,
778
+ "columnType": "TEXT"
779
+ },
780
+ {
781
+ "name": "hashtags",
782
+ "type": "json",
783
+ "required": false,
784
+ "columnType": "JSON"
785
+ },
786
+ {
787
+ "name": "linkUrl",
788
+ "type": "text",
789
+ "required": false,
790
+ "columnType": "TEXT"
791
+ },
792
+ {
793
+ "name": "platformPostId",
794
+ "type": "text",
795
+ "required": false,
796
+ "columnType": "TEXT"
797
+ },
798
+ {
799
+ "name": "platformUrl",
800
+ "type": "text",
801
+ "required": false,
802
+ "columnType": "TEXT"
803
+ },
804
+ {
805
+ "name": "scheduledAt",
806
+ "type": "datetime",
807
+ "required": false,
808
+ "columnType": "TIMESTAMP"
809
+ },
810
+ {
811
+ "name": "publishedAt",
812
+ "type": "datetime",
813
+ "required": false,
814
+ "columnType": "TIMESTAMP"
815
+ },
816
+ {
817
+ "name": "status",
818
+ "type": "text",
819
+ "required": false,
820
+ "columnType": "TEXT"
821
+ },
822
+ {
823
+ "name": "errorMessage",
824
+ "type": "text",
825
+ "required": false,
826
+ "columnType": "TEXT"
827
+ },
828
+ {
829
+ "name": "analytics",
830
+ "type": "json",
831
+ "required": false,
832
+ "columnType": "JSON"
833
+ },
834
+ {
835
+ "name": "analyticsLastSyncedAt",
836
+ "type": "datetime",
837
+ "required": false,
838
+ "columnType": "TIMESTAMP"
839
+ }
840
+ ],
841
+ "relationships": [
842
+ {
843
+ "name": "socialAccountId",
844
+ "type": "foreignKey",
845
+ "required": false,
846
+ "related": "() => SocialAccount",
847
+ "columnType": "UUID"
848
+ },
849
+ {
850
+ "name": "videoContentId",
851
+ "type": "foreignKey",
852
+ "required": false,
853
+ "related": "() => VideoContent",
854
+ "columnType": "UUID"
855
+ },
856
+ {
857
+ "name": "contentId",
858
+ "type": "crossPackageRef",
859
+ "required": false,
860
+ "related": "@happyvertical/smrt-content:Content",
861
+ "columnType": "UUID"
862
+ }
863
+ ],
864
+ "methods": [
865
+ "classifyConstraintError",
866
+ "clearEmbeddings",
867
+ "delete",
868
+ "describe",
869
+ "destroy",
870
+ "do",
871
+ "executeToolCall",
872
+ "forget",
873
+ "forgetScope",
874
+ "generateEmbeddings",
875
+ "getAiUsageSnapshot",
876
+ "getAvailableTools",
877
+ "getEmbedding",
878
+ "getFields",
879
+ "getId",
880
+ "getRelated",
881
+ "getSavedId",
882
+ "getSlug",
883
+ "hasStaleEmbeddings",
884
+ "initialize",
885
+ "is",
886
+ "isRelatedLoaded",
887
+ "isSaved",
888
+ "listAiUsage",
889
+ "loadDataFromDb",
890
+ "loadFromId",
891
+ "loadFromSlug",
892
+ "loadRelated",
893
+ "loadRelatedMany",
894
+ "markAsPersisted",
895
+ "recall",
896
+ "recallAll",
897
+ "remember",
898
+ "resetAiUsage",
899
+ "save",
900
+ "summarizeAiUsage",
901
+ "toJSON",
902
+ "toPlainObject",
903
+ "toPublicJSON"
904
+ ],
905
+ "surfaces": [
906
+ {
907
+ "kind": "api",
908
+ "name": "socialposts.list",
909
+ "operation": "list",
910
+ "objectName": "@happyvertical/smrt-social:SocialPost",
911
+ "path": "/socialposts",
912
+ "method": "GET"
913
+ },
914
+ {
915
+ "kind": "api",
916
+ "name": "socialposts.get",
917
+ "operation": "get",
918
+ "objectName": "@happyvertical/smrt-social:SocialPost",
919
+ "path": "/socialposts/[id]",
920
+ "method": "GET"
921
+ },
922
+ {
923
+ "kind": "api",
924
+ "name": "socialposts.create",
925
+ "operation": "create",
926
+ "objectName": "@happyvertical/smrt-social:SocialPost",
927
+ "path": "/socialposts",
928
+ "method": "POST"
929
+ },
930
+ {
931
+ "kind": "api",
932
+ "name": "socialposts.update",
933
+ "operation": "update",
934
+ "objectName": "@happyvertical/smrt-social:SocialPost",
935
+ "path": "/socialposts/[id]",
936
+ "method": "PATCH"
937
+ },
938
+ {
939
+ "kind": "api",
940
+ "name": "socialposts.delete",
941
+ "operation": "delete",
942
+ "objectName": "@happyvertical/smrt-social:SocialPost",
943
+ "path": "/socialposts/[id]",
944
+ "method": "DELETE"
945
+ },
946
+ {
947
+ "kind": "cli",
948
+ "name": "socialpost_list",
949
+ "operation": "list",
950
+ "objectName": "@happyvertical/smrt-social:SocialPost"
951
+ },
952
+ {
953
+ "kind": "cli",
954
+ "name": "socialpost_get",
955
+ "operation": "get",
956
+ "objectName": "@happyvertical/smrt-social:SocialPost"
957
+ },
958
+ {
959
+ "kind": "cli",
960
+ "name": "socialpost_create",
961
+ "operation": "create",
962
+ "objectName": "@happyvertical/smrt-social:SocialPost"
963
+ },
964
+ {
965
+ "kind": "cli",
966
+ "name": "socialpost_update",
967
+ "operation": "update",
968
+ "objectName": "@happyvertical/smrt-social:SocialPost"
969
+ },
970
+ {
971
+ "kind": "cli",
972
+ "name": "socialpost_delete",
973
+ "operation": "delete",
974
+ "objectName": "@happyvertical/smrt-social:SocialPost"
975
+ },
976
+ {
977
+ "kind": "mcp",
978
+ "name": "socialpost_list",
979
+ "operation": "list",
980
+ "objectName": "@happyvertical/smrt-social:SocialPost"
981
+ },
982
+ {
983
+ "kind": "mcp",
984
+ "name": "socialpost_get",
985
+ "operation": "get",
986
+ "objectName": "@happyvertical/smrt-social:SocialPost"
987
+ }
988
+ ],
989
+ "relationshipFeatures": [
990
+ "crossPackageRef",
991
+ "foreignKey",
992
+ "uuidColumns"
993
+ ],
994
+ "tags": [],
995
+ "risks": []
996
+ },
997
+ {
998
+ "name": "OAuthStateCollection",
999
+ "qualifiedName": "@happyvertical/smrt-social:OAuthStateCollection",
1000
+ "collection": "oauthstates",
1001
+ "tableName": "oauth_state_collections",
1002
+ "packageName": "@happyvertical/smrt-social",
1003
+ "extends": "SmrtCollection",
1004
+ "fields": [],
1005
+ "relationships": [],
1006
+ "methods": [
1007
+ "deleteExpired",
1008
+ "findByState",
1009
+ "findExpired"
1010
+ ],
1011
+ "surfaces": [],
1012
+ "relationshipFeatures": [
1013
+ "uuidColumns"
1014
+ ],
1015
+ "tags": [],
1016
+ "risks": []
1017
+ },
1018
+ {
1019
+ "name": "SocialAccountCollection",
1020
+ "qualifiedName": "@happyvertical/smrt-social:SocialAccountCollection",
1021
+ "collection": "socialaccounts",
1022
+ "tableName": "social_account_collections",
1023
+ "packageName": "@happyvertical/smrt-social",
1024
+ "extends": "SmrtCollection",
1025
+ "fields": [],
1026
+ "relationships": [],
1027
+ "methods": [
1028
+ "findActive",
1029
+ "findNeedsAttention",
1030
+ "findReady"
1031
+ ],
1032
+ "surfaces": [],
1033
+ "relationshipFeatures": [
1034
+ "uuidColumns"
1035
+ ],
1036
+ "tags": [],
1037
+ "risks": []
1038
+ },
1039
+ {
1040
+ "name": "SocialPostAnalyticsSnapshotCollection",
1041
+ "qualifiedName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshotCollection",
1042
+ "collection": "socialpostanalyticssnapshots",
1043
+ "tableName": "social_post_analytics_snapshot_collections",
1044
+ "packageName": "@happyvertical/smrt-social",
1045
+ "extends": "SmrtCollection",
1046
+ "fields": [],
1047
+ "relationships": [],
1048
+ "methods": [
1049
+ "findForPost",
1050
+ "findLatestForPost",
1051
+ "recordSnapshot"
1052
+ ],
1053
+ "surfaces": [],
1054
+ "relationshipFeatures": [
1055
+ "uuidColumns"
1056
+ ],
1057
+ "tags": [],
1058
+ "risks": []
1059
+ },
1060
+ {
1061
+ "name": "SocialPostCollection",
1062
+ "qualifiedName": "@happyvertical/smrt-social:SocialPostCollection",
1063
+ "collection": "socialposts",
1064
+ "tableName": "social_post_collections",
1065
+ "packageName": "@happyvertical/smrt-social",
1066
+ "extends": "SmrtCollection",
1067
+ "fields": [],
1068
+ "relationships": [],
1069
+ "methods": [
1070
+ "createDraft",
1071
+ "findByStatus",
1072
+ "findDueForPublish",
1073
+ "findForAccount",
1074
+ "recordPublishFailure",
1075
+ "recordPublishSuccess",
1076
+ "updateLatestAnalytics"
1077
+ ],
1078
+ "surfaces": [],
1079
+ "relationshipFeatures": [
1080
+ "uuidColumns"
1081
+ ],
1082
+ "tags": [],
1083
+ "risks": []
1084
+ }
1085
+ ],
1086
+ "surfaces": [
1087
+ {
1088
+ "kind": "api",
1089
+ "name": "oauthstates.list",
1090
+ "operation": "list",
1091
+ "objectName": "@happyvertical/smrt-social:OAuthState",
1092
+ "path": "/oauthstates",
1093
+ "method": "GET"
1094
+ },
1095
+ {
1096
+ "kind": "api",
1097
+ "name": "oauthstates.get",
1098
+ "operation": "get",
1099
+ "objectName": "@happyvertical/smrt-social:OAuthState",
1100
+ "path": "/oauthstates/[id]",
1101
+ "method": "GET"
1102
+ },
1103
+ {
1104
+ "kind": "api",
1105
+ "name": "oauthstates.create",
1106
+ "operation": "create",
1107
+ "objectName": "@happyvertical/smrt-social:OAuthState",
1108
+ "path": "/oauthstates",
1109
+ "method": "POST"
1110
+ },
1111
+ {
1112
+ "kind": "api",
1113
+ "name": "oauthstates.delete",
1114
+ "operation": "delete",
1115
+ "objectName": "@happyvertical/smrt-social:OAuthState",
1116
+ "path": "/oauthstates/[id]",
1117
+ "method": "DELETE"
1118
+ },
1119
+ {
1120
+ "kind": "cli",
1121
+ "name": "oauthstate_list",
1122
+ "operation": "list",
1123
+ "objectName": "@happyvertical/smrt-social:OAuthState"
1124
+ },
1125
+ {
1126
+ "kind": "cli",
1127
+ "name": "oauthstate_get",
1128
+ "operation": "get",
1129
+ "objectName": "@happyvertical/smrt-social:OAuthState"
1130
+ },
1131
+ {
1132
+ "kind": "cli",
1133
+ "name": "oauthstate_create",
1134
+ "operation": "create",
1135
+ "objectName": "@happyvertical/smrt-social:OAuthState"
1136
+ },
1137
+ {
1138
+ "kind": "cli",
1139
+ "name": "oauthstate_update",
1140
+ "operation": "update",
1141
+ "objectName": "@happyvertical/smrt-social:OAuthState"
1142
+ },
1143
+ {
1144
+ "kind": "cli",
1145
+ "name": "oauthstate_delete",
1146
+ "operation": "delete",
1147
+ "objectName": "@happyvertical/smrt-social:OAuthState"
1148
+ },
1149
+ {
1150
+ "kind": "api",
1151
+ "name": "socialaccounts.list",
1152
+ "operation": "list",
1153
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
1154
+ "path": "/socialaccounts",
1155
+ "method": "GET"
1156
+ },
1157
+ {
1158
+ "kind": "api",
1159
+ "name": "socialaccounts.get",
1160
+ "operation": "get",
1161
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
1162
+ "path": "/socialaccounts/[id]",
1163
+ "method": "GET"
1164
+ },
1165
+ {
1166
+ "kind": "api",
1167
+ "name": "socialaccounts.create",
1168
+ "operation": "create",
1169
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
1170
+ "path": "/socialaccounts",
1171
+ "method": "POST"
1172
+ },
1173
+ {
1174
+ "kind": "api",
1175
+ "name": "socialaccounts.update",
1176
+ "operation": "update",
1177
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
1178
+ "path": "/socialaccounts/[id]",
1179
+ "method": "PATCH"
1180
+ },
1181
+ {
1182
+ "kind": "api",
1183
+ "name": "socialaccounts.delete",
1184
+ "operation": "delete",
1185
+ "objectName": "@happyvertical/smrt-social:SocialAccount",
1186
+ "path": "/socialaccounts/[id]",
1187
+ "method": "DELETE"
1188
+ },
1189
+ {
1190
+ "kind": "cli",
1191
+ "name": "socialaccount_list",
1192
+ "operation": "list",
1193
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1194
+ },
1195
+ {
1196
+ "kind": "cli",
1197
+ "name": "socialaccount_get",
1198
+ "operation": "get",
1199
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1200
+ },
1201
+ {
1202
+ "kind": "cli",
1203
+ "name": "socialaccount_create",
1204
+ "operation": "create",
1205
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1206
+ },
1207
+ {
1208
+ "kind": "cli",
1209
+ "name": "socialaccount_update",
1210
+ "operation": "update",
1211
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1212
+ },
1213
+ {
1214
+ "kind": "cli",
1215
+ "name": "socialaccount_delete",
1216
+ "operation": "delete",
1217
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1218
+ },
1219
+ {
1220
+ "kind": "mcp",
1221
+ "name": "socialaccount_list",
1222
+ "operation": "list",
1223
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1224
+ },
1225
+ {
1226
+ "kind": "mcp",
1227
+ "name": "socialaccount_get",
1228
+ "operation": "get",
1229
+ "objectName": "@happyvertical/smrt-social:SocialAccount"
1230
+ },
1231
+ {
1232
+ "kind": "api",
1233
+ "name": "socialpostanalyticssnapshots.list",
1234
+ "operation": "list",
1235
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
1236
+ "path": "/socialpostanalyticssnapshots",
1237
+ "method": "GET"
1238
+ },
1239
+ {
1240
+ "kind": "api",
1241
+ "name": "socialpostanalyticssnapshots.get",
1242
+ "operation": "get",
1243
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
1244
+ "path": "/socialpostanalyticssnapshots/[id]",
1245
+ "method": "GET"
1246
+ },
1247
+ {
1248
+ "kind": "api",
1249
+ "name": "socialpostanalyticssnapshots.create",
1250
+ "operation": "create",
1251
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
1252
+ "path": "/socialpostanalyticssnapshots",
1253
+ "method": "POST"
1254
+ },
1255
+ {
1256
+ "kind": "api",
1257
+ "name": "socialpostanalyticssnapshots.delete",
1258
+ "operation": "delete",
1259
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot",
1260
+ "path": "/socialpostanalyticssnapshots/[id]",
1261
+ "method": "DELETE"
1262
+ },
1263
+ {
1264
+ "kind": "cli",
1265
+ "name": "socialpostanalyticssnapshot_list",
1266
+ "operation": "list",
1267
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1268
+ },
1269
+ {
1270
+ "kind": "cli",
1271
+ "name": "socialpostanalyticssnapshot_get",
1272
+ "operation": "get",
1273
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1274
+ },
1275
+ {
1276
+ "kind": "cli",
1277
+ "name": "socialpostanalyticssnapshot_create",
1278
+ "operation": "create",
1279
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1280
+ },
1281
+ {
1282
+ "kind": "cli",
1283
+ "name": "socialpostanalyticssnapshot_update",
1284
+ "operation": "update",
1285
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1286
+ },
1287
+ {
1288
+ "kind": "cli",
1289
+ "name": "socialpostanalyticssnapshot_delete",
1290
+ "operation": "delete",
1291
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1292
+ },
1293
+ {
1294
+ "kind": "mcp",
1295
+ "name": "socialpostanalyticssnapshot_list",
1296
+ "operation": "list",
1297
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1298
+ },
1299
+ {
1300
+ "kind": "mcp",
1301
+ "name": "socialpostanalyticssnapshot_get",
1302
+ "operation": "get",
1303
+ "objectName": "@happyvertical/smrt-social:SocialPostAnalyticsSnapshot"
1304
+ },
1305
+ {
1306
+ "kind": "api",
1307
+ "name": "socialposts.list",
1308
+ "operation": "list",
1309
+ "objectName": "@happyvertical/smrt-social:SocialPost",
1310
+ "path": "/socialposts",
1311
+ "method": "GET"
1312
+ },
1313
+ {
1314
+ "kind": "api",
1315
+ "name": "socialposts.get",
1316
+ "operation": "get",
1317
+ "objectName": "@happyvertical/smrt-social:SocialPost",
1318
+ "path": "/socialposts/[id]",
1319
+ "method": "GET"
1320
+ },
1321
+ {
1322
+ "kind": "api",
1323
+ "name": "socialposts.create",
1324
+ "operation": "create",
1325
+ "objectName": "@happyvertical/smrt-social:SocialPost",
1326
+ "path": "/socialposts",
1327
+ "method": "POST"
1328
+ },
1329
+ {
1330
+ "kind": "api",
1331
+ "name": "socialposts.update",
1332
+ "operation": "update",
1333
+ "objectName": "@happyvertical/smrt-social:SocialPost",
1334
+ "path": "/socialposts/[id]",
1335
+ "method": "PATCH"
1336
+ },
1337
+ {
1338
+ "kind": "api",
1339
+ "name": "socialposts.delete",
1340
+ "operation": "delete",
1341
+ "objectName": "@happyvertical/smrt-social:SocialPost",
1342
+ "path": "/socialposts/[id]",
1343
+ "method": "DELETE"
1344
+ },
1345
+ {
1346
+ "kind": "cli",
1347
+ "name": "socialpost_list",
1348
+ "operation": "list",
1349
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1350
+ },
1351
+ {
1352
+ "kind": "cli",
1353
+ "name": "socialpost_get",
1354
+ "operation": "get",
1355
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1356
+ },
1357
+ {
1358
+ "kind": "cli",
1359
+ "name": "socialpost_create",
1360
+ "operation": "create",
1361
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1362
+ },
1363
+ {
1364
+ "kind": "cli",
1365
+ "name": "socialpost_update",
1366
+ "operation": "update",
1367
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1368
+ },
1369
+ {
1370
+ "kind": "cli",
1371
+ "name": "socialpost_delete",
1372
+ "operation": "delete",
1373
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1374
+ },
1375
+ {
1376
+ "kind": "mcp",
1377
+ "name": "socialpost_list",
1378
+ "operation": "list",
1379
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1380
+ },
1381
+ {
1382
+ "kind": "mcp",
1383
+ "name": "socialpost_get",
1384
+ "operation": "get",
1385
+ "objectName": "@happyvertical/smrt-social:SocialPost"
1386
+ }
1387
+ ],
1388
+ "prompts": [],
1389
+ "relationshipsV2": {
1390
+ "foreignKeyFields": 3,
1391
+ "crossPackageRefFields": 1,
1392
+ "junctionCollections": 0,
1393
+ "hierarchicalObjects": 0,
1394
+ "polymorphicAssociations": 0,
1395
+ "uuidColumns": 16
1396
+ },
1397
+ "agentDoc": "# @happyvertical/smrt-social\n\nSocial media account management with OAuth and post scheduling. Supports YouTube, Threads, X (Twitter), Bluesky.\n\n## Models\n\n- **SocialAccount** (STI): `platform`, `accessToken`/`refreshToken`, `tokenExpiresAt`, `status` (connected/expired/error), `linkBehavior` (description/reply/none). `isTokenExpired` checks with 5-min buffer. `isReady` gate checks active + connected + token present + not expired.\n- **SocialPost**: `scheduledAt`, `publishedAt`, `status` (draft/scheduled/publishing/published/failed), `analytics` JSON (views/likes/comments/shares/clicks).\n- **OAuthState** (STI): CSRF token + PKCE `codeVerifier` with 10-min TTL.\n\n## Gotchas\n\n- **Tokens not encrypted**: OAuth tokens stored as plaintext — TODO for smrt-secrets integration\n- **No auto-publishing**: `scheduledAt` is metadata only — app must implement job runner to trigger publishing\n- **Analytics manual**: `analytics` field must be updated by platform sync, not auto-populated\n- **Platform enum hardcoded**: youtube/threads/x/bluesky — extending requires code changes\n- **OAuthState TTL**: 10 minutes, app must clean up expired states\n- **Optional tenancy** on all models\n"
1398
+ }