@happyvertical/smrt-profiles 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 (42) hide show
  1. package/AGENTS.md +53 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +176 -0
  5. package/dist/chunks/ApiKey-B2LKEaP8.js +143 -0
  6. package/dist/chunks/ApiKey-B2LKEaP8.js.map +1 -0
  7. package/dist/chunks/ApiKeyCollection-B6Op817e.js +91 -0
  8. package/dist/chunks/ApiKeyCollection-B6Op817e.js.map +1 -0
  9. package/dist/chunks/AuditLogCollection-BYqCj0uE.js +195 -0
  10. package/dist/chunks/AuditLogCollection-BYqCj0uE.js.map +1 -0
  11. package/dist/chunks/NostrIdentityCollection-DadQBHWy.js +3065 -0
  12. package/dist/chunks/NostrIdentityCollection-DadQBHWy.js.map +1 -0
  13. package/dist/chunks/ProfileAssetCollection-D_tk1kKG.js +122 -0
  14. package/dist/chunks/ProfileAssetCollection-D_tk1kKG.js.map +1 -0
  15. package/dist/chunks/ProfileCollection-DU6wUJTO.js +782 -0
  16. package/dist/chunks/ProfileCollection-DU6wUJTO.js.map +1 -0
  17. package/dist/chunks/ProfileMetadataCollection-DEhmljMY.js +120 -0
  18. package/dist/chunks/ProfileMetadataCollection-DEhmljMY.js.map +1 -0
  19. package/dist/chunks/ProfileMetafieldCollection-DMKhSHXX.js +184 -0
  20. package/dist/chunks/ProfileMetafieldCollection-DMKhSHXX.js.map +1 -0
  21. package/dist/chunks/ProfileRelationshipCollection-C0IM8UQR.js +177 -0
  22. package/dist/chunks/ProfileRelationshipCollection-C0IM8UQR.js.map +1 -0
  23. package/dist/chunks/ProfileRelationshipTermCollection-CXem_qT-.js +117 -0
  24. package/dist/chunks/ProfileRelationshipTermCollection-CXem_qT-.js.map +1 -0
  25. package/dist/chunks/ProfileRelationshipType-BXBLldea.js +103 -0
  26. package/dist/chunks/ProfileRelationshipType-BXBLldea.js.map +1 -0
  27. package/dist/chunks/ProfileRelationshipTypeCollection-CF8YvLTV.js +48 -0
  28. package/dist/chunks/ProfileRelationshipTypeCollection-CF8YvLTV.js.map +1 -0
  29. package/dist/chunks/index-jFtOWsAV.js +1014 -0
  30. package/dist/chunks/index-jFtOWsAV.js.map +1 -0
  31. package/dist/index.d.ts +1848 -0
  32. package/dist/index.js +70 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/manifest.json +11829 -0
  35. package/dist/smrt-knowledge.json +3846 -0
  36. package/dist/types.d.ts +41 -0
  37. package/dist/types.js +2 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils.d.ts +61 -0
  40. package/dist/utils.js +49 -0
  41. package/dist/utils.js.map +1 -0
  42. package/package.json +75 -0
@@ -0,0 +1,3846 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:11:40.461Z",
4
+ "packageName": "@happyvertical/smrt-profiles",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "7bb0dcc722d114dcc15334bdf8685bfd8206408156e5d5ab50ef90230876033a",
10
+ "packageJson": "6a429295b8c55a73f4af12444a7040c2b3c85dbc322a55ca97b3a0f5310d11f7",
11
+ "agents": "3c18e895a2e065f761aabf31779c71a138f0a75261ab223464c3b2a5fbbe6b16"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./utils"
18
+ ],
19
+ "dependencies": {
20
+ "@happyvertical/ai": "catalog:",
21
+ "@happyvertical/files": "catalog:",
22
+ "@happyvertical/logger": "catalog:",
23
+ "@happyvertical/smrt-assets": "workspace:*",
24
+ "@happyvertical/smrt-core": "workspace:*",
25
+ "@happyvertical/smrt-prompts": "workspace:*",
26
+ "@happyvertical/smrt-tenancy": "workspace:*",
27
+ "@happyvertical/sql": "catalog:",
28
+ "@happyvertical/utils": "catalog:",
29
+ "@noble/curves": "^1.8.1",
30
+ "bech32": "^2.0.0",
31
+ "@faker-js/faker": "^10.2.0",
32
+ "@happyvertical/smrt-vitest": "workspace:*",
33
+ "@types/node": "25.0.9",
34
+ "fast-glob": "3.3.3",
35
+ "typescript": "^5.9.3",
36
+ "vite": "^7.3.1",
37
+ "vitest": "^4.0.17"
38
+ },
39
+ "smrtDependencies": [
40
+ "@happyvertical/smrt-assets",
41
+ "@happyvertical/smrt-core",
42
+ "@happyvertical/smrt-prompts",
43
+ "@happyvertical/smrt-tenancy",
44
+ "@happyvertical/smrt-vitest"
45
+ ],
46
+ "sdkDependencies": [
47
+ "@happyvertical/ai",
48
+ "@happyvertical/files",
49
+ "@happyvertical/logger",
50
+ "@happyvertical/sql",
51
+ "@happyvertical/utils"
52
+ ],
53
+ "tags": [],
54
+ "risks": [],
55
+ "objects": [
56
+ {
57
+ "name": "ApiKeyCollection",
58
+ "qualifiedName": "@happyvertical/smrt-profiles:ApiKeyCollection",
59
+ "collection": "apikeys",
60
+ "tableName": "api_keys",
61
+ "packageName": "@happyvertical/smrt-profiles",
62
+ "extends": "SmrtCollection",
63
+ "fields": [],
64
+ "relationships": [],
65
+ "methods": [
66
+ "cleanupExpired",
67
+ "findActiveByProfile",
68
+ "findByHash",
69
+ "findByProfile",
70
+ "generateForProfile",
71
+ "revokeAllForProfile",
72
+ "revokeByPrefix",
73
+ "verify"
74
+ ],
75
+ "surfaces": [],
76
+ "relationshipFeatures": [
77
+ "uuidColumns"
78
+ ],
79
+ "tags": [],
80
+ "risks": []
81
+ },
82
+ {
83
+ "name": "AuditLogCollection",
84
+ "qualifiedName": "@happyvertical/smrt-profiles:AuditLogCollection",
85
+ "collection": "auditlogs",
86
+ "tableName": "audit_logs",
87
+ "packageName": "@happyvertical/smrt-profiles",
88
+ "extends": "SmrtCollection",
89
+ "fields": [],
90
+ "relationships": [],
91
+ "methods": [
92
+ "findByAction",
93
+ "findByProfile",
94
+ "findByResource",
95
+ "findBySource",
96
+ "findOnBehalfOf",
97
+ "getRecentActivity",
98
+ "getResourceTimeline",
99
+ "record"
100
+ ],
101
+ "surfaces": [],
102
+ "relationshipFeatures": [
103
+ "uuidColumns"
104
+ ],
105
+ "tags": [],
106
+ "risks": []
107
+ },
108
+ {
109
+ "name": "MagicLinkTokenCollection",
110
+ "qualifiedName": "@happyvertical/smrt-profiles:MagicLinkTokenCollection",
111
+ "collection": "magiclinktokens",
112
+ "tableName": "magic_link_tokens",
113
+ "packageName": "@happyvertical/smrt-profiles",
114
+ "extends": "SmrtCollection",
115
+ "fields": [],
116
+ "relationships": [],
117
+ "methods": [
118
+ "cleanupExpired",
119
+ "countRecentByEmail",
120
+ "countRecentByIp",
121
+ "findActiveForEmail",
122
+ "findByIdentity",
123
+ "findByTokenHash",
124
+ "isRateLimitedByEmail",
125
+ "isRateLimitedByIp",
126
+ "revokeForIdentity",
127
+ "verify"
128
+ ],
129
+ "surfaces": [],
130
+ "relationshipFeatures": [
131
+ "uuidColumns"
132
+ ],
133
+ "tags": [],
134
+ "risks": []
135
+ },
136
+ {
137
+ "name": "NostrIdentityCollection",
138
+ "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentityCollection",
139
+ "collection": "nostridentities",
140
+ "tableName": "nostr_identities",
141
+ "packageName": "@happyvertical/smrt-profiles",
142
+ "extends": "SmrtCollection",
143
+ "fields": [],
144
+ "relationships": [],
145
+ "methods": [
146
+ "createForProfile",
147
+ "findByEmail",
148
+ "findByNip05",
149
+ "findByProfile",
150
+ "findByPubkey",
151
+ "getNip05Response",
152
+ "isNip05Available",
153
+ "linkToProfile",
154
+ "unlinkFromProfile",
155
+ "updateNip05Username"
156
+ ],
157
+ "surfaces": [],
158
+ "relationshipFeatures": [
159
+ "uuidColumns"
160
+ ],
161
+ "tags": [],
162
+ "risks": []
163
+ },
164
+ {
165
+ "name": "OidcIdentityCollection",
166
+ "qualifiedName": "@happyvertical/smrt-profiles:OidcIdentityCollection",
167
+ "collection": "oidcidentities",
168
+ "tableName": "oidc_identities",
169
+ "packageName": "@happyvertical/smrt-profiles",
170
+ "extends": "SmrtCollection",
171
+ "fields": [],
172
+ "relationships": [],
173
+ "methods": [
174
+ "findByProfile",
175
+ "findByProvider",
176
+ "findBySubject",
177
+ "linkToProfile",
178
+ "unlinkFromProfile"
179
+ ],
180
+ "surfaces": [],
181
+ "relationshipFeatures": [
182
+ "uuidColumns"
183
+ ],
184
+ "tags": [],
185
+ "risks": []
186
+ },
187
+ {
188
+ "name": "ProfileAssetCollection",
189
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileAssetCollection",
190
+ "collection": "profileassets",
191
+ "tableName": "profile_assets",
192
+ "packageName": "@happyvertical/smrt-profiles",
193
+ "extends": "SmrtJunction",
194
+ "fields": [],
195
+ "relationships": [],
196
+ "methods": [
197
+ "addAsset",
198
+ "attach",
199
+ "byLeft",
200
+ "byRight",
201
+ "detach",
202
+ "getAssets",
203
+ "removeAsset",
204
+ "setLinks"
205
+ ],
206
+ "surfaces": [],
207
+ "relationshipFeatures": [
208
+ "SmrtJunction",
209
+ "uuidColumns"
210
+ ],
211
+ "tags": [],
212
+ "risks": []
213
+ },
214
+ {
215
+ "name": "ProfileCollection",
216
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileCollection",
217
+ "collection": "profiles",
218
+ "tableName": "profile_collections",
219
+ "packageName": "@happyvertical/smrt-profiles",
220
+ "extends": "SmrtCollection",
221
+ "fields": [],
222
+ "relationships": [],
223
+ "methods": [
224
+ "addAsset",
225
+ "batchGetMetadata",
226
+ "batchUpdateMetadata",
227
+ "findByEmail",
228
+ "findByTenant",
229
+ "findByType",
230
+ "findGlobal",
231
+ "findRelated",
232
+ "findWithGlobals",
233
+ "getAssets",
234
+ "getRelationshipNetwork",
235
+ "removeAsset"
236
+ ],
237
+ "surfaces": [],
238
+ "relationshipFeatures": [
239
+ "uuidColumns"
240
+ ],
241
+ "tags": [],
242
+ "risks": []
243
+ },
244
+ {
245
+ "name": "ProfileMetadataCollection",
246
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetadataCollection",
247
+ "collection": "profilemetadatas",
248
+ "tableName": "profile_metadata_collections",
249
+ "packageName": "@happyvertical/smrt-profiles",
250
+ "extends": "SmrtCollection",
251
+ "fields": [],
252
+ "relationships": [],
253
+ "methods": [
254
+ "findProfilesByMetadata",
255
+ "getByProfile",
256
+ "getMetadataObject"
257
+ ],
258
+ "surfaces": [],
259
+ "relationshipFeatures": [
260
+ "uuidColumns"
261
+ ],
262
+ "tags": [],
263
+ "risks": []
264
+ },
265
+ {
266
+ "name": "ProfileMetafieldCollection",
267
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetafieldCollection",
268
+ "collection": "profilemetafields",
269
+ "tableName": "profile_metafield_collections",
270
+ "packageName": "@happyvertical/smrt-profiles",
271
+ "extends": "SmrtCollection",
272
+ "fields": [],
273
+ "relationships": [],
274
+ "methods": [
275
+ "getBySlug",
276
+ "getOrCreateBySlug"
277
+ ],
278
+ "surfaces": [],
279
+ "relationshipFeatures": [
280
+ "uuidColumns"
281
+ ],
282
+ "tags": [],
283
+ "risks": []
284
+ },
285
+ {
286
+ "name": "ProfileRelationshipCollection",
287
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipCollection",
288
+ "collection": "profilerelationships",
289
+ "tableName": "profile_relationship_collections",
290
+ "packageName": "@happyvertical/smrt-profiles",
291
+ "extends": "SmrtCollection",
292
+ "fields": [],
293
+ "relationships": [],
294
+ "methods": [
295
+ "exists",
296
+ "getForProfile",
297
+ "getFromProfile",
298
+ "getToProfile"
299
+ ],
300
+ "surfaces": [],
301
+ "relationshipFeatures": [
302
+ "uuidColumns"
303
+ ],
304
+ "tags": [],
305
+ "risks": []
306
+ },
307
+ {
308
+ "name": "ProfileRelationshipTermCollection",
309
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTermCollection",
310
+ "collection": "profilerelationshipterms",
311
+ "tableName": "profile_relationship_term_collections",
312
+ "packageName": "@happyvertical/smrt-profiles",
313
+ "extends": "SmrtCollection",
314
+ "fields": [],
315
+ "relationships": [],
316
+ "methods": [
317
+ "getActiveTerm",
318
+ "getByRelationship",
319
+ "getHistoricalTerms"
320
+ ],
321
+ "surfaces": [],
322
+ "relationshipFeatures": [
323
+ "uuidColumns"
324
+ ],
325
+ "tags": [],
326
+ "risks": []
327
+ },
328
+ {
329
+ "name": "ProfileRelationshipTypeCollection",
330
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection",
331
+ "collection": "profilerelationshiptypes",
332
+ "tableName": "profile_relationship_type_collections",
333
+ "packageName": "@happyvertical/smrt-profiles",
334
+ "extends": "SmrtCollection",
335
+ "fields": [],
336
+ "relationships": [],
337
+ "methods": [
338
+ "getBySlug",
339
+ "getDirectional",
340
+ "getOrCreateBySlug",
341
+ "getReciprocal"
342
+ ],
343
+ "surfaces": [],
344
+ "relationshipFeatures": [
345
+ "uuidColumns"
346
+ ],
347
+ "tags": [],
348
+ "risks": []
349
+ },
350
+ {
351
+ "name": "ProfileTypeCollection",
352
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileTypeCollection",
353
+ "collection": "profiletypes",
354
+ "tableName": "profile_type_collections",
355
+ "packageName": "@happyvertical/smrt-profiles",
356
+ "extends": "SmrtCollection",
357
+ "fields": [],
358
+ "relationships": [],
359
+ "methods": [
360
+ "getBySlug",
361
+ "getOrCreateBySlug"
362
+ ],
363
+ "surfaces": [],
364
+ "relationshipFeatures": [
365
+ "uuidColumns"
366
+ ],
367
+ "tags": [],
368
+ "risks": []
369
+ },
370
+ {
371
+ "name": "ApiKey",
372
+ "qualifiedName": "@happyvertical/smrt-profiles:ApiKey",
373
+ "collection": "apikeys",
374
+ "tableName": "api_keys",
375
+ "packageName": "@happyvertical/smrt-profiles",
376
+ "extends": "SmrtObject",
377
+ "fields": [
378
+ {
379
+ "name": "profileId",
380
+ "type": "foreignKey",
381
+ "required": true,
382
+ "related": "Profile",
383
+ "columnType": "UUID"
384
+ },
385
+ {
386
+ "name": "keyHash",
387
+ "type": "text",
388
+ "required": false,
389
+ "columnType": "TEXT"
390
+ },
391
+ {
392
+ "name": "keyPrefix",
393
+ "type": "text",
394
+ "required": false,
395
+ "columnType": "TEXT"
396
+ },
397
+ {
398
+ "name": "name",
399
+ "type": "text",
400
+ "required": false,
401
+ "columnType": "TEXT"
402
+ },
403
+ {
404
+ "name": "scopes",
405
+ "type": "json",
406
+ "required": false,
407
+ "columnType": "JSON"
408
+ },
409
+ {
410
+ "name": "lastUsedAt",
411
+ "type": "datetime",
412
+ "required": false,
413
+ "columnType": "TIMESTAMP"
414
+ },
415
+ {
416
+ "name": "expiresAt",
417
+ "type": "datetime",
418
+ "required": false,
419
+ "columnType": "TIMESTAMP"
420
+ },
421
+ {
422
+ "name": "revokedAt",
423
+ "type": "datetime",
424
+ "required": false,
425
+ "columnType": "TIMESTAMP"
426
+ }
427
+ ],
428
+ "relationships": [
429
+ {
430
+ "name": "profileId",
431
+ "type": "foreignKey",
432
+ "required": true,
433
+ "related": "Profile",
434
+ "columnType": "UUID"
435
+ }
436
+ ],
437
+ "methods": [
438
+ "generate",
439
+ "getProfile",
440
+ "hasScope",
441
+ "hashKey",
442
+ "isValid",
443
+ "recordUsage",
444
+ "revoke",
445
+ "verify"
446
+ ],
447
+ "surfaces": [
448
+ {
449
+ "kind": "api",
450
+ "name": "apikeys.list",
451
+ "operation": "list",
452
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
453
+ "path": "/apikeys",
454
+ "method": "GET"
455
+ },
456
+ {
457
+ "kind": "api",
458
+ "name": "apikeys.get",
459
+ "operation": "get",
460
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
461
+ "path": "/apikeys/[id]",
462
+ "method": "GET"
463
+ },
464
+ {
465
+ "kind": "cli",
466
+ "name": "apikey_list",
467
+ "operation": "list",
468
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
469
+ },
470
+ {
471
+ "kind": "cli",
472
+ "name": "apikey_get",
473
+ "operation": "get",
474
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
475
+ },
476
+ {
477
+ "kind": "cli",
478
+ "name": "apikey_create",
479
+ "operation": "create",
480
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
481
+ },
482
+ {
483
+ "kind": "cli",
484
+ "name": "apikey_revoke",
485
+ "operation": "revoke",
486
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
487
+ },
488
+ {
489
+ "kind": "mcp",
490
+ "name": "apikey_list",
491
+ "operation": "list",
492
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
493
+ },
494
+ {
495
+ "kind": "mcp",
496
+ "name": "apikey_get",
497
+ "operation": "get",
498
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
499
+ }
500
+ ],
501
+ "relationshipFeatures": [
502
+ "foreignKey",
503
+ "uuidColumns"
504
+ ],
505
+ "tags": [],
506
+ "risks": []
507
+ },
508
+ {
509
+ "name": "AuditLog",
510
+ "qualifiedName": "@happyvertical/smrt-profiles:AuditLog",
511
+ "collection": "auditlogs",
512
+ "tableName": "audit_logs",
513
+ "packageName": "@happyvertical/smrt-profiles",
514
+ "extends": "SmrtObject",
515
+ "fields": [
516
+ {
517
+ "name": "tenantId",
518
+ "type": "text",
519
+ "required": false,
520
+ "columnType": "UUID"
521
+ },
522
+ {
523
+ "name": "profileId",
524
+ "type": "foreignKey",
525
+ "required": true,
526
+ "related": "Profile",
527
+ "columnType": "UUID"
528
+ },
529
+ {
530
+ "name": "action",
531
+ "type": "text",
532
+ "required": false,
533
+ "columnType": "TEXT"
534
+ },
535
+ {
536
+ "name": "resourceType",
537
+ "type": "text",
538
+ "required": false,
539
+ "columnType": "TEXT"
540
+ },
541
+ {
542
+ "name": "resourceId",
543
+ "type": "text",
544
+ "required": false,
545
+ "columnType": "TEXT"
546
+ },
547
+ {
548
+ "name": "source",
549
+ "type": "text",
550
+ "required": false,
551
+ "columnType": "TEXT"
552
+ },
553
+ {
554
+ "name": "metadata",
555
+ "type": "json",
556
+ "required": false,
557
+ "columnType": "JSON"
558
+ },
559
+ {
560
+ "name": "onBehalfOfId",
561
+ "type": "foreignKey",
562
+ "required": false,
563
+ "related": "Profile",
564
+ "columnType": "UUID"
565
+ }
566
+ ],
567
+ "relationships": [
568
+ {
569
+ "name": "profileId",
570
+ "type": "foreignKey",
571
+ "required": true,
572
+ "related": "Profile",
573
+ "columnType": "UUID"
574
+ },
575
+ {
576
+ "name": "onBehalfOfId",
577
+ "type": "foreignKey",
578
+ "required": false,
579
+ "related": "Profile",
580
+ "columnType": "UUID"
581
+ }
582
+ ],
583
+ "methods": [
584
+ "getEffectiveActor",
585
+ "getOnBehalfOf",
586
+ "getProfile",
587
+ "record"
588
+ ],
589
+ "surfaces": [
590
+ {
591
+ "kind": "api",
592
+ "name": "auditlogs.list",
593
+ "operation": "list",
594
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
595
+ "path": "/auditlogs",
596
+ "method": "GET"
597
+ },
598
+ {
599
+ "kind": "api",
600
+ "name": "auditlogs.get",
601
+ "operation": "get",
602
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
603
+ "path": "/auditlogs/[id]",
604
+ "method": "GET"
605
+ },
606
+ {
607
+ "kind": "cli",
608
+ "name": "auditlog_list",
609
+ "operation": "list",
610
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
611
+ },
612
+ {
613
+ "kind": "mcp",
614
+ "name": "auditlog_list",
615
+ "operation": "list",
616
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
617
+ },
618
+ {
619
+ "kind": "mcp",
620
+ "name": "auditlog_get",
621
+ "operation": "get",
622
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
623
+ }
624
+ ],
625
+ "relationshipFeatures": [
626
+ "foreignKey",
627
+ "uuidColumns"
628
+ ],
629
+ "tags": [],
630
+ "risks": []
631
+ },
632
+ {
633
+ "name": "MagicLinkToken",
634
+ "qualifiedName": "@happyvertical/smrt-profiles:MagicLinkToken",
635
+ "collection": "magiclinktokens",
636
+ "tableName": "magic_link_tokens",
637
+ "packageName": "@happyvertical/smrt-profiles",
638
+ "extends": "SmrtObject",
639
+ "fields": [
640
+ {
641
+ "name": "nostrIdentityId",
642
+ "type": "foreignKey",
643
+ "required": true,
644
+ "related": "NostrIdentity",
645
+ "columnType": "UUID"
646
+ },
647
+ {
648
+ "name": "tokenHash",
649
+ "type": "text",
650
+ "required": false,
651
+ "columnType": "TEXT"
652
+ },
653
+ {
654
+ "name": "email",
655
+ "type": "text",
656
+ "required": false,
657
+ "columnType": "TEXT"
658
+ },
659
+ {
660
+ "name": "expiresAt",
661
+ "type": "datetime",
662
+ "required": false,
663
+ "columnType": "TIMESTAMP"
664
+ },
665
+ {
666
+ "name": "usedAt",
667
+ "type": "datetime",
668
+ "required": false,
669
+ "columnType": "TIMESTAMP"
670
+ },
671
+ {
672
+ "name": "requestedFromIp",
673
+ "type": "text",
674
+ "required": false,
675
+ "columnType": "TEXT"
676
+ },
677
+ {
678
+ "name": "createdAt",
679
+ "type": "datetime",
680
+ "required": false,
681
+ "columnType": "TIMESTAMP"
682
+ }
683
+ ],
684
+ "relationships": [
685
+ {
686
+ "name": "nostrIdentityId",
687
+ "type": "foreignKey",
688
+ "required": true,
689
+ "related": "NostrIdentity",
690
+ "columnType": "UUID"
691
+ }
692
+ ],
693
+ "methods": [
694
+ "generate",
695
+ "getNostrIdentity",
696
+ "getTimeRemainingSeconds",
697
+ "hashToken",
698
+ "isExpired",
699
+ "isUsed",
700
+ "isValid",
701
+ "markUsed",
702
+ "verify"
703
+ ],
704
+ "surfaces": [
705
+ {
706
+ "kind": "api",
707
+ "name": "magiclinktokens.list",
708
+ "operation": "list",
709
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
710
+ "path": "/magiclinktokens",
711
+ "method": "GET"
712
+ },
713
+ {
714
+ "kind": "api",
715
+ "name": "magiclinktokens.get",
716
+ "operation": "get",
717
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
718
+ "path": "/magiclinktokens/[id]",
719
+ "method": "GET"
720
+ },
721
+ {
722
+ "kind": "api",
723
+ "name": "magiclinktokens.create",
724
+ "operation": "create",
725
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
726
+ "path": "/magiclinktokens",
727
+ "method": "POST"
728
+ },
729
+ {
730
+ "kind": "api",
731
+ "name": "magiclinktokens.update",
732
+ "operation": "update",
733
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
734
+ "path": "/magiclinktokens/[id]",
735
+ "method": "PATCH"
736
+ },
737
+ {
738
+ "kind": "api",
739
+ "name": "magiclinktokens.delete",
740
+ "operation": "delete",
741
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
742
+ "path": "/magiclinktokens/[id]",
743
+ "method": "DELETE"
744
+ },
745
+ {
746
+ "kind": "cli",
747
+ "name": "magiclinktoken_list",
748
+ "operation": "list",
749
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
750
+ },
751
+ {
752
+ "kind": "mcp",
753
+ "name": "magiclinktoken_list",
754
+ "operation": "list",
755
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
756
+ },
757
+ {
758
+ "kind": "mcp",
759
+ "name": "magiclinktoken_get",
760
+ "operation": "get",
761
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
762
+ },
763
+ {
764
+ "kind": "mcp",
765
+ "name": "magiclinktoken_create",
766
+ "operation": "create",
767
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
768
+ },
769
+ {
770
+ "kind": "mcp",
771
+ "name": "magiclinktoken_update",
772
+ "operation": "update",
773
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
774
+ },
775
+ {
776
+ "kind": "mcp",
777
+ "name": "magiclinktoken_delete",
778
+ "operation": "delete",
779
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
780
+ }
781
+ ],
782
+ "relationshipFeatures": [
783
+ "foreignKey",
784
+ "uuidColumns"
785
+ ],
786
+ "tags": [],
787
+ "risks": []
788
+ },
789
+ {
790
+ "name": "NostrIdentity",
791
+ "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentity",
792
+ "collection": "nostridentities",
793
+ "tableName": "nostr_identities",
794
+ "packageName": "@happyvertical/smrt-profiles",
795
+ "extends": "SmrtObject",
796
+ "fields": [
797
+ {
798
+ "name": "profileId",
799
+ "type": "foreignKey",
800
+ "required": true,
801
+ "related": "Profile",
802
+ "columnType": "UUID"
803
+ },
804
+ {
805
+ "name": "pubkey",
806
+ "type": "text",
807
+ "required": false,
808
+ "columnType": "TEXT"
809
+ },
810
+ {
811
+ "name": "encryptedPrivkey",
812
+ "type": "text",
813
+ "required": false,
814
+ "columnType": "TEXT"
815
+ },
816
+ {
817
+ "name": "encryptionIv",
818
+ "type": "text",
819
+ "required": false,
820
+ "columnType": "TEXT"
821
+ },
822
+ {
823
+ "name": "encryptionTag",
824
+ "type": "text",
825
+ "required": false,
826
+ "columnType": "TEXT"
827
+ },
828
+ {
829
+ "name": "email",
830
+ "type": "text",
831
+ "required": false,
832
+ "columnType": "TEXT"
833
+ },
834
+ {
835
+ "name": "nip05Username",
836
+ "type": "text",
837
+ "required": false,
838
+ "columnType": "TEXT"
839
+ },
840
+ {
841
+ "name": "lastUsedAt",
842
+ "type": "datetime",
843
+ "required": false,
844
+ "columnType": "TIMESTAMP"
845
+ },
846
+ {
847
+ "name": "verifiedAt",
848
+ "type": "datetime",
849
+ "required": false,
850
+ "columnType": "TIMESTAMP"
851
+ }
852
+ ],
853
+ "relationships": [
854
+ {
855
+ "name": "profileId",
856
+ "type": "foreignKey",
857
+ "required": true,
858
+ "related": "Profile",
859
+ "columnType": "UUID"
860
+ }
861
+ ],
862
+ "methods": [
863
+ "decryptPrivkey",
864
+ "findByEmail",
865
+ "findByNip05",
866
+ "findByPubkey",
867
+ "getKeypair",
868
+ "getNip05Identifier",
869
+ "getProfile",
870
+ "isVerified",
871
+ "markVerified",
872
+ "recordUsage"
873
+ ],
874
+ "surfaces": [
875
+ {
876
+ "kind": "api",
877
+ "name": "nostridentities.list",
878
+ "operation": "list",
879
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
880
+ "path": "/nostridentities",
881
+ "method": "GET"
882
+ },
883
+ {
884
+ "kind": "api",
885
+ "name": "nostridentities.get",
886
+ "operation": "get",
887
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
888
+ "path": "/nostridentities/[id]",
889
+ "method": "GET"
890
+ },
891
+ {
892
+ "kind": "cli",
893
+ "name": "nostridentity_list",
894
+ "operation": "list",
895
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
896
+ },
897
+ {
898
+ "kind": "cli",
899
+ "name": "nostridentity_get",
900
+ "operation": "get",
901
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
902
+ },
903
+ {
904
+ "kind": "mcp",
905
+ "name": "nostridentity_list",
906
+ "operation": "list",
907
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
908
+ },
909
+ {
910
+ "kind": "mcp",
911
+ "name": "nostridentity_get",
912
+ "operation": "get",
913
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
914
+ }
915
+ ],
916
+ "relationshipFeatures": [
917
+ "foreignKey",
918
+ "uuidColumns"
919
+ ],
920
+ "tags": [],
921
+ "risks": []
922
+ },
923
+ {
924
+ "name": "OidcIdentity",
925
+ "qualifiedName": "@happyvertical/smrt-profiles:OidcIdentity",
926
+ "collection": "oidcidentities",
927
+ "tableName": "oidc_identities",
928
+ "packageName": "@happyvertical/smrt-profiles",
929
+ "extends": "SmrtObject",
930
+ "fields": [
931
+ {
932
+ "name": "profileId",
933
+ "type": "foreignKey",
934
+ "required": true,
935
+ "related": "Profile",
936
+ "columnType": "UUID"
937
+ },
938
+ {
939
+ "name": "provider",
940
+ "type": "text",
941
+ "required": false,
942
+ "columnType": "TEXT"
943
+ },
944
+ {
945
+ "name": "issuer",
946
+ "type": "text",
947
+ "required": false,
948
+ "columnType": "TEXT"
949
+ },
950
+ {
951
+ "name": "subject",
952
+ "type": "text",
953
+ "required": false,
954
+ "columnType": "TEXT"
955
+ },
956
+ {
957
+ "name": "email",
958
+ "type": "text",
959
+ "required": false,
960
+ "columnType": "TEXT"
961
+ },
962
+ {
963
+ "name": "lastUsedAt",
964
+ "type": "datetime",
965
+ "required": false,
966
+ "columnType": "TIMESTAMP"
967
+ }
968
+ ],
969
+ "relationships": [
970
+ {
971
+ "name": "profileId",
972
+ "type": "foreignKey",
973
+ "required": true,
974
+ "related": "Profile",
975
+ "columnType": "UUID"
976
+ }
977
+ ],
978
+ "methods": [
979
+ "findBySubject",
980
+ "findOrCreate",
981
+ "getProfile",
982
+ "recordUsage"
983
+ ],
984
+ "surfaces": [
985
+ {
986
+ "kind": "api",
987
+ "name": "oidcidentities.list",
988
+ "operation": "list",
989
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
990
+ "path": "/oidcidentities",
991
+ "method": "GET"
992
+ },
993
+ {
994
+ "kind": "api",
995
+ "name": "oidcidentities.get",
996
+ "operation": "get",
997
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
998
+ "path": "/oidcidentities/[id]",
999
+ "method": "GET"
1000
+ },
1001
+ {
1002
+ "kind": "api",
1003
+ "name": "oidcidentities.create",
1004
+ "operation": "create",
1005
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
1006
+ "path": "/oidcidentities",
1007
+ "method": "POST"
1008
+ },
1009
+ {
1010
+ "kind": "api",
1011
+ "name": "oidcidentities.update",
1012
+ "operation": "update",
1013
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
1014
+ "path": "/oidcidentities/[id]",
1015
+ "method": "PATCH"
1016
+ },
1017
+ {
1018
+ "kind": "cli",
1019
+ "name": "oidcidentity_list",
1020
+ "operation": "list",
1021
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1022
+ },
1023
+ {
1024
+ "kind": "cli",
1025
+ "name": "oidcidentity_get",
1026
+ "operation": "get",
1027
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1028
+ },
1029
+ {
1030
+ "kind": "mcp",
1031
+ "name": "oidcidentity_list",
1032
+ "operation": "list",
1033
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1034
+ },
1035
+ {
1036
+ "kind": "mcp",
1037
+ "name": "oidcidentity_get",
1038
+ "operation": "get",
1039
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1040
+ }
1041
+ ],
1042
+ "relationshipFeatures": [
1043
+ "foreignKey",
1044
+ "uuidColumns"
1045
+ ],
1046
+ "tags": [],
1047
+ "risks": []
1048
+ },
1049
+ {
1050
+ "name": "Profile",
1051
+ "qualifiedName": "@happyvertical/smrt-profiles:Profile",
1052
+ "collection": "profiles",
1053
+ "tableName": "profiles",
1054
+ "packageName": "@happyvertical/smrt-profiles",
1055
+ "extends": "SmrtObject",
1056
+ "fields": [
1057
+ {
1058
+ "name": "created_at",
1059
+ "type": "datetime",
1060
+ "required": false,
1061
+ "columnType": "TIMESTAMP"
1062
+ },
1063
+ {
1064
+ "name": "updated_at",
1065
+ "type": "datetime",
1066
+ "required": false,
1067
+ "columnType": "TIMESTAMP"
1068
+ },
1069
+ {
1070
+ "name": "tenantId",
1071
+ "type": "text",
1072
+ "required": false,
1073
+ "columnType": "UUID"
1074
+ },
1075
+ {
1076
+ "name": "typeId",
1077
+ "type": "foreignKey",
1078
+ "required": true,
1079
+ "related": "ProfileType",
1080
+ "columnType": "UUID"
1081
+ },
1082
+ {
1083
+ "name": "email",
1084
+ "type": "text",
1085
+ "required": false,
1086
+ "columnType": "TEXT"
1087
+ },
1088
+ {
1089
+ "name": "name",
1090
+ "type": "text",
1091
+ "required": true,
1092
+ "columnType": "TEXT"
1093
+ },
1094
+ {
1095
+ "name": "description",
1096
+ "type": "text",
1097
+ "required": false,
1098
+ "columnType": "TEXT"
1099
+ },
1100
+ {
1101
+ "name": "metadata",
1102
+ "type": "oneToMany",
1103
+ "required": false,
1104
+ "related": "ProfileMetadata"
1105
+ },
1106
+ {
1107
+ "name": "relationshipsFrom",
1108
+ "type": "oneToMany",
1109
+ "required": false,
1110
+ "related": "ProfileRelationship"
1111
+ },
1112
+ {
1113
+ "name": "relationshipsTo",
1114
+ "type": "oneToMany",
1115
+ "required": false,
1116
+ "related": "ProfileRelationship"
1117
+ }
1118
+ ],
1119
+ "relationships": [
1120
+ {
1121
+ "name": "typeId",
1122
+ "type": "foreignKey",
1123
+ "required": true,
1124
+ "related": "ProfileType",
1125
+ "columnType": "UUID"
1126
+ },
1127
+ {
1128
+ "name": "metadata",
1129
+ "type": "oneToMany",
1130
+ "required": false,
1131
+ "related": "ProfileMetadata"
1132
+ },
1133
+ {
1134
+ "name": "relationshipsFrom",
1135
+ "type": "oneToMany",
1136
+ "required": false,
1137
+ "related": "ProfileRelationship"
1138
+ },
1139
+ {
1140
+ "name": "relationshipsTo",
1141
+ "type": "oneToMany",
1142
+ "required": false,
1143
+ "related": "ProfileRelationship"
1144
+ }
1145
+ ],
1146
+ "methods": [
1147
+ "addAsset",
1148
+ "addMetadata",
1149
+ "addRelationship",
1150
+ "classifyConstraintError",
1151
+ "clearEmbeddings",
1152
+ "delete",
1153
+ "describe",
1154
+ "destroy",
1155
+ "do",
1156
+ "executeToolCall",
1157
+ "findByMetadata",
1158
+ "findByType",
1159
+ "findRelated",
1160
+ "forget",
1161
+ "forgetScope",
1162
+ "generateApiKey",
1163
+ "generateBio",
1164
+ "generateEmbeddings",
1165
+ "getActiveApiKeys",
1166
+ "getAiUsageSnapshot",
1167
+ "getApiKeys",
1168
+ "getAssets",
1169
+ "getAuditLogs",
1170
+ "getAvailableTools",
1171
+ "getEmbedding",
1172
+ "getFields",
1173
+ "getId",
1174
+ "getMetadata",
1175
+ "getNostrIdentities",
1176
+ "getOidcIdentities",
1177
+ "getRelated",
1178
+ "getRelatedProfiles",
1179
+ "getRelationships",
1180
+ "getSavedId",
1181
+ "getSlug",
1182
+ "getTypeSlug",
1183
+ "hasStaleEmbeddings",
1184
+ "initialize",
1185
+ "is",
1186
+ "isRelatedLoaded",
1187
+ "isSaved",
1188
+ "linkNostrIdentity",
1189
+ "linkOidcIdentity",
1190
+ "listAiUsage",
1191
+ "loadDataFromDb",
1192
+ "loadFromId",
1193
+ "loadFromSlug",
1194
+ "loadRelated",
1195
+ "loadRelatedMany",
1196
+ "markAsPersisted",
1197
+ "matches",
1198
+ "recall",
1199
+ "recallAll",
1200
+ "recordAction",
1201
+ "remember",
1202
+ "removeAsset",
1203
+ "removeMetadata",
1204
+ "removeRelationship",
1205
+ "resetAiUsage",
1206
+ "save",
1207
+ "searchByEmail",
1208
+ "setTypeBySlug",
1209
+ "summarizeAiUsage",
1210
+ "toJSON",
1211
+ "toPlainObject",
1212
+ "toPublicJSON",
1213
+ "updateMetadata"
1214
+ ],
1215
+ "surfaces": [
1216
+ {
1217
+ "kind": "api",
1218
+ "name": "profiles.list",
1219
+ "operation": "list",
1220
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1221
+ "path": "/profiles",
1222
+ "method": "GET"
1223
+ },
1224
+ {
1225
+ "kind": "api",
1226
+ "name": "profiles.get",
1227
+ "operation": "get",
1228
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1229
+ "path": "/profiles/[id]",
1230
+ "method": "GET"
1231
+ },
1232
+ {
1233
+ "kind": "api",
1234
+ "name": "profiles.create",
1235
+ "operation": "create",
1236
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1237
+ "path": "/profiles",
1238
+ "method": "POST"
1239
+ },
1240
+ {
1241
+ "kind": "api",
1242
+ "name": "profiles.update",
1243
+ "operation": "update",
1244
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1245
+ "path": "/profiles/[id]",
1246
+ "method": "PATCH"
1247
+ },
1248
+ {
1249
+ "kind": "api",
1250
+ "name": "profiles.delete",
1251
+ "operation": "delete",
1252
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1253
+ "path": "/profiles/[id]",
1254
+ "method": "DELETE"
1255
+ },
1256
+ {
1257
+ "kind": "cli",
1258
+ "name": "profile_list",
1259
+ "operation": "list",
1260
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1261
+ },
1262
+ {
1263
+ "kind": "cli",
1264
+ "name": "profile_get",
1265
+ "operation": "get",
1266
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1267
+ },
1268
+ {
1269
+ "kind": "cli",
1270
+ "name": "profile_create",
1271
+ "operation": "create",
1272
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1273
+ },
1274
+ {
1275
+ "kind": "cli",
1276
+ "name": "profile_update",
1277
+ "operation": "update",
1278
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1279
+ },
1280
+ {
1281
+ "kind": "cli",
1282
+ "name": "profile_delete",
1283
+ "operation": "delete",
1284
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1285
+ },
1286
+ {
1287
+ "kind": "mcp",
1288
+ "name": "profile_list",
1289
+ "operation": "list",
1290
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1291
+ },
1292
+ {
1293
+ "kind": "mcp",
1294
+ "name": "profile_get",
1295
+ "operation": "get",
1296
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1297
+ },
1298
+ {
1299
+ "kind": "mcp",
1300
+ "name": "profile_create",
1301
+ "operation": "create",
1302
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1303
+ },
1304
+ {
1305
+ "kind": "mcp",
1306
+ "name": "profile_update",
1307
+ "operation": "update",
1308
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1309
+ }
1310
+ ],
1311
+ "relationshipFeatures": [
1312
+ "foreignKey",
1313
+ "oneToMany",
1314
+ "uuidColumns"
1315
+ ],
1316
+ "tags": [],
1317
+ "risks": []
1318
+ },
1319
+ {
1320
+ "name": "ProfileAsset",
1321
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileAsset",
1322
+ "collection": "profileassets",
1323
+ "tableName": "profile_assets",
1324
+ "packageName": "@happyvertical/smrt-profiles",
1325
+ "extends": "SmrtObject",
1326
+ "fields": [
1327
+ {
1328
+ "name": "tenantId",
1329
+ "type": "text",
1330
+ "required": false,
1331
+ "columnType": "UUID"
1332
+ },
1333
+ {
1334
+ "name": "profileId",
1335
+ "type": "foreignKey",
1336
+ "required": true,
1337
+ "related": "Profile",
1338
+ "columnType": "UUID"
1339
+ },
1340
+ {
1341
+ "name": "assetId",
1342
+ "type": "crossPackageRef",
1343
+ "required": true,
1344
+ "related": "@happyvertical/smrt-assets:Asset",
1345
+ "columnType": "UUID"
1346
+ },
1347
+ {
1348
+ "name": "relationship",
1349
+ "type": "text",
1350
+ "required": true,
1351
+ "columnType": "TEXT"
1352
+ },
1353
+ {
1354
+ "name": "sortOrder",
1355
+ "type": "integer",
1356
+ "required": true,
1357
+ "columnType": "INTEGER"
1358
+ }
1359
+ ],
1360
+ "relationships": [
1361
+ {
1362
+ "name": "profileId",
1363
+ "type": "foreignKey",
1364
+ "required": true,
1365
+ "related": "Profile",
1366
+ "columnType": "UUID"
1367
+ },
1368
+ {
1369
+ "name": "assetId",
1370
+ "type": "crossPackageRef",
1371
+ "required": true,
1372
+ "related": "@happyvertical/smrt-assets:Asset",
1373
+ "columnType": "UUID"
1374
+ }
1375
+ ],
1376
+ "methods": [],
1377
+ "surfaces": [],
1378
+ "relationshipFeatures": [
1379
+ "crossPackageRef",
1380
+ "foreignKey",
1381
+ "uuidColumns"
1382
+ ],
1383
+ "tags": [],
1384
+ "risks": []
1385
+ },
1386
+ {
1387
+ "name": "ProfileMetadata",
1388
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetadata",
1389
+ "collection": "profilemetadatas",
1390
+ "tableName": "profile_metadata",
1391
+ "packageName": "@happyvertical/smrt-profiles",
1392
+ "extends": "SmrtObject",
1393
+ "fields": [
1394
+ {
1395
+ "name": "created_at",
1396
+ "type": "datetime",
1397
+ "required": false,
1398
+ "columnType": "TIMESTAMP"
1399
+ },
1400
+ {
1401
+ "name": "updated_at",
1402
+ "type": "datetime",
1403
+ "required": false,
1404
+ "columnType": "TIMESTAMP"
1405
+ },
1406
+ {
1407
+ "name": "tenantId",
1408
+ "type": "text",
1409
+ "required": false,
1410
+ "columnType": "UUID"
1411
+ },
1412
+ {
1413
+ "name": "profileId",
1414
+ "type": "foreignKey",
1415
+ "required": true,
1416
+ "related": "Profile",
1417
+ "columnType": "UUID"
1418
+ },
1419
+ {
1420
+ "name": "metafieldId",
1421
+ "type": "foreignKey",
1422
+ "required": true,
1423
+ "related": "ProfileMetafield",
1424
+ "columnType": "UUID"
1425
+ },
1426
+ {
1427
+ "name": "value",
1428
+ "type": "text",
1429
+ "required": true,
1430
+ "columnType": "TEXT"
1431
+ }
1432
+ ],
1433
+ "relationships": [
1434
+ {
1435
+ "name": "profileId",
1436
+ "type": "foreignKey",
1437
+ "required": true,
1438
+ "related": "Profile",
1439
+ "columnType": "UUID"
1440
+ },
1441
+ {
1442
+ "name": "metafieldId",
1443
+ "type": "foreignKey",
1444
+ "required": true,
1445
+ "related": "ProfileMetafield",
1446
+ "columnType": "UUID"
1447
+ }
1448
+ ],
1449
+ "methods": [
1450
+ "classifyConstraintError",
1451
+ "clearEmbeddings",
1452
+ "delete",
1453
+ "describe",
1454
+ "destroy",
1455
+ "do",
1456
+ "executeToolCall",
1457
+ "forget",
1458
+ "forgetScope",
1459
+ "generateEmbeddings",
1460
+ "getAiUsageSnapshot",
1461
+ "getAvailableTools",
1462
+ "getEmbedding",
1463
+ "getFields",
1464
+ "getId",
1465
+ "getMetafieldSlug",
1466
+ "getRelated",
1467
+ "getSavedId",
1468
+ "getSlug",
1469
+ "hasStaleEmbeddings",
1470
+ "initialize",
1471
+ "is",
1472
+ "isRelatedLoaded",
1473
+ "isSaved",
1474
+ "listAiUsage",
1475
+ "loadDataFromDb",
1476
+ "loadFromId",
1477
+ "loadFromSlug",
1478
+ "loadRelated",
1479
+ "loadRelatedMany",
1480
+ "markAsPersisted",
1481
+ "recall",
1482
+ "recallAll",
1483
+ "remember",
1484
+ "resetAiUsage",
1485
+ "save",
1486
+ "summarizeAiUsage",
1487
+ "toJSON",
1488
+ "toPlainObject",
1489
+ "toPublicJSON",
1490
+ "validate"
1491
+ ],
1492
+ "surfaces": [
1493
+ {
1494
+ "kind": "api",
1495
+ "name": "profilemetadatas.list",
1496
+ "operation": "list",
1497
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1498
+ "path": "/profilemetadatas",
1499
+ "method": "GET"
1500
+ },
1501
+ {
1502
+ "kind": "api",
1503
+ "name": "profilemetadatas.get",
1504
+ "operation": "get",
1505
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1506
+ "path": "/profilemetadatas/[id]",
1507
+ "method": "GET"
1508
+ },
1509
+ {
1510
+ "kind": "api",
1511
+ "name": "profilemetadatas.create",
1512
+ "operation": "create",
1513
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1514
+ "path": "/profilemetadatas",
1515
+ "method": "POST"
1516
+ },
1517
+ {
1518
+ "kind": "api",
1519
+ "name": "profilemetadatas.update",
1520
+ "operation": "update",
1521
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1522
+ "path": "/profilemetadatas/[id]",
1523
+ "method": "PATCH"
1524
+ },
1525
+ {
1526
+ "kind": "api",
1527
+ "name": "profilemetadatas.delete",
1528
+ "operation": "delete",
1529
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1530
+ "path": "/profilemetadatas/[id]",
1531
+ "method": "DELETE"
1532
+ },
1533
+ {
1534
+ "kind": "cli",
1535
+ "name": "profilemetadata_list",
1536
+ "operation": "list",
1537
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1538
+ },
1539
+ {
1540
+ "kind": "cli",
1541
+ "name": "profilemetadata_get",
1542
+ "operation": "get",
1543
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1544
+ },
1545
+ {
1546
+ "kind": "cli",
1547
+ "name": "profilemetadata_create",
1548
+ "operation": "create",
1549
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1550
+ },
1551
+ {
1552
+ "kind": "cli",
1553
+ "name": "profilemetadata_update",
1554
+ "operation": "update",
1555
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1556
+ },
1557
+ {
1558
+ "kind": "cli",
1559
+ "name": "profilemetadata_delete",
1560
+ "operation": "delete",
1561
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1562
+ },
1563
+ {
1564
+ "kind": "mcp",
1565
+ "name": "profilemetadata_list",
1566
+ "operation": "list",
1567
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1568
+ },
1569
+ {
1570
+ "kind": "mcp",
1571
+ "name": "profilemetadata_get",
1572
+ "operation": "get",
1573
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1574
+ }
1575
+ ],
1576
+ "relationshipFeatures": [
1577
+ "foreignKey",
1578
+ "uuidColumns"
1579
+ ],
1580
+ "tags": [],
1581
+ "risks": []
1582
+ },
1583
+ {
1584
+ "name": "ProfileMetafield",
1585
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetafield",
1586
+ "collection": "profilemetafields",
1587
+ "tableName": "profile_metafields",
1588
+ "packageName": "@happyvertical/smrt-profiles",
1589
+ "extends": "SmrtObject",
1590
+ "fields": [
1591
+ {
1592
+ "name": "created_at",
1593
+ "type": "datetime",
1594
+ "required": false,
1595
+ "columnType": "TIMESTAMP"
1596
+ },
1597
+ {
1598
+ "name": "updated_at",
1599
+ "type": "datetime",
1600
+ "required": false,
1601
+ "columnType": "TIMESTAMP"
1602
+ },
1603
+ {
1604
+ "name": "tenantId",
1605
+ "type": "text",
1606
+ "required": false,
1607
+ "columnType": "UUID"
1608
+ },
1609
+ {
1610
+ "name": "name",
1611
+ "type": "text",
1612
+ "required": true,
1613
+ "columnType": "TEXT"
1614
+ },
1615
+ {
1616
+ "name": "description",
1617
+ "type": "text",
1618
+ "required": false,
1619
+ "columnType": "TEXT"
1620
+ },
1621
+ {
1622
+ "name": "validation",
1623
+ "type": "json",
1624
+ "required": false,
1625
+ "columnType": "JSON"
1626
+ }
1627
+ ],
1628
+ "relationships": [],
1629
+ "methods": [
1630
+ "classifyConstraintError",
1631
+ "clearEmbeddings",
1632
+ "delete",
1633
+ "describe",
1634
+ "destroy",
1635
+ "do",
1636
+ "executeToolCall",
1637
+ "forget",
1638
+ "forgetScope",
1639
+ "generateEmbeddings",
1640
+ "getAiUsageSnapshot",
1641
+ "getAvailableTools",
1642
+ "getBySlug",
1643
+ "getEmbedding",
1644
+ "getFields",
1645
+ "getId",
1646
+ "getRelated",
1647
+ "getSavedId",
1648
+ "getSlug",
1649
+ "getValidator",
1650
+ "hasStaleEmbeddings",
1651
+ "initialize",
1652
+ "is",
1653
+ "isRelatedLoaded",
1654
+ "isSaved",
1655
+ "listAiUsage",
1656
+ "loadDataFromDb",
1657
+ "loadFromId",
1658
+ "loadFromSlug",
1659
+ "loadRelated",
1660
+ "loadRelatedMany",
1661
+ "markAsPersisted",
1662
+ "recall",
1663
+ "recallAll",
1664
+ "registerValidator",
1665
+ "remember",
1666
+ "resetAiUsage",
1667
+ "save",
1668
+ "summarizeAiUsage",
1669
+ "toJSON",
1670
+ "toPlainObject",
1671
+ "toPublicJSON",
1672
+ "validateValue"
1673
+ ],
1674
+ "surfaces": [
1675
+ {
1676
+ "kind": "api",
1677
+ "name": "profilemetafields.list",
1678
+ "operation": "list",
1679
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1680
+ "path": "/profilemetafields",
1681
+ "method": "GET"
1682
+ },
1683
+ {
1684
+ "kind": "api",
1685
+ "name": "profilemetafields.get",
1686
+ "operation": "get",
1687
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1688
+ "path": "/profilemetafields/[id]",
1689
+ "method": "GET"
1690
+ },
1691
+ {
1692
+ "kind": "api",
1693
+ "name": "profilemetafields.create",
1694
+ "operation": "create",
1695
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1696
+ "path": "/profilemetafields",
1697
+ "method": "POST"
1698
+ },
1699
+ {
1700
+ "kind": "api",
1701
+ "name": "profilemetafields.update",
1702
+ "operation": "update",
1703
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1704
+ "path": "/profilemetafields/[id]",
1705
+ "method": "PATCH"
1706
+ },
1707
+ {
1708
+ "kind": "cli",
1709
+ "name": "profilemetafield_list",
1710
+ "operation": "list",
1711
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1712
+ },
1713
+ {
1714
+ "kind": "cli",
1715
+ "name": "profilemetafield_get",
1716
+ "operation": "get",
1717
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1718
+ },
1719
+ {
1720
+ "kind": "cli",
1721
+ "name": "profilemetafield_create",
1722
+ "operation": "create",
1723
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1724
+ },
1725
+ {
1726
+ "kind": "cli",
1727
+ "name": "profilemetafield_update",
1728
+ "operation": "update",
1729
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1730
+ },
1731
+ {
1732
+ "kind": "cli",
1733
+ "name": "profilemetafield_delete",
1734
+ "operation": "delete",
1735
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1736
+ },
1737
+ {
1738
+ "kind": "mcp",
1739
+ "name": "profilemetafield_list",
1740
+ "operation": "list",
1741
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1742
+ },
1743
+ {
1744
+ "kind": "mcp",
1745
+ "name": "profilemetafield_get",
1746
+ "operation": "get",
1747
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1748
+ }
1749
+ ],
1750
+ "relationshipFeatures": [
1751
+ "uuidColumns"
1752
+ ],
1753
+ "tags": [],
1754
+ "risks": []
1755
+ },
1756
+ {
1757
+ "name": "ProfileRelationship",
1758
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationship",
1759
+ "collection": "profilerelationships",
1760
+ "tableName": "profile_relationships",
1761
+ "packageName": "@happyvertical/smrt-profiles",
1762
+ "extends": "SmrtObject",
1763
+ "fields": [
1764
+ {
1765
+ "name": "created_at",
1766
+ "type": "datetime",
1767
+ "required": false,
1768
+ "columnType": "TIMESTAMP"
1769
+ },
1770
+ {
1771
+ "name": "updated_at",
1772
+ "type": "datetime",
1773
+ "required": false,
1774
+ "columnType": "TIMESTAMP"
1775
+ },
1776
+ {
1777
+ "name": "tenantId",
1778
+ "type": "text",
1779
+ "required": false,
1780
+ "columnType": "UUID"
1781
+ },
1782
+ {
1783
+ "name": "fromProfileId",
1784
+ "type": "foreignKey",
1785
+ "required": true,
1786
+ "related": "Profile",
1787
+ "columnType": "UUID"
1788
+ },
1789
+ {
1790
+ "name": "toProfileId",
1791
+ "type": "foreignKey",
1792
+ "required": true,
1793
+ "related": "Profile",
1794
+ "columnType": "UUID"
1795
+ },
1796
+ {
1797
+ "name": "typeId",
1798
+ "type": "foreignKey",
1799
+ "required": true,
1800
+ "related": "ProfileRelationshipType",
1801
+ "columnType": "UUID"
1802
+ },
1803
+ {
1804
+ "name": "contextProfileId",
1805
+ "type": "foreignKey",
1806
+ "required": false,
1807
+ "related": "Profile",
1808
+ "columnType": "UUID"
1809
+ },
1810
+ {
1811
+ "name": "terms",
1812
+ "type": "oneToMany",
1813
+ "required": false,
1814
+ "related": "ProfileRelationshipTerm"
1815
+ }
1816
+ ],
1817
+ "relationships": [
1818
+ {
1819
+ "name": "fromProfileId",
1820
+ "type": "foreignKey",
1821
+ "required": true,
1822
+ "related": "Profile",
1823
+ "columnType": "UUID"
1824
+ },
1825
+ {
1826
+ "name": "toProfileId",
1827
+ "type": "foreignKey",
1828
+ "required": true,
1829
+ "related": "Profile",
1830
+ "columnType": "UUID"
1831
+ },
1832
+ {
1833
+ "name": "typeId",
1834
+ "type": "foreignKey",
1835
+ "required": true,
1836
+ "related": "ProfileRelationshipType",
1837
+ "columnType": "UUID"
1838
+ },
1839
+ {
1840
+ "name": "contextProfileId",
1841
+ "type": "foreignKey",
1842
+ "required": false,
1843
+ "related": "Profile",
1844
+ "columnType": "UUID"
1845
+ },
1846
+ {
1847
+ "name": "terms",
1848
+ "type": "oneToMany",
1849
+ "required": false,
1850
+ "related": "ProfileRelationshipTerm"
1851
+ }
1852
+ ],
1853
+ "methods": [
1854
+ "addTerm",
1855
+ "classifyConstraintError",
1856
+ "clearEmbeddings",
1857
+ "delete",
1858
+ "describe",
1859
+ "destroy",
1860
+ "do",
1861
+ "endCurrentTerm",
1862
+ "executeToolCall",
1863
+ "forget",
1864
+ "forgetScope",
1865
+ "generateEmbeddings",
1866
+ "getActiveTerm",
1867
+ "getAiUsageSnapshot",
1868
+ "getAvailableTools",
1869
+ "getEmbedding",
1870
+ "getFields",
1871
+ "getId",
1872
+ "getRelated",
1873
+ "getSavedId",
1874
+ "getSlug",
1875
+ "getTerms",
1876
+ "getTypeSlug",
1877
+ "hasStaleEmbeddings",
1878
+ "initialize",
1879
+ "is",
1880
+ "isRelatedLoaded",
1881
+ "isSaved",
1882
+ "listAiUsage",
1883
+ "loadDataFromDb",
1884
+ "loadFromId",
1885
+ "loadFromSlug",
1886
+ "loadRelated",
1887
+ "loadRelatedMany",
1888
+ "markAsPersisted",
1889
+ "recall",
1890
+ "recallAll",
1891
+ "remember",
1892
+ "resetAiUsage",
1893
+ "save",
1894
+ "summarizeAiUsage",
1895
+ "toJSON",
1896
+ "toPlainObject",
1897
+ "toPublicJSON"
1898
+ ],
1899
+ "surfaces": [
1900
+ {
1901
+ "kind": "api",
1902
+ "name": "profilerelationships.list",
1903
+ "operation": "list",
1904
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1905
+ "path": "/profilerelationships",
1906
+ "method": "GET"
1907
+ },
1908
+ {
1909
+ "kind": "api",
1910
+ "name": "profilerelationships.get",
1911
+ "operation": "get",
1912
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1913
+ "path": "/profilerelationships/[id]",
1914
+ "method": "GET"
1915
+ },
1916
+ {
1917
+ "kind": "api",
1918
+ "name": "profilerelationships.create",
1919
+ "operation": "create",
1920
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1921
+ "path": "/profilerelationships",
1922
+ "method": "POST"
1923
+ },
1924
+ {
1925
+ "kind": "api",
1926
+ "name": "profilerelationships.delete",
1927
+ "operation": "delete",
1928
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1929
+ "path": "/profilerelationships/[id]",
1930
+ "method": "DELETE"
1931
+ },
1932
+ {
1933
+ "kind": "cli",
1934
+ "name": "profilerelationship_list",
1935
+ "operation": "list",
1936
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1937
+ },
1938
+ {
1939
+ "kind": "cli",
1940
+ "name": "profilerelationship_get",
1941
+ "operation": "get",
1942
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1943
+ },
1944
+ {
1945
+ "kind": "cli",
1946
+ "name": "profilerelationship_create",
1947
+ "operation": "create",
1948
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1949
+ },
1950
+ {
1951
+ "kind": "cli",
1952
+ "name": "profilerelationship_update",
1953
+ "operation": "update",
1954
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1955
+ },
1956
+ {
1957
+ "kind": "cli",
1958
+ "name": "profilerelationship_delete",
1959
+ "operation": "delete",
1960
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1961
+ },
1962
+ {
1963
+ "kind": "mcp",
1964
+ "name": "profilerelationship_list",
1965
+ "operation": "list",
1966
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1967
+ },
1968
+ {
1969
+ "kind": "mcp",
1970
+ "name": "profilerelationship_get",
1971
+ "operation": "get",
1972
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1973
+ }
1974
+ ],
1975
+ "relationshipFeatures": [
1976
+ "foreignKey",
1977
+ "oneToMany",
1978
+ "uuidColumns"
1979
+ ],
1980
+ "tags": [],
1981
+ "risks": []
1982
+ },
1983
+ {
1984
+ "name": "ProfileRelationshipTerm",
1985
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1986
+ "collection": "profilerelationshipterms",
1987
+ "tableName": "profile_relationship_terms",
1988
+ "packageName": "@happyvertical/smrt-profiles",
1989
+ "extends": "SmrtObject",
1990
+ "fields": [
1991
+ {
1992
+ "name": "created_at",
1993
+ "type": "datetime",
1994
+ "required": false,
1995
+ "columnType": "TIMESTAMP"
1996
+ },
1997
+ {
1998
+ "name": "updated_at",
1999
+ "type": "datetime",
2000
+ "required": false,
2001
+ "columnType": "TIMESTAMP"
2002
+ },
2003
+ {
2004
+ "name": "relationshipId",
2005
+ "type": "foreignKey",
2006
+ "required": true,
2007
+ "related": "ProfileRelationship",
2008
+ "columnType": "UUID"
2009
+ },
2010
+ {
2011
+ "name": "startedAt",
2012
+ "type": "datetime",
2013
+ "required": true,
2014
+ "columnType": "TIMESTAMP"
2015
+ },
2016
+ {
2017
+ "name": "endedAt",
2018
+ "type": "datetime",
2019
+ "required": false,
2020
+ "columnType": "TIMESTAMP"
2021
+ }
2022
+ ],
2023
+ "relationships": [
2024
+ {
2025
+ "name": "relationshipId",
2026
+ "type": "foreignKey",
2027
+ "required": true,
2028
+ "related": "ProfileRelationship",
2029
+ "columnType": "UUID"
2030
+ }
2031
+ ],
2032
+ "methods": [
2033
+ "classifyConstraintError",
2034
+ "clearEmbeddings",
2035
+ "delete",
2036
+ "describe",
2037
+ "destroy",
2038
+ "do",
2039
+ "end",
2040
+ "executeToolCall",
2041
+ "forget",
2042
+ "forgetScope",
2043
+ "generateEmbeddings",
2044
+ "getAiUsageSnapshot",
2045
+ "getAvailableTools",
2046
+ "getDurationDays",
2047
+ "getEmbedding",
2048
+ "getFields",
2049
+ "getId",
2050
+ "getRelated",
2051
+ "getSavedId",
2052
+ "getSlug",
2053
+ "hasStaleEmbeddings",
2054
+ "initialize",
2055
+ "is",
2056
+ "isActive",
2057
+ "isRelatedLoaded",
2058
+ "isSaved",
2059
+ "listAiUsage",
2060
+ "loadDataFromDb",
2061
+ "loadFromId",
2062
+ "loadFromSlug",
2063
+ "loadRelated",
2064
+ "loadRelatedMany",
2065
+ "markAsPersisted",
2066
+ "recall",
2067
+ "recallAll",
2068
+ "remember",
2069
+ "resetAiUsage",
2070
+ "save",
2071
+ "summarizeAiUsage",
2072
+ "toJSON",
2073
+ "toPlainObject",
2074
+ "toPublicJSON"
2075
+ ],
2076
+ "surfaces": [
2077
+ {
2078
+ "kind": "api",
2079
+ "name": "profilerelationshipterms.list",
2080
+ "operation": "list",
2081
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2082
+ "path": "/profilerelationshipterms",
2083
+ "method": "GET"
2084
+ },
2085
+ {
2086
+ "kind": "api",
2087
+ "name": "profilerelationshipterms.get",
2088
+ "operation": "get",
2089
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2090
+ "path": "/profilerelationshipterms/[id]",
2091
+ "method": "GET"
2092
+ },
2093
+ {
2094
+ "kind": "api",
2095
+ "name": "profilerelationshipterms.create",
2096
+ "operation": "create",
2097
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2098
+ "path": "/profilerelationshipterms",
2099
+ "method": "POST"
2100
+ },
2101
+ {
2102
+ "kind": "api",
2103
+ "name": "profilerelationshipterms.update",
2104
+ "operation": "update",
2105
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2106
+ "path": "/profilerelationshipterms/[id]",
2107
+ "method": "PATCH"
2108
+ },
2109
+ {
2110
+ "kind": "api",
2111
+ "name": "profilerelationshipterms.delete",
2112
+ "operation": "delete",
2113
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2114
+ "path": "/profilerelationshipterms/[id]",
2115
+ "method": "DELETE"
2116
+ },
2117
+ {
2118
+ "kind": "cli",
2119
+ "name": "profilerelationshipterm_list",
2120
+ "operation": "list",
2121
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2122
+ },
2123
+ {
2124
+ "kind": "cli",
2125
+ "name": "profilerelationshipterm_get",
2126
+ "operation": "get",
2127
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2128
+ },
2129
+ {
2130
+ "kind": "cli",
2131
+ "name": "profilerelationshipterm_create",
2132
+ "operation": "create",
2133
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2134
+ },
2135
+ {
2136
+ "kind": "cli",
2137
+ "name": "profilerelationshipterm_update",
2138
+ "operation": "update",
2139
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2140
+ },
2141
+ {
2142
+ "kind": "cli",
2143
+ "name": "profilerelationshipterm_delete",
2144
+ "operation": "delete",
2145
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2146
+ },
2147
+ {
2148
+ "kind": "mcp",
2149
+ "name": "profilerelationshipterm_list",
2150
+ "operation": "list",
2151
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2152
+ },
2153
+ {
2154
+ "kind": "mcp",
2155
+ "name": "profilerelationshipterm_get",
2156
+ "operation": "get",
2157
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2158
+ }
2159
+ ],
2160
+ "relationshipFeatures": [
2161
+ "foreignKey",
2162
+ "uuidColumns"
2163
+ ],
2164
+ "tags": [],
2165
+ "risks": []
2166
+ },
2167
+ {
2168
+ "name": "ProfileRelationshipType",
2169
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2170
+ "collection": "profilerelationshiptypes",
2171
+ "tableName": "profile_relationship_types",
2172
+ "packageName": "@happyvertical/smrt-profiles",
2173
+ "extends": "SmrtObject",
2174
+ "fields": [
2175
+ {
2176
+ "name": "created_at",
2177
+ "type": "datetime",
2178
+ "required": false,
2179
+ "columnType": "TIMESTAMP"
2180
+ },
2181
+ {
2182
+ "name": "updated_at",
2183
+ "type": "datetime",
2184
+ "required": false,
2185
+ "columnType": "TIMESTAMP"
2186
+ },
2187
+ {
2188
+ "name": "name",
2189
+ "type": "text",
2190
+ "required": true,
2191
+ "columnType": "TEXT"
2192
+ },
2193
+ {
2194
+ "name": "reciprocal",
2195
+ "type": "boolean",
2196
+ "required": false,
2197
+ "columnType": "BOOLEAN"
2198
+ }
2199
+ ],
2200
+ "relationships": [],
2201
+ "methods": [
2202
+ "classifyConstraintError",
2203
+ "clearEmbeddings",
2204
+ "delete",
2205
+ "describe",
2206
+ "destroy",
2207
+ "do",
2208
+ "executeToolCall",
2209
+ "forget",
2210
+ "forgetScope",
2211
+ "generateEmbeddings",
2212
+ "getAiUsageSnapshot",
2213
+ "getAvailableTools",
2214
+ "getBySlug",
2215
+ "getEmbedding",
2216
+ "getFields",
2217
+ "getId",
2218
+ "getReciprocalHandler",
2219
+ "getRelated",
2220
+ "getSavedId",
2221
+ "getSlug",
2222
+ "hasStaleEmbeddings",
2223
+ "initialize",
2224
+ "is",
2225
+ "isReciprocal",
2226
+ "isRelatedLoaded",
2227
+ "isSaved",
2228
+ "listAiUsage",
2229
+ "loadDataFromDb",
2230
+ "loadFromId",
2231
+ "loadFromSlug",
2232
+ "loadRelated",
2233
+ "loadRelatedMany",
2234
+ "markAsPersisted",
2235
+ "recall",
2236
+ "recallAll",
2237
+ "registerReciprocalHandler",
2238
+ "remember",
2239
+ "resetAiUsage",
2240
+ "save",
2241
+ "summarizeAiUsage",
2242
+ "toJSON",
2243
+ "toPlainObject",
2244
+ "toPublicJSON"
2245
+ ],
2246
+ "surfaces": [
2247
+ {
2248
+ "kind": "api",
2249
+ "name": "profilerelationshiptypes.list",
2250
+ "operation": "list",
2251
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2252
+ "path": "/profilerelationshiptypes",
2253
+ "method": "GET"
2254
+ },
2255
+ {
2256
+ "kind": "api",
2257
+ "name": "profilerelationshiptypes.get",
2258
+ "operation": "get",
2259
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2260
+ "path": "/profilerelationshiptypes/[id]",
2261
+ "method": "GET"
2262
+ },
2263
+ {
2264
+ "kind": "api",
2265
+ "name": "profilerelationshiptypes.create",
2266
+ "operation": "create",
2267
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2268
+ "path": "/profilerelationshiptypes",
2269
+ "method": "POST"
2270
+ },
2271
+ {
2272
+ "kind": "api",
2273
+ "name": "profilerelationshiptypes.update",
2274
+ "operation": "update",
2275
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2276
+ "path": "/profilerelationshiptypes/[id]",
2277
+ "method": "PATCH"
2278
+ },
2279
+ {
2280
+ "kind": "cli",
2281
+ "name": "profilerelationshiptype_list",
2282
+ "operation": "list",
2283
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2284
+ },
2285
+ {
2286
+ "kind": "cli",
2287
+ "name": "profilerelationshiptype_get",
2288
+ "operation": "get",
2289
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2290
+ },
2291
+ {
2292
+ "kind": "cli",
2293
+ "name": "profilerelationshiptype_create",
2294
+ "operation": "create",
2295
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2296
+ },
2297
+ {
2298
+ "kind": "cli",
2299
+ "name": "profilerelationshiptype_update",
2300
+ "operation": "update",
2301
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2302
+ },
2303
+ {
2304
+ "kind": "cli",
2305
+ "name": "profilerelationshiptype_delete",
2306
+ "operation": "delete",
2307
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2308
+ },
2309
+ {
2310
+ "kind": "mcp",
2311
+ "name": "profilerelationshiptype_list",
2312
+ "operation": "list",
2313
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2314
+ },
2315
+ {
2316
+ "kind": "mcp",
2317
+ "name": "profilerelationshiptype_get",
2318
+ "operation": "get",
2319
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2320
+ }
2321
+ ],
2322
+ "relationshipFeatures": [
2323
+ "uuidColumns"
2324
+ ],
2325
+ "tags": [],
2326
+ "risks": []
2327
+ },
2328
+ {
2329
+ "name": "ProfileType",
2330
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileType",
2331
+ "collection": "profiletypes",
2332
+ "tableName": "profile_types",
2333
+ "packageName": "@happyvertical/smrt-profiles",
2334
+ "extends": "SmrtObject",
2335
+ "fields": [
2336
+ {
2337
+ "name": "created_at",
2338
+ "type": "datetime",
2339
+ "required": false,
2340
+ "columnType": "TIMESTAMP"
2341
+ },
2342
+ {
2343
+ "name": "updated_at",
2344
+ "type": "datetime",
2345
+ "required": false,
2346
+ "columnType": "TIMESTAMP"
2347
+ },
2348
+ {
2349
+ "name": "tenantId",
2350
+ "type": "text",
2351
+ "required": false,
2352
+ "columnType": "UUID"
2353
+ },
2354
+ {
2355
+ "name": "name",
2356
+ "type": "text",
2357
+ "required": true,
2358
+ "columnType": "TEXT"
2359
+ },
2360
+ {
2361
+ "name": "description",
2362
+ "type": "text",
2363
+ "required": false,
2364
+ "columnType": "TEXT"
2365
+ }
2366
+ ],
2367
+ "relationships": [],
2368
+ "methods": [
2369
+ "classifyConstraintError",
2370
+ "clearEmbeddings",
2371
+ "delete",
2372
+ "describe",
2373
+ "destroy",
2374
+ "do",
2375
+ "executeToolCall",
2376
+ "forget",
2377
+ "forgetScope",
2378
+ "generateEmbeddings",
2379
+ "getAiUsageSnapshot",
2380
+ "getAvailableTools",
2381
+ "getBySlug",
2382
+ "getEmbedding",
2383
+ "getFields",
2384
+ "getId",
2385
+ "getRelated",
2386
+ "getSavedId",
2387
+ "getSlug",
2388
+ "hasStaleEmbeddings",
2389
+ "initialize",
2390
+ "is",
2391
+ "isRelatedLoaded",
2392
+ "isSaved",
2393
+ "listAiUsage",
2394
+ "loadDataFromDb",
2395
+ "loadFromId",
2396
+ "loadFromSlug",
2397
+ "loadRelated",
2398
+ "loadRelatedMany",
2399
+ "markAsPersisted",
2400
+ "recall",
2401
+ "recallAll",
2402
+ "remember",
2403
+ "resetAiUsage",
2404
+ "save",
2405
+ "summarizeAiUsage",
2406
+ "toJSON",
2407
+ "toPlainObject",
2408
+ "toPublicJSON"
2409
+ ],
2410
+ "surfaces": [
2411
+ {
2412
+ "kind": "api",
2413
+ "name": "profiletypes.list",
2414
+ "operation": "list",
2415
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
2416
+ "path": "/profiletypes",
2417
+ "method": "GET"
2418
+ },
2419
+ {
2420
+ "kind": "api",
2421
+ "name": "profiletypes.get",
2422
+ "operation": "get",
2423
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
2424
+ "path": "/profiletypes/[id]",
2425
+ "method": "GET"
2426
+ },
2427
+ {
2428
+ "kind": "api",
2429
+ "name": "profiletypes.create",
2430
+ "operation": "create",
2431
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
2432
+ "path": "/profiletypes",
2433
+ "method": "POST"
2434
+ },
2435
+ {
2436
+ "kind": "api",
2437
+ "name": "profiletypes.update",
2438
+ "operation": "update",
2439
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
2440
+ "path": "/profiletypes/[id]",
2441
+ "method": "PATCH"
2442
+ },
2443
+ {
2444
+ "kind": "cli",
2445
+ "name": "profiletype_list",
2446
+ "operation": "list",
2447
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2448
+ },
2449
+ {
2450
+ "kind": "cli",
2451
+ "name": "profiletype_get",
2452
+ "operation": "get",
2453
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2454
+ },
2455
+ {
2456
+ "kind": "cli",
2457
+ "name": "profiletype_create",
2458
+ "operation": "create",
2459
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2460
+ },
2461
+ {
2462
+ "kind": "cli",
2463
+ "name": "profiletype_update",
2464
+ "operation": "update",
2465
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2466
+ },
2467
+ {
2468
+ "kind": "cli",
2469
+ "name": "profiletype_delete",
2470
+ "operation": "delete",
2471
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2472
+ },
2473
+ {
2474
+ "kind": "mcp",
2475
+ "name": "profiletype_list",
2476
+ "operation": "list",
2477
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2478
+ },
2479
+ {
2480
+ "kind": "mcp",
2481
+ "name": "profiletype_get",
2482
+ "operation": "get",
2483
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
2484
+ }
2485
+ ],
2486
+ "relationshipFeatures": [
2487
+ "uuidColumns"
2488
+ ],
2489
+ "tags": [],
2490
+ "risks": []
2491
+ },
2492
+ {
2493
+ "name": "Person",
2494
+ "qualifiedName": "@happyvertical/smrt-profiles:Person",
2495
+ "collection": "profiles",
2496
+ "tableName": "profiles",
2497
+ "packageName": "@happyvertical/smrt-profiles",
2498
+ "extends": "Profile",
2499
+ "fields": [
2500
+ {
2501
+ "name": "created_at",
2502
+ "type": "datetime",
2503
+ "required": false,
2504
+ "columnType": "TIMESTAMP"
2505
+ },
2506
+ {
2507
+ "name": "updated_at",
2508
+ "type": "datetime",
2509
+ "required": false,
2510
+ "columnType": "TIMESTAMP"
2511
+ },
2512
+ {
2513
+ "name": "tenantId",
2514
+ "type": "text",
2515
+ "required": false,
2516
+ "columnType": "UUID"
2517
+ },
2518
+ {
2519
+ "name": "typeId",
2520
+ "type": "foreignKey",
2521
+ "required": true,
2522
+ "related": "ProfileType",
2523
+ "columnType": "UUID"
2524
+ },
2525
+ {
2526
+ "name": "email",
2527
+ "type": "text",
2528
+ "required": false,
2529
+ "columnType": "TEXT"
2530
+ },
2531
+ {
2532
+ "name": "name",
2533
+ "type": "text",
2534
+ "required": true,
2535
+ "columnType": "TEXT"
2536
+ },
2537
+ {
2538
+ "name": "description",
2539
+ "type": "text",
2540
+ "required": false,
2541
+ "columnType": "TEXT"
2542
+ },
2543
+ {
2544
+ "name": "metadata",
2545
+ "type": "oneToMany",
2546
+ "required": false,
2547
+ "related": "ProfileMetadata"
2548
+ },
2549
+ {
2550
+ "name": "relationshipsFrom",
2551
+ "type": "oneToMany",
2552
+ "required": false,
2553
+ "related": "ProfileRelationship"
2554
+ },
2555
+ {
2556
+ "name": "relationshipsTo",
2557
+ "type": "oneToMany",
2558
+ "required": false,
2559
+ "related": "ProfileRelationship"
2560
+ }
2561
+ ],
2562
+ "relationships": [
2563
+ {
2564
+ "name": "typeId",
2565
+ "type": "foreignKey",
2566
+ "required": true,
2567
+ "related": "ProfileType",
2568
+ "columnType": "UUID"
2569
+ },
2570
+ {
2571
+ "name": "metadata",
2572
+ "type": "oneToMany",
2573
+ "required": false,
2574
+ "related": "ProfileMetadata"
2575
+ },
2576
+ {
2577
+ "name": "relationshipsFrom",
2578
+ "type": "oneToMany",
2579
+ "required": false,
2580
+ "related": "ProfileRelationship"
2581
+ },
2582
+ {
2583
+ "name": "relationshipsTo",
2584
+ "type": "oneToMany",
2585
+ "required": false,
2586
+ "related": "ProfileRelationship"
2587
+ }
2588
+ ],
2589
+ "methods": [
2590
+ "addAsset",
2591
+ "addMetadata",
2592
+ "addRelationship",
2593
+ "classifyConstraintError",
2594
+ "clearEmbeddings",
2595
+ "delete",
2596
+ "describe",
2597
+ "destroy",
2598
+ "do",
2599
+ "executeToolCall",
2600
+ "findByMetadata",
2601
+ "findByType",
2602
+ "findRelated",
2603
+ "forget",
2604
+ "forgetScope",
2605
+ "generateApiKey",
2606
+ "generateBio",
2607
+ "generateEmbeddings",
2608
+ "getActiveApiKeys",
2609
+ "getAiUsageSnapshot",
2610
+ "getApiKeys",
2611
+ "getAssets",
2612
+ "getAuditLogs",
2613
+ "getAvailableTools",
2614
+ "getEmbedding",
2615
+ "getFields",
2616
+ "getId",
2617
+ "getMetadata",
2618
+ "getNostrIdentities",
2619
+ "getOidcIdentities",
2620
+ "getRelated",
2621
+ "getRelatedProfiles",
2622
+ "getRelationships",
2623
+ "getSavedId",
2624
+ "getSlug",
2625
+ "getTypeSlug",
2626
+ "hasStaleEmbeddings",
2627
+ "initialize",
2628
+ "is",
2629
+ "isRelatedLoaded",
2630
+ "isSaved",
2631
+ "linkNostrIdentity",
2632
+ "linkOidcIdentity",
2633
+ "listAiUsage",
2634
+ "loadDataFromDb",
2635
+ "loadFromId",
2636
+ "loadFromSlug",
2637
+ "loadRelated",
2638
+ "loadRelatedMany",
2639
+ "markAsPersisted",
2640
+ "matches",
2641
+ "recall",
2642
+ "recallAll",
2643
+ "recordAction",
2644
+ "remember",
2645
+ "removeAsset",
2646
+ "removeMetadata",
2647
+ "removeRelationship",
2648
+ "resetAiUsage",
2649
+ "save",
2650
+ "searchByEmail",
2651
+ "setTypeBySlug",
2652
+ "summarizeAiUsage",
2653
+ "toJSON",
2654
+ "toPlainObject",
2655
+ "toPublicJSON",
2656
+ "updateMetadata"
2657
+ ],
2658
+ "surfaces": [],
2659
+ "relationshipFeatures": [
2660
+ "foreignKey",
2661
+ "oneToMany",
2662
+ "uuidColumns"
2663
+ ],
2664
+ "tags": [],
2665
+ "risks": []
2666
+ },
2667
+ {
2668
+ "name": "Organization",
2669
+ "qualifiedName": "@happyvertical/smrt-profiles:Organization",
2670
+ "collection": "profiles",
2671
+ "tableName": "profiles",
2672
+ "packageName": "@happyvertical/smrt-profiles",
2673
+ "extends": "Profile",
2674
+ "fields": [
2675
+ {
2676
+ "name": "created_at",
2677
+ "type": "datetime",
2678
+ "required": false,
2679
+ "columnType": "TIMESTAMP"
2680
+ },
2681
+ {
2682
+ "name": "updated_at",
2683
+ "type": "datetime",
2684
+ "required": false,
2685
+ "columnType": "TIMESTAMP"
2686
+ },
2687
+ {
2688
+ "name": "tenantId",
2689
+ "type": "text",
2690
+ "required": false,
2691
+ "columnType": "UUID"
2692
+ },
2693
+ {
2694
+ "name": "typeId",
2695
+ "type": "foreignKey",
2696
+ "required": true,
2697
+ "related": "ProfileType",
2698
+ "columnType": "UUID"
2699
+ },
2700
+ {
2701
+ "name": "email",
2702
+ "type": "text",
2703
+ "required": false,
2704
+ "columnType": "TEXT"
2705
+ },
2706
+ {
2707
+ "name": "name",
2708
+ "type": "text",
2709
+ "required": true,
2710
+ "columnType": "TEXT"
2711
+ },
2712
+ {
2713
+ "name": "description",
2714
+ "type": "text",
2715
+ "required": false,
2716
+ "columnType": "TEXT"
2717
+ },
2718
+ {
2719
+ "name": "metadata",
2720
+ "type": "oneToMany",
2721
+ "required": false,
2722
+ "related": "ProfileMetadata"
2723
+ },
2724
+ {
2725
+ "name": "relationshipsFrom",
2726
+ "type": "oneToMany",
2727
+ "required": false,
2728
+ "related": "ProfileRelationship"
2729
+ },
2730
+ {
2731
+ "name": "relationshipsTo",
2732
+ "type": "oneToMany",
2733
+ "required": false,
2734
+ "related": "ProfileRelationship"
2735
+ }
2736
+ ],
2737
+ "relationships": [
2738
+ {
2739
+ "name": "typeId",
2740
+ "type": "foreignKey",
2741
+ "required": true,
2742
+ "related": "ProfileType",
2743
+ "columnType": "UUID"
2744
+ },
2745
+ {
2746
+ "name": "metadata",
2747
+ "type": "oneToMany",
2748
+ "required": false,
2749
+ "related": "ProfileMetadata"
2750
+ },
2751
+ {
2752
+ "name": "relationshipsFrom",
2753
+ "type": "oneToMany",
2754
+ "required": false,
2755
+ "related": "ProfileRelationship"
2756
+ },
2757
+ {
2758
+ "name": "relationshipsTo",
2759
+ "type": "oneToMany",
2760
+ "required": false,
2761
+ "related": "ProfileRelationship"
2762
+ }
2763
+ ],
2764
+ "methods": [
2765
+ "addAsset",
2766
+ "addMetadata",
2767
+ "addRelationship",
2768
+ "classifyConstraintError",
2769
+ "clearEmbeddings",
2770
+ "delete",
2771
+ "describe",
2772
+ "destroy",
2773
+ "do",
2774
+ "executeToolCall",
2775
+ "findByMetadata",
2776
+ "findByType",
2777
+ "findRelated",
2778
+ "forget",
2779
+ "forgetScope",
2780
+ "generateApiKey",
2781
+ "generateBio",
2782
+ "generateEmbeddings",
2783
+ "getActiveApiKeys",
2784
+ "getAiUsageSnapshot",
2785
+ "getApiKeys",
2786
+ "getAssets",
2787
+ "getAuditLogs",
2788
+ "getAvailableTools",
2789
+ "getEmbedding",
2790
+ "getFields",
2791
+ "getId",
2792
+ "getMetadata",
2793
+ "getNostrIdentities",
2794
+ "getOidcIdentities",
2795
+ "getRelated",
2796
+ "getRelatedProfiles",
2797
+ "getRelationships",
2798
+ "getSavedId",
2799
+ "getSlug",
2800
+ "getTypeSlug",
2801
+ "hasStaleEmbeddings",
2802
+ "initialize",
2803
+ "is",
2804
+ "isRelatedLoaded",
2805
+ "isSaved",
2806
+ "linkNostrIdentity",
2807
+ "linkOidcIdentity",
2808
+ "listAiUsage",
2809
+ "loadDataFromDb",
2810
+ "loadFromId",
2811
+ "loadFromSlug",
2812
+ "loadRelated",
2813
+ "loadRelatedMany",
2814
+ "markAsPersisted",
2815
+ "matches",
2816
+ "recall",
2817
+ "recallAll",
2818
+ "recordAction",
2819
+ "remember",
2820
+ "removeAsset",
2821
+ "removeMetadata",
2822
+ "removeRelationship",
2823
+ "resetAiUsage",
2824
+ "save",
2825
+ "searchByEmail",
2826
+ "setTypeBySlug",
2827
+ "summarizeAiUsage",
2828
+ "toJSON",
2829
+ "toPlainObject",
2830
+ "toPublicJSON",
2831
+ "updateMetadata"
2832
+ ],
2833
+ "surfaces": [],
2834
+ "relationshipFeatures": [
2835
+ "foreignKey",
2836
+ "oneToMany",
2837
+ "uuidColumns"
2838
+ ],
2839
+ "tags": [],
2840
+ "risks": []
2841
+ },
2842
+ {
2843
+ "name": "Bot",
2844
+ "qualifiedName": "@happyvertical/smrt-profiles:Bot",
2845
+ "collection": "profiles",
2846
+ "tableName": "profiles",
2847
+ "packageName": "@happyvertical/smrt-profiles",
2848
+ "extends": "Profile",
2849
+ "fields": [
2850
+ {
2851
+ "name": "created_at",
2852
+ "type": "datetime",
2853
+ "required": false,
2854
+ "columnType": "TIMESTAMP"
2855
+ },
2856
+ {
2857
+ "name": "updated_at",
2858
+ "type": "datetime",
2859
+ "required": false,
2860
+ "columnType": "TIMESTAMP"
2861
+ },
2862
+ {
2863
+ "name": "tenantId",
2864
+ "type": "text",
2865
+ "required": false,
2866
+ "columnType": "UUID"
2867
+ },
2868
+ {
2869
+ "name": "typeId",
2870
+ "type": "foreignKey",
2871
+ "required": true,
2872
+ "related": "ProfileType",
2873
+ "columnType": "UUID"
2874
+ },
2875
+ {
2876
+ "name": "email",
2877
+ "type": "text",
2878
+ "required": false,
2879
+ "columnType": "TEXT"
2880
+ },
2881
+ {
2882
+ "name": "name",
2883
+ "type": "text",
2884
+ "required": true,
2885
+ "columnType": "TEXT"
2886
+ },
2887
+ {
2888
+ "name": "description",
2889
+ "type": "text",
2890
+ "required": false,
2891
+ "columnType": "TEXT"
2892
+ },
2893
+ {
2894
+ "name": "metadata",
2895
+ "type": "oneToMany",
2896
+ "required": false,
2897
+ "related": "ProfileMetadata"
2898
+ },
2899
+ {
2900
+ "name": "relationshipsFrom",
2901
+ "type": "oneToMany",
2902
+ "required": false,
2903
+ "related": "ProfileRelationship"
2904
+ },
2905
+ {
2906
+ "name": "relationshipsTo",
2907
+ "type": "oneToMany",
2908
+ "required": false,
2909
+ "related": "ProfileRelationship"
2910
+ }
2911
+ ],
2912
+ "relationships": [
2913
+ {
2914
+ "name": "typeId",
2915
+ "type": "foreignKey",
2916
+ "required": true,
2917
+ "related": "ProfileType",
2918
+ "columnType": "UUID"
2919
+ },
2920
+ {
2921
+ "name": "metadata",
2922
+ "type": "oneToMany",
2923
+ "required": false,
2924
+ "related": "ProfileMetadata"
2925
+ },
2926
+ {
2927
+ "name": "relationshipsFrom",
2928
+ "type": "oneToMany",
2929
+ "required": false,
2930
+ "related": "ProfileRelationship"
2931
+ },
2932
+ {
2933
+ "name": "relationshipsTo",
2934
+ "type": "oneToMany",
2935
+ "required": false,
2936
+ "related": "ProfileRelationship"
2937
+ }
2938
+ ],
2939
+ "methods": [
2940
+ "addAsset",
2941
+ "addMetadata",
2942
+ "addRelationship",
2943
+ "classifyConstraintError",
2944
+ "clearEmbeddings",
2945
+ "delete",
2946
+ "describe",
2947
+ "destroy",
2948
+ "do",
2949
+ "executeToolCall",
2950
+ "findByMetadata",
2951
+ "findByType",
2952
+ "findRelated",
2953
+ "forget",
2954
+ "forgetScope",
2955
+ "generateApiKey",
2956
+ "generateBio",
2957
+ "generateEmbeddings",
2958
+ "getActiveApiKeys",
2959
+ "getAiUsageSnapshot",
2960
+ "getApiKeys",
2961
+ "getAssets",
2962
+ "getAuditLogs",
2963
+ "getAvailableTools",
2964
+ "getEmbedding",
2965
+ "getFields",
2966
+ "getId",
2967
+ "getMetadata",
2968
+ "getNostrIdentities",
2969
+ "getOidcIdentities",
2970
+ "getRelated",
2971
+ "getRelatedProfiles",
2972
+ "getRelationships",
2973
+ "getSavedId",
2974
+ "getSlug",
2975
+ "getTypeSlug",
2976
+ "hasStaleEmbeddings",
2977
+ "initialize",
2978
+ "is",
2979
+ "isRelatedLoaded",
2980
+ "isSaved",
2981
+ "linkNostrIdentity",
2982
+ "linkOidcIdentity",
2983
+ "listAiUsage",
2984
+ "loadDataFromDb",
2985
+ "loadFromId",
2986
+ "loadFromSlug",
2987
+ "loadRelated",
2988
+ "loadRelatedMany",
2989
+ "markAsPersisted",
2990
+ "matches",
2991
+ "recall",
2992
+ "recallAll",
2993
+ "recordAction",
2994
+ "remember",
2995
+ "removeAsset",
2996
+ "removeMetadata",
2997
+ "removeRelationship",
2998
+ "resetAiUsage",
2999
+ "save",
3000
+ "searchByEmail",
3001
+ "setTypeBySlug",
3002
+ "summarizeAiUsage",
3003
+ "toJSON",
3004
+ "toPlainObject",
3005
+ "toPublicJSON",
3006
+ "updateMetadata"
3007
+ ],
3008
+ "surfaces": [],
3009
+ "relationshipFeatures": [
3010
+ "foreignKey",
3011
+ "oneToMany",
3012
+ "uuidColumns"
3013
+ ],
3014
+ "tags": [],
3015
+ "risks": []
3016
+ }
3017
+ ],
3018
+ "surfaces": [
3019
+ {
3020
+ "kind": "api",
3021
+ "name": "apikeys.list",
3022
+ "operation": "list",
3023
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
3024
+ "path": "/apikeys",
3025
+ "method": "GET"
3026
+ },
3027
+ {
3028
+ "kind": "api",
3029
+ "name": "apikeys.get",
3030
+ "operation": "get",
3031
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
3032
+ "path": "/apikeys/[id]",
3033
+ "method": "GET"
3034
+ },
3035
+ {
3036
+ "kind": "cli",
3037
+ "name": "apikey_list",
3038
+ "operation": "list",
3039
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3040
+ },
3041
+ {
3042
+ "kind": "cli",
3043
+ "name": "apikey_get",
3044
+ "operation": "get",
3045
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3046
+ },
3047
+ {
3048
+ "kind": "cli",
3049
+ "name": "apikey_create",
3050
+ "operation": "create",
3051
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3052
+ },
3053
+ {
3054
+ "kind": "cli",
3055
+ "name": "apikey_revoke",
3056
+ "operation": "revoke",
3057
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3058
+ },
3059
+ {
3060
+ "kind": "mcp",
3061
+ "name": "apikey_list",
3062
+ "operation": "list",
3063
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3064
+ },
3065
+ {
3066
+ "kind": "mcp",
3067
+ "name": "apikey_get",
3068
+ "operation": "get",
3069
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
3070
+ },
3071
+ {
3072
+ "kind": "api",
3073
+ "name": "auditlogs.list",
3074
+ "operation": "list",
3075
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
3076
+ "path": "/auditlogs",
3077
+ "method": "GET"
3078
+ },
3079
+ {
3080
+ "kind": "api",
3081
+ "name": "auditlogs.get",
3082
+ "operation": "get",
3083
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
3084
+ "path": "/auditlogs/[id]",
3085
+ "method": "GET"
3086
+ },
3087
+ {
3088
+ "kind": "cli",
3089
+ "name": "auditlog_list",
3090
+ "operation": "list",
3091
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
3092
+ },
3093
+ {
3094
+ "kind": "mcp",
3095
+ "name": "auditlog_list",
3096
+ "operation": "list",
3097
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
3098
+ },
3099
+ {
3100
+ "kind": "mcp",
3101
+ "name": "auditlog_get",
3102
+ "operation": "get",
3103
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
3104
+ },
3105
+ {
3106
+ "kind": "api",
3107
+ "name": "magiclinktokens.list",
3108
+ "operation": "list",
3109
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
3110
+ "path": "/magiclinktokens",
3111
+ "method": "GET"
3112
+ },
3113
+ {
3114
+ "kind": "api",
3115
+ "name": "magiclinktokens.get",
3116
+ "operation": "get",
3117
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
3118
+ "path": "/magiclinktokens/[id]",
3119
+ "method": "GET"
3120
+ },
3121
+ {
3122
+ "kind": "api",
3123
+ "name": "magiclinktokens.create",
3124
+ "operation": "create",
3125
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
3126
+ "path": "/magiclinktokens",
3127
+ "method": "POST"
3128
+ },
3129
+ {
3130
+ "kind": "api",
3131
+ "name": "magiclinktokens.update",
3132
+ "operation": "update",
3133
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
3134
+ "path": "/magiclinktokens/[id]",
3135
+ "method": "PATCH"
3136
+ },
3137
+ {
3138
+ "kind": "api",
3139
+ "name": "magiclinktokens.delete",
3140
+ "operation": "delete",
3141
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
3142
+ "path": "/magiclinktokens/[id]",
3143
+ "method": "DELETE"
3144
+ },
3145
+ {
3146
+ "kind": "cli",
3147
+ "name": "magiclinktoken_list",
3148
+ "operation": "list",
3149
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3150
+ },
3151
+ {
3152
+ "kind": "mcp",
3153
+ "name": "magiclinktoken_list",
3154
+ "operation": "list",
3155
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3156
+ },
3157
+ {
3158
+ "kind": "mcp",
3159
+ "name": "magiclinktoken_get",
3160
+ "operation": "get",
3161
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3162
+ },
3163
+ {
3164
+ "kind": "mcp",
3165
+ "name": "magiclinktoken_create",
3166
+ "operation": "create",
3167
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3168
+ },
3169
+ {
3170
+ "kind": "mcp",
3171
+ "name": "magiclinktoken_update",
3172
+ "operation": "update",
3173
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3174
+ },
3175
+ {
3176
+ "kind": "mcp",
3177
+ "name": "magiclinktoken_delete",
3178
+ "operation": "delete",
3179
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
3180
+ },
3181
+ {
3182
+ "kind": "api",
3183
+ "name": "nostridentities.list",
3184
+ "operation": "list",
3185
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
3186
+ "path": "/nostridentities",
3187
+ "method": "GET"
3188
+ },
3189
+ {
3190
+ "kind": "api",
3191
+ "name": "nostridentities.get",
3192
+ "operation": "get",
3193
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
3194
+ "path": "/nostridentities/[id]",
3195
+ "method": "GET"
3196
+ },
3197
+ {
3198
+ "kind": "cli",
3199
+ "name": "nostridentity_list",
3200
+ "operation": "list",
3201
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
3202
+ },
3203
+ {
3204
+ "kind": "cli",
3205
+ "name": "nostridentity_get",
3206
+ "operation": "get",
3207
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
3208
+ },
3209
+ {
3210
+ "kind": "mcp",
3211
+ "name": "nostridentity_list",
3212
+ "operation": "list",
3213
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
3214
+ },
3215
+ {
3216
+ "kind": "mcp",
3217
+ "name": "nostridentity_get",
3218
+ "operation": "get",
3219
+ "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
3220
+ },
3221
+ {
3222
+ "kind": "api",
3223
+ "name": "oidcidentities.list",
3224
+ "operation": "list",
3225
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
3226
+ "path": "/oidcidentities",
3227
+ "method": "GET"
3228
+ },
3229
+ {
3230
+ "kind": "api",
3231
+ "name": "oidcidentities.get",
3232
+ "operation": "get",
3233
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
3234
+ "path": "/oidcidentities/[id]",
3235
+ "method": "GET"
3236
+ },
3237
+ {
3238
+ "kind": "api",
3239
+ "name": "oidcidentities.create",
3240
+ "operation": "create",
3241
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
3242
+ "path": "/oidcidentities",
3243
+ "method": "POST"
3244
+ },
3245
+ {
3246
+ "kind": "api",
3247
+ "name": "oidcidentities.update",
3248
+ "operation": "update",
3249
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
3250
+ "path": "/oidcidentities/[id]",
3251
+ "method": "PATCH"
3252
+ },
3253
+ {
3254
+ "kind": "cli",
3255
+ "name": "oidcidentity_list",
3256
+ "operation": "list",
3257
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
3258
+ },
3259
+ {
3260
+ "kind": "cli",
3261
+ "name": "oidcidentity_get",
3262
+ "operation": "get",
3263
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
3264
+ },
3265
+ {
3266
+ "kind": "mcp",
3267
+ "name": "oidcidentity_list",
3268
+ "operation": "list",
3269
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
3270
+ },
3271
+ {
3272
+ "kind": "mcp",
3273
+ "name": "oidcidentity_get",
3274
+ "operation": "get",
3275
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
3276
+ },
3277
+ {
3278
+ "kind": "api",
3279
+ "name": "profiles.list",
3280
+ "operation": "list",
3281
+ "objectName": "@happyvertical/smrt-profiles:Profile",
3282
+ "path": "/profiles",
3283
+ "method": "GET"
3284
+ },
3285
+ {
3286
+ "kind": "api",
3287
+ "name": "profiles.get",
3288
+ "operation": "get",
3289
+ "objectName": "@happyvertical/smrt-profiles:Profile",
3290
+ "path": "/profiles/[id]",
3291
+ "method": "GET"
3292
+ },
3293
+ {
3294
+ "kind": "api",
3295
+ "name": "profiles.create",
3296
+ "operation": "create",
3297
+ "objectName": "@happyvertical/smrt-profiles:Profile",
3298
+ "path": "/profiles",
3299
+ "method": "POST"
3300
+ },
3301
+ {
3302
+ "kind": "api",
3303
+ "name": "profiles.update",
3304
+ "operation": "update",
3305
+ "objectName": "@happyvertical/smrt-profiles:Profile",
3306
+ "path": "/profiles/[id]",
3307
+ "method": "PATCH"
3308
+ },
3309
+ {
3310
+ "kind": "api",
3311
+ "name": "profiles.delete",
3312
+ "operation": "delete",
3313
+ "objectName": "@happyvertical/smrt-profiles:Profile",
3314
+ "path": "/profiles/[id]",
3315
+ "method": "DELETE"
3316
+ },
3317
+ {
3318
+ "kind": "cli",
3319
+ "name": "profile_list",
3320
+ "operation": "list",
3321
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3322
+ },
3323
+ {
3324
+ "kind": "cli",
3325
+ "name": "profile_get",
3326
+ "operation": "get",
3327
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3328
+ },
3329
+ {
3330
+ "kind": "cli",
3331
+ "name": "profile_create",
3332
+ "operation": "create",
3333
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3334
+ },
3335
+ {
3336
+ "kind": "cli",
3337
+ "name": "profile_update",
3338
+ "operation": "update",
3339
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3340
+ },
3341
+ {
3342
+ "kind": "cli",
3343
+ "name": "profile_delete",
3344
+ "operation": "delete",
3345
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3346
+ },
3347
+ {
3348
+ "kind": "mcp",
3349
+ "name": "profile_list",
3350
+ "operation": "list",
3351
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3352
+ },
3353
+ {
3354
+ "kind": "mcp",
3355
+ "name": "profile_get",
3356
+ "operation": "get",
3357
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3358
+ },
3359
+ {
3360
+ "kind": "mcp",
3361
+ "name": "profile_create",
3362
+ "operation": "create",
3363
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3364
+ },
3365
+ {
3366
+ "kind": "mcp",
3367
+ "name": "profile_update",
3368
+ "operation": "update",
3369
+ "objectName": "@happyvertical/smrt-profiles:Profile"
3370
+ },
3371
+ {
3372
+ "kind": "api",
3373
+ "name": "profilemetadatas.list",
3374
+ "operation": "list",
3375
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
3376
+ "path": "/profilemetadatas",
3377
+ "method": "GET"
3378
+ },
3379
+ {
3380
+ "kind": "api",
3381
+ "name": "profilemetadatas.get",
3382
+ "operation": "get",
3383
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
3384
+ "path": "/profilemetadatas/[id]",
3385
+ "method": "GET"
3386
+ },
3387
+ {
3388
+ "kind": "api",
3389
+ "name": "profilemetadatas.create",
3390
+ "operation": "create",
3391
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
3392
+ "path": "/profilemetadatas",
3393
+ "method": "POST"
3394
+ },
3395
+ {
3396
+ "kind": "api",
3397
+ "name": "profilemetadatas.update",
3398
+ "operation": "update",
3399
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
3400
+ "path": "/profilemetadatas/[id]",
3401
+ "method": "PATCH"
3402
+ },
3403
+ {
3404
+ "kind": "api",
3405
+ "name": "profilemetadatas.delete",
3406
+ "operation": "delete",
3407
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
3408
+ "path": "/profilemetadatas/[id]",
3409
+ "method": "DELETE"
3410
+ },
3411
+ {
3412
+ "kind": "cli",
3413
+ "name": "profilemetadata_list",
3414
+ "operation": "list",
3415
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3416
+ },
3417
+ {
3418
+ "kind": "cli",
3419
+ "name": "profilemetadata_get",
3420
+ "operation": "get",
3421
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3422
+ },
3423
+ {
3424
+ "kind": "cli",
3425
+ "name": "profilemetadata_create",
3426
+ "operation": "create",
3427
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3428
+ },
3429
+ {
3430
+ "kind": "cli",
3431
+ "name": "profilemetadata_update",
3432
+ "operation": "update",
3433
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3434
+ },
3435
+ {
3436
+ "kind": "cli",
3437
+ "name": "profilemetadata_delete",
3438
+ "operation": "delete",
3439
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3440
+ },
3441
+ {
3442
+ "kind": "mcp",
3443
+ "name": "profilemetadata_list",
3444
+ "operation": "list",
3445
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3446
+ },
3447
+ {
3448
+ "kind": "mcp",
3449
+ "name": "profilemetadata_get",
3450
+ "operation": "get",
3451
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
3452
+ },
3453
+ {
3454
+ "kind": "api",
3455
+ "name": "profilemetafields.list",
3456
+ "operation": "list",
3457
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
3458
+ "path": "/profilemetafields",
3459
+ "method": "GET"
3460
+ },
3461
+ {
3462
+ "kind": "api",
3463
+ "name": "profilemetafields.get",
3464
+ "operation": "get",
3465
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
3466
+ "path": "/profilemetafields/[id]",
3467
+ "method": "GET"
3468
+ },
3469
+ {
3470
+ "kind": "api",
3471
+ "name": "profilemetafields.create",
3472
+ "operation": "create",
3473
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
3474
+ "path": "/profilemetafields",
3475
+ "method": "POST"
3476
+ },
3477
+ {
3478
+ "kind": "api",
3479
+ "name": "profilemetafields.update",
3480
+ "operation": "update",
3481
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
3482
+ "path": "/profilemetafields/[id]",
3483
+ "method": "PATCH"
3484
+ },
3485
+ {
3486
+ "kind": "cli",
3487
+ "name": "profilemetafield_list",
3488
+ "operation": "list",
3489
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3490
+ },
3491
+ {
3492
+ "kind": "cli",
3493
+ "name": "profilemetafield_get",
3494
+ "operation": "get",
3495
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3496
+ },
3497
+ {
3498
+ "kind": "cli",
3499
+ "name": "profilemetafield_create",
3500
+ "operation": "create",
3501
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3502
+ },
3503
+ {
3504
+ "kind": "cli",
3505
+ "name": "profilemetafield_update",
3506
+ "operation": "update",
3507
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3508
+ },
3509
+ {
3510
+ "kind": "cli",
3511
+ "name": "profilemetafield_delete",
3512
+ "operation": "delete",
3513
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3514
+ },
3515
+ {
3516
+ "kind": "mcp",
3517
+ "name": "profilemetafield_list",
3518
+ "operation": "list",
3519
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3520
+ },
3521
+ {
3522
+ "kind": "mcp",
3523
+ "name": "profilemetafield_get",
3524
+ "operation": "get",
3525
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
3526
+ },
3527
+ {
3528
+ "kind": "api",
3529
+ "name": "profilerelationships.list",
3530
+ "operation": "list",
3531
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
3532
+ "path": "/profilerelationships",
3533
+ "method": "GET"
3534
+ },
3535
+ {
3536
+ "kind": "api",
3537
+ "name": "profilerelationships.get",
3538
+ "operation": "get",
3539
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
3540
+ "path": "/profilerelationships/[id]",
3541
+ "method": "GET"
3542
+ },
3543
+ {
3544
+ "kind": "api",
3545
+ "name": "profilerelationships.create",
3546
+ "operation": "create",
3547
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
3548
+ "path": "/profilerelationships",
3549
+ "method": "POST"
3550
+ },
3551
+ {
3552
+ "kind": "api",
3553
+ "name": "profilerelationships.delete",
3554
+ "operation": "delete",
3555
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
3556
+ "path": "/profilerelationships/[id]",
3557
+ "method": "DELETE"
3558
+ },
3559
+ {
3560
+ "kind": "cli",
3561
+ "name": "profilerelationship_list",
3562
+ "operation": "list",
3563
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3564
+ },
3565
+ {
3566
+ "kind": "cli",
3567
+ "name": "profilerelationship_get",
3568
+ "operation": "get",
3569
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3570
+ },
3571
+ {
3572
+ "kind": "cli",
3573
+ "name": "profilerelationship_create",
3574
+ "operation": "create",
3575
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3576
+ },
3577
+ {
3578
+ "kind": "cli",
3579
+ "name": "profilerelationship_update",
3580
+ "operation": "update",
3581
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3582
+ },
3583
+ {
3584
+ "kind": "cli",
3585
+ "name": "profilerelationship_delete",
3586
+ "operation": "delete",
3587
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3588
+ },
3589
+ {
3590
+ "kind": "mcp",
3591
+ "name": "profilerelationship_list",
3592
+ "operation": "list",
3593
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3594
+ },
3595
+ {
3596
+ "kind": "mcp",
3597
+ "name": "profilerelationship_get",
3598
+ "operation": "get",
3599
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
3600
+ },
3601
+ {
3602
+ "kind": "api",
3603
+ "name": "profilerelationshipterms.list",
3604
+ "operation": "list",
3605
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
3606
+ "path": "/profilerelationshipterms",
3607
+ "method": "GET"
3608
+ },
3609
+ {
3610
+ "kind": "api",
3611
+ "name": "profilerelationshipterms.get",
3612
+ "operation": "get",
3613
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
3614
+ "path": "/profilerelationshipterms/[id]",
3615
+ "method": "GET"
3616
+ },
3617
+ {
3618
+ "kind": "api",
3619
+ "name": "profilerelationshipterms.create",
3620
+ "operation": "create",
3621
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
3622
+ "path": "/profilerelationshipterms",
3623
+ "method": "POST"
3624
+ },
3625
+ {
3626
+ "kind": "api",
3627
+ "name": "profilerelationshipterms.update",
3628
+ "operation": "update",
3629
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
3630
+ "path": "/profilerelationshipterms/[id]",
3631
+ "method": "PATCH"
3632
+ },
3633
+ {
3634
+ "kind": "api",
3635
+ "name": "profilerelationshipterms.delete",
3636
+ "operation": "delete",
3637
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
3638
+ "path": "/profilerelationshipterms/[id]",
3639
+ "method": "DELETE"
3640
+ },
3641
+ {
3642
+ "kind": "cli",
3643
+ "name": "profilerelationshipterm_list",
3644
+ "operation": "list",
3645
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3646
+ },
3647
+ {
3648
+ "kind": "cli",
3649
+ "name": "profilerelationshipterm_get",
3650
+ "operation": "get",
3651
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3652
+ },
3653
+ {
3654
+ "kind": "cli",
3655
+ "name": "profilerelationshipterm_create",
3656
+ "operation": "create",
3657
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3658
+ },
3659
+ {
3660
+ "kind": "cli",
3661
+ "name": "profilerelationshipterm_update",
3662
+ "operation": "update",
3663
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3664
+ },
3665
+ {
3666
+ "kind": "cli",
3667
+ "name": "profilerelationshipterm_delete",
3668
+ "operation": "delete",
3669
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3670
+ },
3671
+ {
3672
+ "kind": "mcp",
3673
+ "name": "profilerelationshipterm_list",
3674
+ "operation": "list",
3675
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3676
+ },
3677
+ {
3678
+ "kind": "mcp",
3679
+ "name": "profilerelationshipterm_get",
3680
+ "operation": "get",
3681
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
3682
+ },
3683
+ {
3684
+ "kind": "api",
3685
+ "name": "profilerelationshiptypes.list",
3686
+ "operation": "list",
3687
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
3688
+ "path": "/profilerelationshiptypes",
3689
+ "method": "GET"
3690
+ },
3691
+ {
3692
+ "kind": "api",
3693
+ "name": "profilerelationshiptypes.get",
3694
+ "operation": "get",
3695
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
3696
+ "path": "/profilerelationshiptypes/[id]",
3697
+ "method": "GET"
3698
+ },
3699
+ {
3700
+ "kind": "api",
3701
+ "name": "profilerelationshiptypes.create",
3702
+ "operation": "create",
3703
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
3704
+ "path": "/profilerelationshiptypes",
3705
+ "method": "POST"
3706
+ },
3707
+ {
3708
+ "kind": "api",
3709
+ "name": "profilerelationshiptypes.update",
3710
+ "operation": "update",
3711
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
3712
+ "path": "/profilerelationshiptypes/[id]",
3713
+ "method": "PATCH"
3714
+ },
3715
+ {
3716
+ "kind": "cli",
3717
+ "name": "profilerelationshiptype_list",
3718
+ "operation": "list",
3719
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3720
+ },
3721
+ {
3722
+ "kind": "cli",
3723
+ "name": "profilerelationshiptype_get",
3724
+ "operation": "get",
3725
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3726
+ },
3727
+ {
3728
+ "kind": "cli",
3729
+ "name": "profilerelationshiptype_create",
3730
+ "operation": "create",
3731
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3732
+ },
3733
+ {
3734
+ "kind": "cli",
3735
+ "name": "profilerelationshiptype_update",
3736
+ "operation": "update",
3737
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3738
+ },
3739
+ {
3740
+ "kind": "cli",
3741
+ "name": "profilerelationshiptype_delete",
3742
+ "operation": "delete",
3743
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3744
+ },
3745
+ {
3746
+ "kind": "mcp",
3747
+ "name": "profilerelationshiptype_list",
3748
+ "operation": "list",
3749
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3750
+ },
3751
+ {
3752
+ "kind": "mcp",
3753
+ "name": "profilerelationshiptype_get",
3754
+ "operation": "get",
3755
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
3756
+ },
3757
+ {
3758
+ "kind": "api",
3759
+ "name": "profiletypes.list",
3760
+ "operation": "list",
3761
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
3762
+ "path": "/profiletypes",
3763
+ "method": "GET"
3764
+ },
3765
+ {
3766
+ "kind": "api",
3767
+ "name": "profiletypes.get",
3768
+ "operation": "get",
3769
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
3770
+ "path": "/profiletypes/[id]",
3771
+ "method": "GET"
3772
+ },
3773
+ {
3774
+ "kind": "api",
3775
+ "name": "profiletypes.create",
3776
+ "operation": "create",
3777
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
3778
+ "path": "/profiletypes",
3779
+ "method": "POST"
3780
+ },
3781
+ {
3782
+ "kind": "api",
3783
+ "name": "profiletypes.update",
3784
+ "operation": "update",
3785
+ "objectName": "@happyvertical/smrt-profiles:ProfileType",
3786
+ "path": "/profiletypes/[id]",
3787
+ "method": "PATCH"
3788
+ },
3789
+ {
3790
+ "kind": "cli",
3791
+ "name": "profiletype_list",
3792
+ "operation": "list",
3793
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3794
+ },
3795
+ {
3796
+ "kind": "cli",
3797
+ "name": "profiletype_get",
3798
+ "operation": "get",
3799
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3800
+ },
3801
+ {
3802
+ "kind": "cli",
3803
+ "name": "profiletype_create",
3804
+ "operation": "create",
3805
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3806
+ },
3807
+ {
3808
+ "kind": "cli",
3809
+ "name": "profiletype_update",
3810
+ "operation": "update",
3811
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3812
+ },
3813
+ {
3814
+ "kind": "cli",
3815
+ "name": "profiletype_delete",
3816
+ "operation": "delete",
3817
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3818
+ },
3819
+ {
3820
+ "kind": "mcp",
3821
+ "name": "profiletype_list",
3822
+ "operation": "list",
3823
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3824
+ },
3825
+ {
3826
+ "kind": "mcp",
3827
+ "name": "profiletype_get",
3828
+ "operation": "get",
3829
+ "objectName": "@happyvertical/smrt-profiles:ProfileType"
3830
+ }
3831
+ ],
3832
+ "prompts": [
3833
+ {
3834
+ "filePath": "src/prompts.ts"
3835
+ }
3836
+ ],
3837
+ "relationshipsV2": {
3838
+ "foreignKeyFields": 18,
3839
+ "crossPackageRefFields": 1,
3840
+ "junctionCollections": 1,
3841
+ "hierarchicalObjects": 0,
3842
+ "polymorphicAssociations": 0,
3843
+ "uuidColumns": 58
3844
+ },
3845
+ "agentDoc": "# @happyvertical/smrt-profiles\n\nCentral identity system with multi-auth, relationships, controlled metadata, and audit logging.\n\n## Models\n\n- **Profile** (STI base → Bot, Organization, Person): email (globally unique), `typeId` FK to ProfileType, plus a `metadata` `@oneToMany('ProfileMetadata')` relationship for controlled per-profile values.\n- **ProfileAsset**: dedicated owned-asset join in `profile_assets` with `relationship` and `sortOrder`.\n- **ProfileRelationship**: bidirectional — creating one auto-creates reciprocal inverse. `contextProfileId` for tertiary relationships. `ProfileRelationshipTerm` tracks start/end dates.\n- **ProfileMetafield**: controlled vocabulary with `validationSchema`. **ProfileMetadata**: per-profile values linked to metafields.\n- **AuditLog**: action, resourceType/Id, `source` (web/cli/ci/webhook/mcp), `onBehalfOfId` for CI pass-through identity. `allowSuperAdminBypass: true`.\n\n## Auth Methods\n\n| Model | Pattern |\n|-------|---------|\n| NostrIdentity | Encrypted keypair (AES-256-GCM). Requires `SERVER_MASTER_SECRET` env var for decryption. NIP-05 address generation. |\n| OidcIdentity | Multiple issuers (Keycloak/Google/GitHub). Lookup by `issuer + subject` pair. `findOrCreate()` for first login. |\n| ApiKey | SHA-256 hashed. **Plaintext returned once only** on `generate()`. `keyPrefix` for identification. Scope-based with expiry. |\n| MagicLinkToken | One-time token with expiry for passwordless auth. |\n\n## Identity Resolution\n\nAuth helpers in `src/auth/` build profiles from external identity claims:\n\n- `resolveIdentity()` — top-level dispatcher that returns/creates a Profile from Nostr signatures, OIDC claims, magic link tokens, or API keys.\n- `createProfileFromOidc(claims, provider)` — creates `Profile` + `OidcIdentity` for first-time OIDC sign-in.\n- `createProfileFromNostr(email, nostrData)` — creates `Profile` + `NostrIdentity` for Nostr-authenticated users.\n\n## Key Methods\n\n- `Profile.getAssets()` / `addAsset()` / `removeAsset()` and the matching `ProfileCollection` wrappers — canonical owned asset helpers backed by `profile_assets`.\n- `Profile.addMetadata(metafieldSlug, value)` / `Profile.getMetadata()` — validates against metafield schema. `ProfileCollection.batchGetMetadata()` / `batchUpdateMetadata()` for bulk reads/writes.\n- `Profile.getRelationships({ direction: 'from'|'to'|'all' })` — direction matters.\n- `Profile.getRelationshipsFrom()` / `getRelationshipsTo()` — R10-generated `@oneToMany` accessors. ProfileRelationship has two FKs back to Profile, so each `@oneToMany` annotates its inverse explicitly (`{ foreignKey: 'fromProfileId' }` / `'toProfileId'`). Return raw `ProfileRelationship[]`; use `getRelationships()` for slug/direction filtering.\n- AI: `generateBio()` (uses `smrtProfiles.profile.generateBio` prompt via `@happyvertical/smrt-prompts`), `matches(criteria)` (delegates to `is()`).\n\n## Prompt Registry\n\n`generateBio()` is registered with `@happyvertical/smrt-prompts` so tenants can override template/model/params at runtime:\n\n```typescript\nimport { smrtProfilesGenerateBioPrompt } from '@happyvertical/smrt-profiles';\n// key: 'smrtProfiles.profile.generateBio'\n```\n\n## Gotchas\n\n- **SERVER_MASTER_SECRET required** for Nostr private key decryption — centralized key management\n- **API key never returned again**: `ApiKey.generate()` returns plaintext once; only `keyPrefix` visible later\n- **OIDC unique per issuer+subject**: same subject from different issuers = different identities\n- **Email unique across all profiles**: DB-level unique constraint, not per-tenant\n- **Optional tenancy** on Profile; AuditLog allows super-admin bypass\n"
3846
+ }