@happyvertical/smrt-profiles 0.54.2 → 0.54.4
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.
- package/AGENTS.md +1 -1
- package/dist/agent-profile.d.ts +2 -2
- package/dist/agent-profile.d.ts.map +1 -1
- package/dist/audit-trail.d.ts +24 -0
- package/dist/audit-trail.d.ts.map +1 -0
- package/dist/auth/index.d.ts +5 -5
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/magicLinkService.d.ts +2 -2
- package/dist/auth/magicLinkService.d.ts.map +1 -1
- package/dist/auth/nip05Handler.d.ts +1 -1
- package/dist/auth/nip05Handler.d.ts.map +1 -1
- package/dist/auth/oidcProvisioningPrimitives.d.ts +2 -2
- package/dist/auth/oidcProvisioningPrimitives.d.ts.map +1 -1
- package/dist/auth/resolveIdentity.d.ts +5 -5
- package/dist/auth/resolveIdentity.d.ts.map +1 -1
- package/dist/chunks/{ApiKey-BZmbOTnL.js → ApiKey-CVmlf3V6.js} +11 -3
- package/dist/chunks/ApiKey-CVmlf3V6.js.map +1 -0
- package/dist/chunks/{ApiKeyCollection-Bfb_nw81.js → ApiKeyCollection-CiiDNFdD.js} +3 -3
- package/dist/chunks/{ApiKeyCollection-Bfb_nw81.js.map → ApiKeyCollection-CiiDNFdD.js.map} +1 -1
- package/dist/chunks/{AuditLogCollection-B1YonCAP.js → AuditLogCollection-WDHL-_AF.js} +30 -12
- package/dist/chunks/AuditLogCollection-WDHL-_AF.js.map +1 -0
- package/dist/chunks/{NostrIdentity-n70E0vck.js → NostrIdentity-AC8fAdxe.js} +12 -4
- package/dist/chunks/{NostrIdentity-n70E0vck.js.map → NostrIdentity-AC8fAdxe.js.map} +1 -1
- package/dist/chunks/{NostrIdentityCollection-Ca74dkaL.js → NostrIdentityCollection-CctlECpX.js} +2 -2
- package/dist/chunks/{NostrIdentityCollection-Ca74dkaL.js.map → NostrIdentityCollection-CctlECpX.js.map} +1 -1
- package/dist/chunks/{OidcIdentity-Cb1bxreM.js → OidcIdentity-BjRu3n1g.js} +11 -3
- package/dist/chunks/OidcIdentity-BjRu3n1g.js.map +1 -0
- package/dist/chunks/{OidcIdentityCollection-TV8VdK69.js → OidcIdentityCollection-B4jYh36_.js} +3 -3
- package/dist/chunks/{OidcIdentityCollection-TV8VdK69.js.map → OidcIdentityCollection-B4jYh36_.js.map} +1 -1
- package/dist/chunks/{ProfileAssetCollection-B9hacUJa.js → ProfileAssetCollection-HeMtjBc0.js} +12 -3
- package/dist/chunks/ProfileAssetCollection-HeMtjBc0.js.map +1 -0
- package/dist/chunks/{ProfileCollection-DuJT7Mum.js → ProfileCollection-Bt6IJK49.js} +49 -25
- package/dist/chunks/ProfileCollection-Bt6IJK49.js.map +1 -0
- package/dist/chunks/{ProfileLinkCollection-4uNURz32.js → ProfileLinkCollection-u1hhzKTm.js} +11 -3
- package/dist/chunks/ProfileLinkCollection-u1hhzKTm.js.map +1 -0
- package/dist/chunks/{ProfileMetadataCollection-DQhbfEfa.js → ProfileMetadataCollection-BIYKy4Y3.js} +10 -2
- package/dist/chunks/ProfileMetadataCollection-BIYKy4Y3.js.map +1 -0
- package/dist/chunks/{ProfileMetafieldCollection-CoBuM_5G.js → ProfileMetafieldCollection-Buz7gzag.js} +10 -2
- package/dist/chunks/ProfileMetafieldCollection-Buz7gzag.js.map +1 -0
- package/dist/chunks/{ProfileRelationshipCollection-DUVgaIqf.js → ProfileRelationshipCollection-C4g_QLI4.js} +13 -5
- package/dist/chunks/ProfileRelationshipCollection-C4g_QLI4.js.map +1 -0
- package/dist/chunks/{ProfileRelationshipTermCollection-DtA9OM23.js → ProfileRelationshipTermCollection-C9J7mC7P.js} +10 -2
- package/dist/chunks/ProfileRelationshipTermCollection-C9J7mC7P.js.map +1 -0
- package/dist/chunks/{ProfileRelationshipType-BRiRka6t.js → ProfileRelationshipType-U7IwF6Wf.js} +10 -2
- package/dist/chunks/ProfileRelationshipType-U7IwF6Wf.js.map +1 -0
- package/dist/chunks/{ProfileRelationshipTypeCollection-BdXwd7Kf.js → ProfileRelationshipTypeCollection-_n22WqTb.js} +3 -3
- package/dist/chunks/{ProfileRelationshipTypeCollection-BdXwd7Kf.js.map → ProfileRelationshipTypeCollection-_n22WqTb.js.map} +1 -1
- package/dist/chunks/{oidcProvisioningPrimitives-D9OYu5-F.js → oidcProvisioningPrimitives-CYood-2M.js} +14 -4
- package/dist/chunks/{oidcProvisioningPrimitives-D9OYu5-F.js.map → oidcProvisioningPrimitives-CYood-2M.js.map} +1 -1
- package/dist/chunks/{resolveIdentity-B-PK6RwU.js → resolveIdentity-CvGDegU6.js} +16 -16
- package/dist/chunks/{resolveIdentity-B-PK6RwU.js.map → resolveIdentity-CvGDegU6.js.map} +1 -1
- package/dist/collections/ApiKeyCollection.d.ts +2 -2
- package/dist/collections/ApiKeyCollection.d.ts.map +1 -1
- package/dist/collections/AuditLogCollection.d.ts +5 -3
- package/dist/collections/AuditLogCollection.d.ts.map +1 -1
- package/dist/collections/MagicLinkTokenCollection.d.ts +1 -1
- package/dist/collections/MagicLinkTokenCollection.d.ts.map +1 -1
- package/dist/collections/NostrIdentityCollection.d.ts +2 -2
- package/dist/collections/NostrIdentityCollection.d.ts.map +1 -1
- package/dist/collections/OidcIdentityCollection.d.ts +2 -2
- package/dist/collections/OidcIdentityCollection.d.ts.map +1 -1
- package/dist/collections/OidcProfileEmailReservationCollection.d.ts +1 -1
- package/dist/collections/OidcProfileEmailReservationCollection.d.ts.map +1 -1
- package/dist/collections/ProfileAssetCollection.d.ts +1 -1
- package/dist/collections/ProfileAssetCollection.d.ts.map +1 -1
- package/dist/collections/ProfileCollection.d.ts +1 -1
- package/dist/collections/ProfileCollection.d.ts.map +1 -1
- package/dist/collections/ProfileLinkCollection.d.ts +1 -1
- package/dist/collections/ProfileLinkCollection.d.ts.map +1 -1
- package/dist/collections/ProfileMetadataCollection.d.ts +1 -1
- package/dist/collections/ProfileMetadataCollection.d.ts.map +1 -1
- package/dist/collections/ProfileMetafieldCollection.d.ts +2 -2
- package/dist/collections/ProfileMetafieldCollection.d.ts.map +1 -1
- package/dist/collections/ProfileRelationshipCollection.d.ts +1 -1
- package/dist/collections/ProfileRelationshipCollection.d.ts.map +1 -1
- package/dist/collections/ProfileRelationshipTermCollection.d.ts +1 -1
- package/dist/collections/ProfileRelationshipTermCollection.d.ts.map +1 -1
- package/dist/collections/ProfileRelationshipTypeCollection.d.ts +1 -1
- package/dist/collections/ProfileRelationshipTypeCollection.d.ts.map +1 -1
- package/dist/collections/ProfileTypeCollection.d.ts +1 -1
- package/dist/collections/ProfileTypeCollection.d.ts.map +1 -1
- package/dist/collections/index.d.ts +15 -15
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/index.d.ts +51 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -24
- package/dist/index.js.map +1 -1
- package/dist/internal/oidc-provisioning.d.ts +1 -1
- package/dist/internal/oidc-provisioning.d.ts.map +1 -1
- package/dist/internal/oidc-provisioning.js +2 -2
- package/dist/manifest.json +126 -33
- package/dist/models/ApiKey.d.ts +1 -1
- package/dist/models/ApiKey.d.ts.map +1 -1
- package/dist/models/AuditLog.d.ts +10 -2
- package/dist/models/AuditLog.d.ts.map +1 -1
- package/dist/models/MagicLinkToken.d.ts +1 -1
- package/dist/models/MagicLinkToken.d.ts.map +1 -1
- package/dist/models/NostrIdentity.d.ts +1 -1
- package/dist/models/NostrIdentity.d.ts.map +1 -1
- package/dist/models/OidcIdentity.d.ts +1 -1
- package/dist/models/OidcIdentity.d.ts.map +1 -1
- package/dist/models/Profile.d.ts +10 -8
- package/dist/models/Profile.d.ts.map +1 -1
- package/dist/models/ProfileMetafield.d.ts +1 -1
- package/dist/models/ProfileMetafield.d.ts.map +1 -1
- package/dist/models/ProfileRelationship.d.ts +1 -1
- package/dist/models/ProfileRelationship.d.ts.map +1 -1
- package/dist/models/ProfileRelationshipType.d.ts +1 -1
- package/dist/models/ProfileRelationshipType.d.ts.map +1 -1
- package/dist/models/ProfileTypes.d.ts +1 -1
- package/dist/models/ProfileTypes.d.ts.map +1 -1
- package/dist/models/index.d.ts +15 -15
- package/dist/models/index.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +62 -366
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +2 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -4
- package/package.json +12 -12
- package/dist/chunks/ApiKey-BZmbOTnL.js.map +0 -1
- package/dist/chunks/AuditLogCollection-B1YonCAP.js.map +0 -1
- package/dist/chunks/OidcIdentity-Cb1bxreM.js.map +0 -1
- package/dist/chunks/ProfileAssetCollection-B9hacUJa.js.map +0 -1
- package/dist/chunks/ProfileCollection-DuJT7Mum.js.map +0 -1
- package/dist/chunks/ProfileLinkCollection-4uNURz32.js.map +0 -1
- package/dist/chunks/ProfileMetadataCollection-DQhbfEfa.js.map +0 -1
- package/dist/chunks/ProfileMetafieldCollection-CoBuM_5G.js.map +0 -1
- package/dist/chunks/ProfileRelationshipCollection-DUVgaIqf.js.map +0 -1
- package/dist/chunks/ProfileRelationshipTermCollection-DtA9OM23.js.map +0 -1
- package/dist/chunks/ProfileRelationshipType-BRiRka6t.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { _ as verifyAuthEvent, a as decryptPrivkey, c as generateNostrKeypair, d as isValidPubkey, f as npubToPubkey, g as signEvent, h as pubkeyToNpub, i as createAuthEvent, l as getPublicKey, m as privkeyToNsec, o as deriveEncryptionKey, p as nsecToPrivkey, r as computeEventId, s as encryptPrivkey, t as NostrIdentity, u as isValidPrivkey, v as verifyNostrSignature, y as __exportAll } from "./chunks/NostrIdentity-
|
|
2
|
-
import { _ as smrtProfilesGenerateBioPrompt, a as Profile, c as backfillProfileEmailKeys, g as promptMessageOptions, i as OidcProfileEmailReservationCollection, m as ProfileType, n as ProfileCollection, o as OidcProfileEmailReservation, p as normalizeIdentityEmail, s as PROFILE_EMAIL_KEY_BACKFILL_NAME, t as CanonicalPersonProfileError } from "./chunks/ProfileCollection-
|
|
3
|
-
import { a as Person, i as Organization, r as Bot, s as ProfileTypeCollection } from "./chunks/oidcProvisioningPrimitives-
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import {
|
|
8
|
-
import { t as
|
|
9
|
-
import {
|
|
10
|
-
import { n as OidcIdentityCollection, t as AmbiguousOidcIdentityError } from "./chunks/OidcIdentityCollection-
|
|
11
|
-
import { r as ProfileAsset, t as ProfileAssetCollection } from "./chunks/ProfileAssetCollection-
|
|
12
|
-
import { a as PROFILE_LINK_MAX_URL_LENGTH, c as isProfileLinkPlatform, i as PROFILE_LINK_MAX_LABEL_LENGTH, l as normalizeProfileLinkUrl, n as ProfileLinkCollection, o as PROFILE_LINK_PLATFORMS, s as ProfileLink, t as PROFILE_LINK_LIMIT } from "./chunks/ProfileLinkCollection-
|
|
13
|
-
import { r as ProfileMetadata, t as ProfileMetadataCollection } from "./chunks/ProfileMetadataCollection-
|
|
14
|
-
import { r as ProfileMetafield, t as ProfileMetafieldCollection } from "./chunks/ProfileMetafieldCollection-
|
|
15
|
-
import { r as ProfileRelationship, t as ProfileRelationshipCollection } from "./chunks/ProfileRelationshipCollection-
|
|
16
|
-
import { r as ProfileRelationshipTerm, t as ProfileRelationshipTermCollection } from "./chunks/ProfileRelationshipTermCollection-
|
|
17
|
-
import { t as ProfileRelationshipType } from "./chunks/ProfileRelationshipType-
|
|
18
|
-
import { t as ProfileRelationshipTypeCollection } from "./chunks/ProfileRelationshipTypeCollection-
|
|
1
|
+
import { _ as verifyAuthEvent, a as decryptPrivkey, c as generateNostrKeypair, d as isValidPubkey, f as npubToPubkey, g as signEvent, h as pubkeyToNpub, i as createAuthEvent, l as getPublicKey, m as privkeyToNsec, o as deriveEncryptionKey, p as nsecToPrivkey, r as computeEventId, s as encryptPrivkey, t as NostrIdentity, u as isValidPrivkey, v as verifyNostrSignature, y as __exportAll } from "./chunks/NostrIdentity-AC8fAdxe.js";
|
|
2
|
+
import { _ as smrtProfilesGenerateBioPrompt, a as Profile, c as backfillProfileEmailKeys, g as promptMessageOptions, i as OidcProfileEmailReservationCollection, m as ProfileType, n as ProfileCollection, o as OidcProfileEmailReservation, p as normalizeIdentityEmail, s as PROFILE_EMAIL_KEY_BACKFILL_NAME, t as CanonicalPersonProfileError } from "./chunks/ProfileCollection-Bt6IJK49.js";
|
|
3
|
+
import { a as Person, i as Organization, r as Bot, s as ProfileTypeCollection } from "./chunks/oidcProvisioningPrimitives-CYood-2M.js";
|
|
4
|
+
import { r as AuditLog, t as AuditLogCollection } from "./chunks/AuditLogCollection-WDHL-_AF.js";
|
|
5
|
+
import { t as NostrIdentityCollection } from "./chunks/NostrIdentityCollection-CctlECpX.js";
|
|
6
|
+
import { t as ApiKey } from "./chunks/ApiKey-CVmlf3V6.js";
|
|
7
|
+
import { t as OidcIdentity } from "./chunks/OidcIdentity-BjRu3n1g.js";
|
|
8
|
+
import { n as createProfileFromOidc, r as resolveIdentity, t as createProfileFromNostr } from "./chunks/resolveIdentity-CvGDegU6.js";
|
|
9
|
+
import { t as ApiKeyCollection } from "./chunks/ApiKeyCollection-CiiDNFdD.js";
|
|
10
|
+
import { n as OidcIdentityCollection, t as AmbiguousOidcIdentityError } from "./chunks/OidcIdentityCollection-B4jYh36_.js";
|
|
11
|
+
import { r as ProfileAsset, t as ProfileAssetCollection } from "./chunks/ProfileAssetCollection-HeMtjBc0.js";
|
|
12
|
+
import { a as PROFILE_LINK_MAX_URL_LENGTH, c as isProfileLinkPlatform, i as PROFILE_LINK_MAX_LABEL_LENGTH, l as normalizeProfileLinkUrl, n as ProfileLinkCollection, o as PROFILE_LINK_PLATFORMS, s as ProfileLink, t as PROFILE_LINK_LIMIT } from "./chunks/ProfileLinkCollection-u1hhzKTm.js";
|
|
13
|
+
import { r as ProfileMetadata, t as ProfileMetadataCollection } from "./chunks/ProfileMetadataCollection-BIYKy4Y3.js";
|
|
14
|
+
import { r as ProfileMetafield, t as ProfileMetafieldCollection } from "./chunks/ProfileMetafieldCollection-Buz7gzag.js";
|
|
15
|
+
import { r as ProfileRelationship, t as ProfileRelationshipCollection } from "./chunks/ProfileRelationshipCollection-C4g_QLI4.js";
|
|
16
|
+
import { r as ProfileRelationshipTerm, t as ProfileRelationshipTermCollection } from "./chunks/ProfileRelationshipTermCollection-C9J7mC7P.js";
|
|
17
|
+
import { t as ProfileRelationshipType } from "./chunks/ProfileRelationshipType-U7IwF6Wf.js";
|
|
18
|
+
import { t as ProfileRelationshipTypeCollection } from "./chunks/ProfileRelationshipTypeCollection-_n22WqTb.js";
|
|
19
19
|
import { ObjectRegistry, SmrtCollection, SmrtObject, field, foreignKey, smrt } from "@happyvertical/smrt-core";
|
|
20
20
|
import { createHash, randomBytes } from "node:crypto";
|
|
21
21
|
//#region src/__smrt-register__.ts
|
|
22
|
-
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-profiles\",\"packageVersion\":\"0.54.2\",\"objects\":{\"@happyvertical/smrt-profiles:ApiKeyCollection\":{\"name\":\"apikeycollection\",\"className\":\"ApiKeyCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ApiKeyCollection\",\"collection\":\"apikeys\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ApiKeyCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"findActiveByProfile\":{\"name\":\"findActiveByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"findByHash\":{\"name\":\"findByHash\",\"async\":true,\"parameters\":[{\"name\":\"keyHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ApiKey | null>\",\"isStatic\":false,\"isPublic\":true},\"verify\":{\"name\":\"verify\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ApiKey | null>\",\"isStatic\":false,\"isPublic\":true},\"generateForProfile\":{\"name\":\"generateForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":false,\"isPublic\":true},\"revokeAllForProfile\":{\"name\":\"revokeAllForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeByPrefix\":{\"name\":\"revokeByPrefix\",\"async\":true,\"parameters\":[{\"name\":\"keyPrefix\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"cleanupExpired\":{\"name\":\"cleanupExpired\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"api_keys\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ApiKey\",\"exportName\":\"ApiKeyCollection\",\"collectionExportName\":\"ApiKeyCollectionCollection\",\"schema\":{\"tableName\":\"api_keys\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"api_keys\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"key_hash\\\" TEXT DEFAULT '',\\n \\\"key_prefix\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"scopes\\\" JSON DEFAULT '[]',\\n \\\"last_used_at\\\" TIMESTAMP,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"revoked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"key_prefix\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"scopes\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"revoked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"api_keys_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"api_keys_key_hash_idx\",\"columns\":[\"key_hash\"]},{\"name\":\"api_keys_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"api_keys_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"9b0d49e8\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:AuditLogCollection\":{\"name\":\"auditlogcollection\",\"className\":\"AuditLogCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:AuditLogCollection\",\"collection\":\"auditlogs\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/AuditLogCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"findByResource\":{\"name\":\"findByResource\",\"async\":true,\"parameters\":[{\"name\":\"resourceType\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"findByAction\":{\"name\":\"findByAction\",\"async\":true,\"parameters\":[{\"name\":\"action\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySource\":{\"name\":\"findBySource\",\"async\":true,\"parameters\":[{\"name\":\"source\",\"type\":\"AuditSource\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"findOnBehalfOf\":{\"name\":\"findOnBehalfOf\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"record\":{\"name\":\"record\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"Profile\",\"string\",\"AuditSource\",\"Record<string, unknown>\",\"Profile | null\"]}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":false,\"isPublic\":true},\"getRecentActivity\":{\"name\":\"getRecentActivity\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"limit\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"getResourceTimeline\":{\"name\":\"getResourceTimeline\",\"async\":true,\"parameters\":[{\"name\":\"resourceType\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"audit_logs\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AuditLog\",\"exportName\":\"AuditLogCollection\",\"collectionExportName\":\"AuditLogCollectionCollection\",\"schema\":{\"tableName\":\"audit_logs\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"audit_logs\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"action\\\" TEXT DEFAULT '',\\n \\\"resource_type\\\" TEXT DEFAULT '',\\n \\\"resource_id\\\" TEXT DEFAULT '',\\n \\\"source\\\" TEXT DEFAULT 'web',\\n \\\"metadata\\\" JSON DEFAULT '{}',\\n \\\"on_behalf_of_id\\\" UUID\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"action\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"web\"},\"metadata\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"on_behalf_of_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"audit_logs_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"audit_logs_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"audit_logs_profile_id_idx\",\"columns\":[\"profile_id\"]},{\"name\":\"audit_logs_on_behalf_of_id_idx\",\"columns\":[\"on_behalf_of_id\"]}],\"version\":\"d2b35971\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:MagicLinkTokenCollection\":{\"name\":\"magiclinktokencollection\",\"className\":\"MagicLinkTokenCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:MagicLinkTokenCollection\",\"collection\":\"magiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/MagicLinkTokenCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByTokenHash\":{\"name\":\"findByTokenHash\",\"async\":true,\"parameters\":[{\"name\":\"tokenHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MagicLinkToken | null>\",\"isStatic\":false,\"isPublic\":true},\"findActiveForEmail\":{\"name\":\"findActiveForEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MagicLinkToken[]>\",\"isStatic\":false,\"isPublic\":true},\"findByIdentity\":{\"name\":\"findByIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrIdentityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MagicLinkToken[]>\",\"isStatic\":false,\"isPublic\":true},\"countRecentByEmail\":{\"name\":\"countRecentByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"withinMinutes\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"countRecentByIp\":{\"name\":\"countRecentByIp\",\"async\":true,\"parameters\":[{\"name\":\"ip\",\"type\":\"string\",\"optional\":false},{\"name\":\"withinMinutes\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"verify\":{\"name\":\"verify\",\"async\":true,\"parameters\":[{\"name\":\"token\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MagicLinkToken | null>\",\"isStatic\":false,\"isPublic\":true},\"cleanupExpired\":{\"name\":\"cleanupExpired\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeForIdentity\":{\"name\":\"revokeForIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrIdentityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"isRateLimitedByEmail\":{\"name\":\"isRateLimitedByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"maxPerHour\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isRateLimitedByIp\":{\"name\":\"isRateLimitedByIp\",\"async\":true,\"parameters\":[{\"name\":\"ip\",\"type\":\"string\",\"optional\":false},{\"name\":\"maxPerHour\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"magic_link_tokens\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"MagicLinkToken\",\"exportName\":\"MagicLinkTokenCollection\",\"collectionExportName\":\"MagicLinkTokenCollectionCollection\",\"schema\":{\"tableName\":\"magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"magic_link_tokens\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"nostr_identity_id\\\" UUID NOT NULL,\\n \\\"token_hash\\\" TEXT DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"used_at\\\" TIMESTAMP,\\n \\\"requested_from_ip\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"nostr_identity_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"nostr_identities\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"token_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"requested_from_ip\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"magic_link_tokens_token_hash_idx\",\"columns\":[\"token_hash\"]},{\"name\":\"magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"magic_link_tokens_nostr_identity_id_idx\",\"columns\":[\"nostr_identity_id\"]}],\"version\":\"d60748fe\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:NostrIdentityCollection\":{\"name\":\"nostridentitycollection\",\"className\":\"NostrIdentityCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:NostrIdentityCollection\",\"collection\":\"nostridentities\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/NostrIdentityCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<NostrIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"findByPubkey\":{\"name\":\"findByPubkey\",\"async\":true,\"parameters\":[{\"name\":\"pubkey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":false,\"isPublic\":true},\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":false,\"isPublic\":true},\"findByNip05\":{\"name\":\"findByNip05\",\"async\":true,\"parameters\":[{\"name\":\"username\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":false,\"isPublic\":true},\"createForProfile\":{\"name\":\"createForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"masterSecret\",\"type\":\"string\",\"optional\":false},{\"name\":\"nip05Username\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"linkToProfile\":{\"name\":\"linkToProfile\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"nostrData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"unlinkFromProfile\":{\"name\":\"unlinkFromProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"pubkey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getNip05Response\":{\"name\":\"getNip05Response\",\"async\":true,\"parameters\":[{\"name\":\"username\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Nip05Response>\",\"isStatic\":false,\"isPublic\":true},\"isNip05Available\":{\"name\":\"isNip05Available\",\"async\":true,\"parameters\":[{\"name\":\"username\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"updateNip05Username\":{\"name\":\"updateNip05Username\",\"async\":true,\"parameters\":[{\"name\":\"identity\",\"type\":\"NostrIdentity\",\"optional\":false},{\"name\":\"newUsername\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"nostr_identities\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"NostrIdentity\",\"exportName\":\"NostrIdentityCollection\",\"collectionExportName\":\"NostrIdentityCollectionCollection\",\"schema\":{\"tableName\":\"nostr_identities\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"nostr_identities\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"pubkey\\\" TEXT DEFAULT '',\\n \\\"encrypted_privkey\\\" TEXT DEFAULT '',\\n \\\"encryption_iv\\\" TEXT DEFAULT '',\\n \\\"encryption_tag\\\" TEXT DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"nip05_username\\\" TEXT DEFAULT '',\\n \\\"last_used_at\\\" TIMESTAMP,\\n \\\"verified_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pubkey\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encrypted_privkey\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encryption_iv\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encryption_tag\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"nip05_username\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"verified_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"nostr_identities_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"nostr_identities_pubkey_idx\",\"columns\":[\"pubkey\"]},{\"name\":\"nostr_identities_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"nostr_identities_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"92eda375\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:OidcIdentityCollection\":{\"name\":\"oidcidentitycollection\",\"className\":\"OidcIdentityCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:OidcIdentityCollection\",\"collection\":\"oidcidentities\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcIdentityCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySubject\":{\"name\":\"findBySubject\",\"async\":true,\"parameters\":[{\"name\":\"issuer\",\"type\":\"string\",\"optional\":false},{\"name\":\"subject\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<OidcIdentity | null>\",\"isStatic\":false,\"isPublic\":true},\"findByProvider\":{\"name\":\"findByProvider\",\"async\":true,\"parameters\":[{\"name\":\"provider\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkToProfile\":{\"name\":\"linkToProfile\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":false,\"isPublic\":true},\"unlinkFromProfile\":{\"name\":\"unlinkFromProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"issuer\",\"type\":\"string\",\"optional\":false},{\"name\":\"subject\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"oidc_identities\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"OidcIdentity\",\"exportName\":\"OidcIdentityCollection\",\"collectionExportName\":\"OidcIdentityCollectionCollection\",\"schema\":{\"tableName\":\"oidc_identities\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"oidc_identities\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"provider\\\" TEXT,\\n \\\"issuer\\\" TEXT,\\n \\\"subject\\\" TEXT,\\n \\\"identity_key\\\" TEXT UNIQUE,\\n \\\"email\\\" TEXT,\\n \\\"last_used_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"issuer\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"subject\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"identity_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"oidc_identities_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"oidc_identities_issuer_idx\",\"columns\":[\"issuer\"]},{\"name\":\"oidc_identities_subject_idx\",\"columns\":[\"subject\"]},{\"name\":\"oidc_identities_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"oidc_identities_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"925387ea\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection\":{\"name\":\"oidcprofileemailreservationcollection\",\"className\":\"OidcProfileEmailReservationCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection\",\"collection\":\"oidcprofileemailreservations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcProfileEmailReservationCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"oidc_profile_email_reservations\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"OidcProfileEmailReservation\",\"exportName\":\"OidcProfileEmailReservationCollection\",\"collectionExportName\":\"OidcProfileEmailReservationCollectionCollection\",\"schema\":{\"tableName\":\"oidc_profile_email_reservations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"oidc_profile_email_reservations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL UNIQUE,\\n \\\"email_key\\\" TEXT NOT NULL UNIQUE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true}},\"indexes\":[{\"name\":\"oidc_profile_email_reservations_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"oidc_profile_email_reservations_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"01586e67\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileAssetCollection\":{\"name\":\"profileassetcollection\",\"className\":\"ProfileAssetCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileAssetCollection\",\"collection\":\"profileassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileAssetCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"byLeft\":{\"name\":\"byLeft\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"byRight\":{\"name\":\"byRight\",\"async\":true,\"parameters\":[{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"attach\":{\"name\":\"attach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem>\",\"isStatic\":false,\"isPublic\":true},\"detach\":{\"name\":\"detach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightIds\",\"type\":\"string[]\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":false,\"mcp\":false,\"cli\":false,\"tableName\":\"profile_assets\"},\"extends\":\"SmrtJunction\",\"extendsTypeArg\":\"ProfileAsset\",\"exportName\":\"ProfileAssetCollection\",\"collectionExportName\":\"ProfileAssetCollectionCollection\",\"schema\":{\"tableName\":\"profile_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_assets\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"profile_assets_profile_id_asset_id_idx\",\"columns\":[\"profile_id\",\"asset_id\",\"relationship\"],\"unique\":true},{\"name\":\"profile_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"profile_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"d0d7c2a2\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileCollection\":{\"name\":\"profilecollection\",\"className\":\"ProfileCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileCollection\",\"collection\":\"profiles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"findUniqueGlobalPersonByEmail\":{\"name\":\"findUniqueGlobalPersonByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"requireCanonicalGlobalPerson\":{\"name\":\"requireCanonicalGlobalPerson\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile>\",\"isStatic\":false,\"isPublic\":true},\"reserveCanonicalIdentityEmail\":{\"name\":\"reserveCanonicalIdentityEmail\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile>\",\"isStatic\":false,\"isPublic\":true},\"findByType\":{\"name\":\"findByType\",\"async\":true,\"parameters\":[{\"name\":\"typeSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"batchGetMetadata\":{\"name\":\"batchGetMetadata\",\"async\":true,\"parameters\":[{\"name\":\"profileIds\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, Record<string, string>>>\",\"isStatic\":false,\"isPublic\":true},\"batchUpdateMetadata\":{\"name\":\"batchUpdateMetadata\",\"async\":true,\"parameters\":[{\"name\":\"updates\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\",\"Record<string, unknown>\"]}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findRelated\":{\"name\":\"findRelated\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRelationshipNetwork\":{\"name\":\"getRelationshipNetwork\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"number\"]}],\"returnType\":\"Promise<Map<string, number>>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Profile\",\"exportName\":\"ProfileCollection\",\"collectionExportName\":\"ProfileCollectionCollection\",\"schema\":{\"tableName\":\"profiles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profiles\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"email\\\" TEXT,\\n \\\"email_key\\\" TEXT,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"is_public\\\" BOOLEAN DEFAULT FALSE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email\":{\"type\":\"TEXT\",\"notNull\":false},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"is_public\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false}},\"indexes\":[{\"name\":\"profiles_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profiles_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profiles_email_key_idx\",\"columns\":[\"email_key\"]},{\"name\":\"profiles_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profiles_type_id_idx\",\"columns\":[\"type_id\"]}],\"version\":\"f4a7b632\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileLinkCollection\":{\"name\":\"profilelinkcollection\",\"className\":\"ProfileLinkCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileLinkCollection\",\"collection\":\"profilelinks\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileLinkCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"listForProfile\":{\"name\":\"listForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"replaceForProfile\":{\"name\":\"replaceForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"links\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"reorder\":{\"name\":\"reorder\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"linkIds\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"profile_links\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileLink\",\"exportName\":\"ProfileLinkCollection\",\"collectionExportName\":\"ProfileLinkCollectionCollection\",\"schema\":{\"tableName\":\"profile_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"platform\\\" TEXT NOT NULL DEFAULT 'website',\\n \\\"url\\\" TEXT NOT NULL,\\n \\\"label\\\" TEXT,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"platform\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"website\"},\"url\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"profile_links_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_links_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_links_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"847fd648\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileMetadataCollection\":{\"name\":\"profilemetadatacollection\",\"className\":\"ProfileMetadataCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileMetadataCollection\",\"collection\":\"profilemetadatas\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetadataCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getByProfile\":{\"name\":\"getByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileMetadata[]>\",\"isStatic\":false,\"isPublic\":true},\"getMetadataObject\":{\"name\":\"getMetadataObject\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Record<string, string>>\",\"isStatic\":false,\"isPublic\":true},\"findProfilesByMetadata\":{\"name\":\"findProfilesByMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldId\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileMetadata\",\"exportName\":\"ProfileMetadataCollection\",\"collectionExportName\":\"ProfileMetadataCollectionCollection\",\"schema\":{\"tableName\":\"profile_metadata\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_metadata\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID,\\n \\\"metafield_id\\\" UUID,\\n \\\"value\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"metafield_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_metafields\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"value\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"profile_metadata_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_metadata_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_metadata_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_metadata_profile_id_idx\",\"columns\":[\"profile_id\"]},{\"name\":\"profile_metadata_metafield_id_idx\",\"columns\":[\"metafield_id\"]}],\"version\":\"d3ab1b70\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileMetafieldCollection\":{\"name\":\"profilemetafieldcollection\",\"className\":\"ProfileMetafieldCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileMetafieldCollection\",\"collection\":\"profilemetafields\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetafieldCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileMetafield | null>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateBySlug\":{\"name\":\"getOrCreateBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"ValidationSchema\"]}],\"returnType\":\"Promise<ProfileMetafield>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileMetafield\",\"exportName\":\"ProfileMetafieldCollection\",\"collectionExportName\":\"ProfileMetafieldCollectionCollection\",\"schema\":{\"tableName\":\"profile_metafields\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_metafields\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"validation\\\" JSON\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"validation\":{\"type\":\"JSON\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_metafields_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_metafields_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_metafields_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"afe420df\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationshipCollection\":{\"name\":\"profilerelationshipcollection\",\"className\":\"ProfileRelationshipCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationshipCollection\",\"collection\":\"profilerelationships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getFromProfile\":{\"name\":\"getFromProfile\",\"async\":true,\"parameters\":[{\"name\":\"fromProfileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"typeId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getToProfile\":{\"name\":\"getToProfile\",\"async\":true,\"parameters\":[{\"name\":\"toProfileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"typeId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getForProfile\":{\"name\":\"getForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"typeId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"exists\":{\"name\":\"exists\",\"async\":true,\"parameters\":[{\"name\":\"fromProfileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"toProfileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"typeId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileRelationship\",\"exportName\":\"ProfileRelationshipCollection\",\"collectionExportName\":\"ProfileRelationshipCollectionCollection\",\"schema\":{\"tableName\":\"profile_relationships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationships\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"from_profile_id\\\" UUID,\\n \\\"to_profile_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"context_profile_id\\\" UUID\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"from_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"to_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_relationship_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"context_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"profile_relationships_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_relationships_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationships_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_relationships_from_profile_id_idx\",\"columns\":[\"from_profile_id\"]},{\"name\":\"profile_relationships_to_profile_id_idx\",\"columns\":[\"to_profile_id\"]},{\"name\":\"profile_relationships_type_id_idx\",\"columns\":[\"type_id\"]},{\"name\":\"profile_relationships_context_profile_id_idx\",\"columns\":[\"context_profile_id\"]}],\"version\":\"48878dba\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection\":{\"name\":\"profilerelationshiptermcollection\",\"className\":\"ProfileRelationshipTermCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection\",\"collection\":\"profilerelationshipterms\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTermCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getByRelationship\":{\"name\":\"getByRelationship\",\"async\":true,\"parameters\":[{\"name\":\"relationshipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileRelationshipTerm[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveTerm\":{\"name\":\"getActiveTerm\",\"async\":true,\"parameters\":[{\"name\":\"relationshipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileRelationshipTerm | null>\",\"isStatic\":false,\"isPublic\":true},\"getHistoricalTerms\":{\"name\":\"getHistoricalTerms\",\"async\":true,\"parameters\":[{\"name\":\"relationshipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileRelationshipTerm[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileRelationshipTerm\",\"exportName\":\"ProfileRelationshipTermCollection\",\"collectionExportName\":\"ProfileRelationshipTermCollectionCollection\",\"schema\":{\"tableName\":\"profile_relationship_terms\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationship_terms\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"relationship_id\\\" UUID,\\n \\\"started_at\\\" TIMESTAMP,\\n \\\"ended_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"relationship_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_relationships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"ended_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_relationship_terms_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"profile_relationship_terms_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationship_terms_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"profile_relationship_terms_relationship_id_idx\",\"columns\":[\"relationship_id\"]}],\"version\":\"ef299102\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection\":{\"name\":\"profilerelationshiptypecollection\",\"className\":\"ProfileRelationshipTypeCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection\",\"collection\":\"profilerelationshiptypes\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTypeCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileRelationshipType | null>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateBySlug\":{\"name\":\"getOrCreateBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"boolean\"]}],\"returnType\":\"Promise<ProfileRelationshipType>\",\"isStatic\":false,\"isPublic\":true},\"getReciprocal\":{\"name\":\"getReciprocal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileRelationshipType[]>\",\"isStatic\":false,\"isPublic\":true},\"getDirectional\":{\"name\":\"getDirectional\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileRelationshipType[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileRelationshipType\",\"exportName\":\"ProfileRelationshipTypeCollection\",\"collectionExportName\":\"ProfileRelationshipTypeCollectionCollection\",\"schema\":{\"tableName\":\"profile_relationship_types\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationship_types\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"reciprocal\\\" BOOLEAN DEFAULT TRUE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"reciprocal\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"profile_relationship_types_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"profile_relationship_types_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationship_types_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"719fe0d9\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileTypeCollection\":{\"name\":\"profiletypecollection\",\"className\":\"ProfileTypeCollection\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileTypeCollection\",\"collection\":\"profiletypes\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileTypeCollection.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileType | null>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateBySlug\":{\"name\":\"getOrCreateBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<ProfileType>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateGlobalBySlug\":{\"name\":\"getOrCreateGlobalBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<ProfileType>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProfileType\",\"exportName\":\"ProfileTypeCollection\",\"collectionExportName\":\"ProfileTypeCollectionCollection\",\"schema\":{\"tableName\":\"profile_types\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_types\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_types_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_types_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_types_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"0fb37aeb\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ApiKey\":{\"name\":\"apikey\",\"className\":\"ApiKey\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ApiKey\",\"collection\":\"apikeys\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ApiKey.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"keyHash\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"keyPrefix\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"scopes\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"lastUsedAt\":{\"type\":\"datetime\",\"required\":false},\"expiresAt\":{\"type\":\"datetime\",\"required\":false},\"revokedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getProfile\":{\"name\":\"getProfile\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"isValid\":{\"name\":\"isValid\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"hasScope\":{\"name\":\"hasScope\",\"async\":false,\"parameters\":[{\"name\":\"scope\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"revoke\":{\"name\":\"revoke\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"recordUsage\":{\"name\":\"recordUsage\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"hashKey\":{\"name\":\"hashKey\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string\",\"isStatic\":true,\"isPublic\":true},\"generate\":{\"name\":\"generate\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"typeUnresolved\":true,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":true,\"isPublic\":true},\"verify\":{\"name\":\"verify\",\"async\":true,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<ApiKey | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"api_keys\",\"sensitive\":true,\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\",\"create\",\"revoke\"],\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"ApiKey\",\"collectionExportName\":\"ApiKeyCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"api_keys\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"api_keys\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"key_hash\\\" TEXT DEFAULT '',\\n \\\"key_prefix\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"scopes\\\" JSON DEFAULT '[]',\\n \\\"last_used_at\\\" TIMESTAMP,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"revoked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"key_prefix\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"scopes\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"revoked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"api_keys_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"api_keys_key_hash_idx\",\"columns\":[\"key_hash\"]},{\"name\":\"api_keys_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"api_keys_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"9b0d49e8\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:AuditLog\":{\"name\":\"auditlog\",\"className\":\"AuditLog\",\"qualifiedName\":\"@happyvertical/smrt-profiles:AuditLog\",\"collection\":\"auditlogs\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/AuditLog.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":true}}},\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"action\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"resourceType\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"resourceId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"source\":{\"type\":\"text\",\"required\":false,\"default\":\"web\"},\"metadata\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"onBehalfOfId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Profile\",\"_meta\":{\"nullable\":true}}},\"methods\":{\"getProfile\":{\"name\":\"getProfile\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"getOnBehalfOf\":{\"name\":\"getOnBehalfOf\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"getEffectiveActor\":{\"name\":\"getEffectiveActor\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"record\":{\"name\":\"record\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"audit_logs\",\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\"]},\"tenantScoped\":{\"mode\":\"optional\",\"allowSuperAdminBypass\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"AuditLog\",\"collectionExportName\":\"AuditLogCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"audit_logs\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"audit_logs\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"action\\\" TEXT DEFAULT '',\\n \\\"resource_type\\\" TEXT DEFAULT '',\\n \\\"resource_id\\\" TEXT DEFAULT '',\\n \\\"source\\\" TEXT DEFAULT 'web',\\n \\\"metadata\\\" JSON DEFAULT '{}',\\n \\\"on_behalf_of_id\\\" UUID\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"action\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"web\"},\"metadata\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"on_behalf_of_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"audit_logs_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"audit_logs_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"audit_logs_profile_id_idx\",\"columns\":[\"profile_id\"]},{\"name\":\"audit_logs_on_behalf_of_id_idx\",\"columns\":[\"on_behalf_of_id\"]}],\"version\":\"d2b35971\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:MagicLinkToken\":{\"name\":\"magiclinktoken\",\"className\":\"MagicLinkToken\",\"qualifiedName\":\"@happyvertical/smrt-profiles:MagicLinkToken\",\"collection\":\"magiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/MagicLinkToken.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"nostrIdentityId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"NostrIdentity\",\"_meta\":{\"required\":true}},\"tokenHash\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"expiresAt\":{\"type\":\"datetime\",\"required\":false},\"usedAt\":{\"type\":\"datetime\",\"required\":false},\"requestedFromIp\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"hashToken\":{\"name\":\"hashToken\",\"async\":false,\"parameters\":[{\"name\":\"token\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string\",\"isStatic\":true,\"isPublic\":true},\"generate\":{\"name\":\"generate\",\"async\":true,\"parameters\":[{\"name\":\"nostrIdentity\",\"type\":\"NostrIdentity\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"typeUnresolved\":true,\"memberTypes\":[\"number\",\"string\"]}],\"returnType\":\"Promise<GenerateTokenResult>\",\"isStatic\":true,\"isPublic\":true},\"verify\":{\"name\":\"verify\",\"async\":true,\"parameters\":[{\"name\":\"token\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<MagicLinkToken | null>\",\"isStatic\":true,\"isPublic\":true},\"isValid\":{\"name\":\"isValid\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isExpired\":{\"name\":\"isExpired\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isUsed\":{\"name\":\"isUsed\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"markUsed\":{\"name\":\"markUsed\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getNostrIdentity\":{\"name\":\"getNostrIdentity\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":false,\"isPublic\":true},\"getTimeRemainingSeconds\":{\"name\":\"getTimeRemainingSeconds\",\"async\":false,\"parameters\":[],\"returnType\":\"number\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"magic_link_tokens\",\"sensitive\":true,\"api\":{\"exclude\":[\"*\"]},\"mcp\":{\"exclude\":[\"*\"]},\"cli\":{\"include\":[\"list\"]}},\"extends\":\"SmrtObject\",\"exportName\":\"MagicLinkToken\",\"collectionExportName\":\"MagicLinkTokenCollection\",\"validationRules\":[{\"field\":\"nostrIdentityId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"magic_link_tokens\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"nostr_identity_id\\\" UUID NOT NULL,\\n \\\"token_hash\\\" TEXT DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"used_at\\\" TIMESTAMP,\\n \\\"requested_from_ip\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"nostr_identity_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"nostr_identities\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"token_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"requested_from_ip\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"magic_link_tokens_token_hash_idx\",\"columns\":[\"token_hash\"]},{\"name\":\"magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"magic_link_tokens_nostr_identity_id_idx\",\"columns\":[\"nostr_identity_id\"]}],\"version\":\"d60748fe\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:NostrIdentity\":{\"name\":\"nostridentity\",\"className\":\"NostrIdentity\",\"qualifiedName\":\"@happyvertical/smrt-profiles:NostrIdentity\",\"collection\":\"nostridentities\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/NostrIdentity.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"pubkey\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"encryptedPrivkey\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"encryptionIv\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"encryptionTag\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"nip05Username\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"lastUsedAt\":{\"type\":\"datetime\",\"required\":false},\"verifiedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getProfile\":{\"name\":\"getProfile\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"findByPubkey\":{\"name\":\"findByPubkey\",\"async\":true,\"parameters\":[{\"name\":\"pubkey\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":true,\"isPublic\":true},\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":true,\"isPublic\":true},\"findByNip05\":{\"name\":\"findByNip05\",\"async\":true,\"parameters\":[{\"name\":\"username\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<NostrIdentity | null>\",\"isStatic\":true,\"isPublic\":true},\"decryptPrivkey\":{\"name\":\"decryptPrivkey\",\"async\":false,\"parameters\":[{\"name\":\"masterSecret\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"getKeypair\":{\"name\":\"getKeypair\",\"async\":false,\"parameters\":[{\"name\":\"masterSecret\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"object\",\"isStatic\":false,\"isPublic\":true},\"recordUsage\":{\"name\":\"recordUsage\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"markVerified\":{\"name\":\"markVerified\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"isVerified\":{\"name\":\"isVerified\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getNip05Identifier\":{\"name\":\"getNip05Identifier\",\"async\":false,\"parameters\":[{\"name\":\"domain\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"nostr_identities\",\"sensitive\":true,\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]}},\"extends\":\"SmrtObject\",\"exportName\":\"NostrIdentity\",\"collectionExportName\":\"NostrIdentityCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"nostr_identities\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"nostr_identities\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"pubkey\\\" TEXT DEFAULT '',\\n \\\"encrypted_privkey\\\" TEXT DEFAULT '',\\n \\\"encryption_iv\\\" TEXT DEFAULT '',\\n \\\"encryption_tag\\\" TEXT DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"nip05_username\\\" TEXT DEFAULT '',\\n \\\"last_used_at\\\" TIMESTAMP,\\n \\\"verified_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pubkey\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encrypted_privkey\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encryption_iv\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"encryption_tag\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"nip05_username\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"verified_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"nostr_identities_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"nostr_identities_pubkey_idx\",\"columns\":[\"pubkey\"]},{\"name\":\"nostr_identities_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"nostr_identities_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"92eda375\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:OidcIdentity\":{\"name\":\"oidcidentity\",\"className\":\"OidcIdentity\",\"qualifiedName\":\"@happyvertical/smrt-profiles:OidcIdentity\",\"collection\":\"oidcidentities\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcIdentity.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"provider\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"issuer\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"indexed\":true}},\"subject\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"indexed\":true}},\"identityKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"unique\":true,\"readonly\":true},\"readonly\":true},\"email\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"lastUsedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{\"getProfile\":{\"name\":\"getProfile\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":false,\"isPublic\":true},\"findBySubject\":{\"name\":\"findBySubject\",\"async\":true,\"parameters\":[{\"name\":\"issuer\",\"type\":\"string\",\"optional\":false},{\"name\":\"subject\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<OidcIdentity | null>\",\"isStatic\":true,\"isPublic\":true},\"buildIdentityKey\":{\"name\":\"buildIdentityKey\",\"async\":false,\"parameters\":[{\"name\":\"issuer\",\"type\":\"string\",\"optional\":false},{\"name\":\"subject\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string\",\"isStatic\":true,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"findOrCreate\":{\"name\":\"findOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"profile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":true,\"isPublic\":true},\"recordUsage\":{\"name\":\"recordUsage\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"oidc_identities\",\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]}},\"extends\":\"SmrtObject\",\"exportName\":\"OidcIdentity\",\"collectionExportName\":\"OidcIdentityCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"oidc_identities\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"oidc_identities\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"provider\\\" TEXT,\\n \\\"issuer\\\" TEXT,\\n \\\"subject\\\" TEXT,\\n \\\"identity_key\\\" TEXT UNIQUE,\\n \\\"email\\\" TEXT,\\n \\\"last_used_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"issuer\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"subject\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"identity_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_used_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"oidc_identities_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"oidc_identities_issuer_idx\",\"columns\":[\"issuer\"]},{\"name\":\"oidc_identities_subject_idx\",\"columns\":[\"subject\"]},{\"name\":\"oidc_identities_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"oidc_identities_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"925387ea\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:OidcProfileEmailReservation\":{\"name\":\"oidcprofileemailreservation\",\"className\":\"OidcProfileEmailReservation\",\"qualifiedName\":\"@happyvertical/smrt-profiles:OidcProfileEmailReservation\",\"collection\":\"oidcprofileemailreservations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcProfileEmailReservation.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true,\"unique\":true}},\"emailKey\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true,\"readonly\":true},\"readonly\":true}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"oidc_profile_email_reservations\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtObject\",\"exportName\":\"OidcProfileEmailReservation\",\"collectionExportName\":\"OidcProfileEmailReservationCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"emailKey\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"oidc_profile_email_reservations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"oidc_profile_email_reservations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"profile_id\\\" UUID NOT NULL UNIQUE,\\n \\\"email_key\\\" TEXT NOT NULL UNIQUE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true}},\"indexes\":[{\"name\":\"oidc_profile_email_reservations_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"oidc_profile_email_reservations_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"01586e67\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:Profile\":{\"name\":\"profile\",\"className\":\"Profile\",\"qualifiedName\":\"@happyvertical/smrt-profiles:Profile\",\"collection\":\"profiles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/Profile.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"typeId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileType\",\"_meta\":{\"required\":true}},\"email\":{\"type\":\"text\",\"required\":false},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true,\"readonly\":true},\"readonly\":true},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false},\"isPublic\":{\"type\":\"boolean\",\"required\":false,\"default\":false,\"_meta\":{\"default\":false}},\"metadata\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileMetadata\"},\"relationshipsFrom\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"fromProfileId\"}},\"relationshipsTo\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"toProfileId\"}}},\"methods\":{\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getTypeSlug\":{\"name\":\"getTypeSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"setTypeBySlug\":{\"name\":\"setTypeBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addMetadata\":{\"name\":\"addMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Record<string, string>>\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metadata\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeMetadata\":{\"name\":\"removeMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getLinks\":{\"name\":\"getLinks\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"links\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addRelationship\":{\"name\":\"addRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"contextProfile\",\"type\":\"Profile\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRelationships\":{\"name\":\"getRelationships\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"'from' | 'to' | 'all'\"]}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelatedProfiles\":{\"name\":\"getRelatedProfiles\",\"async\":true,\"parameters\":[{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"removeRelationship\":{\"name\":\"removeRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"generateBio\":{\"name\":\"generateBio\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"matches\":{\"name\":\"matches\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByMetadata\":{\"name\":\"findByMetadata\",\"async\":true,\"parameters\":[{\"name\":\"_metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"_value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findByType\":{\"name\":\"findByType\",\"async\":true,\"parameters\":[{\"name\":\"_typeSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findRelated\":{\"name\":\"findRelated\",\"async\":true,\"parameters\":[{\"name\":\"_profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"_relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"searchByEmail\":{\"name\":\"searchByEmail\",\"async\":true,\"parameters\":[{\"name\":\"_email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":true,\"isPublic\":true},\"getApiKeys\":{\"name\":\"getApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveApiKeys\":{\"name\":\"getActiveApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"generateApiKey\":{\"name\":\"generateApiKey\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":false,\"isPublic\":true},\"getOidcIdentities\":{\"name\":\"getOidcIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkOidcIdentity\":{\"name\":\"linkOidcIdentity\",\"async\":true,\"parameters\":[{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getNostrIdentities\":{\"name\":\"getNostrIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<NostrIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkNostrIdentity\":{\"name\":\"linkNostrIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getAuditLogs\":{\"name\":\"getAuditLogs\",\"async\":true,\"parameters\":[{\"name\":\"limit\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"recordAction\":{\"name\":\"recordAction\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"'web' | 'cli' | 'ci' | 'webhook' | 'mcp'\",\"Record<string, unknown>\",\"Profile | null\"]}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Profile\",\"collectionExportName\":\"ProfileCollection\",\"validationRules\":[{\"field\":\"typeId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profiles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profiles\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"email\\\" TEXT,\\n \\\"email_key\\\" TEXT,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"is_public\\\" BOOLEAN DEFAULT FALSE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email\":{\"type\":\"TEXT\",\"notNull\":false},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"is_public\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false}},\"indexes\":[{\"name\":\"profiles_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profiles_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profiles_email_key_idx\",\"columns\":[\"email_key\"]},{\"name\":\"profiles_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profiles_type_id_idx\",\"columns\":[\"type_id\"]}],\"version\":\"f4a7b632\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileAsset\":{\"name\":\"profileasset\",\"className\":\"ProfileAsset\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileAsset\",\"collection\":\"profileassets\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileAsset.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true,\"onDelete\":\"CASCADE\"}},\"assetId\":{\"type\":\"crossPackageRef\",\"required\":true,\"related\":\"@happyvertical/smrt-assets:Asset\",\"_meta\":{\"onDelete\":\"CASCADE\"}},\"relationship\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"sortOrder\":{\"type\":\"integer\",\"required\":true,\"default\":0}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"profile_assets\",\"conflictColumns\":[\"profile_id\",\"asset_id\",\"relationship\"],\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileAsset\",\"collectionExportName\":\"ProfileAssetCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"assetId\",\"rule\":\"required\",\"fieldType\":\"crossPackageRef\"},{\"field\":\"relationship\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"sortOrder\",\"rule\":\"required\",\"fieldType\":\"integer\"}],\"schema\":{\"tableName\":\"profile_assets\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_assets\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"asset_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"asset_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"profile_assets_profile_id_asset_id_idx\",\"columns\":[\"profile_id\",\"asset_id\",\"relationship\"],\"unique\":true},{\"name\":\"profile_assets_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"profile_assets_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_assets_asset_id_idx\",\"columns\":[\"asset_id\"]}],\"version\":\"d0d7c2a2\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileLink\":{\"name\":\"profilelink\",\"className\":\"ProfileLink\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileLink\",\"collection\":\"profilelinks\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileLink.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true,\"onDelete\":\"CASCADE\"}},\"platform\":{\"type\":\"text\",\"required\":true,\"default\":\"website\",\"maxLength\":32,\"_meta\":{\"required\":true,\"maxLength\":32}},\"url\":{\"type\":\"text\",\"required\":true,\"maxLength\":2048,\"_meta\":{\"required\":true,\"maxLength\":2048}},\"label\":{\"type\":\"text\",\"required\":false,\"maxLength\":200,\"_meta\":{\"nullable\":true,\"maxLength\":200}},\"sortOrder\":{\"type\":\"integer\",\"required\":true,\"default\":0}},\"methods\":{\"getSlug\":{\"name\":\"getSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string | null | undefined>\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[{\"name\":\"...args\",\"type\":\"any\",\"optional\":true,\"typeUnresolved\":true}],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"profile_links\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileLink\",\"collectionExportName\":\"ProfileLinkCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"platform\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"platform\",\"rule\":\"maxLength\",\"value\":32,\"fieldType\":\"text\"},{\"field\":\"url\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"url\",\"rule\":\"maxLength\",\"value\":2048,\"fieldType\":\"text\"},{\"field\":\"label\",\"rule\":\"maxLength\",\"value\":200,\"fieldType\":\"text\"},{\"field\":\"sortOrder\",\"rule\":\"required\",\"fieldType\":\"integer\"}],\"schema\":{\"tableName\":\"profile_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID NOT NULL,\\n \\\"platform\\\" TEXT NOT NULL DEFAULT 'website',\\n \\\"url\\\" TEXT NOT NULL,\\n \\\"label\\\" TEXT,\\n \\\"sort_order\\\" INTEGER NOT NULL DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"platform\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"website\"},\"url\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"sort_order\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0}},\"indexes\":[{\"name\":\"profile_links_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_links_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_links_profile_id_idx\",\"columns\":[\"profile_id\"]}],\"version\":\"847fd648\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileMetadata\":{\"name\":\"profilemetadata\",\"className\":\"ProfileMetadata\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileMetadata\",\"collection\":\"profilemetadatas\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileMetadata.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"profileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"metafieldId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileMetafield\",\"_meta\":{\"required\":true}},\"value\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}}},\"methods\":{\"validate\":{\"name\":\"validate\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getMetafieldSlug\":{\"name\":\"getMetafieldSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileMetadata\",\"collectionExportName\":\"ProfileMetadataCollection\",\"validationRules\":[{\"field\":\"profileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"metafieldId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"value\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profile_metadata\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_metadata\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"profile_id\\\" UUID,\\n \\\"metafield_id\\\" UUID,\\n \\\"value\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"metafield_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_metafields\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"value\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"profile_metadata_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_metadata_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_metadata_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_metadata_profile_id_idx\",\"columns\":[\"profile_id\"]},{\"name\":\"profile_metadata_metafield_id_idx\",\"columns\":[\"metafield_id\"]}],\"version\":\"d3ab1b70\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileMetafield\":{\"name\":\"profilemetafield\",\"className\":\"ProfileMetafield\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileMetafield\",\"collection\":\"profilemetafields\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileMetafield.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false},\"validation\":{\"type\":\"json\",\"required\":false}},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"_slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileMetafield | null>\",\"isStatic\":true,\"isPublic\":true},\"registerValidator\":{\"name\":\"registerValidator\",\"async\":false,\"parameters\":[{\"name\":\"name\",\"type\":\"string\",\"optional\":false},{\"name\":\"validator\",\"type\":\"ValidatorFunction\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":true,\"isPublic\":true},\"getValidator\":{\"name\":\"getValidator\",\"async\":false,\"parameters\":[{\"name\":\"name\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"ValidatorFunction | undefined\",\"isStatic\":true,\"isPublic\":true},\"validateValue\":{\"name\":\"validateValue\",\"async\":true,\"parameters\":[{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileMetafield\",\"collectionExportName\":\"ProfileMetafieldCollection\",\"validationRules\":[{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profile_metafields\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_metafields\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"validation\\\" JSON\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"validation\":{\"type\":\"JSON\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_metafields_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_metafields_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_metafields_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"afe420df\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationship\":{\"name\":\"profilerelationship\",\"className\":\"ProfileRelationship\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationship\",\"collection\":\"profilerelationships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationship.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"fromProfileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"toProfileId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Profile\",\"_meta\":{\"required\":true}},\"typeId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileRelationshipType\",\"_meta\":{\"required\":true}},\"contextProfileId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Profile\"},\"terms\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationshipTerm\"}},\"methods\":{\"getTypeSlug\":{\"name\":\"getTypeSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"addTerm\":{\"name\":\"addTerm\",\"async\":true,\"parameters\":[{\"name\":\"startedAt\",\"type\":\"Date\",\"optional\":false},{\"name\":\"endedAt\",\"type\":\"Date\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"endCurrentTerm\":{\"name\":\"endCurrentTerm\",\"async\":true,\"parameters\":[{\"name\":\"endedAt\",\"type\":\"Date\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getTerms\":{\"name\":\"getTerms\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileRelationshipTerm[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveTerm\":{\"name\":\"getActiveTerm\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileRelationshipTerm | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileRelationship\",\"collectionExportName\":\"ProfileRelationshipCollection\",\"validationRules\":[{\"field\":\"fromProfileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"toProfileId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"typeId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"profile_relationships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationships\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"from_profile_id\\\" UUID,\\n \\\"to_profile_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"context_profile_id\\\" UUID\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"from_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"to_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_relationship_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"context_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profiles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"profile_relationships_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_relationships_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationships_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profile_relationships_from_profile_id_idx\",\"columns\":[\"from_profile_id\"]},{\"name\":\"profile_relationships_to_profile_id_idx\",\"columns\":[\"to_profile_id\"]},{\"name\":\"profile_relationships_type_id_idx\",\"columns\":[\"type_id\"]},{\"name\":\"profile_relationships_context_profile_id_idx\",\"columns\":[\"context_profile_id\"]}],\"version\":\"48878dba\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationshipTerm\":{\"name\":\"profilerelationshipterm\",\"className\":\"ProfileRelationshipTerm\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationshipTerm\",\"collection\":\"profilerelationshipterms\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationshipTerm.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"relationshipId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileRelationship\",\"_meta\":{\"required\":true}},\"startedAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true}},\"endedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"end\":{\"name\":\"end\",\"async\":true,\"parameters\":[{\"name\":\"endedAt\",\"type\":\"Date\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getDurationDays\":{\"name\":\"getDurationDays\",\"async\":false,\"parameters\":[],\"returnType\":\"number\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileRelationshipTerm\",\"collectionExportName\":\"ProfileRelationshipTermCollection\",\"validationRules\":[{\"field\":\"relationshipId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"startedAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"profile_relationship_terms\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationship_terms\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"relationship_id\\\" UUID,\\n \\\"started_at\\\" TIMESTAMP,\\n \\\"ended_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"relationship_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_relationships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"ended_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_relationship_terms_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"profile_relationship_terms_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationship_terms_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"profile_relationship_terms_relationship_id_idx\",\"columns\":[\"relationship_id\"]}],\"version\":\"ef299102\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileRelationshipType\":{\"name\":\"profilerelationshiptype\",\"className\":\"ProfileRelationshipType\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileRelationshipType\",\"collection\":\"profilerelationshiptypes\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationshipType.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"reciprocal\":{\"type\":\"boolean\",\"required\":false,\"default\":true}},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"_slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileRelationshipType | null>\",\"isStatic\":true,\"isPublic\":true},\"registerReciprocalHandler\":{\"name\":\"registerReciprocalHandler\",\"async\":false,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"handler\",\"type\":\"ReciprocalHandler\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":true,\"isPublic\":true},\"getReciprocalHandler\":{\"name\":\"getReciprocalHandler\",\"async\":false,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"ReciprocalHandler | undefined\",\"isStatic\":true,\"isPublic\":true},\"isReciprocal\":{\"name\":\"isReciprocal\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileRelationshipType\",\"collectionExportName\":\"ProfileRelationshipTypeCollection\",\"validationRules\":[{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profile_relationship_types\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_relationship_types\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"reciprocal\\\" BOOLEAN DEFAULT TRUE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"reciprocal\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"profile_relationship_types_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"profile_relationship_types_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_relationship_types_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"719fe0d9\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:ProfileType\":{\"name\":\"profiletype\",\"className\":\"ProfileType\",\"qualifiedName\":\"@happyvertical/smrt-profiles:ProfileType\",\"collection\":\"profiletypes\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileType.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false}},\"methods\":{\"getBySlug\":{\"name\":\"getBySlug\",\"async\":true,\"parameters\":[{\"name\":\"_slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProfileType | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ProfileType\",\"collectionExportName\":\"ProfileTypeCollection\",\"validationRules\":[{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profile_types\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profile_types\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false}},\"indexes\":[{\"name\":\"profile_types_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profile_types_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profile_types_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"0fb37aeb\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:Person\":{\"name\":\"person\",\"className\":\"Person\",\"qualifiedName\":\"@happyvertical/smrt-profiles:Person\",\"collection\":\"profiles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true}}},\"typeId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileType\",\"_meta\":{\"required\":true}},\"email\":{\"type\":\"text\",\"required\":false},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true,\"readonly\":true},\"readonly\":true},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false},\"isPublic\":{\"type\":\"boolean\",\"required\":false,\"default\":false,\"_meta\":{\"default\":false}},\"metadata\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileMetadata\"},\"relationshipsFrom\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"fromProfileId\"}},\"relationshipsTo\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"toProfileId\"}}},\"methods\":{\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getTypeSlug\":{\"name\":\"getTypeSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"setTypeBySlug\":{\"name\":\"setTypeBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addMetadata\":{\"name\":\"addMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Record<string, string>>\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metadata\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeMetadata\":{\"name\":\"removeMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getLinks\":{\"name\":\"getLinks\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"links\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addRelationship\":{\"name\":\"addRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"contextProfile\",\"type\":\"Profile\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRelationships\":{\"name\":\"getRelationships\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"'from' | 'to' | 'all'\"]}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelatedProfiles\":{\"name\":\"getRelatedProfiles\",\"async\":true,\"parameters\":[{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"removeRelationship\":{\"name\":\"removeRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"generateBio\":{\"name\":\"generateBio\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"matches\":{\"name\":\"matches\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByMetadata\":{\"name\":\"findByMetadata\",\"async\":true,\"parameters\":[{\"name\":\"_metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"_value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findByType\":{\"name\":\"findByType\",\"async\":true,\"parameters\":[{\"name\":\"_typeSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findRelated\":{\"name\":\"findRelated\",\"async\":true,\"parameters\":[{\"name\":\"_profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"_relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"searchByEmail\":{\"name\":\"searchByEmail\",\"async\":true,\"parameters\":[{\"name\":\"_email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":true,\"isPublic\":true},\"getApiKeys\":{\"name\":\"getApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveApiKeys\":{\"name\":\"getActiveApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"generateApiKey\":{\"name\":\"generateApiKey\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":false,\"isPublic\":true},\"getOidcIdentities\":{\"name\":\"getOidcIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkOidcIdentity\":{\"name\":\"linkOidcIdentity\",\"async\":true,\"parameters\":[{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getNostrIdentities\":{\"name\":\"getNostrIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<NostrIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkNostrIdentity\":{\"name\":\"linkNostrIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getAuditLogs\":{\"name\":\"getAuditLogs\",\"async\":true,\"parameters\":[{\"name\":\"limit\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"recordAction\":{\"name\":\"recordAction\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"'web' | 'cli' | 'ci' | 'webhook' | 'mcp'\",\"Record<string, unknown>\",\"Profile | null\"]}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"tableName\":\"profiles\"},\"extends\":\"Profile\",\"exportName\":\"Person\",\"collectionExportName\":\"PersonCollection\",\"validationRules\":[{\"field\":\"typeId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profiles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profiles\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"email\\\" TEXT,\\n \\\"email_key\\\" TEXT,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"is_public\\\" BOOLEAN DEFAULT FALSE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email\":{\"type\":\"TEXT\",\"notNull\":false},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"is_public\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false}},\"indexes\":[{\"name\":\"profiles_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profiles_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profiles_email_key_idx\",\"columns\":[\"email_key\"]},{\"name\":\"profiles_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profiles_type_id_idx\",\"columns\":[\"type_id\"]}],\"version\":\"2043b736\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:Organization\":{\"name\":\"organization\",\"className\":\"Organization\",\"qualifiedName\":\"@happyvertical/smrt-profiles:Organization\",\"collection\":\"profiles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true}}},\"typeId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileType\",\"_meta\":{\"required\":true}},\"email\":{\"type\":\"text\",\"required\":false},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true,\"readonly\":true},\"readonly\":true},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false},\"isPublic\":{\"type\":\"boolean\",\"required\":false,\"default\":false,\"_meta\":{\"default\":false}},\"metadata\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileMetadata\"},\"relationshipsFrom\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"fromProfileId\"}},\"relationshipsTo\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"toProfileId\"}}},\"methods\":{\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getTypeSlug\":{\"name\":\"getTypeSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"setTypeBySlug\":{\"name\":\"setTypeBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addMetadata\":{\"name\":\"addMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Record<string, string>>\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metadata\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeMetadata\":{\"name\":\"removeMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getLinks\":{\"name\":\"getLinks\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"links\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addRelationship\":{\"name\":\"addRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"contextProfile\",\"type\":\"Profile\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRelationships\":{\"name\":\"getRelationships\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"'from' | 'to' | 'all'\"]}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelatedProfiles\":{\"name\":\"getRelatedProfiles\",\"async\":true,\"parameters\":[{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"removeRelationship\":{\"name\":\"removeRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"generateBio\":{\"name\":\"generateBio\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"matches\":{\"name\":\"matches\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByMetadata\":{\"name\":\"findByMetadata\",\"async\":true,\"parameters\":[{\"name\":\"_metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"_value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findByType\":{\"name\":\"findByType\",\"async\":true,\"parameters\":[{\"name\":\"_typeSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findRelated\":{\"name\":\"findRelated\",\"async\":true,\"parameters\":[{\"name\":\"_profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"_relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"searchByEmail\":{\"name\":\"searchByEmail\",\"async\":true,\"parameters\":[{\"name\":\"_email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":true,\"isPublic\":true},\"getApiKeys\":{\"name\":\"getApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveApiKeys\":{\"name\":\"getActiveApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"generateApiKey\":{\"name\":\"generateApiKey\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":false,\"isPublic\":true},\"getOidcIdentities\":{\"name\":\"getOidcIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkOidcIdentity\":{\"name\":\"linkOidcIdentity\",\"async\":true,\"parameters\":[{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getNostrIdentities\":{\"name\":\"getNostrIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<NostrIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkNostrIdentity\":{\"name\":\"linkNostrIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getAuditLogs\":{\"name\":\"getAuditLogs\",\"async\":true,\"parameters\":[{\"name\":\"limit\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"recordAction\":{\"name\":\"recordAction\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"'web' | 'cli' | 'ci' | 'webhook' | 'mcp'\",\"Record<string, unknown>\",\"Profile | null\"]}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"tableName\":\"profiles\"},\"extends\":\"Profile\",\"exportName\":\"Organization\",\"collectionExportName\":\"OrganizationCollection\",\"validationRules\":[{\"field\":\"typeId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profiles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profiles\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"email\\\" TEXT,\\n \\\"email_key\\\" TEXT,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"is_public\\\" BOOLEAN DEFAULT FALSE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email\":{\"type\":\"TEXT\",\"notNull\":false},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"is_public\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false}},\"indexes\":[{\"name\":\"profiles_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profiles_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profiles_email_key_idx\",\"columns\":[\"email_key\"]},{\"name\":\"profiles_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profiles_type_id_idx\",\"columns\":[\"type_id\"]}],\"version\":\"573ebccc\"},\"importPath\":\"@happyvertical/smrt-profiles\"},\"@happyvertical/smrt-profiles:Bot\":{\"name\":\"bot\",\"className\":\"Bot\",\"qualifiedName\":\"@happyvertical/smrt-profiles:Bot\",\"collection\":\"profiles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts\",\"packageName\":\"@happyvertical/smrt-profiles\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true}}},\"typeId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProfileType\",\"_meta\":{\"required\":true}},\"email\":{\"type\":\"text\",\"required\":false},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true,\"readonly\":true},\"readonly\":true},\"name\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"description\":{\"type\":\"text\",\"required\":false},\"isPublic\":{\"type\":\"boolean\",\"required\":false,\"default\":false,\"_meta\":{\"default\":false}},\"metadata\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileMetadata\"},\"relationshipsFrom\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"fromProfileId\"}},\"relationshipsTo\":{\"type\":\"oneToMany\",\"required\":false,\"related\":\"ProfileRelationship\",\"_meta\":{\"foreignKey\":\"toProfileId\"}}},\"methods\":{\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getTypeSlug\":{\"name\":\"getTypeSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"setTypeBySlug\":{\"name\":\"setTypeBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addMetadata\":{\"name\":\"addMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Record<string, string>>\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metadata\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeMetadata\":{\"name\":\"removeMetadata\",\"async\":true,\"parameters\":[{\"name\":\"metafieldSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getLinks\":{\"name\":\"getLinks\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"links\",\"type\":\"any\",\"optional\":false,\"typeUnresolved\":true}],\"returnType\":\"Promise<ProfileLink[]>\",\"isStatic\":false,\"isPublic\":true},\"getAssets\":{\"name\":\"getAssets\",\"async\":true,\"parameters\":[{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Asset[]>\",\"isStatic\":false,\"isPublic\":true},\"addAsset\":{\"name\":\"addAsset\",\"async\":true,\"parameters\":[{\"name\":\"asset\",\"type\":\"Asset\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"any\",\"optional\":true,\"default\":\"attachment\"},{\"name\":\"sortOrder\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeAsset\":{\"name\":\"removeAsset\",\"async\":true,\"parameters\":[{\"name\":\"assetId\",\"type\":\"string\",\"optional\":false},{\"name\":\"relationship\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addRelationship\":{\"name\":\"addRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"contextProfile\",\"type\":\"Profile\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRelationships\":{\"name\":\"getRelationships\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"'from' | 'to' | 'all'\"]}],\"returnType\":\"Promise<ProfileRelationship[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelatedProfiles\":{\"name\":\"getRelatedProfiles\",\"async\":true,\"parameters\":[{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":false,\"isPublic\":true},\"removeRelationship\":{\"name\":\"removeRelationship\",\"async\":true,\"parameters\":[{\"name\":\"toProfile\",\"type\":\"Profile\",\"optional\":false},{\"name\":\"relationshipSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"generateBio\":{\"name\":\"generateBio\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"matches\":{\"name\":\"matches\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByMetadata\":{\"name\":\"findByMetadata\",\"async\":true,\"parameters\":[{\"name\":\"_metafieldSlug\",\"type\":\"string\",\"optional\":false},{\"name\":\"_value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findByType\":{\"name\":\"findByType\",\"async\":true,\"parameters\":[{\"name\":\"_typeSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"findRelated\":{\"name\":\"findRelated\",\"async\":true,\"parameters\":[{\"name\":\"_profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"_relationshipSlug\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Profile[]>\",\"isStatic\":true,\"isPublic\":true},\"searchByEmail\":{\"name\":\"searchByEmail\",\"async\":true,\"parameters\":[{\"name\":\"_email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Profile | null>\",\"isStatic\":true,\"isPublic\":true},\"getApiKeys\":{\"name\":\"getApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"getActiveApiKeys\":{\"name\":\"getActiveApiKeys\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ApiKey[]>\",\"isStatic\":false,\"isPublic\":true},\"generateApiKey\":{\"name\":\"generateApiKey\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"string[]\",\"Date | null\"]}],\"returnType\":\"Promise<GenerateKeyResult>\",\"isStatic\":false,\"isPublic\":true},\"getOidcIdentities\":{\"name\":\"getOidcIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<OidcIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkOidcIdentity\":{\"name\":\"linkOidcIdentity\",\"async\":true,\"parameters\":[{\"name\":\"oidcData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<OidcIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getNostrIdentities\":{\"name\":\"getNostrIdentities\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<NostrIdentity[]>\",\"isStatic\":false,\"isPublic\":true},\"linkNostrIdentity\":{\"name\":\"linkNostrIdentity\",\"async\":true,\"parameters\":[{\"name\":\"nostrData\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<NostrIdentity>\",\"isStatic\":false,\"isPublic\":true},\"getAuditLogs\":{\"name\":\"getAuditLogs\",\"async\":true,\"parameters\":[{\"name\":\"limit\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<AuditLog[]>\",\"isStatic\":false,\"isPublic\":true},\"recordAction\":{\"name\":\"recordAction\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"string\",\"'web' | 'cli' | 'ci' | 'webhook' | 'mcp'\",\"Record<string, unknown>\",\"Profile | null\"]}],\"returnType\":\"Promise<AuditLog>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"tableName\":\"profiles\"},\"extends\":\"Profile\",\"exportName\":\"Bot\",\"collectionExportName\":\"BotCollection\",\"validationRules\":[{\"field\":\"typeId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"name\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"profiles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"profiles\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"type_id\\\" UUID,\\n \\\"email\\\" TEXT,\\n \\\"email_key\\\" TEXT,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT,\\n \\\"is_public\\\" BOOLEAN DEFAULT FALSE\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"type_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"profile_types\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"email\":{\"type\":\"TEXT\",\"notNull\":false},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false},\"is_public\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false}},\"indexes\":[{\"name\":\"profiles_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"profiles_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"profiles_email_key_idx\",\"columns\":[\"email_key\"]},{\"name\":\"profiles_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"profiles_type_id_idx\",\"columns\":[\"type_id\"]}],\"version\":\"2a1c7716\"},\"importPath\":\"@happyvertical/smrt-profiles\"}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-assets\",\"@happyvertical/smrt-core\",\"@happyvertical/smrt-prompts\",\"@happyvertical/smrt-tenancy\"]}"));
|
|
22
|
+
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-profiles","packageVersion":"0.54.4","objects":{"@happyvertical/smrt-profiles:ApiKeyCollection":{"name":"apikeycollection","className":"ApiKeyCollection","qualifiedName":"@happyvertical/smrt-profiles:ApiKeyCollection","collection":"apikeys","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ApiKeyCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findActiveByProfile":{"name":"findActiveByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findByHash":{"name":"findByHash","async":true,"parameters":[{"name":"keyHash","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"key","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"generateForProfile":{"name":"generateForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"revokeAllForProfile":{"name":"revokeAllForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeByPrefix":{"name":"revokeByPrefix","async":true,"parameters":[{"name":"keyPrefix","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"api_keys"},"extends":"SmrtCollection","extendsTypeArg":"ApiKey","exportName":"ApiKeyCollection","collectionExportName":"ApiKeyCollectionCollection","schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLogCollection":{"name":"auditlogcollection","className":"AuditLogCollection","qualifiedName":"@happyvertical/smrt-profiles:AuditLogCollection","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/AuditLogCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByResource":{"name":"findByResource","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByAction":{"name":"findByAction","async":true,"parameters":[{"name":"action","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findBySource":{"name":"findBySource","async":true,"parameters":[{"name":"source","type":"AuditSource","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findOnBehalfOf":{"name":"findOnBehalfOf","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Profile","string","AuditSource","Record<string, unknown>","Profile | null","Record<string, AuditChange>"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true},"getRecentActivity":{"name":"getRecentActivity","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"getResourceTimeline":{"name":"getResourceTimeline","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"AuditLog","exportName":"AuditLogCollection","collectionExportName":"AuditLogCollectionCollection","schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkTokenCollection":{"name":"magiclinktokencollection","className":"MagicLinkTokenCollection","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkTokenCollection","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/MagicLinkTokenCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByTokenHash":{"name":"findByTokenHash","async":true,"parameters":[{"name":"tokenHash","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"findActiveForEmail":{"name":"findActiveForEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"findByIdentity":{"name":"findByIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"countRecentByEmail":{"name":"countRecentByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"countRecentByIp":{"name":"countRecentByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeForIdentity":{"name":"revokeForIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"isRateLimitedByEmail":{"name":"isRateLimitedByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"isRateLimitedByIp":{"name":"isRateLimitedByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens"},"extends":"SmrtCollection","extendsTypeArg":"MagicLinkToken","exportName":"MagicLinkTokenCollection","collectionExportName":"MagicLinkTokenCollectionCollection","schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentityCollection":{"name":"nostridentitycollection","className":"NostrIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentityCollection","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/NostrIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"createForProfile":{"name":"createForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"email","type":"string","optional":false},{"name":"masterSecret","type":"string","optional":false},{"name":"nip05Username","type":"string","optional":true}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getNip05Response":{"name":"getNip05Response","async":true,"parameters":[{"name":"username","type":"string","optional":true}],"returnType":"Promise<Nip05Response>","isStatic":false,"isPublic":true},"isNip05Available":{"name":"isNip05Available","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"updateNip05Username":{"name":"updateNip05Username","async":true,"parameters":[{"name":"identity","type":"NostrIdentity","optional":false},{"name":"newUsername","type":"string","optional":false}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities"},"extends":"SmrtCollection","extendsTypeArg":"NostrIdentity","exportName":"NostrIdentityCollection","collectionExportName":"NostrIdentityCollectionCollection","schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentityCollection":{"name":"oidcidentitycollection","className":"OidcIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentityCollection","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<OidcIdentity | null>","isStatic":false,"isPublic":true},"findByProvider":{"name":"findByProvider","async":true,"parameters":[{"name":"provider","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities"},"extends":"SmrtCollection","extendsTypeArg":"OidcIdentity","exportName":"OidcIdentityCollection","collectionExportName":"OidcIdentityCollectionCollection","schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection":{"name":"oidcprofileemailreservationcollection","className":"OidcProfileEmailReservationCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection","collection":"oidcprofileemailreservations","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcProfileEmailReservationCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"OidcProfileEmailReservation","exportName":"OidcProfileEmailReservationCollection","collectionExportName":"OidcProfileEmailReservationCollectionCollection","schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileAssetCollection":{"name":"profileassetcollection","className":"ProfileAssetCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileAssetCollection","collection":"profileassets","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileAssetCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"profile_assets"},"extends":"SmrtJunction","extendsTypeArg":"ProfileAsset","exportName":"ProfileAssetCollection","collectionExportName":"ProfileAssetCollectionCollection","schema":{"tableName":"profile_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_assets_profile_id_asset_id_idx","columns":["profile_id","asset_id","relationship"],"unique":true},{"name":"profile_assets_slug_context_idx","columns":["slug","context"]},{"name":"profile_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_assets_asset_id_idx","columns":["asset_id"]}],"version":"d0d7c2a2"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileCollection":{"name":"profilecollection","className":"ProfileCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileCollection","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findUniqueGlobalPersonByEmail":{"name":"findUniqueGlobalPersonByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"requireCanonicalGlobalPerson":{"name":"requireCanonicalGlobalPerson","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"reserveCanonicalIdentityEmail":{"name":"reserveCanonicalIdentityEmail","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"batchGetMetadata":{"name":"batchGetMetadata","async":true,"parameters":[{"name":"profileIds","type":"string[]","optional":false}],"returnType":"Promise<Map<string, Record<string, string>>>","isStatic":false,"isPublic":true},"batchUpdateMetadata":{"name":"batchUpdateMetadata","async":true,"parameters":[{"name":"updates","type":"Array<object>","optional":false,"memberTypes":["string","Record<string, unknown>"]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationshipNetwork":{"name":"getRelationshipNetwork","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["number"]}],"returnType":"Promise<Map<string, number>>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Profile","exportName":"ProfileCollection","collectionExportName":"ProfileCollectionCollection","schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"f4a7b632"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileLinkCollection":{"name":"profilelinkcollection","className":"ProfileLinkCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileLinkCollection","collection":"profilelinks","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileLinkCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"listForProfile":{"name":"listForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"replaceForProfile":{"name":"replaceForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"reorder":{"name":"reorder","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"linkIds","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"profile_links","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ProfileLink","exportName":"ProfileLinkCollection","collectionExportName":"ProfileLinkCollectionCollection","schema":{"tableName":"profile_links","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_links\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"platform\\" TEXT NOT NULL DEFAULT 'website',\\n \\"url\\" TEXT NOT NULL,\\n \\"label\\" TEXT,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"platform":{"type":"TEXT","notNull":true,"unique":false,"default":"website"},"url":{"type":"TEXT","notNull":true,"unique":false},"label":{"type":"TEXT","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_links_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"profile_links_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_links_profile_id_idx","columns":["profile_id"]}],"version":"847fd648"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetadataCollection":{"name":"profilemetadatacollection","className":"ProfileMetadataCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetadataCollection","collection":"profilemetadatas","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetadataCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByProfile":{"name":"getByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileMetadata[]>","isStatic":false,"isPublic":true},"getMetadataObject":{"name":"getMetadataObject","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"findProfilesByMetadata":{"name":"findProfilesByMetadata","async":true,"parameters":[{"name":"metafieldId","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<string[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetadata","exportName":"ProfileMetadataCollection","collectionExportName":"ProfileMetadataCollectionCollection","schema":{"tableName":"profile_metadata","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metadata\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"metafield_id\\" UUID,\\n \\"value\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"metafield_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_metafields","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"value":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"profile_metadata_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metadata_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metadata_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_metadata_profile_id_idx","columns":["profile_id"]},{"name":"profile_metadata_metafield_id_idx","columns":["metafield_id"]}],"version":"d3ab1b70"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetafieldCollection":{"name":"profilemetafieldcollection","className":"ProfileMetafieldCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetafieldCollection","collection":"profilemetafields","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetafieldCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileMetafield | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","ValidationSchema"]}],"returnType":"Promise<ProfileMetafield>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetafield","exportName":"ProfileMetafieldCollection","collectionExportName":"ProfileMetafieldCollectionCollection","schema":{"tableName":"profile_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"validation\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"validation":{"type":"JSON","notNull":false}},"indexes":[{"name":"profile_metafields_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metafields_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"afe420df"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipCollection":{"name":"profilerelationshipcollection","className":"ProfileRelationshipCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipCollection","collection":"profilerelationships","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getFromProfile":{"name":"getFromProfile","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getToProfile":{"name":"getToProfile","async":true,"parameters":[{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getForProfile":{"name":"getForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"exists":{"name":"exists","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationship","exportName":"ProfileRelationshipCollection","collectionExportName":"ProfileRelationshipCollectionCollection","schema":{"tableName":"profile_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"from_profile_id\\" UUID,\\n \\"to_profile_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"context_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"from_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"to_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationship_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"context_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"profile_relationships_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_relationships_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_relationships_from_profile_id_idx","columns":["from_profile_id"]},{"name":"profile_relationships_to_profile_id_idx","columns":["to_profile_id"]},{"name":"profile_relationships_type_id_idx","columns":["type_id"]},{"name":"profile_relationships_context_profile_id_idx","columns":["context_profile_id"]}],"version":"48878dba"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection":{"name":"profilerelationshiptermcollection","className":"ProfileRelationshipTermCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection","collection":"profilerelationshipterms","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTermCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByRelationship":{"name":"getByRelationship","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true},"getActiveTerm":{"name":"getActiveTerm","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm | null>","isStatic":false,"isPublic":true},"getHistoricalTerms":{"name":"getHistoricalTerms","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipTerm","exportName":"ProfileRelationshipTermCollection","collectionExportName":"ProfileRelationshipTermCollectionCollection","schema":{"tableName":"profile_relationship_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"relationship_id\\" UUID,\\n \\"started_at\\" TIMESTAMP,\\n \\"ended_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"relationship_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationships","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"started_at":{"type":"TIMESTAMP","notNull":false},"ended_at":{"type":"TIMESTAMP","notNull":false}},"indexes":[{"name":"profile_relationship_terms_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_terms_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_terms_created_at_idx","columns":["created_at"]},{"name":"profile_relationship_terms_relationship_id_idx","columns":["relationship_id"]}],"version":"ef299102"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection":{"name":"profilerelationshiptypecollection","className":"ProfileRelationshipTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection","collection":"profilerelationshiptypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipType | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","boolean"]}],"returnType":"Promise<ProfileRelationshipType>","isStatic":false,"isPublic":true},"getReciprocal":{"name":"getReciprocal","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true},"getDirectional":{"name":"getDirectional","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipType","exportName":"ProfileRelationshipTypeCollection","collectionExportName":"ProfileRelationshipTypeCollectionCollection","schema":{"tableName":"profile_relationship_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT DEFAULT '',\\n \\"reciprocal\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false,"default":""},"reciprocal":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"profile_relationship_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_types_created_at_idx","columns":["created_at"]}],"version":"719fe0d9"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileTypeCollection":{"name":"profiletypecollection","className":"ProfileTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileTypeCollection","collection":"profiletypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileType | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<ProfileType>","isStatic":false,"isPublic":true},"getOrCreateGlobalBySlug":{"name":"getOrCreateGlobalBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<ProfileType>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileType","exportName":"ProfileTypeCollection","collectionExportName":"ProfileTypeCollectionCollection","schema":{"tableName":"profile_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"profile_types_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_types_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fb37aeb"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ApiKey":{"name":"apikey","className":"ApiKey","qualifiedName":"@happyvertical/smrt-profiles:ApiKey","collection":"apikeys","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ApiKey.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"keyHash":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"keyPrefix":{"type":"text","required":false,"default":""},"name":{"type":"text","required":false,"default":""},"scopes":{"type":"json","required":false,"default":[]},"lastUsedAt":{"type":"datetime","required":false},"expiresAt":{"type":"datetime","required":false},"revokedAt":{"type":"datetime","required":false}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"isValid":{"name":"isValid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"hasScope":{"name":"hasScope","async":false,"parameters":[{"name":"scope","type":"string","optional":false}],"returnType":"boolean","isStatic":false,"isPublic":true},"revoke":{"name":"revoke","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"hashKey":{"name":"hashKey","async":false,"parameters":[{"name":"key","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"generate":{"name":"generate","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":true,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"key","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<ApiKey | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableName":"api_keys","sensitive":true,"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get","create","revoke"],"skipApiCheck":true}},"extends":"SmrtObject","exportName":"ApiKey","collectionExportName":"ApiKeyCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLog":{"name":"auditlog","className":"AuditLog","qualifiedName":"@happyvertical/smrt-profiles:AuditLog","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/AuditLog.ts","packageName":"@happyvertical/smrt-profiles","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":true}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"action":{"type":"text","required":false,"default":""},"reason":{"type":"text","required":false,"default":""},"changes":{"type":"json","required":false,"default":{}},"resourceType":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"resourceId":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"occurredAt":{"type":"datetime","required":false,"default":"current_timestamp","_meta":{"indexed":true,"default":"current_timestamp"}},"source":{"type":"text","required":false,"default":"web"},"metadata":{"type":"json","required":false,"default":{}},"onBehalfOfId":{"type":"foreignKey","required":false,"related":"Profile","_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getOnBehalfOf":{"name":"getOnBehalfOf","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getEffectiveActor":{"name":"getEffectiveActor","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<AuditLog>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","sensitive":true,"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional","allowSuperAdminBypass":true},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"AuditLog","collectionExportName":"AuditLogCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkToken":{"name":"magiclinktoken","className":"MagicLinkToken","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkToken","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/MagicLinkToken.ts","packageName":"@happyvertical/smrt-profiles","fields":{"nostrIdentityId":{"type":"foreignKey","required":true,"related":"NostrIdentity","_meta":{"required":true}},"tokenHash":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"email":{"type":"text","required":false,"default":""},"expiresAt":{"type":"datetime","required":false},"usedAt":{"type":"datetime","required":false},"requestedFromIp":{"type":"text","required":false,"default":""},"createdAt":{"type":"datetime","required":false}},"methods":{"hashToken":{"name":"hashToken","async":false,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"generate":{"name":"generate","async":true,"parameters":[{"name":"nostrIdentity","type":"NostrIdentity","optional":false},{"name":"email","type":"string","optional":false},{"name":"options","type":"object","optional":true,"typeUnresolved":true,"memberTypes":["number","string"]}],"returnType":"Promise<GenerateTokenResult>","isStatic":true,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<MagicLinkToken | null>","isStatic":true,"isPublic":true},"isValid":{"name":"isValid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isUsed":{"name":"isUsed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markUsed":{"name":"markUsed","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getNostrIdentity":{"name":"getNostrIdentity","async":true,"parameters":[],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"getTimeRemainingSeconds":{"name":"getTimeRemainingSeconds","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens","sensitive":true,"api":{"exclude":["*"]},"mcp":{"exclude":["*"]},"cli":{"include":["list"]}},"extends":"SmrtObject","exportName":"MagicLinkToken","collectionExportName":"MagicLinkTokenCollection","validationRules":[{"field":"nostrIdentityId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentity":{"name":"nostridentity","className":"NostrIdentity","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentity","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/NostrIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"pubkey":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"encryptedPrivkey":{"type":"text","required":false,"default":""},"encryptionIv":{"type":"text","required":false,"default":""},"encryptionTag":{"type":"text","required":false,"default":""},"email":{"type":"text","required":false,"default":""},"nip05Username":{"type":"text","required":false,"default":""},"lastUsedAt":{"type":"datetime","required":false},"verifiedAt":{"type":"datetime","required":false}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"decryptPrivkey":{"name":"decryptPrivkey","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true},"getKeypair":{"name":"getKeypair","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"object","isStatic":false,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"markVerified":{"name":"markVerified","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"isVerified":{"name":"isVerified","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getNip05Identifier":{"name":"getNip05Identifier","async":false,"parameters":[{"name":"domain","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities","sensitive":true,"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"NostrIdentity","collectionExportName":"NostrIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentity":{"name":"oidcidentity","className":"OidcIdentity","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentity","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"provider":{"type":"text","required":false,"_meta":{}},"issuer":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"identityKey":{"type":"text","required":false,"_meta":{"nullable":true,"unique":true,"readonly":true},"readonly":true},"email":{"type":"text","required":false,"_meta":{}},"lastUsedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity | null>","isStatic":true,"isPublic":true},"buildIdentityKey":{"name":"buildIdentityKey","async":false,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"findOrCreate":{"name":"findOrCreate","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity>","isStatic":true,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"OidcIdentity","collectionExportName":"OidcIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservation":{"name":"oidcprofileemailreservation","className":"OidcProfileEmailReservation","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservation","collection":"oidcprofileemailreservations","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcProfileEmailReservation.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true,"unique":true}},"emailKey":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"readonly":true},"readonly":true}},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"OidcProfileEmailReservation","collectionExportName":"OidcProfileEmailReservationCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"emailKey","rule":"required","fieldType":"text"}],"schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Profile":{"name":"profile","className":"Profile","qualifiedName":"@happyvertical/smrt-profiles:Profile","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/Profile.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Profile","collectionExportName":"ProfileCollection","validationRules":[{"field":"typeId","rule":"required","fieldType":"foreignKey"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"f4a7b632"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileAsset":{"name":"profileasset","className":"ProfileAsset","qualifiedName":"@happyvertical/smrt-profiles:ProfileAsset","collection":"profileassets","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileAsset.ts","packageName":"@happyvertical/smrt-profiles","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true,"onDelete":"CASCADE"}},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset","_meta":{"onDelete":"CASCADE"}},"relationship":{"type":"text","required":true,"_meta":{"required":true}},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{},"decoratorConfig":{"tableName":"profile_assets","conflictColumns":["profile_id","asset_id","relationship"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"ProfileAsset","collectionExportName":"ProfileAssetCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"},{"field":"relationship","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"profile_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_assets_profile_id_asset_id_idx","columns":["profile_id","asset_id","relationship"],"unique":true},{"name":"profile_assets_slug_context_idx","columns":["slug","context"]},{"name":"profile_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_assets_asset_id_idx","columns":["asset_id"]}],"version":"d0d7c2a2"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileLink":{"name":"profilelink","className":"ProfileLink","qualifiedName":"@happyvertical/smrt-profiles:ProfileLink","collection":"profilelinks","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileLink.ts","packageName":"@happyvertical/smrt-profiles","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true,"onDelete":"CASCADE"}},"platform":{"type":"text","required":true,"default":"website","maxLength":32,"_meta":{"required":true,"maxLength":32}},"url":{"type":"text","required":true,"maxLength":2048,"_meta":{"required":true,"maxLength":2048}},"label":{"type":"text","required":false,"maxLength":200,"_meta":{"nullable":true,"maxLength":200}},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"getSlug":{"name":"getSlug","async":true,"parameters":[],"returnType":"Promise<string | null | undefined>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"...args","type":"any","optional":true,"typeUnresolved":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"profile_links","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"ProfileLink","collectionExportName":"ProfileLinkCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"platform","rule":"required","fieldType":"text"},{"field":"platform","rule":"maxLength","value":32,"fieldType":"text"},{"field":"url","rule":"required","fieldType":"text"},{"field":"url","rule":"maxLength","value":2048,"fieldType":"text"},{"field":"label","rule":"maxLength","value":200,"fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"profile_links","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_links\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"platform\\" TEXT NOT NULL DEFAULT 'website',\\n \\"url\\" TEXT NOT NULL,\\n \\"label\\" TEXT,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"platform":{"type":"TEXT","notNull":true,"unique":false,"default":"website"},"url":{"type":"TEXT","notNull":true,"unique":false},"label":{"type":"TEXT","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_links_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"profile_links_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_links_profile_id_idx","columns":["profile_id"]}],"version":"847fd648"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetadata":{"name":"profilemetadata","className":"ProfileMetadata","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetadata","collection":"profilemetadatas","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileMetadata.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"metafieldId":{"type":"foreignKey","required":true,"related":"ProfileMetafield","_meta":{"required":true}},"value":{"type":"text","required":true,"default":"","_meta":{"required":true}}},"methods":{"validate":{"name":"validate","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getMetafieldSlug":{"name":"getMetafieldSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ProfileMetadata","collectionExportName":"ProfileMetadataCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"metafieldId","rule":"required","fieldType":"foreignKey"},{"field":"value","rule":"required","fieldType":"text"}],"schema":{"tableName":"profile_metadata","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metadata\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"metafield_id\\" UUID,\\n \\"value\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"metafield_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_metafields","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"value":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"profile_metadata_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metadata_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metadata_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_metadata_profile_id_idx","columns":["profile_id"]},{"name":"profile_metadata_metafield_id_idx","columns":["metafield_id"]}],"version":"d3ab1b70"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetafield":{"name":"profilemetafield","className":"ProfileMetafield","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetafield","collection":"profilemetafields","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileMetafield.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"validation":{"type":"json","required":false}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<ProfileMetafield | null>","isStatic":true,"isPublic":true},"registerValidator":{"name":"registerValidator","async":false,"parameters":[{"name":"name","type":"string","optional":false},{"name":"validator","type":"ValidatorFunction","optional":false}],"returnType":"void","isStatic":true,"isPublic":true},"getValidator":{"name":"getValidator","async":false,"parameters":[{"name":"name","type":"string","optional":false}],"returnType":"ValidatorFunction | undefined","isStatic":true,"isPublic":true},"validateValue":{"name":"validateValue","async":true,"parameters":[{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ProfileMetafield","collectionExportName":"ProfileMetafieldCollection","validationRules":[{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profile_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"validation\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"validation":{"type":"JSON","notNull":false}},"indexes":[{"name":"profile_metafields_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metafields_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"afe420df"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationship":{"name":"profilerelationship","className":"ProfileRelationship","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationship","collection":"profilerelationships","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationship.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"fromProfileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"toProfileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileRelationshipType","_meta":{"required":true}},"contextProfileId":{"type":"foreignKey","required":false,"related":"Profile"},"terms":{"type":"oneToMany","required":false,"related":"ProfileRelationshipTerm"}},"methods":{"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"addTerm":{"name":"addTerm","async":true,"parameters":[{"name":"startedAt","type":"Date","optional":false},{"name":"endedAt","type":"Date","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"endCurrentTerm":{"name":"endCurrentTerm","async":true,"parameters":[{"name":"endedAt","type":"Date","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getTerms":{"name":"getTerms","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true},"getActiveTerm":{"name":"getActiveTerm","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipTerm | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ProfileRelationship","collectionExportName":"ProfileRelationshipCollection","validationRules":[{"field":"fromProfileId","rule":"required","fieldType":"foreignKey"},{"field":"toProfileId","rule":"required","fieldType":"foreignKey"},{"field":"typeId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"profile_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"from_profile_id\\" UUID,\\n \\"to_profile_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"context_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"from_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"to_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationship_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"context_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"profile_relationships_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_relationships_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_relationships_from_profile_id_idx","columns":["from_profile_id"]},{"name":"profile_relationships_to_profile_id_idx","columns":["to_profile_id"]},{"name":"profile_relationships_type_id_idx","columns":["type_id"]},{"name":"profile_relationships_context_profile_id_idx","columns":["context_profile_id"]}],"version":"48878dba"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTerm":{"name":"profilerelationshipterm","className":"ProfileRelationshipTerm","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTerm","collection":"profilerelationshipterms","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationshipTerm.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"relationshipId":{"type":"foreignKey","required":true,"related":"ProfileRelationship","_meta":{"required":true}},"startedAt":{"type":"datetime","required":true,"_meta":{"required":true}},"endedAt":{"type":"datetime","required":false}},"methods":{"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"end":{"name":"end","async":true,"parameters":[{"name":"endedAt","type":"Date","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getDurationDays":{"name":"getDurationDays","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"ProfileRelationshipTerm","collectionExportName":"ProfileRelationshipTermCollection","validationRules":[{"field":"relationshipId","rule":"required","fieldType":"foreignKey"},{"field":"startedAt","rule":"required","fieldType":"datetime"}],"schema":{"tableName":"profile_relationship_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"relationship_id\\" UUID,\\n \\"started_at\\" TIMESTAMP,\\n \\"ended_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"relationship_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationships","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"started_at":{"type":"TIMESTAMP","notNull":false},"ended_at":{"type":"TIMESTAMP","notNull":false}},"indexes":[{"name":"profile_relationship_terms_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_terms_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_terms_created_at_idx","columns":["created_at"]},{"name":"profile_relationship_terms_relationship_id_idx","columns":["relationship_id"]}],"version":"ef299102"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipType":{"name":"profilerelationshiptype","className":"ProfileRelationshipType","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipType","collection":"profilerelationshiptypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileRelationshipType.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"reciprocal":{"type":"boolean","required":false,"default":true}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipType | null>","isStatic":true,"isPublic":true},"registerReciprocalHandler":{"name":"registerReciprocalHandler","async":false,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"handler","type":"ReciprocalHandler","optional":false}],"returnType":"void","isStatic":true,"isPublic":true},"getReciprocalHandler":{"name":"getReciprocalHandler","async":false,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"ReciprocalHandler | undefined","isStatic":true,"isPublic":true},"isReciprocal":{"name":"isReciprocal","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true}},"extends":"SmrtObject","exportName":"ProfileRelationshipType","collectionExportName":"ProfileRelationshipTypeCollection","validationRules":[{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profile_relationship_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT DEFAULT '',\\n \\"reciprocal\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false,"default":""},"reciprocal":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"profile_relationship_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_types_created_at_idx","columns":["created_at"]}],"version":"719fe0d9"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileType":{"name":"profiletype","className":"ProfileType","qualifiedName":"@happyvertical/smrt-profiles:ProfileType","collection":"profiletypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileType.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false}},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"_slug","type":"string","optional":false}],"returnType":"Promise<ProfileType | null>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"ProfileType","collectionExportName":"ProfileTypeCollection","validationRules":[{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profile_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false}},"indexes":[{"name":"profile_types_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_types_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fb37aeb"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Person":{"name":"person","className":"Person","qualifiedName":"@happyvertical/smrt-profiles:Person","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Person","collectionExportName":"PersonCollection","validationRules":[{"field":"typeId","rule":"required","fieldType":"foreignKey"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"2043b736"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Organization":{"name":"organization","className":"Organization","qualifiedName":"@happyvertical/smrt-profiles:Organization","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Organization","collectionExportName":"OrganizationCollection","validationRules":[{"field":"typeId","rule":"required","fieldType":"foreignKey"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"573ebccc"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Bot":{"name":"bot","className":"Bot","qualifiedName":"@happyvertical/smrt-profiles:Bot","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Bot","collectionExportName":"BotCollection","validationRules":[{"field":"typeId","rule":"required","fieldType":"foreignKey"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"2a1c7716"},"importPath":"@happyvertical/smrt-profiles"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-core","@happyvertical/smrt-prompts","@happyvertical/smrt-tenancy"],"stampsConstructors":true}`));
|
|
23
23
|
//#endregion
|
|
24
24
|
//#region src/agent-profile.ts
|
|
25
25
|
var AGENT_PROFILE_CONTEXT = "smrt:agent";
|
|
@@ -60,15 +60,81 @@ async function resolveAgentProfileId(profiles, params) {
|
|
|
60
60
|
return id;
|
|
61
61
|
}
|
|
62
62
|
//#endregion
|
|
63
|
+
//#region src/audit-trail.ts
|
|
64
|
+
function createAuditWriter() {
|
|
65
|
+
return async (entry, db) => {
|
|
66
|
+
const log = new AuditLog({
|
|
67
|
+
db,
|
|
68
|
+
profileId: entry.actorId,
|
|
69
|
+
onBehalfOfId: entry.onBehalfOfId,
|
|
70
|
+
tenantId: entry.tenantId,
|
|
71
|
+
action: entry.action,
|
|
72
|
+
resourceType: entry.resourceType,
|
|
73
|
+
resourceId: entry.resourceId,
|
|
74
|
+
source: entry.source ?? "web",
|
|
75
|
+
reason: entry.reason ?? "",
|
|
76
|
+
changes: entry.changes
|
|
77
|
+
});
|
|
78
|
+
await log.initialize();
|
|
79
|
+
await log.save();
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
async function readAuditTrail(logs, authorize, filter = {}) {
|
|
83
|
+
if (typeof authorize !== "function") throw new Error("Audit reads require consumer authorization");
|
|
84
|
+
const limit = filter.limit ?? 100;
|
|
85
|
+
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1e3) throw new Error("Audit limit must be an integer from 1 to 1000");
|
|
86
|
+
for (const date of [filter.from, filter.to]) if (date !== void 0 && (!(date instanceof Date) || !Number.isFinite(date.getTime()))) throw new Error("Audit date filters must be valid Dates");
|
|
87
|
+
if (filter.from && filter.to && filter.from > filter.to) throw new Error("Audit date range is reversed");
|
|
88
|
+
const where = {};
|
|
89
|
+
for (const key of [
|
|
90
|
+
"profileId",
|
|
91
|
+
"resourceType",
|
|
92
|
+
"resourceId"
|
|
93
|
+
]) if (filter[key] !== void 0) where[key] = filter[key];
|
|
94
|
+
if (filter.from) where["occurredAt >="] = filter.from;
|
|
95
|
+
if (filter.to) where["occurredAt <="] = filter.to;
|
|
96
|
+
const candidates = await logs.list({
|
|
97
|
+
where,
|
|
98
|
+
orderBy: "occurredAt DESC",
|
|
99
|
+
limit
|
|
100
|
+
});
|
|
101
|
+
const visible = [];
|
|
102
|
+
for (const entry of candidates) try {
|
|
103
|
+
if (await authorize(entry) === true) visible.push(entry);
|
|
104
|
+
} catch {}
|
|
105
|
+
return visible;
|
|
106
|
+
}
|
|
107
|
+
async function pruneAuditTrail(logs, options) {
|
|
108
|
+
const now = options.now ?? /* @__PURE__ */ new Date();
|
|
109
|
+
const batchSize = options.batchSize ?? 500;
|
|
110
|
+
if (!Number.isFinite(options.maxAgeDays) || options.maxAgeDays <= 0 || !Number.isFinite(now.getTime()) || !Number.isSafeInteger(batchSize) || batchSize < 1 || batchSize > 1e3) throw new Error("Audit retention requires a positive age and a batch size from 1 to 1000");
|
|
111
|
+
const before = /* @__PURE__ */ new Date(now.getTime() - options.maxAgeDays * 864e5);
|
|
112
|
+
const rows = await logs.list({
|
|
113
|
+
where: { "occurredAt <": before },
|
|
114
|
+
orderBy: "occurredAt ASC",
|
|
115
|
+
limit: batchSize
|
|
116
|
+
});
|
|
117
|
+
let removed = 0;
|
|
118
|
+
for (const row of rows) if (row.id && await logs.delete(row.id)) removed += 1;
|
|
119
|
+
return removed;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
63
122
|
//#region src/models/MagicLinkToken.ts
|
|
64
123
|
var __defProp = Object.defineProperty;
|
|
65
124
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
125
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
configurable: true,
|
|
128
|
+
writable: true,
|
|
129
|
+
value
|
|
130
|
+
}) : obj[key] = value;
|
|
66
131
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
67
132
|
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
68
133
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
69
134
|
if (kind && result) __defProp(target, key, result);
|
|
70
135
|
return result;
|
|
71
136
|
};
|
|
137
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
72
138
|
var DEFAULT_EXPIRATION_MINUTES = 15;
|
|
73
139
|
var MagicLinkToken = class extends SmrtObject {
|
|
74
140
|
nostrIdentityId;
|
|
@@ -191,6 +257,7 @@ var MagicLinkToken = class extends SmrtObject {
|
|
|
191
257
|
return Math.max(0, Math.floor(diff / 1e3));
|
|
192
258
|
}
|
|
193
259
|
};
|
|
260
|
+
__publicField(MagicLinkToken, "__smrtPackage__", "@happyvertical/smrt-profiles");
|
|
194
261
|
__decorateClass([foreignKey("NostrIdentity", { required: true })], MagicLinkToken.prototype, "nostrIdentityId", 2);
|
|
195
262
|
__decorateClass([field({ indexed: true })], MagicLinkToken.prototype, "tokenHash", 2);
|
|
196
263
|
MagicLinkToken = __decorateClass([smrt({
|
|
@@ -325,11 +392,11 @@ function createMagicLinkService(config) {
|
|
|
325
392
|
let profile = null;
|
|
326
393
|
let created = false;
|
|
327
394
|
if (!nostrIdentity) {
|
|
328
|
-
const { Person } = await import("./chunks/oidcProvisioningPrimitives-
|
|
329
|
-
const { ProfileTypeCollection } = await import("./chunks/oidcProvisioningPrimitives-
|
|
395
|
+
const { Person } = await import("./chunks/oidcProvisioningPrimitives-CYood-2M.js").then((n) => n.o);
|
|
396
|
+
const { ProfileTypeCollection } = await import("./chunks/oidcProvisioningPrimitives-CYood-2M.js").then((n) => n.c);
|
|
330
397
|
let personType = await (await ProfileTypeCollection.create({ db })).getBySlug("person");
|
|
331
398
|
if (!personType) {
|
|
332
|
-
const { ProfileType } = await import("./chunks/ProfileCollection-
|
|
399
|
+
const { ProfileType } = await import("./chunks/ProfileCollection-Bt6IJK49.js").then((n) => n.h);
|
|
333
400
|
personType = new ProfileType({
|
|
334
401
|
db,
|
|
335
402
|
slug: "person",
|
|
@@ -349,7 +416,7 @@ function createMagicLinkService(config) {
|
|
|
349
416
|
await profile.save();
|
|
350
417
|
const keypair = generateNostrKeypair();
|
|
351
418
|
const encrypted = encryptPrivkey(keypair.privkey, masterSecret);
|
|
352
|
-
const { NostrIdentity: NostrIdentityClass } = await import("./chunks/NostrIdentity-
|
|
419
|
+
const { NostrIdentity: NostrIdentityClass } = await import("./chunks/NostrIdentity-AC8fAdxe.js").then((n) => n.n);
|
|
353
420
|
nostrIdentity = new NostrIdentityClass({
|
|
354
421
|
db,
|
|
355
422
|
profileId: profile.id,
|
|
@@ -482,6 +549,6 @@ function parseNip05Identifier(identifier) {
|
|
|
482
549
|
};
|
|
483
550
|
}
|
|
484
551
|
//#endregion
|
|
485
|
-
export { AGENT_PROFILE_CONTEXT, AGENT_PROFILE_TYPE_SLUG, AmbiguousOidcIdentityError, ApiKey, ApiKeyCollection, AuditLog, AuditLogCollection, Bot, CanonicalPersonProfileError, MagicLinkToken, MagicLinkTokenCollection, NostrIdentity, NostrIdentityCollection, OidcIdentity, OidcIdentityCollection, OidcProfileEmailReservation, OidcProfileEmailReservationCollection, Organization, PROFILE_EMAIL_KEY_BACKFILL_NAME, PROFILE_LINK_LIMIT, PROFILE_LINK_MAX_LABEL_LENGTH, PROFILE_LINK_MAX_URL_LENGTH, PROFILE_LINK_PLATFORMS, Person, Profile, ProfileAsset, ProfileAssetCollection, ProfileCollection, ProfileLink, ProfileLinkCollection, ProfileMetadata, ProfileMetadataCollection, ProfileMetafield, ProfileMetafieldCollection, ProfileRelationship, ProfileRelationshipCollection, ProfileRelationshipTerm, ProfileRelationshipTermCollection, ProfileRelationshipType, ProfileRelationshipTypeCollection, ProfileType, ProfileTypeCollection, backfillProfileEmailKeys, computeEventId, createAuthEvent, createMagicLinkService, createNip05Handler, createProfileFromNostr, createProfileFromOidc, decryptPrivkey, deriveEncryptionKey, encryptPrivkey, generateNostrKeypair, getPublicKey, isProfileLinkPlatform, isValidNip05Identifier, isValidPrivkey, isValidPubkey, normalizeIdentityEmail, normalizeProfileLinkUrl, npubToPubkey, nsecToPrivkey, parseNip05Identifier, privkeyToNsec, promptMessageOptions, pubkeyToNpub, resolveAgentProfile, resolveAgentProfileId, resolveIdentity, signEvent, smrtProfilesGenerateBioPrompt, verifyAuthEvent, verifyNostrSignature };
|
|
552
|
+
export { AGENT_PROFILE_CONTEXT, AGENT_PROFILE_TYPE_SLUG, AmbiguousOidcIdentityError, ApiKey, ApiKeyCollection, AuditLog, AuditLogCollection, Bot, CanonicalPersonProfileError, MagicLinkToken, MagicLinkTokenCollection, NostrIdentity, NostrIdentityCollection, OidcIdentity, OidcIdentityCollection, OidcProfileEmailReservation, OidcProfileEmailReservationCollection, Organization, PROFILE_EMAIL_KEY_BACKFILL_NAME, PROFILE_LINK_LIMIT, PROFILE_LINK_MAX_LABEL_LENGTH, PROFILE_LINK_MAX_URL_LENGTH, PROFILE_LINK_PLATFORMS, Person, Profile, ProfileAsset, ProfileAssetCollection, ProfileCollection, ProfileLink, ProfileLinkCollection, ProfileMetadata, ProfileMetadataCollection, ProfileMetafield, ProfileMetafieldCollection, ProfileRelationship, ProfileRelationshipCollection, ProfileRelationshipTerm, ProfileRelationshipTermCollection, ProfileRelationshipType, ProfileRelationshipTypeCollection, ProfileType, ProfileTypeCollection, backfillProfileEmailKeys, computeEventId, createAuditWriter, createAuthEvent, createMagicLinkService, createNip05Handler, createProfileFromNostr, createProfileFromOidc, decryptPrivkey, deriveEncryptionKey, encryptPrivkey, generateNostrKeypair, getPublicKey, isProfileLinkPlatform, isValidNip05Identifier, isValidPrivkey, isValidPubkey, normalizeIdentityEmail, normalizeProfileLinkUrl, npubToPubkey, nsecToPrivkey, parseNip05Identifier, privkeyToNsec, promptMessageOptions, pruneAuditTrail, pubkeyToNpub, readAuditTrail, resolveAgentProfile, resolveAgentProfileId, resolveIdentity, signEvent, smrtProfilesGenerateBioPrompt, verifyAuthEvent, verifyNostrSignature };
|
|
486
553
|
|
|
487
554
|
//# sourceMappingURL=index.js.map
|