@happyvertical/smrt-profiles 0.34.8 → 0.34.9

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