@happyvertical/smrt-profiles 0.34.9 → 0.35.1

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.
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-06-24T19:27:02.302Z",
3
+ "generatedAt": "2026-06-24T21:07:41.680Z",
4
4
  "packageName": "@happyvertical/smrt-profiles",
5
- "packageVersion": "0.34.9",
5
+ "packageVersion": "0.35.1",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "82ab8e5ae031152493dbafcc9ad34df225a0c6b9fee4a0bd63d5051ce57ed9a2",
10
- "packageJson": "c59c043a11289aa8328c09ed4df8d9b629cf77f942be948acaa3a0f511ddb174",
9
+ "manifest": "d83f0663bf9960cd3ca49c6d313d26572b6c5028ae5640c51b249e30d0dfc0ee",
10
+ "packageJson": "249b937ec0c43c50611212190c8e8edb054f9281cb92597c19fe8b4329ace88d",
11
11
  "agents": "3c18e895a2e065f761aabf31779c71a138f0a75261ab223464c3b2a5fbbe6b16"
12
12
  },
13
13
  "exports": [
@@ -54,483 +54,372 @@
54
54
  "risks": [],
55
55
  "objects": [
56
56
  {
57
- "name": "ApiKey",
58
- "qualifiedName": "@happyvertical/smrt-profiles:ApiKey",
57
+ "name": "ApiKeyCollection",
58
+ "qualifiedName": "@happyvertical/smrt-profiles:ApiKeyCollection",
59
59
  "collection": "apikeys",
60
60
  "tableName": "api_keys",
61
61
  "packageName": "@happyvertical/smrt-profiles",
62
- "extends": "SmrtObject",
63
- "fields": [
64
- {
65
- "name": "profileId",
66
- "type": "foreignKey",
67
- "required": true,
68
- "related": "Profile",
69
- "columnType": "UUID"
70
- },
71
- {
72
- "name": "keyHash",
73
- "type": "text",
74
- "required": false,
75
- "columnType": "TEXT"
76
- },
77
- {
78
- "name": "keyPrefix",
79
- "type": "text",
80
- "required": false,
81
- "columnType": "TEXT"
82
- },
83
- {
84
- "name": "name",
85
- "type": "text",
86
- "required": false,
87
- "columnType": "TEXT"
88
- },
89
- {
90
- "name": "scopes",
91
- "type": "json",
92
- "required": false,
93
- "columnType": "JSON"
94
- },
95
- {
96
- "name": "lastUsedAt",
97
- "type": "datetime",
98
- "required": false,
99
- "columnType": "TIMESTAMP"
100
- },
101
- {
102
- "name": "expiresAt",
103
- "type": "datetime",
104
- "required": false,
105
- "columnType": "TIMESTAMP"
106
- },
107
- {
108
- "name": "revokedAt",
109
- "type": "datetime",
110
- "required": false,
111
- "columnType": "TIMESTAMP"
112
- }
113
- ],
114
- "relationships": [
115
- {
116
- "name": "profileId",
117
- "type": "foreignKey",
118
- "required": true,
119
- "related": "Profile",
120
- "columnType": "UUID"
121
- }
122
- ],
62
+ "extends": "SmrtCollection",
63
+ "fields": [],
64
+ "relationships": [],
123
65
  "methods": [
124
- "generate",
125
- "getProfile",
126
- "hasScope",
127
- "hashKey",
128
- "isValid",
129
- "recordUsage",
130
- "revoke",
66
+ "cleanupExpired",
67
+ "findActiveByProfile",
68
+ "findByHash",
69
+ "findByProfile",
70
+ "generateForProfile",
71
+ "revokeAllForProfile",
72
+ "revokeByPrefix",
131
73
  "verify"
132
74
  ],
133
- "surfaces": [
134
- {
135
- "kind": "api",
136
- "name": "apikeys.list",
137
- "operation": "list",
138
- "objectName": "@happyvertical/smrt-profiles:ApiKey",
139
- "path": "/apikeys",
140
- "method": "GET"
141
- },
142
- {
143
- "kind": "api",
144
- "name": "apikeys.get",
145
- "operation": "get",
146
- "objectName": "@happyvertical/smrt-profiles:ApiKey",
147
- "path": "/apikeys/[id]",
148
- "method": "GET"
149
- },
150
- {
151
- "kind": "cli",
152
- "name": "apikey_list",
153
- "operation": "list",
154
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
155
- },
156
- {
157
- "kind": "cli",
158
- "name": "apikey_get",
159
- "operation": "get",
160
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
161
- },
162
- {
163
- "kind": "cli",
164
- "name": "apikey_create",
165
- "operation": "create",
166
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
167
- },
168
- {
169
- "kind": "cli",
170
- "name": "apikey_revoke",
171
- "operation": "revoke",
172
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
173
- },
174
- {
175
- "kind": "mcp",
176
- "name": "apikey_list",
177
- "operation": "list",
178
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
179
- },
180
- {
181
- "kind": "mcp",
182
- "name": "apikey_get",
183
- "operation": "get",
184
- "objectName": "@happyvertical/smrt-profiles:ApiKey"
185
- }
186
- ],
75
+ "surfaces": [],
187
76
  "relationshipFeatures": [
188
- "foreignKey",
189
77
  "uuidColumns"
190
78
  ],
191
79
  "tags": [],
192
80
  "risks": []
193
81
  },
194
82
  {
195
- "name": "AuditLog",
196
- "qualifiedName": "@happyvertical/smrt-profiles:AuditLog",
83
+ "name": "AuditLogCollection",
84
+ "qualifiedName": "@happyvertical/smrt-profiles:AuditLogCollection",
197
85
  "collection": "auditlogs",
198
86
  "tableName": "audit_logs",
199
87
  "packageName": "@happyvertical/smrt-profiles",
200
- "extends": "SmrtObject",
201
- "fields": [
202
- {
203
- "name": "tenantId",
204
- "type": "text",
205
- "required": false,
206
- "columnType": "UUID"
207
- },
208
- {
209
- "name": "profileId",
210
- "type": "foreignKey",
211
- "required": true,
212
- "related": "Profile",
213
- "columnType": "UUID"
214
- },
215
- {
216
- "name": "action",
217
- "type": "text",
218
- "required": false,
219
- "columnType": "TEXT"
220
- },
221
- {
222
- "name": "resourceType",
223
- "type": "text",
224
- "required": false,
225
- "columnType": "TEXT"
226
- },
227
- {
228
- "name": "resourceId",
229
- "type": "text",
230
- "required": false,
231
- "columnType": "TEXT"
232
- },
233
- {
234
- "name": "source",
235
- "type": "text",
236
- "required": false,
237
- "columnType": "TEXT"
238
- },
239
- {
240
- "name": "metadata",
241
- "type": "json",
242
- "required": false,
243
- "columnType": "JSON"
244
- },
245
- {
246
- "name": "onBehalfOfId",
247
- "type": "foreignKey",
248
- "required": false,
249
- "related": "Profile",
250
- "columnType": "UUID"
251
- }
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"
252
100
  ],
253
- "relationships": [
254
- {
255
- "name": "profileId",
256
- "type": "foreignKey",
257
- "required": true,
258
- "related": "Profile",
259
- "columnType": "UUID"
260
- },
261
- {
262
- "name": "onBehalfOfId",
263
- "type": "foreignKey",
264
- "required": false,
265
- "related": "Profile",
266
- "columnType": "UUID"
267
- }
101
+ "surfaces": [],
102
+ "relationshipFeatures": [
103
+ "uuidColumns"
268
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": [],
269
117
  "methods": [
270
- "getEffectiveActor",
271
- "getOnBehalfOf",
272
- "getProfile",
273
- "record"
274
- ],
275
- "surfaces": [
276
- {
277
- "kind": "api",
278
- "name": "auditlogs.list",
279
- "operation": "list",
280
- "objectName": "@happyvertical/smrt-profiles:AuditLog",
281
- "path": "/auditlogs",
282
- "method": "GET"
283
- },
284
- {
285
- "kind": "api",
286
- "name": "auditlogs.get",
287
- "operation": "get",
288
- "objectName": "@happyvertical/smrt-profiles:AuditLog",
289
- "path": "/auditlogs/[id]",
290
- "method": "GET"
291
- },
292
- {
293
- "kind": "cli",
294
- "name": "auditlog_list",
295
- "operation": "list",
296
- "objectName": "@happyvertical/smrt-profiles:AuditLog"
297
- },
298
- {
299
- "kind": "mcp",
300
- "name": "auditlog_list",
301
- "operation": "list",
302
- "objectName": "@happyvertical/smrt-profiles:AuditLog"
303
- },
304
- {
305
- "kind": "mcp",
306
- "name": "auditlog_get",
307
- "operation": "get",
308
- "objectName": "@happyvertical/smrt-profiles:AuditLog"
309
- }
118
+ "cleanupExpired",
119
+ "countRecentByEmail",
120
+ "countRecentByIp",
121
+ "findActiveForEmail",
122
+ "findByIdentity",
123
+ "findByTokenHash",
124
+ "isRateLimitedByEmail",
125
+ "isRateLimitedByIp",
126
+ "revokeForIdentity",
127
+ "verify"
310
128
  ],
129
+ "surfaces": [],
311
130
  "relationshipFeatures": [
312
- "foreignKey",
313
131
  "uuidColumns"
314
132
  ],
315
133
  "tags": [],
316
134
  "risks": []
317
135
  },
318
136
  {
319
- "name": "MagicLinkToken",
320
- "qualifiedName": "@happyvertical/smrt-profiles:MagicLinkToken",
321
- "collection": "magiclinktokens",
322
- "tableName": "magic_link_tokens",
137
+ "name": "NostrIdentityCollection",
138
+ "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentityCollection",
139
+ "collection": "nostridentities",
140
+ "tableName": "nostr_identities",
323
141
  "packageName": "@happyvertical/smrt-profiles",
324
- "extends": "SmrtObject",
325
- "fields": [
326
- {
327
- "name": "nostrIdentityId",
328
- "type": "foreignKey",
329
- "required": true,
330
- "related": "NostrIdentity",
331
- "columnType": "UUID"
332
- },
333
- {
334
- "name": "tokenHash",
335
- "type": "text",
336
- "required": false,
337
- "columnType": "TEXT"
338
- },
339
- {
340
- "name": "email",
341
- "type": "text",
342
- "required": false,
343
- "columnType": "TEXT"
344
- },
345
- {
346
- "name": "expiresAt",
347
- "type": "datetime",
348
- "required": false,
349
- "columnType": "TIMESTAMP"
350
- },
351
- {
352
- "name": "usedAt",
353
- "type": "datetime",
354
- "required": false,
355
- "columnType": "TIMESTAMP"
356
- },
357
- {
358
- "name": "requestedFromIp",
359
- "type": "text",
360
- "required": false,
361
- "columnType": "TEXT"
362
- },
363
- {
364
- "name": "createdAt",
365
- "type": "datetime",
366
- "required": false,
367
- "columnType": "TIMESTAMP"
368
- }
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"
369
156
  ],
370
- "relationships": [
371
- {
372
- "name": "nostrIdentityId",
373
- "type": "foreignKey",
374
- "required": true,
375
- "related": "NostrIdentity",
376
- "columnType": "UUID"
377
- }
157
+ "surfaces": [],
158
+ "relationshipFeatures": [
159
+ "uuidColumns"
378
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": [],
379
173
  "methods": [
380
- "generate",
381
- "getNostrIdentity",
382
- "getTimeRemainingSeconds",
383
- "hashToken",
384
- "isExpired",
385
- "isUsed",
386
- "isValid",
387
- "markUsed",
388
- "verify"
174
+ "findByProfile",
175
+ "findByProvider",
176
+ "findBySubject",
177
+ "linkToProfile",
178
+ "unlinkFromProfile"
389
179
  ],
390
- "surfaces": [
391
- {
392
- "kind": "api",
393
- "name": "magiclinktokens.list",
394
- "operation": "list",
395
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
396
- "path": "/magiclinktokens",
397
- "method": "GET"
398
- },
399
- {
400
- "kind": "api",
401
- "name": "magiclinktokens.get",
402
- "operation": "get",
403
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
404
- "path": "/magiclinktokens/[id]",
405
- "method": "GET"
406
- },
407
- {
408
- "kind": "api",
409
- "name": "magiclinktokens.create",
410
- "operation": "create",
411
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
412
- "path": "/magiclinktokens",
413
- "method": "POST"
414
- },
415
- {
416
- "kind": "api",
417
- "name": "magiclinktokens.update",
418
- "operation": "update",
419
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
420
- "path": "/magiclinktokens/[id]",
421
- "method": "PATCH"
422
- },
423
- {
424
- "kind": "api",
425
- "name": "magiclinktokens.delete",
426
- "operation": "delete",
427
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
428
- "path": "/magiclinktokens/[id]",
429
- "method": "DELETE"
430
- },
431
- {
432
- "kind": "cli",
433
- "name": "magiclinktoken_list",
434
- "operation": "list",
435
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
436
- },
437
- {
438
- "kind": "mcp",
439
- "name": "magiclinktoken_list",
440
- "operation": "list",
441
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
442
- },
443
- {
444
- "kind": "mcp",
445
- "name": "magiclinktoken_get",
446
- "operation": "get",
447
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
448
- },
449
- {
450
- "kind": "mcp",
451
- "name": "magiclinktoken_create",
452
- "operation": "create",
453
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
454
- },
455
- {
456
- "kind": "mcp",
457
- "name": "magiclinktoken_update",
458
- "operation": "update",
459
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
460
- },
461
- {
462
- "kind": "mcp",
463
- "name": "magiclinktoken_delete",
464
- "operation": "delete",
465
- "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
466
- }
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"
467
205
  ],
206
+ "surfaces": [],
468
207
  "relationshipFeatures": [
469
- "foreignKey",
208
+ "SmrtJunction",
470
209
  "uuidColumns"
471
210
  ],
472
211
  "tags": [],
473
212
  "risks": []
474
213
  },
475
214
  {
476
- "name": "NostrIdentity",
477
- "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentity",
478
- "collection": "nostridentities",
479
- "tableName": "nostr_identities",
215
+ "name": "ProfileCollection",
216
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileCollection",
217
+ "collection": "profiles",
218
+ "tableName": "profile_collections",
480
219
  "packageName": "@happyvertical/smrt-profiles",
481
- "extends": "SmrtObject",
482
- "fields": [
483
- {
484
- "name": "profileId",
485
- "type": "foreignKey",
486
- "required": true,
487
- "related": "Profile",
488
- "columnType": "UUID"
489
- },
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": [
490
378
  {
491
- "name": "pubkey",
492
- "type": "text",
493
- "required": false,
494
- "columnType": "TEXT"
379
+ "name": "profileId",
380
+ "type": "foreignKey",
381
+ "required": true,
382
+ "related": "Profile",
383
+ "columnType": "UUID"
495
384
  },
496
385
  {
497
- "name": "encryptedPrivkey",
386
+ "name": "keyHash",
498
387
  "type": "text",
499
388
  "required": false,
500
389
  "columnType": "TEXT"
501
390
  },
502
391
  {
503
- "name": "encryptionIv",
392
+ "name": "keyPrefix",
504
393
  "type": "text",
505
394
  "required": false,
506
395
  "columnType": "TEXT"
507
396
  },
508
397
  {
509
- "name": "encryptionTag",
398
+ "name": "name",
510
399
  "type": "text",
511
400
  "required": false,
512
401
  "columnType": "TEXT"
513
402
  },
514
403
  {
515
- "name": "email",
516
- "type": "text",
404
+ "name": "scopes",
405
+ "type": "json",
517
406
  "required": false,
518
- "columnType": "TEXT"
407
+ "columnType": "JSON"
519
408
  },
520
409
  {
521
- "name": "nip05Username",
522
- "type": "text",
410
+ "name": "lastUsedAt",
411
+ "type": "datetime",
523
412
  "required": false,
524
- "columnType": "TEXT"
413
+ "columnType": "TIMESTAMP"
525
414
  },
526
415
  {
527
- "name": "lastUsedAt",
416
+ "name": "expiresAt",
528
417
  "type": "datetime",
529
418
  "required": false,
530
419
  "columnType": "TIMESTAMP"
531
420
  },
532
421
  {
533
- "name": "verifiedAt",
422
+ "name": "revokedAt",
534
423
  "type": "datetime",
535
424
  "required": false,
536
425
  "columnType": "TIMESTAMP"
@@ -546,57 +435,67 @@
546
435
  }
547
436
  ],
548
437
  "methods": [
549
- "decryptPrivkey",
550
- "findByEmail",
551
- "findByNip05",
552
- "findByPubkey",
553
- "getKeypair",
554
- "getNip05Identifier",
438
+ "generate",
555
439
  "getProfile",
556
- "isVerified",
557
- "markVerified",
558
- "recordUsage"
440
+ "hasScope",
441
+ "hashKey",
442
+ "isValid",
443
+ "recordUsage",
444
+ "revoke",
445
+ "verify"
559
446
  ],
560
447
  "surfaces": [
561
448
  {
562
449
  "kind": "api",
563
- "name": "nostridentities.list",
450
+ "name": "apikeys.list",
564
451
  "operation": "list",
565
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
566
- "path": "/nostridentities",
452
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
453
+ "path": "/apikeys",
567
454
  "method": "GET"
568
455
  },
569
456
  {
570
457
  "kind": "api",
571
- "name": "nostridentities.get",
458
+ "name": "apikeys.get",
572
459
  "operation": "get",
573
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity",
574
- "path": "/nostridentities/[id]",
460
+ "objectName": "@happyvertical/smrt-profiles:ApiKey",
461
+ "path": "/apikeys/[id]",
575
462
  "method": "GET"
576
463
  },
577
464
  {
578
465
  "kind": "cli",
579
- "name": "nostridentity_list",
466
+ "name": "apikey_list",
580
467
  "operation": "list",
581
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
468
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
582
469
  },
583
470
  {
584
471
  "kind": "cli",
585
- "name": "nostridentity_get",
472
+ "name": "apikey_get",
586
473
  "operation": "get",
587
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
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"
588
487
  },
589
488
  {
590
489
  "kind": "mcp",
591
- "name": "nostridentity_list",
490
+ "name": "apikey_list",
592
491
  "operation": "list",
593
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
492
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
594
493
  },
595
494
  {
596
495
  "kind": "mcp",
597
- "name": "nostridentity_get",
496
+ "name": "apikey_get",
598
497
  "operation": "get",
599
- "objectName": "@happyvertical/smrt-profiles:NostrIdentity"
498
+ "objectName": "@happyvertical/smrt-profiles:ApiKey"
600
499
  }
601
500
  ],
602
501
  "relationshipFeatures": [
@@ -607,49 +506,62 @@
607
506
  "risks": []
608
507
  },
609
508
  {
610
- "name": "OidcIdentity",
611
- "qualifiedName": "@happyvertical/smrt-profiles:OidcIdentity",
612
- "collection": "oidcidentities",
613
- "tableName": "oidc_identities",
509
+ "name": "AuditLog",
510
+ "qualifiedName": "@happyvertical/smrt-profiles:AuditLog",
511
+ "collection": "auditlogs",
512
+ "tableName": "audit_logs",
614
513
  "packageName": "@happyvertical/smrt-profiles",
615
514
  "extends": "SmrtObject",
616
515
  "fields": [
617
516
  {
618
- "name": "profileId",
517
+ "name": "tenantId",
518
+ "type": "text",
519
+ "required": false,
520
+ "columnType": "UUID"
521
+ },
522
+ {
523
+ "name": "profileId",
619
524
  "type": "foreignKey",
620
525
  "required": true,
621
526
  "related": "Profile",
622
527
  "columnType": "UUID"
623
528
  },
624
529
  {
625
- "name": "provider",
530
+ "name": "action",
626
531
  "type": "text",
627
532
  "required": false,
628
533
  "columnType": "TEXT"
629
534
  },
630
535
  {
631
- "name": "issuer",
536
+ "name": "resourceType",
632
537
  "type": "text",
633
538
  "required": false,
634
539
  "columnType": "TEXT"
635
540
  },
636
541
  {
637
- "name": "subject",
542
+ "name": "resourceId",
638
543
  "type": "text",
639
544
  "required": false,
640
545
  "columnType": "TEXT"
641
546
  },
642
547
  {
643
- "name": "email",
548
+ "name": "source",
644
549
  "type": "text",
645
550
  "required": false,
646
551
  "columnType": "TEXT"
647
552
  },
648
553
  {
649
- "name": "lastUsedAt",
650
- "type": "datetime",
554
+ "name": "metadata",
555
+ "type": "json",
651
556
  "required": false,
652
- "columnType": "TIMESTAMP"
557
+ "columnType": "JSON"
558
+ },
559
+ {
560
+ "name": "onBehalfOfId",
561
+ "type": "foreignKey",
562
+ "required": false,
563
+ "related": "Profile",
564
+ "columnType": "UUID"
653
565
  }
654
566
  ],
655
567
  "relationships": [
@@ -659,70 +571,55 @@
659
571
  "required": true,
660
572
  "related": "Profile",
661
573
  "columnType": "UUID"
574
+ },
575
+ {
576
+ "name": "onBehalfOfId",
577
+ "type": "foreignKey",
578
+ "required": false,
579
+ "related": "Profile",
580
+ "columnType": "UUID"
662
581
  }
663
582
  ],
664
583
  "methods": [
665
- "findBySubject",
666
- "findOrCreate",
584
+ "getEffectiveActor",
585
+ "getOnBehalfOf",
667
586
  "getProfile",
668
- "recordUsage"
587
+ "record"
669
588
  ],
670
589
  "surfaces": [
671
590
  {
672
591
  "kind": "api",
673
- "name": "oidcidentities.list",
592
+ "name": "auditlogs.list",
674
593
  "operation": "list",
675
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
676
- "path": "/oidcidentities",
594
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
595
+ "path": "/auditlogs",
677
596
  "method": "GET"
678
597
  },
679
598
  {
680
599
  "kind": "api",
681
- "name": "oidcidentities.get",
600
+ "name": "auditlogs.get",
682
601
  "operation": "get",
683
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
684
- "path": "/oidcidentities/[id]",
602
+ "objectName": "@happyvertical/smrt-profiles:AuditLog",
603
+ "path": "/auditlogs/[id]",
685
604
  "method": "GET"
686
605
  },
687
- {
688
- "kind": "api",
689
- "name": "oidcidentities.create",
690
- "operation": "create",
691
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
692
- "path": "/oidcidentities",
693
- "method": "POST"
694
- },
695
- {
696
- "kind": "api",
697
- "name": "oidcidentities.update",
698
- "operation": "update",
699
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
700
- "path": "/oidcidentities/[id]",
701
- "method": "PATCH"
702
- },
703
606
  {
704
607
  "kind": "cli",
705
- "name": "oidcidentity_list",
608
+ "name": "auditlog_list",
706
609
  "operation": "list",
707
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
708
- },
709
- {
710
- "kind": "cli",
711
- "name": "oidcidentity_get",
712
- "operation": "get",
713
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
610
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
714
611
  },
715
612
  {
716
613
  "kind": "mcp",
717
- "name": "oidcidentity_list",
614
+ "name": "auditlog_list",
718
615
  "operation": "list",
719
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
616
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
720
617
  },
721
618
  {
722
619
  "kind": "mcp",
723
- "name": "oidcidentity_get",
620
+ "name": "auditlog_get",
724
621
  "operation": "get",
725
- "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
622
+ "objectName": "@happyvertical/smrt-profiles:AuditLog"
726
623
  }
727
624
  ],
728
625
  "relationshipFeatures": [
@@ -733,289 +630,170 @@
733
630
  "risks": []
734
631
  },
735
632
  {
736
- "name": "Profile",
737
- "qualifiedName": "@happyvertical/smrt-profiles:Profile",
738
- "collection": "profiles",
739
- "tableName": "profiles",
633
+ "name": "MagicLinkToken",
634
+ "qualifiedName": "@happyvertical/smrt-profiles:MagicLinkToken",
635
+ "collection": "magiclinktokens",
636
+ "tableName": "magic_link_tokens",
740
637
  "packageName": "@happyvertical/smrt-profiles",
741
638
  "extends": "SmrtObject",
742
639
  "fields": [
743
640
  {
744
- "name": "created_at",
745
- "type": "datetime",
746
- "required": false,
747
- "columnType": "TIMESTAMP"
748
- },
749
- {
750
- "name": "updated_at",
751
- "type": "datetime",
752
- "required": false,
753
- "columnType": "TIMESTAMP"
754
- },
755
- {
756
- "name": "tenantId",
757
- "type": "text",
758
- "required": false,
759
- "columnType": "UUID"
760
- },
761
- {
762
- "name": "typeId",
641
+ "name": "nostrIdentityId",
763
642
  "type": "foreignKey",
764
643
  "required": true,
765
- "related": "ProfileType",
644
+ "related": "NostrIdentity",
766
645
  "columnType": "UUID"
767
646
  },
768
647
  {
769
- "name": "email",
648
+ "name": "tokenHash",
770
649
  "type": "text",
771
650
  "required": false,
772
651
  "columnType": "TEXT"
773
652
  },
774
653
  {
775
- "name": "name",
654
+ "name": "email",
776
655
  "type": "text",
777
- "required": true,
656
+ "required": false,
778
657
  "columnType": "TEXT"
779
658
  },
780
659
  {
781
- "name": "description",
782
- "type": "text",
660
+ "name": "expiresAt",
661
+ "type": "datetime",
783
662
  "required": false,
784
- "columnType": "TEXT"
663
+ "columnType": "TIMESTAMP"
785
664
  },
786
665
  {
787
- "name": "metadata",
788
- "type": "oneToMany",
666
+ "name": "usedAt",
667
+ "type": "datetime",
789
668
  "required": false,
790
- "related": "ProfileMetadata"
669
+ "columnType": "TIMESTAMP"
791
670
  },
792
671
  {
793
- "name": "relationshipsFrom",
794
- "type": "oneToMany",
672
+ "name": "requestedFromIp",
673
+ "type": "text",
795
674
  "required": false,
796
- "related": "ProfileRelationship"
675
+ "columnType": "TEXT"
797
676
  },
798
677
  {
799
- "name": "relationshipsTo",
800
- "type": "oneToMany",
678
+ "name": "createdAt",
679
+ "type": "datetime",
801
680
  "required": false,
802
- "related": "ProfileRelationship"
681
+ "columnType": "TIMESTAMP"
803
682
  }
804
683
  ],
805
684
  "relationships": [
806
685
  {
807
- "name": "typeId",
686
+ "name": "nostrIdentityId",
808
687
  "type": "foreignKey",
809
688
  "required": true,
810
- "related": "ProfileType",
689
+ "related": "NostrIdentity",
811
690
  "columnType": "UUID"
812
- },
813
- {
814
- "name": "metadata",
815
- "type": "oneToMany",
816
- "required": false,
817
- "related": "ProfileMetadata"
818
- },
819
- {
820
- "name": "relationshipsFrom",
821
- "type": "oneToMany",
822
- "required": false,
823
- "related": "ProfileRelationship"
824
- },
825
- {
826
- "name": "relationshipsTo",
827
- "type": "oneToMany",
828
- "required": false,
829
- "related": "ProfileRelationship"
830
691
  }
831
692
  ],
832
693
  "methods": [
833
- "addAsset",
834
- "addMetadata",
835
- "addRelationship",
836
- "classifyConstraintError",
837
- "clearEmbeddings",
838
- "delete",
839
- "describe",
840
- "destroy",
841
- "do",
842
- "executeToolCall",
843
- "findByMetadata",
844
- "findByType",
845
- "findRelated",
846
- "forget",
847
- "forgetScope",
848
- "generateApiKey",
849
- "generateBio",
850
- "generateEmbeddings",
851
- "getActiveApiKeys",
852
- "getAiUsageSnapshot",
853
- "getApiKeys",
854
- "getAssets",
855
- "getAuditLogs",
856
- "getAvailableTools",
857
- "getEmbedding",
858
- "getFields",
859
- "getId",
860
- "getMetadata",
861
- "getNostrIdentities",
862
- "getOidcIdentities",
863
- "getRelated",
864
- "getRelatedProfiles",
865
- "getRelationships",
866
- "getSavedId",
867
- "getSlug",
868
- "getTypeSlug",
869
- "hasStaleEmbeddings",
870
- "initialize",
871
- "is",
872
- "isRelatedLoaded",
873
- "isSaved",
874
- "linkNostrIdentity",
875
- "linkOidcIdentity",
876
- "listAiUsage",
877
- "loadDataFromDb",
878
- "loadFromId",
879
- "loadFromSlug",
880
- "loadRelated",
881
- "loadRelatedMany",
882
- "markAsPersisted",
883
- "matches",
884
- "recall",
885
- "recallAll",
886
- "recordAction",
887
- "remember",
888
- "removeAsset",
889
- "removeMetadata",
890
- "removeRelationship",
891
- "resetAiUsage",
892
- "save",
893
- "searchByEmail",
894
- "setTypeBySlug",
895
- "summarizeAiUsage",
896
- "toJSON",
897
- "toPlainObject",
898
- "toPublicJSON",
899
- "updateMetadata"
694
+ "generate",
695
+ "getNostrIdentity",
696
+ "getTimeRemainingSeconds",
697
+ "hashToken",
698
+ "isExpired",
699
+ "isUsed",
700
+ "isValid",
701
+ "markUsed",
702
+ "verify"
900
703
  ],
901
704
  "surfaces": [
902
705
  {
903
706
  "kind": "api",
904
- "name": "profiles.list",
707
+ "name": "magiclinktokens.list",
905
708
  "operation": "list",
906
- "objectName": "@happyvertical/smrt-profiles:Profile",
907
- "path": "/profiles",
709
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
710
+ "path": "/magiclinktokens",
908
711
  "method": "GET"
909
712
  },
910
713
  {
911
714
  "kind": "api",
912
- "name": "profiles.get",
715
+ "name": "magiclinktokens.get",
913
716
  "operation": "get",
914
- "objectName": "@happyvertical/smrt-profiles:Profile",
915
- "path": "/profiles/[id]",
916
- "method": "GET"
717
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
718
+ "path": "/magiclinktokens/[id]",
719
+ "method": "GET"
917
720
  },
918
721
  {
919
722
  "kind": "api",
920
- "name": "profiles.create",
723
+ "name": "magiclinktokens.create",
921
724
  "operation": "create",
922
- "objectName": "@happyvertical/smrt-profiles:Profile",
923
- "path": "/profiles",
725
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
726
+ "path": "/magiclinktokens",
924
727
  "method": "POST"
925
728
  },
926
729
  {
927
730
  "kind": "api",
928
- "name": "profiles.update",
731
+ "name": "magiclinktokens.update",
929
732
  "operation": "update",
930
- "objectName": "@happyvertical/smrt-profiles:Profile",
931
- "path": "/profiles/[id]",
733
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
734
+ "path": "/magiclinktokens/[id]",
932
735
  "method": "PATCH"
933
736
  },
934
737
  {
935
738
  "kind": "api",
936
- "name": "profiles.delete",
739
+ "name": "magiclinktokens.delete",
937
740
  "operation": "delete",
938
- "objectName": "@happyvertical/smrt-profiles:Profile",
939
- "path": "/profiles/[id]",
741
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken",
742
+ "path": "/magiclinktokens/[id]",
940
743
  "method": "DELETE"
941
744
  },
942
745
  {
943
746
  "kind": "cli",
944
- "name": "profile_list",
747
+ "name": "magiclinktoken_list",
945
748
  "operation": "list",
946
- "objectName": "@happyvertical/smrt-profiles:Profile"
947
- },
948
- {
949
- "kind": "cli",
950
- "name": "profile_get",
951
- "operation": "get",
952
- "objectName": "@happyvertical/smrt-profiles:Profile"
953
- },
954
- {
955
- "kind": "cli",
956
- "name": "profile_create",
957
- "operation": "create",
958
- "objectName": "@happyvertical/smrt-profiles:Profile"
959
- },
960
- {
961
- "kind": "cli",
962
- "name": "profile_update",
963
- "operation": "update",
964
- "objectName": "@happyvertical/smrt-profiles:Profile"
965
- },
966
- {
967
- "kind": "cli",
968
- "name": "profile_delete",
969
- "operation": "delete",
970
- "objectName": "@happyvertical/smrt-profiles:Profile"
749
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
971
750
  },
972
751
  {
973
752
  "kind": "mcp",
974
- "name": "profile_list",
753
+ "name": "magiclinktoken_list",
975
754
  "operation": "list",
976
- "objectName": "@happyvertical/smrt-profiles:Profile"
755
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
977
756
  },
978
757
  {
979
758
  "kind": "mcp",
980
- "name": "profile_get",
759
+ "name": "magiclinktoken_get",
981
760
  "operation": "get",
982
- "objectName": "@happyvertical/smrt-profiles:Profile"
761
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
983
762
  },
984
763
  {
985
764
  "kind": "mcp",
986
- "name": "profile_create",
765
+ "name": "magiclinktoken_create",
987
766
  "operation": "create",
988
- "objectName": "@happyvertical/smrt-profiles:Profile"
767
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
989
768
  },
990
769
  {
991
770
  "kind": "mcp",
992
- "name": "profile_update",
771
+ "name": "magiclinktoken_update",
993
772
  "operation": "update",
994
- "objectName": "@happyvertical/smrt-profiles:Profile"
773
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
774
+ },
775
+ {
776
+ "kind": "mcp",
777
+ "name": "magiclinktoken_delete",
778
+ "operation": "delete",
779
+ "objectName": "@happyvertical/smrt-profiles:MagicLinkToken"
995
780
  }
996
781
  ],
997
782
  "relationshipFeatures": [
998
783
  "foreignKey",
999
- "oneToMany",
1000
784
  "uuidColumns"
1001
785
  ],
1002
786
  "tags": [],
1003
787
  "risks": []
1004
788
  },
1005
789
  {
1006
- "name": "ProfileAsset",
1007
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileAsset",
1008
- "collection": "profileassets",
1009
- "tableName": "profile_assets",
790
+ "name": "NostrIdentity",
791
+ "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentity",
792
+ "collection": "nostridentities",
793
+ "tableName": "nostr_identities",
1010
794
  "packageName": "@happyvertical/smrt-profiles",
1011
795
  "extends": "SmrtObject",
1012
796
  "fields": [
1013
- {
1014
- "name": "tenantId",
1015
- "type": "text",
1016
- "required": false,
1017
- "columnType": "UUID"
1018
- },
1019
797
  {
1020
798
  "name": "profileId",
1021
799
  "type": "foreignKey",
@@ -1024,23 +802,52 @@
1024
802
  "columnType": "UUID"
1025
803
  },
1026
804
  {
1027
- "name": "assetId",
1028
- "type": "crossPackageRef",
1029
- "required": true,
1030
- "related": "@happyvertical/smrt-assets:Asset",
1031
- "columnType": "UUID"
805
+ "name": "pubkey",
806
+ "type": "text",
807
+ "required": false,
808
+ "columnType": "TEXT"
1032
809
  },
1033
810
  {
1034
- "name": "relationship",
811
+ "name": "encryptedPrivkey",
1035
812
  "type": "text",
1036
- "required": true,
813
+ "required": false,
1037
814
  "columnType": "TEXT"
1038
815
  },
1039
816
  {
1040
- "name": "sortOrder",
1041
- "type": "integer",
1042
- "required": true,
1043
- "columnType": "INTEGER"
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"
1044
851
  }
1045
852
  ],
1046
853
  "relationships": [
@@ -1050,19 +857,63 @@
1050
857
  "required": true,
1051
858
  "related": "Profile",
1052
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"
1053
882
  },
1054
883
  {
1055
- "name": "assetId",
1056
- "type": "crossPackageRef",
1057
- "required": true,
1058
- "related": "@happyvertical/smrt-assets:Asset",
1059
- "columnType": "UUID"
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"
1060
914
  }
1061
915
  ],
1062
- "methods": [],
1063
- "surfaces": [],
1064
916
  "relationshipFeatures": [
1065
- "crossPackageRef",
1066
917
  "foreignKey",
1067
918
  "uuidColumns"
1068
919
  ],
@@ -1070,50 +921,49 @@
1070
921
  "risks": []
1071
922
  },
1072
923
  {
1073
- "name": "ProfileMetadata",
1074
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetadata",
1075
- "collection": "profilemetadatas",
1076
- "tableName": "profile_metadata",
924
+ "name": "OidcIdentity",
925
+ "qualifiedName": "@happyvertical/smrt-profiles:OidcIdentity",
926
+ "collection": "oidcidentities",
927
+ "tableName": "oidc_identities",
1077
928
  "packageName": "@happyvertical/smrt-profiles",
1078
929
  "extends": "SmrtObject",
1079
930
  "fields": [
1080
931
  {
1081
- "name": "created_at",
1082
- "type": "datetime",
1083
- "required": false,
1084
- "columnType": "TIMESTAMP"
932
+ "name": "profileId",
933
+ "type": "foreignKey",
934
+ "required": true,
935
+ "related": "Profile",
936
+ "columnType": "UUID"
1085
937
  },
1086
938
  {
1087
- "name": "updated_at",
1088
- "type": "datetime",
939
+ "name": "provider",
940
+ "type": "text",
1089
941
  "required": false,
1090
- "columnType": "TIMESTAMP"
942
+ "columnType": "TEXT"
1091
943
  },
1092
944
  {
1093
- "name": "tenantId",
945
+ "name": "issuer",
1094
946
  "type": "text",
1095
947
  "required": false,
1096
- "columnType": "UUID"
1097
- },
1098
- {
1099
- "name": "profileId",
1100
- "type": "foreignKey",
1101
- "required": true,
1102
- "related": "Profile",
1103
- "columnType": "UUID"
948
+ "columnType": "TEXT"
1104
949
  },
1105
950
  {
1106
- "name": "metafieldId",
1107
- "type": "foreignKey",
1108
- "required": true,
1109
- "related": "ProfileMetafield",
1110
- "columnType": "UUID"
951
+ "name": "subject",
952
+ "type": "text",
953
+ "required": false,
954
+ "columnType": "TEXT"
1111
955
  },
1112
956
  {
1113
- "name": "value",
957
+ "name": "email",
1114
958
  "type": "text",
1115
- "required": true,
959
+ "required": false,
1116
960
  "columnType": "TEXT"
961
+ },
962
+ {
963
+ "name": "lastUsedAt",
964
+ "type": "datetime",
965
+ "required": false,
966
+ "columnType": "TIMESTAMP"
1117
967
  }
1118
968
  ],
1119
969
  "relationships": [
@@ -1123,140 +973,70 @@
1123
973
  "required": true,
1124
974
  "related": "Profile",
1125
975
  "columnType": "UUID"
1126
- },
1127
- {
1128
- "name": "metafieldId",
1129
- "type": "foreignKey",
1130
- "required": true,
1131
- "related": "ProfileMetafield",
1132
- "columnType": "UUID"
1133
976
  }
1134
977
  ],
1135
978
  "methods": [
1136
- "classifyConstraintError",
1137
- "clearEmbeddings",
1138
- "delete",
1139
- "describe",
1140
- "destroy",
1141
- "do",
1142
- "executeToolCall",
1143
- "forget",
1144
- "forgetScope",
1145
- "generateEmbeddings",
1146
- "getAiUsageSnapshot",
1147
- "getAvailableTools",
1148
- "getEmbedding",
1149
- "getFields",
1150
- "getId",
1151
- "getMetafieldSlug",
1152
- "getRelated",
1153
- "getSavedId",
1154
- "getSlug",
1155
- "hasStaleEmbeddings",
1156
- "initialize",
1157
- "is",
1158
- "isRelatedLoaded",
1159
- "isSaved",
1160
- "listAiUsage",
1161
- "loadDataFromDb",
1162
- "loadFromId",
1163
- "loadFromSlug",
1164
- "loadRelated",
1165
- "loadRelatedMany",
1166
- "markAsPersisted",
1167
- "recall",
1168
- "recallAll",
1169
- "remember",
1170
- "resetAiUsage",
1171
- "save",
1172
- "summarizeAiUsage",
1173
- "toJSON",
1174
- "toPlainObject",
1175
- "toPublicJSON",
1176
- "validate"
979
+ "findBySubject",
980
+ "findOrCreate",
981
+ "getProfile",
982
+ "recordUsage"
1177
983
  ],
1178
984
  "surfaces": [
1179
985
  {
1180
986
  "kind": "api",
1181
- "name": "profilemetadatas.list",
987
+ "name": "oidcidentities.list",
1182
988
  "operation": "list",
1183
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1184
- "path": "/profilemetadatas",
989
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
990
+ "path": "/oidcidentities",
1185
991
  "method": "GET"
1186
992
  },
1187
993
  {
1188
994
  "kind": "api",
1189
- "name": "profilemetadatas.get",
995
+ "name": "oidcidentities.get",
1190
996
  "operation": "get",
1191
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1192
- "path": "/profilemetadatas/[id]",
997
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
998
+ "path": "/oidcidentities/[id]",
1193
999
  "method": "GET"
1194
1000
  },
1195
1001
  {
1196
1002
  "kind": "api",
1197
- "name": "profilemetadatas.create",
1003
+ "name": "oidcidentities.create",
1198
1004
  "operation": "create",
1199
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1200
- "path": "/profilemetadatas",
1005
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
1006
+ "path": "/oidcidentities",
1201
1007
  "method": "POST"
1202
1008
  },
1203
1009
  {
1204
1010
  "kind": "api",
1205
- "name": "profilemetadatas.update",
1011
+ "name": "oidcidentities.update",
1206
1012
  "operation": "update",
1207
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1208
- "path": "/profilemetadatas/[id]",
1013
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity",
1014
+ "path": "/oidcidentities/[id]",
1209
1015
  "method": "PATCH"
1210
1016
  },
1211
- {
1212
- "kind": "api",
1213
- "name": "profilemetadatas.delete",
1214
- "operation": "delete",
1215
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1216
- "path": "/profilemetadatas/[id]",
1217
- "method": "DELETE"
1218
- },
1219
1017
  {
1220
1018
  "kind": "cli",
1221
- "name": "profilemetadata_list",
1019
+ "name": "oidcidentity_list",
1222
1020
  "operation": "list",
1223
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1021
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1224
1022
  },
1225
1023
  {
1226
1024
  "kind": "cli",
1227
- "name": "profilemetadata_get",
1025
+ "name": "oidcidentity_get",
1228
1026
  "operation": "get",
1229
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1230
- },
1231
- {
1232
- "kind": "cli",
1233
- "name": "profilemetadata_create",
1234
- "operation": "create",
1235
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1236
- },
1237
- {
1238
- "kind": "cli",
1239
- "name": "profilemetadata_update",
1240
- "operation": "update",
1241
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1242
- },
1243
- {
1244
- "kind": "cli",
1245
- "name": "profilemetadata_delete",
1246
- "operation": "delete",
1247
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1027
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1248
1028
  },
1249
1029
  {
1250
1030
  "kind": "mcp",
1251
- "name": "profilemetadata_list",
1031
+ "name": "oidcidentity_list",
1252
1032
  "operation": "list",
1253
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1033
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1254
1034
  },
1255
1035
  {
1256
1036
  "kind": "mcp",
1257
- "name": "profilemetadata_get",
1037
+ "name": "oidcidentity_get",
1258
1038
  "operation": "get",
1259
- "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1039
+ "objectName": "@happyvertical/smrt-profiles:OidcIdentity"
1260
1040
  }
1261
1041
  ],
1262
1042
  "relationshipFeatures": [
@@ -1267,10 +1047,10 @@
1267
1047
  "risks": []
1268
1048
  },
1269
1049
  {
1270
- "name": "ProfileMetafield",
1271
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetafield",
1272
- "collection": "profilemetafields",
1273
- "tableName": "profile_metafields",
1050
+ "name": "Profile",
1051
+ "qualifiedName": "@happyvertical/smrt-profiles:Profile",
1052
+ "collection": "profiles",
1053
+ "tableName": "profiles",
1274
1054
  "packageName": "@happyvertical/smrt-profiles",
1275
1055
  "extends": "SmrtObject",
1276
1056
  "fields": [
@@ -1292,6 +1072,19 @@
1292
1072
  "required": false,
1293
1073
  "columnType": "UUID"
1294
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
+ },
1295
1088
  {
1296
1089
  "name": "name",
1297
1090
  "type": "text",
@@ -1305,14 +1098,55 @@
1305
1098
  "columnType": "TEXT"
1306
1099
  },
1307
1100
  {
1308
- "name": "validation",
1309
- "type": "json",
1101
+ "name": "metadata",
1102
+ "type": "oneToMany",
1310
1103
  "required": false,
1311
- "columnType": "JSON"
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"
1312
1144
  }
1313
1145
  ],
1314
- "relationships": [],
1315
1146
  "methods": [
1147
+ "addAsset",
1148
+ "addMetadata",
1149
+ "addRelationship",
1316
1150
  "classifyConstraintError",
1317
1151
  "clearEmbeddings",
1318
1152
  "delete",
@@ -1320,24 +1154,39 @@
1320
1154
  "destroy",
1321
1155
  "do",
1322
1156
  "executeToolCall",
1157
+ "findByMetadata",
1158
+ "findByType",
1159
+ "findRelated",
1323
1160
  "forget",
1324
1161
  "forgetScope",
1162
+ "generateApiKey",
1163
+ "generateBio",
1325
1164
  "generateEmbeddings",
1165
+ "getActiveApiKeys",
1326
1166
  "getAiUsageSnapshot",
1167
+ "getApiKeys",
1168
+ "getAssets",
1169
+ "getAuditLogs",
1327
1170
  "getAvailableTools",
1328
- "getBySlug",
1329
1171
  "getEmbedding",
1330
1172
  "getFields",
1331
1173
  "getId",
1174
+ "getMetadata",
1175
+ "getNostrIdentities",
1176
+ "getOidcIdentities",
1332
1177
  "getRelated",
1178
+ "getRelatedProfiles",
1179
+ "getRelationships",
1333
1180
  "getSavedId",
1334
1181
  "getSlug",
1335
- "getValidator",
1182
+ "getTypeSlug",
1336
1183
  "hasStaleEmbeddings",
1337
1184
  "initialize",
1338
1185
  "is",
1339
1186
  "isRelatedLoaded",
1340
1187
  "isSaved",
1188
+ "linkNostrIdentity",
1189
+ "linkOidcIdentity",
1341
1190
  "listAiUsage",
1342
1191
  "loadDataFromDb",
1343
1192
  "loadFromId",
@@ -1345,120 +1194,136 @@
1345
1194
  "loadRelated",
1346
1195
  "loadRelatedMany",
1347
1196
  "markAsPersisted",
1197
+ "matches",
1348
1198
  "recall",
1349
1199
  "recallAll",
1350
- "registerValidator",
1200
+ "recordAction",
1351
1201
  "remember",
1202
+ "removeAsset",
1203
+ "removeMetadata",
1204
+ "removeRelationship",
1352
1205
  "resetAiUsage",
1353
1206
  "save",
1207
+ "searchByEmail",
1208
+ "setTypeBySlug",
1354
1209
  "summarizeAiUsage",
1355
1210
  "toJSON",
1356
1211
  "toPlainObject",
1357
1212
  "toPublicJSON",
1358
- "validateValue"
1213
+ "updateMetadata"
1359
1214
  ],
1360
1215
  "surfaces": [
1361
1216
  {
1362
1217
  "kind": "api",
1363
- "name": "profilemetafields.list",
1218
+ "name": "profiles.list",
1364
1219
  "operation": "list",
1365
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1366
- "path": "/profilemetafields",
1220
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1221
+ "path": "/profiles",
1367
1222
  "method": "GET"
1368
1223
  },
1369
1224
  {
1370
1225
  "kind": "api",
1371
- "name": "profilemetafields.get",
1226
+ "name": "profiles.get",
1372
1227
  "operation": "get",
1373
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1374
- "path": "/profilemetafields/[id]",
1228
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1229
+ "path": "/profiles/[id]",
1375
1230
  "method": "GET"
1376
1231
  },
1377
1232
  {
1378
1233
  "kind": "api",
1379
- "name": "profilemetafields.create",
1234
+ "name": "profiles.create",
1380
1235
  "operation": "create",
1381
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1382
- "path": "/profilemetafields",
1236
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1237
+ "path": "/profiles",
1383
1238
  "method": "POST"
1384
1239
  },
1385
1240
  {
1386
1241
  "kind": "api",
1387
- "name": "profilemetafields.update",
1242
+ "name": "profiles.update",
1388
1243
  "operation": "update",
1389
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1390
- "path": "/profilemetafields/[id]",
1244
+ "objectName": "@happyvertical/smrt-profiles:Profile",
1245
+ "path": "/profiles/[id]",
1391
1246
  "method": "PATCH"
1392
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
+ },
1393
1256
  {
1394
1257
  "kind": "cli",
1395
- "name": "profilemetafield_list",
1258
+ "name": "profile_list",
1396
1259
  "operation": "list",
1397
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1260
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1398
1261
  },
1399
1262
  {
1400
1263
  "kind": "cli",
1401
- "name": "profilemetafield_get",
1264
+ "name": "profile_get",
1402
1265
  "operation": "get",
1403
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1266
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1404
1267
  },
1405
1268
  {
1406
1269
  "kind": "cli",
1407
- "name": "profilemetafield_create",
1270
+ "name": "profile_create",
1408
1271
  "operation": "create",
1409
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1272
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1410
1273
  },
1411
1274
  {
1412
1275
  "kind": "cli",
1413
- "name": "profilemetafield_update",
1276
+ "name": "profile_update",
1414
1277
  "operation": "update",
1415
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1278
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1416
1279
  },
1417
1280
  {
1418
1281
  "kind": "cli",
1419
- "name": "profilemetafield_delete",
1282
+ "name": "profile_delete",
1420
1283
  "operation": "delete",
1421
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1284
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1422
1285
  },
1423
1286
  {
1424
1287
  "kind": "mcp",
1425
- "name": "profilemetafield_list",
1288
+ "name": "profile_list",
1426
1289
  "operation": "list",
1427
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1290
+ "objectName": "@happyvertical/smrt-profiles:Profile"
1428
1291
  },
1429
1292
  {
1430
1293
  "kind": "mcp",
1431
- "name": "profilemetafield_get",
1294
+ "name": "profile_get",
1432
1295
  "operation": "get",
1433
- "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
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"
1434
1309
  }
1435
1310
  ],
1436
1311
  "relationshipFeatures": [
1312
+ "foreignKey",
1313
+ "oneToMany",
1437
1314
  "uuidColumns"
1438
1315
  ],
1439
1316
  "tags": [],
1440
1317
  "risks": []
1441
1318
  },
1442
1319
  {
1443
- "name": "ProfileRelationship",
1444
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationship",
1445
- "collection": "profilerelationships",
1446
- "tableName": "profile_relationships",
1320
+ "name": "ProfileAsset",
1321
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileAsset",
1322
+ "collection": "profileassets",
1323
+ "tableName": "profile_assets",
1447
1324
  "packageName": "@happyvertical/smrt-profiles",
1448
1325
  "extends": "SmrtObject",
1449
1326
  "fields": [
1450
- {
1451
- "name": "created_at",
1452
- "type": "datetime",
1453
- "required": false,
1454
- "columnType": "TIMESTAMP"
1455
- },
1456
- {
1457
- "name": "updated_at",
1458
- "type": "datetime",
1459
- "required": false,
1460
- "columnType": "TIMESTAMP"
1461
- },
1462
1327
  {
1463
1328
  "name": "tenantId",
1464
1329
  "type": "text",
@@ -1466,100 +1331,141 @@
1466
1331
  "columnType": "UUID"
1467
1332
  },
1468
1333
  {
1469
- "name": "fromProfileId",
1334
+ "name": "profileId",
1470
1335
  "type": "foreignKey",
1471
1336
  "required": true,
1472
1337
  "related": "Profile",
1473
1338
  "columnType": "UUID"
1474
1339
  },
1475
1340
  {
1476
- "name": "toProfileId",
1477
- "type": "foreignKey",
1341
+ "name": "assetId",
1342
+ "type": "crossPackageRef",
1478
1343
  "required": true,
1479
- "related": "Profile",
1344
+ "related": "@happyvertical/smrt-assets:Asset",
1480
1345
  "columnType": "UUID"
1481
1346
  },
1482
1347
  {
1483
- "name": "typeId",
1484
- "type": "foreignKey",
1348
+ "name": "relationship",
1349
+ "type": "text",
1485
1350
  "required": true,
1486
- "related": "ProfileRelationshipType",
1487
- "columnType": "UUID"
1351
+ "columnType": "TEXT"
1488
1352
  },
1489
1353
  {
1490
- "name": "contextProfileId",
1354
+ "name": "sortOrder",
1355
+ "type": "integer",
1356
+ "required": true,
1357
+ "columnType": "INTEGER"
1358
+ }
1359
+ ],
1360
+ "relationships": [
1361
+ {
1362
+ "name": "profileId",
1491
1363
  "type": "foreignKey",
1492
- "required": false,
1364
+ "required": true,
1493
1365
  "related": "Profile",
1494
1366
  "columnType": "UUID"
1495
1367
  },
1496
1368
  {
1497
- "name": "terms",
1498
- "type": "oneToMany",
1499
- "required": false,
1500
- "related": "ProfileRelationshipTerm"
1369
+ "name": "assetId",
1370
+ "type": "crossPackageRef",
1371
+ "required": true,
1372
+ "related": "@happyvertical/smrt-assets:Asset",
1373
+ "columnType": "UUID"
1501
1374
  }
1502
1375
  ],
1503
- "relationships": [
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": [
1504
1394
  {
1505
- "name": "fromProfileId",
1506
- "type": "foreignKey",
1507
- "required": true,
1508
- "related": "Profile",
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,
1509
1410
  "columnType": "UUID"
1510
1411
  },
1511
1412
  {
1512
- "name": "toProfileId",
1413
+ "name": "profileId",
1513
1414
  "type": "foreignKey",
1514
1415
  "required": true,
1515
1416
  "related": "Profile",
1516
1417
  "columnType": "UUID"
1517
1418
  },
1518
1419
  {
1519
- "name": "typeId",
1420
+ "name": "metafieldId",
1520
1421
  "type": "foreignKey",
1521
1422
  "required": true,
1522
- "related": "ProfileRelationshipType",
1423
+ "related": "ProfileMetafield",
1523
1424
  "columnType": "UUID"
1524
1425
  },
1525
1426
  {
1526
- "name": "contextProfileId",
1427
+ "name": "value",
1428
+ "type": "text",
1429
+ "required": true,
1430
+ "columnType": "TEXT"
1431
+ }
1432
+ ],
1433
+ "relationships": [
1434
+ {
1435
+ "name": "profileId",
1527
1436
  "type": "foreignKey",
1528
- "required": false,
1437
+ "required": true,
1529
1438
  "related": "Profile",
1530
1439
  "columnType": "UUID"
1531
1440
  },
1532
1441
  {
1533
- "name": "terms",
1534
- "type": "oneToMany",
1535
- "required": false,
1536
- "related": "ProfileRelationshipTerm"
1442
+ "name": "metafieldId",
1443
+ "type": "foreignKey",
1444
+ "required": true,
1445
+ "related": "ProfileMetafield",
1446
+ "columnType": "UUID"
1537
1447
  }
1538
1448
  ],
1539
1449
  "methods": [
1540
- "addTerm",
1541
1450
  "classifyConstraintError",
1542
1451
  "clearEmbeddings",
1543
1452
  "delete",
1544
1453
  "describe",
1545
1454
  "destroy",
1546
1455
  "do",
1547
- "endCurrentTerm",
1548
1456
  "executeToolCall",
1549
1457
  "forget",
1550
1458
  "forgetScope",
1551
1459
  "generateEmbeddings",
1552
- "getActiveTerm",
1553
1460
  "getAiUsageSnapshot",
1554
1461
  "getAvailableTools",
1555
1462
  "getEmbedding",
1556
1463
  "getFields",
1557
1464
  "getId",
1465
+ "getMetafieldSlug",
1558
1466
  "getRelated",
1559
1467
  "getSavedId",
1560
1468
  "getSlug",
1561
- "getTerms",
1562
- "getTypeSlug",
1563
1469
  "hasStaleEmbeddings",
1564
1470
  "initialize",
1565
1471
  "is",
@@ -1580,97 +1486,105 @@
1580
1486
  "summarizeAiUsage",
1581
1487
  "toJSON",
1582
1488
  "toPlainObject",
1583
- "toPublicJSON"
1489
+ "toPublicJSON",
1490
+ "validate"
1584
1491
  ],
1585
1492
  "surfaces": [
1586
1493
  {
1587
1494
  "kind": "api",
1588
- "name": "profilerelationships.list",
1495
+ "name": "profilemetadatas.list",
1589
1496
  "operation": "list",
1590
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1591
- "path": "/profilerelationships",
1497
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1498
+ "path": "/profilemetadatas",
1592
1499
  "method": "GET"
1593
1500
  },
1594
1501
  {
1595
1502
  "kind": "api",
1596
- "name": "profilerelationships.get",
1503
+ "name": "profilemetadatas.get",
1597
1504
  "operation": "get",
1598
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1599
- "path": "/profilerelationships/[id]",
1505
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1506
+ "path": "/profilemetadatas/[id]",
1600
1507
  "method": "GET"
1601
1508
  },
1602
1509
  {
1603
1510
  "kind": "api",
1604
- "name": "profilerelationships.create",
1511
+ "name": "profilemetadatas.create",
1605
1512
  "operation": "create",
1606
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1607
- "path": "/profilerelationships",
1513
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1514
+ "path": "/profilemetadatas",
1608
1515
  "method": "POST"
1609
1516
  },
1610
1517
  {
1611
1518
  "kind": "api",
1612
- "name": "profilerelationships.delete",
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",
1613
1528
  "operation": "delete",
1614
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1615
- "path": "/profilerelationships/[id]",
1529
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata",
1530
+ "path": "/profilemetadatas/[id]",
1616
1531
  "method": "DELETE"
1617
1532
  },
1618
1533
  {
1619
1534
  "kind": "cli",
1620
- "name": "profilerelationship_list",
1535
+ "name": "profilemetadata_list",
1621
1536
  "operation": "list",
1622
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1537
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1623
1538
  },
1624
1539
  {
1625
1540
  "kind": "cli",
1626
- "name": "profilerelationship_get",
1541
+ "name": "profilemetadata_get",
1627
1542
  "operation": "get",
1628
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1543
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1629
1544
  },
1630
1545
  {
1631
1546
  "kind": "cli",
1632
- "name": "profilerelationship_create",
1547
+ "name": "profilemetadata_create",
1633
1548
  "operation": "create",
1634
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1549
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1635
1550
  },
1636
1551
  {
1637
1552
  "kind": "cli",
1638
- "name": "profilerelationship_update",
1553
+ "name": "profilemetadata_update",
1639
1554
  "operation": "update",
1640
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1555
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1641
1556
  },
1642
1557
  {
1643
1558
  "kind": "cli",
1644
- "name": "profilerelationship_delete",
1559
+ "name": "profilemetadata_delete",
1645
1560
  "operation": "delete",
1646
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1561
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1647
1562
  },
1648
1563
  {
1649
1564
  "kind": "mcp",
1650
- "name": "profilerelationship_list",
1565
+ "name": "profilemetadata_list",
1651
1566
  "operation": "list",
1652
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1567
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1653
1568
  },
1654
1569
  {
1655
1570
  "kind": "mcp",
1656
- "name": "profilerelationship_get",
1571
+ "name": "profilemetadata_get",
1657
1572
  "operation": "get",
1658
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1573
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetadata"
1659
1574
  }
1660
1575
  ],
1661
1576
  "relationshipFeatures": [
1662
1577
  "foreignKey",
1663
- "oneToMany",
1664
1578
  "uuidColumns"
1665
1579
  ],
1666
1580
  "tags": [],
1667
1581
  "risks": []
1668
1582
  },
1669
1583
  {
1670
- "name": "ProfileRelationshipTerm",
1671
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1672
- "collection": "profilerelationshipterms",
1673
- "tableName": "profile_relationship_terms",
1584
+ "name": "ProfileMetafield",
1585
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetafield",
1586
+ "collection": "profilemetafields",
1587
+ "tableName": "profile_metafields",
1674
1588
  "packageName": "@happyvertical/smrt-profiles",
1675
1589
  "extends": "SmrtObject",
1676
1590
  "fields": [
@@ -1687,34 +1601,31 @@
1687
1601
  "columnType": "TIMESTAMP"
1688
1602
  },
1689
1603
  {
1690
- "name": "relationshipId",
1691
- "type": "foreignKey",
1692
- "required": true,
1693
- "related": "ProfileRelationship",
1604
+ "name": "tenantId",
1605
+ "type": "text",
1606
+ "required": false,
1694
1607
  "columnType": "UUID"
1695
1608
  },
1696
1609
  {
1697
- "name": "startedAt",
1698
- "type": "datetime",
1610
+ "name": "name",
1611
+ "type": "text",
1699
1612
  "required": true,
1700
- "columnType": "TIMESTAMP"
1613
+ "columnType": "TEXT"
1701
1614
  },
1702
1615
  {
1703
- "name": "endedAt",
1704
- "type": "datetime",
1616
+ "name": "description",
1617
+ "type": "text",
1705
1618
  "required": false,
1706
- "columnType": "TIMESTAMP"
1707
- }
1708
- ],
1709
- "relationships": [
1710
- {
1711
- "name": "relationshipId",
1712
- "type": "foreignKey",
1713
- "required": true,
1714
- "related": "ProfileRelationship",
1715
- "columnType": "UUID"
1619
+ "columnType": "TEXT"
1620
+ },
1621
+ {
1622
+ "name": "validation",
1623
+ "type": "json",
1624
+ "required": false,
1625
+ "columnType": "JSON"
1716
1626
  }
1717
1627
  ],
1628
+ "relationships": [],
1718
1629
  "methods": [
1719
1630
  "classifyConstraintError",
1720
1631
  "clearEmbeddings",
@@ -1722,24 +1633,23 @@
1722
1633
  "describe",
1723
1634
  "destroy",
1724
1635
  "do",
1725
- "end",
1726
1636
  "executeToolCall",
1727
1637
  "forget",
1728
1638
  "forgetScope",
1729
1639
  "generateEmbeddings",
1730
1640
  "getAiUsageSnapshot",
1731
1641
  "getAvailableTools",
1732
- "getDurationDays",
1642
+ "getBySlug",
1733
1643
  "getEmbedding",
1734
1644
  "getFields",
1735
1645
  "getId",
1736
1646
  "getRelated",
1737
1647
  "getSavedId",
1738
1648
  "getSlug",
1649
+ "getValidator",
1739
1650
  "hasStaleEmbeddings",
1740
1651
  "initialize",
1741
1652
  "is",
1742
- "isActive",
1743
1653
  "isRelatedLoaded",
1744
1654
  "isSaved",
1745
1655
  "listAiUsage",
@@ -1751,110 +1661,103 @@
1751
1661
  "markAsPersisted",
1752
1662
  "recall",
1753
1663
  "recallAll",
1664
+ "registerValidator",
1754
1665
  "remember",
1755
1666
  "resetAiUsage",
1756
1667
  "save",
1757
1668
  "summarizeAiUsage",
1758
1669
  "toJSON",
1759
1670
  "toPlainObject",
1760
- "toPublicJSON"
1671
+ "toPublicJSON",
1672
+ "validateValue"
1761
1673
  ],
1762
1674
  "surfaces": [
1763
1675
  {
1764
1676
  "kind": "api",
1765
- "name": "profilerelationshipterms.list",
1677
+ "name": "profilemetafields.list",
1766
1678
  "operation": "list",
1767
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1768
- "path": "/profilerelationshipterms",
1679
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1680
+ "path": "/profilemetafields",
1769
1681
  "method": "GET"
1770
1682
  },
1771
1683
  {
1772
1684
  "kind": "api",
1773
- "name": "profilerelationshipterms.get",
1685
+ "name": "profilemetafields.get",
1774
1686
  "operation": "get",
1775
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1776
- "path": "/profilerelationshipterms/[id]",
1687
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1688
+ "path": "/profilemetafields/[id]",
1777
1689
  "method": "GET"
1778
1690
  },
1779
1691
  {
1780
1692
  "kind": "api",
1781
- "name": "profilerelationshipterms.create",
1693
+ "name": "profilemetafields.create",
1782
1694
  "operation": "create",
1783
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1784
- "path": "/profilerelationshipterms",
1695
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1696
+ "path": "/profilemetafields",
1785
1697
  "method": "POST"
1786
1698
  },
1787
1699
  {
1788
1700
  "kind": "api",
1789
- "name": "profilerelationshipterms.update",
1701
+ "name": "profilemetafields.update",
1790
1702
  "operation": "update",
1791
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1792
- "path": "/profilerelationshipterms/[id]",
1703
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield",
1704
+ "path": "/profilemetafields/[id]",
1793
1705
  "method": "PATCH"
1794
1706
  },
1795
- {
1796
- "kind": "api",
1797
- "name": "profilerelationshipterms.delete",
1798
- "operation": "delete",
1799
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1800
- "path": "/profilerelationshipterms/[id]",
1801
- "method": "DELETE"
1802
- },
1803
1707
  {
1804
1708
  "kind": "cli",
1805
- "name": "profilerelationshipterm_list",
1709
+ "name": "profilemetafield_list",
1806
1710
  "operation": "list",
1807
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1711
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1808
1712
  },
1809
1713
  {
1810
1714
  "kind": "cli",
1811
- "name": "profilerelationshipterm_get",
1715
+ "name": "profilemetafield_get",
1812
1716
  "operation": "get",
1813
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1717
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1814
1718
  },
1815
1719
  {
1816
1720
  "kind": "cli",
1817
- "name": "profilerelationshipterm_create",
1721
+ "name": "profilemetafield_create",
1818
1722
  "operation": "create",
1819
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1723
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1820
1724
  },
1821
1725
  {
1822
1726
  "kind": "cli",
1823
- "name": "profilerelationshipterm_update",
1727
+ "name": "profilemetafield_update",
1824
1728
  "operation": "update",
1825
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1729
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1826
1730
  },
1827
1731
  {
1828
1732
  "kind": "cli",
1829
- "name": "profilerelationshipterm_delete",
1733
+ "name": "profilemetafield_delete",
1830
1734
  "operation": "delete",
1831
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1735
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1832
1736
  },
1833
1737
  {
1834
1738
  "kind": "mcp",
1835
- "name": "profilerelationshipterm_list",
1739
+ "name": "profilemetafield_list",
1836
1740
  "operation": "list",
1837
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1741
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1838
1742
  },
1839
1743
  {
1840
1744
  "kind": "mcp",
1841
- "name": "profilerelationshipterm_get",
1745
+ "name": "profilemetafield_get",
1842
1746
  "operation": "get",
1843
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
1747
+ "objectName": "@happyvertical/smrt-profiles:ProfileMetafield"
1844
1748
  }
1845
1749
  ],
1846
1750
  "relationshipFeatures": [
1847
- "foreignKey",
1848
1751
  "uuidColumns"
1849
1752
  ],
1850
1753
  "tags": [],
1851
1754
  "risks": []
1852
1755
  },
1853
1756
  {
1854
- "name": "ProfileRelationshipType",
1855
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
1856
- "collection": "profilerelationshiptypes",
1857
- "tableName": "profile_relationship_types",
1757
+ "name": "ProfileRelationship",
1758
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationship",
1759
+ "collection": "profilerelationships",
1760
+ "tableName": "profile_relationships",
1858
1761
  "packageName": "@happyvertical/smrt-profiles",
1859
1762
  "extends": "SmrtObject",
1860
1763
  "fields": [
@@ -1871,44 +1774,109 @@
1871
1774
  "columnType": "TIMESTAMP"
1872
1775
  },
1873
1776
  {
1874
- "name": "name",
1777
+ "name": "tenantId",
1875
1778
  "type": "text",
1779
+ "required": false,
1780
+ "columnType": "UUID"
1781
+ },
1782
+ {
1783
+ "name": "fromProfileId",
1784
+ "type": "foreignKey",
1876
1785
  "required": true,
1877
- "columnType": "TEXT"
1786
+ "related": "Profile",
1787
+ "columnType": "UUID"
1878
1788
  },
1879
1789
  {
1880
- "name": "reciprocal",
1881
- "type": "boolean",
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",
1882
1806
  "required": false,
1883
- "columnType": "BOOLEAN"
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"
1884
1851
  }
1885
1852
  ],
1886
- "relationships": [],
1887
1853
  "methods": [
1854
+ "addTerm",
1888
1855
  "classifyConstraintError",
1889
1856
  "clearEmbeddings",
1890
1857
  "delete",
1891
1858
  "describe",
1892
1859
  "destroy",
1893
1860
  "do",
1861
+ "endCurrentTerm",
1894
1862
  "executeToolCall",
1895
1863
  "forget",
1896
1864
  "forgetScope",
1897
1865
  "generateEmbeddings",
1866
+ "getActiveTerm",
1898
1867
  "getAiUsageSnapshot",
1899
1868
  "getAvailableTools",
1900
- "getBySlug",
1901
1869
  "getEmbedding",
1902
1870
  "getFields",
1903
1871
  "getId",
1904
- "getReciprocalHandler",
1905
1872
  "getRelated",
1906
1873
  "getSavedId",
1907
1874
  "getSlug",
1875
+ "getTerms",
1876
+ "getTypeSlug",
1908
1877
  "hasStaleEmbeddings",
1909
1878
  "initialize",
1910
1879
  "is",
1911
- "isReciprocal",
1912
1880
  "isRelatedLoaded",
1913
1881
  "isSaved",
1914
1882
  "listAiUsage",
@@ -1920,7 +1888,6 @@
1920
1888
  "markAsPersisted",
1921
1889
  "recall",
1922
1890
  "recallAll",
1923
- "registerReciprocalHandler",
1924
1891
  "remember",
1925
1892
  "resetAiUsage",
1926
1893
  "save",
@@ -1932,90 +1899,92 @@
1932
1899
  "surfaces": [
1933
1900
  {
1934
1901
  "kind": "api",
1935
- "name": "profilerelationshiptypes.list",
1902
+ "name": "profilerelationships.list",
1936
1903
  "operation": "list",
1937
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
1938
- "path": "/profilerelationshiptypes",
1904
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1905
+ "path": "/profilerelationships",
1939
1906
  "method": "GET"
1940
1907
  },
1941
1908
  {
1942
1909
  "kind": "api",
1943
- "name": "profilerelationshiptypes.get",
1910
+ "name": "profilerelationships.get",
1944
1911
  "operation": "get",
1945
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
1946
- "path": "/profilerelationshiptypes/[id]",
1912
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1913
+ "path": "/profilerelationships/[id]",
1947
1914
  "method": "GET"
1948
1915
  },
1949
1916
  {
1950
1917
  "kind": "api",
1951
- "name": "profilerelationshiptypes.create",
1918
+ "name": "profilerelationships.create",
1952
1919
  "operation": "create",
1953
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
1954
- "path": "/profilerelationshiptypes",
1920
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1921
+ "path": "/profilerelationships",
1955
1922
  "method": "POST"
1956
1923
  },
1957
1924
  {
1958
1925
  "kind": "api",
1959
- "name": "profilerelationshiptypes.update",
1960
- "operation": "update",
1961
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
1962
- "path": "/profilerelationshiptypes/[id]",
1963
- "method": "PATCH"
1926
+ "name": "profilerelationships.delete",
1927
+ "operation": "delete",
1928
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship",
1929
+ "path": "/profilerelationships/[id]",
1930
+ "method": "DELETE"
1964
1931
  },
1965
1932
  {
1966
1933
  "kind": "cli",
1967
- "name": "profilerelationshiptype_list",
1934
+ "name": "profilerelationship_list",
1968
1935
  "operation": "list",
1969
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1936
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1970
1937
  },
1971
1938
  {
1972
1939
  "kind": "cli",
1973
- "name": "profilerelationshiptype_get",
1940
+ "name": "profilerelationship_get",
1974
1941
  "operation": "get",
1975
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1942
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1976
1943
  },
1977
1944
  {
1978
1945
  "kind": "cli",
1979
- "name": "profilerelationshiptype_create",
1946
+ "name": "profilerelationship_create",
1980
1947
  "operation": "create",
1981
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1948
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1982
1949
  },
1983
1950
  {
1984
1951
  "kind": "cli",
1985
- "name": "profilerelationshiptype_update",
1952
+ "name": "profilerelationship_update",
1986
1953
  "operation": "update",
1987
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1954
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1988
1955
  },
1989
1956
  {
1990
1957
  "kind": "cli",
1991
- "name": "profilerelationshiptype_delete",
1958
+ "name": "profilerelationship_delete",
1992
1959
  "operation": "delete",
1993
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1960
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
1994
1961
  },
1995
1962
  {
1996
1963
  "kind": "mcp",
1997
- "name": "profilerelationshiptype_list",
1964
+ "name": "profilerelationship_list",
1998
1965
  "operation": "list",
1999
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1966
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
2000
1967
  },
2001
1968
  {
2002
1969
  "kind": "mcp",
2003
- "name": "profilerelationshiptype_get",
1970
+ "name": "profilerelationship_get",
2004
1971
  "operation": "get",
2005
- "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
1972
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationship"
2006
1973
  }
2007
1974
  ],
2008
1975
  "relationshipFeatures": [
1976
+ "foreignKey",
1977
+ "oneToMany",
2009
1978
  "uuidColumns"
2010
1979
  ],
2011
1980
  "tags": [],
2012
1981
  "risks": []
2013
1982
  },
2014
1983
  {
2015
- "name": "ProfileType",
2016
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileType",
2017
- "collection": "profiletypes",
2018
- "tableName": "profile_types",
1984
+ "name": "ProfileRelationshipTerm",
1985
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
1986
+ "collection": "profilerelationshipterms",
1987
+ "tableName": "profile_relationship_terms",
2019
1988
  "packageName": "@happyvertical/smrt-profiles",
2020
1989
  "extends": "SmrtObject",
2021
1990
  "fields": [
@@ -2032,39 +2001,49 @@
2032
2001
  "columnType": "TIMESTAMP"
2033
2002
  },
2034
2003
  {
2035
- "name": "tenantId",
2036
- "type": "text",
2037
- "required": false,
2004
+ "name": "relationshipId",
2005
+ "type": "foreignKey",
2006
+ "required": true,
2007
+ "related": "ProfileRelationship",
2038
2008
  "columnType": "UUID"
2039
2009
  },
2040
2010
  {
2041
- "name": "name",
2042
- "type": "text",
2011
+ "name": "startedAt",
2012
+ "type": "datetime",
2043
2013
  "required": true,
2044
- "columnType": "TEXT"
2014
+ "columnType": "TIMESTAMP"
2045
2015
  },
2046
2016
  {
2047
- "name": "description",
2048
- "type": "text",
2017
+ "name": "endedAt",
2018
+ "type": "datetime",
2049
2019
  "required": false,
2050
- "columnType": "TEXT"
2020
+ "columnType": "TIMESTAMP"
2051
2021
  }
2052
2022
  ],
2053
- "relationships": [],
2054
- "methods": [
2023
+ "relationships": [
2024
+ {
2025
+ "name": "relationshipId",
2026
+ "type": "foreignKey",
2027
+ "required": true,
2028
+ "related": "ProfileRelationship",
2029
+ "columnType": "UUID"
2030
+ }
2031
+ ],
2032
+ "methods": [
2055
2033
  "classifyConstraintError",
2056
2034
  "clearEmbeddings",
2057
2035
  "delete",
2058
2036
  "describe",
2059
2037
  "destroy",
2060
2038
  "do",
2039
+ "end",
2061
2040
  "executeToolCall",
2062
2041
  "forget",
2063
2042
  "forgetScope",
2064
2043
  "generateEmbeddings",
2065
2044
  "getAiUsageSnapshot",
2066
2045
  "getAvailableTools",
2067
- "getBySlug",
2046
+ "getDurationDays",
2068
2047
  "getEmbedding",
2069
2048
  "getFields",
2070
2049
  "getId",
@@ -2074,6 +2053,7 @@
2074
2053
  "hasStaleEmbeddings",
2075
2054
  "initialize",
2076
2055
  "is",
2056
+ "isActive",
2077
2057
  "isRelatedLoaded",
2078
2058
  "isSaved",
2079
2059
  "listAiUsage",
@@ -2096,92 +2076,101 @@
2096
2076
  "surfaces": [
2097
2077
  {
2098
2078
  "kind": "api",
2099
- "name": "profiletypes.list",
2079
+ "name": "profilerelationshipterms.list",
2100
2080
  "operation": "list",
2101
- "objectName": "@happyvertical/smrt-profiles:ProfileType",
2102
- "path": "/profiletypes",
2081
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2082
+ "path": "/profilerelationshipterms",
2103
2083
  "method": "GET"
2104
2084
  },
2105
2085
  {
2106
2086
  "kind": "api",
2107
- "name": "profiletypes.get",
2087
+ "name": "profilerelationshipterms.get",
2108
2088
  "operation": "get",
2109
- "objectName": "@happyvertical/smrt-profiles:ProfileType",
2110
- "path": "/profiletypes/[id]",
2089
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2090
+ "path": "/profilerelationshipterms/[id]",
2111
2091
  "method": "GET"
2112
2092
  },
2113
2093
  {
2114
2094
  "kind": "api",
2115
- "name": "profiletypes.create",
2095
+ "name": "profilerelationshipterms.create",
2116
2096
  "operation": "create",
2117
- "objectName": "@happyvertical/smrt-profiles:ProfileType",
2118
- "path": "/profiletypes",
2097
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2098
+ "path": "/profilerelationshipterms",
2119
2099
  "method": "POST"
2120
2100
  },
2121
2101
  {
2122
2102
  "kind": "api",
2123
- "name": "profiletypes.update",
2103
+ "name": "profilerelationshipterms.update",
2124
2104
  "operation": "update",
2125
- "objectName": "@happyvertical/smrt-profiles:ProfileType",
2126
- "path": "/profiletypes/[id]",
2105
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm",
2106
+ "path": "/profilerelationshipterms/[id]",
2127
2107
  "method": "PATCH"
2128
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
+ },
2129
2117
  {
2130
2118
  "kind": "cli",
2131
- "name": "profiletype_list",
2119
+ "name": "profilerelationshipterm_list",
2132
2120
  "operation": "list",
2133
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2121
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2134
2122
  },
2135
2123
  {
2136
2124
  "kind": "cli",
2137
- "name": "profiletype_get",
2125
+ "name": "profilerelationshipterm_get",
2138
2126
  "operation": "get",
2139
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2127
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2140
2128
  },
2141
2129
  {
2142
2130
  "kind": "cli",
2143
- "name": "profiletype_create",
2131
+ "name": "profilerelationshipterm_create",
2144
2132
  "operation": "create",
2145
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2133
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2146
2134
  },
2147
2135
  {
2148
2136
  "kind": "cli",
2149
- "name": "profiletype_update",
2137
+ "name": "profilerelationshipterm_update",
2150
2138
  "operation": "update",
2151
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2139
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2152
2140
  },
2153
2141
  {
2154
2142
  "kind": "cli",
2155
- "name": "profiletype_delete",
2143
+ "name": "profilerelationshipterm_delete",
2156
2144
  "operation": "delete",
2157
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2145
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2158
2146
  },
2159
2147
  {
2160
2148
  "kind": "mcp",
2161
- "name": "profiletype_list",
2149
+ "name": "profilerelationshipterm_list",
2162
2150
  "operation": "list",
2163
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2151
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2164
2152
  },
2165
2153
  {
2166
2154
  "kind": "mcp",
2167
- "name": "profiletype_get",
2155
+ "name": "profilerelationshipterm_get",
2168
2156
  "operation": "get",
2169
- "objectName": "@happyvertical/smrt-profiles:ProfileType"
2157
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipTerm"
2170
2158
  }
2171
2159
  ],
2172
2160
  "relationshipFeatures": [
2161
+ "foreignKey",
2173
2162
  "uuidColumns"
2174
2163
  ],
2175
2164
  "tags": [],
2176
2165
  "risks": []
2177
2166
  },
2178
2167
  {
2179
- "name": "Person",
2180
- "qualifiedName": "@happyvertical/smrt-profiles:Person",
2181
- "collection": "profiles",
2182
- "tableName": "profiles",
2168
+ "name": "ProfileRelationshipType",
2169
+ "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2170
+ "collection": "profilerelationshiptypes",
2171
+ "tableName": "profile_relationship_types",
2183
2172
  "packageName": "@happyvertical/smrt-profiles",
2184
- "extends": "Profile",
2173
+ "extends": "SmrtObject",
2185
2174
  "fields": [
2186
2175
  {
2187
2176
  "name": "created_at",
@@ -2195,25 +2184,6 @@
2195
2184
  "required": false,
2196
2185
  "columnType": "TIMESTAMP"
2197
2186
  },
2198
- {
2199
- "name": "tenantId",
2200
- "type": "text",
2201
- "required": false,
2202
- "columnType": "UUID"
2203
- },
2204
- {
2205
- "name": "typeId",
2206
- "type": "foreignKey",
2207
- "required": true,
2208
- "related": "ProfileType",
2209
- "columnType": "UUID"
2210
- },
2211
- {
2212
- "name": "email",
2213
- "type": "text",
2214
- "required": false,
2215
- "columnType": "TEXT"
2216
- },
2217
2187
  {
2218
2188
  "name": "name",
2219
2189
  "type": "text",
@@ -2221,61 +2191,14 @@
2221
2191
  "columnType": "TEXT"
2222
2192
  },
2223
2193
  {
2224
- "name": "description",
2225
- "type": "text",
2226
- "required": false,
2227
- "columnType": "TEXT"
2228
- },
2229
- {
2230
- "name": "metadata",
2231
- "type": "oneToMany",
2232
- "required": false,
2233
- "related": "ProfileMetadata"
2234
- },
2235
- {
2236
- "name": "relationshipsFrom",
2237
- "type": "oneToMany",
2238
- "required": false,
2239
- "related": "ProfileRelationship"
2240
- },
2241
- {
2242
- "name": "relationshipsTo",
2243
- "type": "oneToMany",
2244
- "required": false,
2245
- "related": "ProfileRelationship"
2246
- }
2247
- ],
2248
- "relationships": [
2249
- {
2250
- "name": "typeId",
2251
- "type": "foreignKey",
2252
- "required": true,
2253
- "related": "ProfileType",
2254
- "columnType": "UUID"
2255
- },
2256
- {
2257
- "name": "metadata",
2258
- "type": "oneToMany",
2259
- "required": false,
2260
- "related": "ProfileMetadata"
2261
- },
2262
- {
2263
- "name": "relationshipsFrom",
2264
- "type": "oneToMany",
2265
- "required": false,
2266
- "related": "ProfileRelationship"
2267
- },
2268
- {
2269
- "name": "relationshipsTo",
2270
- "type": "oneToMany",
2194
+ "name": "reciprocal",
2195
+ "type": "boolean",
2271
2196
  "required": false,
2272
- "related": "ProfileRelationship"
2197
+ "columnType": "BOOLEAN"
2273
2198
  }
2274
2199
  ],
2200
+ "relationships": [],
2275
2201
  "methods": [
2276
- "addAsset",
2277
- "addMetadata",
2278
- "addRelationship",
2279
2202
  "classifyConstraintError",
2280
2203
  "clearEmbeddings",
2281
2204
  "delete",
@@ -2283,39 +2206,25 @@
2283
2206
  "destroy",
2284
2207
  "do",
2285
2208
  "executeToolCall",
2286
- "findByMetadata",
2287
- "findByType",
2288
- "findRelated",
2289
2209
  "forget",
2290
2210
  "forgetScope",
2291
- "generateApiKey",
2292
- "generateBio",
2293
2211
  "generateEmbeddings",
2294
- "getActiveApiKeys",
2295
2212
  "getAiUsageSnapshot",
2296
- "getApiKeys",
2297
- "getAssets",
2298
- "getAuditLogs",
2299
2213
  "getAvailableTools",
2214
+ "getBySlug",
2300
2215
  "getEmbedding",
2301
2216
  "getFields",
2302
2217
  "getId",
2303
- "getMetadata",
2304
- "getNostrIdentities",
2305
- "getOidcIdentities",
2218
+ "getReciprocalHandler",
2306
2219
  "getRelated",
2307
- "getRelatedProfiles",
2308
- "getRelationships",
2309
2220
  "getSavedId",
2310
2221
  "getSlug",
2311
- "getTypeSlug",
2312
2222
  "hasStaleEmbeddings",
2313
2223
  "initialize",
2314
2224
  "is",
2225
+ "isReciprocal",
2315
2226
  "isRelatedLoaded",
2316
2227
  "isSaved",
2317
- "linkNostrIdentity",
2318
- "linkOidcIdentity",
2319
2228
  "listAiUsage",
2320
2229
  "loadDataFromDb",
2321
2230
  "loadFromId",
@@ -2323,134 +2232,140 @@
2323
2232
  "loadRelated",
2324
2233
  "loadRelatedMany",
2325
2234
  "markAsPersisted",
2326
- "matches",
2327
2235
  "recall",
2328
2236
  "recallAll",
2329
- "recordAction",
2237
+ "registerReciprocalHandler",
2330
2238
  "remember",
2331
- "removeAsset",
2332
- "removeMetadata",
2333
- "removeRelationship",
2334
2239
  "resetAiUsage",
2335
2240
  "save",
2336
- "searchByEmail",
2337
- "setTypeBySlug",
2338
2241
  "summarizeAiUsage",
2339
2242
  "toJSON",
2340
2243
  "toPlainObject",
2341
- "toPublicJSON",
2342
- "updateMetadata"
2343
- ],
2344
- "surfaces": [],
2345
- "relationshipFeatures": [
2346
- "foreignKey",
2347
- "oneToMany",
2348
- "uuidColumns"
2244
+ "toPublicJSON"
2349
2245
  ],
2350
- "tags": [],
2351
- "risks": []
2352
- },
2353
- {
2354
- "name": "Organization",
2355
- "qualifiedName": "@happyvertical/smrt-profiles:Organization",
2356
- "collection": "profiles",
2357
- "tableName": "profiles",
2358
- "packageName": "@happyvertical/smrt-profiles",
2359
- "extends": "Profile",
2360
- "fields": [
2361
- {
2362
- "name": "created_at",
2363
- "type": "datetime",
2364
- "required": false,
2365
- "columnType": "TIMESTAMP"
2366
- },
2246
+ "surfaces": [
2367
2247
  {
2368
- "name": "updated_at",
2369
- "type": "datetime",
2370
- "required": false,
2371
- "columnType": "TIMESTAMP"
2248
+ "kind": "api",
2249
+ "name": "profilerelationshiptypes.list",
2250
+ "operation": "list",
2251
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2252
+ "path": "/profilerelationshiptypes",
2253
+ "method": "GET"
2372
2254
  },
2373
2255
  {
2374
- "name": "tenantId",
2375
- "type": "text",
2376
- "required": false,
2377
- "columnType": "UUID"
2256
+ "kind": "api",
2257
+ "name": "profilerelationshiptypes.get",
2258
+ "operation": "get",
2259
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2260
+ "path": "/profilerelationshiptypes/[id]",
2261
+ "method": "GET"
2378
2262
  },
2379
2263
  {
2380
- "name": "typeId",
2381
- "type": "foreignKey",
2382
- "required": true,
2383
- "related": "ProfileType",
2384
- "columnType": "UUID"
2264
+ "kind": "api",
2265
+ "name": "profilerelationshiptypes.create",
2266
+ "operation": "create",
2267
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2268
+ "path": "/profilerelationshiptypes",
2269
+ "method": "POST"
2385
2270
  },
2386
2271
  {
2387
- "name": "email",
2388
- "type": "text",
2389
- "required": false,
2390
- "columnType": "TEXT"
2272
+ "kind": "api",
2273
+ "name": "profilerelationshiptypes.update",
2274
+ "operation": "update",
2275
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType",
2276
+ "path": "/profilerelationshiptypes/[id]",
2277
+ "method": "PATCH"
2391
2278
  },
2392
2279
  {
2393
- "name": "name",
2394
- "type": "text",
2395
- "required": true,
2396
- "columnType": "TEXT"
2280
+ "kind": "cli",
2281
+ "name": "profilerelationshiptype_list",
2282
+ "operation": "list",
2283
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2397
2284
  },
2398
2285
  {
2399
- "name": "description",
2400
- "type": "text",
2401
- "required": false,
2402
- "columnType": "TEXT"
2286
+ "kind": "cli",
2287
+ "name": "profilerelationshiptype_get",
2288
+ "operation": "get",
2289
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2403
2290
  },
2404
2291
  {
2405
- "name": "metadata",
2406
- "type": "oneToMany",
2407
- "required": false,
2408
- "related": "ProfileMetadata"
2292
+ "kind": "cli",
2293
+ "name": "profilerelationshiptype_create",
2294
+ "operation": "create",
2295
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2409
2296
  },
2410
2297
  {
2411
- "name": "relationshipsFrom",
2412
- "type": "oneToMany",
2413
- "required": false,
2414
- "related": "ProfileRelationship"
2298
+ "kind": "cli",
2299
+ "name": "profilerelationshiptype_update",
2300
+ "operation": "update",
2301
+ "objectName": "@happyvertical/smrt-profiles:ProfileRelationshipType"
2415
2302
  },
2416
2303
  {
2417
- "name": "relationshipsTo",
2418
- "type": "oneToMany",
2419
- "required": false,
2420
- "related": "ProfileRelationship"
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"
2421
2320
  }
2422
2321
  ],
2423
- "relationships": [
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": [
2424
2336
  {
2425
- "name": "typeId",
2426
- "type": "foreignKey",
2427
- "required": true,
2428
- "related": "ProfileType",
2429
- "columnType": "UUID"
2337
+ "name": "created_at",
2338
+ "type": "datetime",
2339
+ "required": false,
2340
+ "columnType": "TIMESTAMP"
2430
2341
  },
2431
2342
  {
2432
- "name": "metadata",
2433
- "type": "oneToMany",
2343
+ "name": "updated_at",
2344
+ "type": "datetime",
2434
2345
  "required": false,
2435
- "related": "ProfileMetadata"
2346
+ "columnType": "TIMESTAMP"
2436
2347
  },
2437
2348
  {
2438
- "name": "relationshipsFrom",
2439
- "type": "oneToMany",
2349
+ "name": "tenantId",
2350
+ "type": "text",
2440
2351
  "required": false,
2441
- "related": "ProfileRelationship"
2352
+ "columnType": "UUID"
2442
2353
  },
2443
2354
  {
2444
- "name": "relationshipsTo",
2445
- "type": "oneToMany",
2355
+ "name": "name",
2356
+ "type": "text",
2357
+ "required": true,
2358
+ "columnType": "TEXT"
2359
+ },
2360
+ {
2361
+ "name": "description",
2362
+ "type": "text",
2446
2363
  "required": false,
2447
- "related": "ProfileRelationship"
2364
+ "columnType": "TEXT"
2448
2365
  }
2449
2366
  ],
2367
+ "relationships": [],
2450
2368
  "methods": [
2451
- "addAsset",
2452
- "addMetadata",
2453
- "addRelationship",
2454
2369
  "classifyConstraintError",
2455
2370
  "clearEmbeddings",
2456
2371
  "delete",
@@ -2458,39 +2373,23 @@
2458
2373
  "destroy",
2459
2374
  "do",
2460
2375
  "executeToolCall",
2461
- "findByMetadata",
2462
- "findByType",
2463
- "findRelated",
2464
2376
  "forget",
2465
2377
  "forgetScope",
2466
- "generateApiKey",
2467
- "generateBio",
2468
2378
  "generateEmbeddings",
2469
- "getActiveApiKeys",
2470
2379
  "getAiUsageSnapshot",
2471
- "getApiKeys",
2472
- "getAssets",
2473
- "getAuditLogs",
2474
2380
  "getAvailableTools",
2381
+ "getBySlug",
2475
2382
  "getEmbedding",
2476
2383
  "getFields",
2477
2384
  "getId",
2478
- "getMetadata",
2479
- "getNostrIdentities",
2480
- "getOidcIdentities",
2481
2385
  "getRelated",
2482
- "getRelatedProfiles",
2483
- "getRelationships",
2484
2386
  "getSavedId",
2485
2387
  "getSlug",
2486
- "getTypeSlug",
2487
2388
  "hasStaleEmbeddings",
2488
2389
  "initialize",
2489
2390
  "is",
2490
2391
  "isRelatedLoaded",
2491
2392
  "isSaved",
2492
- "linkNostrIdentity",
2493
- "linkOidcIdentity",
2494
2393
  "listAiUsage",
2495
2394
  "loadDataFromDb",
2496
2395
  "loadFromId",
@@ -2498,36 +2397,101 @@
2498
2397
  "loadRelated",
2499
2398
  "loadRelatedMany",
2500
2399
  "markAsPersisted",
2501
- "matches",
2502
2400
  "recall",
2503
2401
  "recallAll",
2504
- "recordAction",
2505
2402
  "remember",
2506
- "removeAsset",
2507
- "removeMetadata",
2508
- "removeRelationship",
2509
2403
  "resetAiUsage",
2510
2404
  "save",
2511
- "searchByEmail",
2512
- "setTypeBySlug",
2513
2405
  "summarizeAiUsage",
2514
2406
  "toJSON",
2515
2407
  "toPlainObject",
2516
- "toPublicJSON",
2517
- "updateMetadata"
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
+ }
2518
2485
  ],
2519
- "surfaces": [],
2520
2486
  "relationshipFeatures": [
2521
- "foreignKey",
2522
- "oneToMany",
2523
2487
  "uuidColumns"
2524
2488
  ],
2525
2489
  "tags": [],
2526
2490
  "risks": []
2527
2491
  },
2528
2492
  {
2529
- "name": "Bot",
2530
- "qualifiedName": "@happyvertical/smrt-profiles:Bot",
2493
+ "name": "Person",
2494
+ "qualifiedName": "@happyvertical/smrt-profiles:Person",
2531
2495
  "collection": "profiles",
2532
2496
  "tableName": "profiles",
2533
2497
  "packageName": "@happyvertical/smrt-profiles",
@@ -2701,314 +2665,350 @@
2701
2665
  "risks": []
2702
2666
  },
2703
2667
  {
2704
- "name": "ApiKeyCollection",
2705
- "qualifiedName": "@happyvertical/smrt-profiles:ApiKeyCollection",
2706
- "collection": "apikeys",
2707
- "tableName": "api_keys",
2708
- "packageName": "@happyvertical/smrt-profiles",
2709
- "extends": "SmrtCollection",
2710
- "fields": [],
2711
- "relationships": [],
2712
- "methods": [
2713
- "cleanupExpired",
2714
- "findActiveByProfile",
2715
- "findByHash",
2716
- "findByProfile",
2717
- "generateForProfile",
2718
- "revokeAllForProfile",
2719
- "revokeByPrefix",
2720
- "verify"
2721
- ],
2722
- "surfaces": [],
2723
- "relationshipFeatures": [
2724
- "uuidColumns"
2725
- ],
2726
- "tags": [],
2727
- "risks": []
2728
- },
2729
- {
2730
- "name": "AuditLogCollection",
2731
- "qualifiedName": "@happyvertical/smrt-profiles:AuditLogCollection",
2732
- "collection": "auditlogs",
2733
- "tableName": "audit_logs",
2668
+ "name": "Organization",
2669
+ "qualifiedName": "@happyvertical/smrt-profiles:Organization",
2670
+ "collection": "profiles",
2671
+ "tableName": "profiles",
2734
2672
  "packageName": "@happyvertical/smrt-profiles",
2735
- "extends": "SmrtCollection",
2736
- "fields": [],
2737
- "relationships": [],
2738
- "methods": [
2739
- "findByAction",
2740
- "findByProfile",
2741
- "findByResource",
2742
- "findBySource",
2743
- "findOnBehalfOf",
2744
- "getRecentActivity",
2745
- "getResourceTimeline",
2746
- "record"
2747
- ],
2748
- "surfaces": [],
2749
- "relationshipFeatures": [
2750
- "uuidColumns"
2751
- ],
2752
- "tags": [],
2753
- "risks": []
2754
- },
2755
- {
2756
- "name": "MagicLinkTokenCollection",
2757
- "qualifiedName": "@happyvertical/smrt-profiles:MagicLinkTokenCollection",
2758
- "collection": "magiclinktokens",
2759
- "tableName": "magic_link_tokens",
2760
- "packageName": "@happyvertical/smrt-profiles",
2761
- "extends": "SmrtCollection",
2762
- "fields": [],
2763
- "relationships": [],
2764
- "methods": [
2765
- "cleanupExpired",
2766
- "countRecentByEmail",
2767
- "countRecentByIp",
2768
- "findActiveForEmail",
2769
- "findByIdentity",
2770
- "findByTokenHash",
2771
- "isRateLimitedByEmail",
2772
- "isRateLimitedByIp",
2773
- "revokeForIdentity",
2774
- "verify"
2775
- ],
2776
- "surfaces": [],
2777
- "relationshipFeatures": [
2778
- "uuidColumns"
2779
- ],
2780
- "tags": [],
2781
- "risks": []
2782
- },
2783
- {
2784
- "name": "NostrIdentityCollection",
2785
- "qualifiedName": "@happyvertical/smrt-profiles:NostrIdentityCollection",
2786
- "collection": "nostridentities",
2787
- "tableName": "nostr_identities",
2788
- "packageName": "@happyvertical/smrt-profiles",
2789
- "extends": "SmrtCollection",
2790
- "fields": [],
2791
- "relationships": [],
2792
- "methods": [
2793
- "createForProfile",
2794
- "findByEmail",
2795
- "findByNip05",
2796
- "findByProfile",
2797
- "findByPubkey",
2798
- "getNip05Response",
2799
- "isNip05Available",
2800
- "linkToProfile",
2801
- "unlinkFromProfile",
2802
- "updateNip05Username"
2803
- ],
2804
- "surfaces": [],
2805
- "relationshipFeatures": [
2806
- "uuidColumns"
2807
- ],
2808
- "tags": [],
2809
- "risks": []
2810
- },
2811
- {
2812
- "name": "OidcIdentityCollection",
2813
- "qualifiedName": "@happyvertical/smrt-profiles:OidcIdentityCollection",
2814
- "collection": "oidcidentities",
2815
- "tableName": "oidc_identities",
2816
- "packageName": "@happyvertical/smrt-profiles",
2817
- "extends": "SmrtCollection",
2818
- "fields": [],
2819
- "relationships": [],
2820
- "methods": [
2821
- "findByProfile",
2822
- "findByProvider",
2823
- "findBySubject",
2824
- "linkToProfile",
2825
- "unlinkFromProfile"
2826
- ],
2827
- "surfaces": [],
2828
- "relationshipFeatures": [
2829
- "uuidColumns"
2830
- ],
2831
- "tags": [],
2832
- "risks": []
2833
- },
2834
- {
2835
- "name": "ProfileAssetCollection",
2836
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileAssetCollection",
2837
- "collection": "profileassets",
2838
- "tableName": "profile_assets",
2839
- "packageName": "@happyvertical/smrt-profiles",
2840
- "extends": "SmrtJunction",
2841
- "fields": [],
2842
- "relationships": [],
2843
- "methods": [
2844
- "addAsset",
2845
- "attach",
2846
- "byLeft",
2847
- "byRight",
2848
- "detach",
2849
- "getAssets",
2850
- "removeAsset",
2851
- "setLinks"
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
+ }
2852
2736
  ],
2853
- "surfaces": [],
2854
- "relationshipFeatures": [
2855
- "SmrtJunction",
2856
- "uuidColumns"
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
+ }
2857
2763
  ],
2858
- "tags": [],
2859
- "risks": []
2860
- },
2861
- {
2862
- "name": "ProfileCollection",
2863
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileCollection",
2864
- "collection": "profiles",
2865
- "tableName": "profile_collections",
2866
- "packageName": "@happyvertical/smrt-profiles",
2867
- "extends": "SmrtCollection",
2868
- "fields": [],
2869
- "relationships": [],
2870
2764
  "methods": [
2871
2765
  "addAsset",
2872
- "batchGetMetadata",
2873
- "batchUpdateMetadata",
2874
- "findByEmail",
2875
- "findByTenant",
2876
- "findByType",
2877
- "findGlobal",
2878
- "findRelated",
2879
- "findWithGlobals",
2880
- "getAssets",
2881
- "getRelationshipNetwork",
2882
- "removeAsset"
2883
- ],
2884
- "surfaces": [],
2885
- "relationshipFeatures": [
2886
- "uuidColumns"
2887
- ],
2888
- "tags": [],
2889
- "risks": []
2890
- },
2891
- {
2892
- "name": "ProfileMetadataCollection",
2893
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetadataCollection",
2894
- "collection": "profilemetadatas",
2895
- "tableName": "profile_metadata_collections",
2896
- "packageName": "@happyvertical/smrt-profiles",
2897
- "extends": "SmrtCollection",
2898
- "fields": [],
2899
- "relationships": [],
2900
- "methods": [
2901
- "findProfilesByMetadata",
2902
- "getByProfile",
2903
- "getMetadataObject"
2904
- ],
2905
- "surfaces": [],
2906
- "relationshipFeatures": [
2907
- "uuidColumns"
2908
- ],
2909
- "tags": [],
2910
- "risks": []
2911
- },
2912
- {
2913
- "name": "ProfileMetafieldCollection",
2914
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileMetafieldCollection",
2915
- "collection": "profilemetafields",
2916
- "tableName": "profile_metafield_collections",
2917
- "packageName": "@happyvertical/smrt-profiles",
2918
- "extends": "SmrtCollection",
2919
- "fields": [],
2920
- "relationships": [],
2921
- "methods": [
2922
- "getBySlug",
2923
- "getOrCreateBySlug"
2924
- ],
2925
- "surfaces": [],
2926
- "relationshipFeatures": [
2927
- "uuidColumns"
2928
- ],
2929
- "tags": [],
2930
- "risks": []
2931
- },
2932
- {
2933
- "name": "ProfileRelationshipCollection",
2934
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipCollection",
2935
- "collection": "profilerelationships",
2936
- "tableName": "profile_relationship_collections",
2937
- "packageName": "@happyvertical/smrt-profiles",
2938
- "extends": "SmrtCollection",
2939
- "fields": [],
2940
- "relationships": [],
2941
- "methods": [
2942
- "exists",
2943
- "getForProfile",
2944
- "getFromProfile",
2945
- "getToProfile"
2946
- ],
2947
- "surfaces": [],
2948
- "relationshipFeatures": [
2949
- "uuidColumns"
2950
- ],
2951
- "tags": [],
2952
- "risks": []
2953
- },
2954
- {
2955
- "name": "ProfileRelationshipTermCollection",
2956
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTermCollection",
2957
- "collection": "profilerelationshipterms",
2958
- "tableName": "profile_relationship_term_collections",
2959
- "packageName": "@happyvertical/smrt-profiles",
2960
- "extends": "SmrtCollection",
2961
- "fields": [],
2962
- "relationships": [],
2963
- "methods": [
2964
- "getActiveTerm",
2965
- "getByRelationship",
2966
- "getHistoricalTerms"
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"
2967
2832
  ],
2968
2833
  "surfaces": [],
2969
2834
  "relationshipFeatures": [
2835
+ "foreignKey",
2836
+ "oneToMany",
2970
2837
  "uuidColumns"
2971
2838
  ],
2972
2839
  "tags": [],
2973
2840
  "risks": []
2974
2841
  },
2975
2842
  {
2976
- "name": "ProfileRelationshipTypeCollection",
2977
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection",
2978
- "collection": "profilerelationshiptypes",
2979
- "tableName": "profile_relationship_type_collections",
2843
+ "name": "Bot",
2844
+ "qualifiedName": "@happyvertical/smrt-profiles:Bot",
2845
+ "collection": "profiles",
2846
+ "tableName": "profiles",
2980
2847
  "packageName": "@happyvertical/smrt-profiles",
2981
- "extends": "SmrtCollection",
2982
- "fields": [],
2983
- "relationships": [],
2984
- "methods": [
2985
- "getBySlug",
2986
- "getDirectional",
2987
- "getOrCreateBySlug",
2988
- "getReciprocal"
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
+ }
2989
2911
  ],
2990
- "surfaces": [],
2991
- "relationshipFeatures": [
2992
- "uuidColumns"
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
+ }
2993
2938
  ],
2994
- "tags": [],
2995
- "risks": []
2996
- },
2997
- {
2998
- "name": "ProfileTypeCollection",
2999
- "qualifiedName": "@happyvertical/smrt-profiles:ProfileTypeCollection",
3000
- "collection": "profiletypes",
3001
- "tableName": "profile_type_collections",
3002
- "packageName": "@happyvertical/smrt-profiles",
3003
- "extends": "SmrtCollection",
3004
- "fields": [],
3005
- "relationships": [],
3006
2939
  "methods": [
3007
- "getBySlug",
3008
- "getOrCreateBySlug"
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"
3009
3007
  ],
3010
3008
  "surfaces": [],
3011
3009
  "relationshipFeatures": [
3010
+ "foreignKey",
3011
+ "oneToMany",
3012
3012
  "uuidColumns"
3013
3013
  ],
3014
3014
  "tags": [],