@happyvertical/smrt-cli 0.54.1 → 0.54.2
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/dist/{AuditLogCollection-B1YonCAP-BDUrNGcS.js → AuditLogCollection-B1YonCAP-BPTsPePh.js} +1 -1
- package/dist/{OidcIdentity-Cb1bxreM-DfO_c0Yh.js → OidcIdentity-Cb1bxreM-DO8v8PPX.js} +2 -2
- package/dist/{OidcIdentityCollection-TV8VdK69-DzOkoWHQ.js → OidcIdentityCollection-TV8VdK69-CKJPi8VX.js} +1 -1
- package/dist/{ProfileAssetCollection-B9hacUJa-CX2PYc46.js → ProfileAssetCollection-B9hacUJa-60k6WDBo.js} +3 -3
- package/dist/{ProfileCollection-DuJT7Mum-BOIdjUTp.js → ProfileCollection-DuJT7Mum-DuFdSzQj.js} +16 -16
- package/dist/{ProfileLinkCollection-4uNURz32-Csdzv-Qv.js → ProfileLinkCollection-4uNURz32-DMtNzJcf.js} +2 -2
- package/dist/{ProfileMetadataCollection-DQhbfEfa-TpoZQSA0.js → ProfileMetadataCollection-DQhbfEfa-BKwTBhrv.js} +1 -1
- package/dist/{ProfileMetafieldCollection-CoBuM_5G-BIXiLNZ0.js → ProfileMetafieldCollection-CoBuM_5G-BMLo_Rie.js} +1 -1
- package/dist/{ProfileRelationshipCollection-DUVgaIqf-CXEhCV9T.js → ProfileRelationshipCollection-DUVgaIqf-c_BIh5H0.js} +1 -1
- package/dist/{commands-BD5X9cMG.js → commands-D-XOOzpO.js} +2 -2
- package/dist/{dist-WHmitm0L.js → dist-DWOviNjs.js} +4 -4
- package/dist/dist-DqXOUqT-.js +20 -0
- package/dist/{dist-MTTwaasL.js → dist-DxolxjaP.js} +2 -2
- package/dist/{dist-BtFwpdXy.js → dist-NvkfhAbI.js} +225 -147
- package/dist/{dist-DFLWw0iq.js → dist-RDQR2enZ.js} +3 -3
- package/dist/index.js +9 -9
- package/dist/{oidcProvisioningPrimitives-D9OYu5-F-BVIJD3mI.js → oidcProvisioningPrimitives-D9OYu5-F-jUSih8OU.js} +3 -3
- package/dist/{resolveIdentity-B-PK6RwU-CWEkXCVC.js → resolveIdentity-B-PK6RwU-Dp7_W7kZ.js} +14 -14
- package/package.json +10 -10
- package/dist/dist-mz-yUYw6.js +0 -20
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { i as tenantId, r as TenantScoped } from "./dist-
|
|
1
|
+
import { i as tenantId, r as TenantScoped } from "./dist-DxolxjaP.js";
|
|
2
2
|
import { n as __exportAll$1 } from "./NostrIdentity-n70E0vck-Di3_eNCq.js";
|
|
3
3
|
import "./ApiKey-BZmbOTnL-BbZupUZ3.js";
|
|
4
4
|
import "./ApiKeyCollection-Bfb_nw81-DYAZwx0O.js";
|
|
5
|
-
import "./AuditLogCollection-B1YonCAP-
|
|
5
|
+
import "./AuditLogCollection-B1YonCAP-BPTsPePh.js";
|
|
6
6
|
import "./NostrIdentityCollection-Ca74dkaL-DvjOg9Xy.js";
|
|
7
|
-
import "./OidcIdentity-Cb1bxreM-
|
|
8
|
-
import "./OidcIdentityCollection-TV8VdK69-
|
|
9
|
-
import "./ProfileAssetCollection-B9hacUJa-
|
|
10
|
-
import { u as normalizeIdentityEmail } from "./ProfileCollection-DuJT7Mum-
|
|
11
|
-
import "./ProfileLinkCollection-4uNURz32-
|
|
12
|
-
import "./ProfileMetadataCollection-DQhbfEfa-
|
|
13
|
-
import "./ProfileMetafieldCollection-CoBuM_5G-
|
|
14
|
-
import "./ProfileRelationshipCollection-DUVgaIqf-
|
|
7
|
+
import "./OidcIdentity-Cb1bxreM-DO8v8PPX.js";
|
|
8
|
+
import "./OidcIdentityCollection-TV8VdK69-CKJPi8VX.js";
|
|
9
|
+
import "./ProfileAssetCollection-B9hacUJa-60k6WDBo.js";
|
|
10
|
+
import { u as normalizeIdentityEmail } from "./ProfileCollection-DuJT7Mum-DuFdSzQj.js";
|
|
11
|
+
import "./ProfileLinkCollection-4uNURz32-DMtNzJcf.js";
|
|
12
|
+
import "./ProfileMetadataCollection-DQhbfEfa-BKwTBhrv.js";
|
|
13
|
+
import "./ProfileMetafieldCollection-CoBuM_5G-BMLo_Rie.js";
|
|
14
|
+
import "./ProfileRelationshipCollection-DUVgaIqf-c_BIh5H0.js";
|
|
15
15
|
import "./ProfileRelationshipTermCollection-DtA9OM23-BoGhQBSQ.js";
|
|
16
16
|
import "./ProfileRelationshipType-BRiRka6t-Dezjv5jP.js";
|
|
17
17
|
import "./ProfileRelationshipTypeCollection-BdXwd7Kf-HoTmV1q-.js";
|
|
18
|
-
import "./oidcProvisioningPrimitives-D9OYu5-F-
|
|
19
|
-
import "./resolveIdentity-B-PK6RwU-
|
|
18
|
+
import "./oidcProvisioningPrimitives-D9OYu5-F-jUSih8OU.js";
|
|
19
|
+
import "./resolveIdentity-B-PK6RwU-Dp7_W7kZ.js";
|
|
20
20
|
import { ObjectRegistry, SmrtCollection, SmrtObject, bumpChangeFeed, crossPackageRef, field, findManifestEntryByQualifiedName, foreignKey, isEmbeddedDatabase, isPostgresDatabase, registerRetentionTask, smrt, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
|
|
21
21
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
22
22
|
import { createLogger } from "@happyvertical/logger";
|
|
@@ -25,13 +25,13 @@ import "@happyvertical/smrt-core/migrations";
|
|
|
25
25
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
26
26
|
import { AccessRequestStatus, MembershipStatus, OverrideEffect, SessionStatus, TenantPermissionEffect, TenantStatus, UserStatus } from "@happyvertical/smrt-types";
|
|
27
27
|
//#region ../profiles/dist/index.js
|
|
28
|
-
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-profiles\",\"packageVersion\":\"0.54.1\",\"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\"]}"));
|
|
29
|
-
var __defProp$
|
|
30
|
-
var __getOwnPropDesc$
|
|
31
|
-
var __decorateClass$
|
|
32
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
28
|
+
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\"]}"));
|
|
29
|
+
var __defProp$19 = Object.defineProperty;
|
|
30
|
+
var __getOwnPropDesc$18 = Object.getOwnPropertyDescriptor;
|
|
31
|
+
var __decorateClass$18 = (decorators, target, key, kind) => {
|
|
32
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$18(target, key) : target;
|
|
33
33
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
34
|
-
if (kind && result) __defProp$
|
|
34
|
+
if (kind && result) __defProp$19(target, key, result);
|
|
35
35
|
return result;
|
|
36
36
|
};
|
|
37
37
|
var DEFAULT_EXPIRATION_MINUTES = 15;
|
|
@@ -156,9 +156,9 @@ var MagicLinkToken = class extends SmrtObject {
|
|
|
156
156
|
return Math.max(0, Math.floor(diff / 1e3));
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
|
-
__decorateClass$
|
|
160
|
-
__decorateClass$
|
|
161
|
-
MagicLinkToken = __decorateClass$
|
|
159
|
+
__decorateClass$18([foreignKey("NostrIdentity", { required: true })], MagicLinkToken.prototype, "nostrIdentityId", 2);
|
|
160
|
+
__decorateClass$18([field({ indexed: true })], MagicLinkToken.prototype, "tokenHash", 2);
|
|
161
|
+
MagicLinkToken = __decorateClass$18([smrt({
|
|
162
162
|
tableName: "magic_link_tokens",
|
|
163
163
|
sensitive: true,
|
|
164
164
|
api: { exclude: ["*"] },
|
|
@@ -293,24 +293,24 @@ var DEFAULT_ROLES = [
|
|
|
293
293
|
}
|
|
294
294
|
];
|
|
295
295
|
//#endregion
|
|
296
|
-
//#region ../users/dist/chunks/TerminalAuthService-
|
|
297
|
-
var __defProp$
|
|
296
|
+
//#region ../users/dist/chunks/TerminalAuthService-B2cazTEg.js
|
|
297
|
+
var __defProp$17 = Object.defineProperty;
|
|
298
298
|
var __exportAll = (all, no_symbols) => {
|
|
299
299
|
let target = {};
|
|
300
|
-
for (var name in all) __defProp$
|
|
300
|
+
for (var name in all) __defProp$17(target, name, {
|
|
301
301
|
get: all[name],
|
|
302
302
|
enumerable: true
|
|
303
303
|
});
|
|
304
|
-
if (!no_symbols) __defProp$
|
|
304
|
+
if (!no_symbols) __defProp$17(target, Symbol.toStringTag, { value: "Module" });
|
|
305
305
|
return target;
|
|
306
306
|
};
|
|
307
|
-
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-users\",\"packageVersion\":\"0.54.1\",\"objects\":{\"@happyvertical/smrt-users:AccessRequestCollection\":{\"name\":\"accessrequestcollection\",\"className\":\"AccessRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:AccessRequestCollection\",\"collection\":\"accessrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/AccessRequestCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpenByEmail\":{\"name\":\"findOpenByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"AccessRequestStatus\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"access_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AccessRequest\",\"exportName\":\"AccessRequestCollection\",\"collectionExportName\":\"AccessRequestCollectionCollection\",\"schema\":{\"tableName\":\"access_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"access_requests\\\" (\\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 \\\"email\\\" TEXT NOT NULL DEFAULT '',\\n \\\"name\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"source\\\" TEXT DEFAULT '',\\n \\\"request_context\\\" TEXT DEFAULT '{}',\\n \\\"note\\\" TEXT,\\n \\\"requested_at\\\" TIMESTAMP,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"decided_by\\\" TEXT,\\n \\\"resulting_user_id\\\" TEXT,\\n \\\"tenant_hint\\\" TEXT\\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\"},\"email\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"request_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"requested_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_user_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"tenant_hint\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"access_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"access_requests_email_idx\",\"columns\":[\"email\"]},{\"name\":\"access_requests_status_idx\",\"columns\":[\"status\"]},{\"name\":\"access_requests_source_idx\",\"columns\":[\"source\"]},{\"name\":\"access_requests_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"f396996f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection\":{\"name\":\"userscliauthapprovelimitcollection\",\"className\":\"UsersCliAuthApproveLimitCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection\",\"collection\":\"userscliauthapprovelimits\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthApproveLimitCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"reserveAttempt\":{\"name\":\"reserveAttempt\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"number\",\"string\"]}],\"returnType\":\"Promise<CliAuthApproveReservation>\",\"isStatic\":false,\"isPublic\":true},\"releaseAttempt\":{\"name\":\"releaseAttempt\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"windowStartedAt\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_approve_limits\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersCliAuthApproveLimit\",\"exportName\":\"UsersCliAuthApproveLimitCollection\",\"collectionExportName\":\"UsersCliAuthApproveLimitCollectionCollection\",\"schema\":{\"tableName\":\"users_cli_auth_approve_limits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_approve_limits\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_approve_limits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_cli_auth_approve_limits_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"c45c02de\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthRequestCollection\":{\"name\":\"userscliauthrequestcollection\",\"className\":\"UsersCliAuthRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthRequestCollection\",\"collection\":\"userscliauthrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthRequestCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"approvePendingRequest\":{\"name\":\"approvePendingRequest\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"ApprovePendingCliAuthRequestInput\",\"optional\":false}],\"returnType\":\"Promise<ApprovedCliAuthRequestSnapshot | null>\",\"isStatic\":false,\"isPublic\":true},\"consumeApprovedSession\":{\"name\":\"consumeApprovedSession\",\"async\":true,\"parameters\":[{\"name\":\"deviceCodeHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string | null>\",\"isStatic\":false,\"isPublic\":true},\"findByUserCode\":{\"name\":\"findByUserCode\",\"async\":true,\"parameters\":[{\"name\":\"userCode\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersCliAuthRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findByDeviceCodeHash\":{\"name\":\"findByDeviceCodeHash\",\"async\":true,\"parameters\":[{\"name\":\"deviceCodeHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersCliAuthRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersCliAuthRequest\",\"exportName\":\"UsersCliAuthRequestCollection\",\"collectionExportName\":\"UsersCliAuthRequestCollectionCollection\",\"schema\":{\"tableName\":\"users_cli_auth_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_requests\\\" (\\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 \\\"user_code\\\" TEXT NOT NULL UNIQUE,\\n \\\"device_code_hash\\\" TEXT NOT NULL UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"session_id\\\" UUID,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"approved_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\"},\"user_code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"device_code_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"session_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sessions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_requests_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"users_cli_auth_requests_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_cli_auth_requests_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"users_cli_auth_requests_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"users_cli_auth_requests_session_id_idx\",\"columns\":[\"session_id\"]}],\"version\":\"713ae04c\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupCollection\":{\"name\":\"groupcollection\",\"className\":\"GroupCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupCollection\",\"collection\":\"groups\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Group[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Group | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Group\",\"exportName\":\"GroupCollection\",\"collectionExportName\":\"GroupCollectionCollection\",\"schema\":{\"tableName\":\"groups\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"groups\\\" (\\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 NOT NULL,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" 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\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"groups_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"groups_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"1824c19b\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupMemberCollection\":{\"name\":\"groupmembercollection\",\"className\":\"GroupMemberCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupMemberCollection\",\"collection\":\"groupmembers\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupMemberCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByGroup\":{\"name\":\"findByGroup\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember[]>\",\"isStatic\":false,\"isPublic\":true},\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember[]>\",\"isStatic\":false,\"isPublic\":true},\"isMember\":{\"name\":\"isMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addMember\":{\"name\":\"addMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember>\",\"isStatic\":false,\"isPublic\":true},\"removeMember\":{\"name\":\"removeMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getGroupIds\":{\"name\":\"getGroupIds\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getGroupIdsForTenant\":{\"name\":\"getGroupIdsForTenant\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getUserIds\":{\"name\":\"getUserIds\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"GroupMember\",\"exportName\":\"GroupMemberCollection\",\"collectionExportName\":\"GroupMemberCollectionCollection\",\"schema\":{\"tableName\":\"group_members\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_members\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_members_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_members_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_members_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_members_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"ed4d1187\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupRoleCollection\":{\"name\":\"grouprolecollection\",\"className\":\"GroupRoleCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupRoleCollection\",\"collection\":\"grouproles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupRoleCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByGroup\":{\"name\":\"findByGroup\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole[]>\",\"isStatic\":false,\"isPublic\":true},\"hasRole\":{\"name\":\"hasRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addRole\":{\"name\":\"addRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole>\",\"isStatic\":false,\"isPublic\":true},\"removeRole\":{\"name\":\"removeRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getRoleIds\":{\"name\":\"getRoleIds\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"GroupRole\",\"exportName\":\"GroupRoleCollection\",\"collectionExportName\":\"GroupRoleCollectionCollection\",\"schema\":{\"tableName\":\"group_roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_roles\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_roles_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_roles_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_roles_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_roles_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"b1e35f93\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAttemptCollection\":{\"name\":\"usersloginattemptcollection\",\"className\":\"UsersLoginAttemptCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAttemptCollection\",\"collection\":\"usersloginattempts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/LoginAttemptCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"reserveAttempt\":{\"name\":\"reserveAttempt\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"ReserveLoginAttemptInput\",\"optional\":false}],\"returnType\":\"Promise<LoginAttemptReservation>\",\"isStatic\":false,\"isPublic\":true},\"recordFailure\":{\"name\":\"recordFailure\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"RecordLoginFailureInput\",\"optional\":false}],\"returnType\":\"Promise<RecordedLoginFailure>\",\"isStatic\":false,\"isPublic\":true},\"releaseAttempt\":{\"name\":\"releaseAttempt\",\"async\":true,\"parameters\":[{\"name\":\"limiterKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"windowStartedAt\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"deleteIdle\":{\"name\":\"deleteIdle\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_attempts\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersLoginAttempt\",\"exportName\":\"UsersLoginAttemptCollection\",\"collectionExportName\":\"UsersLoginAttemptCollectionCollection\",\"schema\":{\"tableName\":\"users_login_attempts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_attempts\\\" (\\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 \\\"limiter_key\\\" TEXT NOT NULL UNIQUE,\\n \\\"scope\\\" TEXT NOT NULL,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL,\\n \\\"failure_streak\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"locked_until\\\" TIMESTAMP,\\n \\\"last_failed_at\\\" TIMESTAMP,\\n \\\"retain_until\\\" TIMESTAMP NOT NULL\\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\"},\"limiter_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"scope\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"failure_streak\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"locked_until\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_failed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"retain_until\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_attempts_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_attempts_locked_until_idx\",\"columns\":[\"locked_until\"]},{\"name\":\"users_login_attempts_retain_until_idx\",\"columns\":[\"retain_until\"]},{\"name\":\"users_login_attempts_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"89dfe336\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAuditEventCollection\":{\"name\":\"usersloginauditeventcollection\",\"className\":\"UsersLoginAuditEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAuditEventCollection\",\"collection\":\"usersloginauditevents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/LoginAuditEventCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"deleteOlderThan\":{\"name\":\"deleteOlderThan\",\"async\":true,\"parameters\":[{\"name\":\"maxAgeMs\",\"type\":\"number\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_audit_events\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersLoginAuditEvent\",\"exportName\":\"UsersLoginAuditEventCollection\",\"collectionExportName\":\"UsersLoginAuditEventCollectionCollection\",\"schema\":{\"tableName\":\"users_login_audit_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_audit_events\\\" (\\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 \\\"kind\\\" TEXT NOT NULL,\\n \\\"outcome\\\" TEXT NOT NULL,\\n \\\"subject_key_hash\\\" TEXT,\\n \\\"source_key_hash\\\" TEXT,\\n \\\"retry_after_seconds\\\" INTEGER,\\n \\\"occurred_at\\\" TIMESTAMP NOT NULL,\\n \\\"metadata\\\" TEXT\\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\"},\"kind\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"outcome\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"subject_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"retry_after_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_audit_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_audit_events_subject_key_hash_idx\",\"columns\":[\"subject_key_hash\"]},{\"name\":\"users_login_audit_events_source_key_hash_idx\",\"columns\":[\"source_key_hash\"]},{\"name\":\"users_login_audit_events_occurred_at_idx\",\"columns\":[\"occurred_at\"]},{\"name\":\"users_login_audit_events_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"485105a9\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersMagicLinkTokenCollection\":{\"name\":\"usersmagiclinktokencollection\",\"className\":\"UsersMagicLinkTokenCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersMagicLinkTokenCollection\",\"collection\":\"usersmagiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MagicLinkTokenCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByNonce\":{\"name\":\"findByNonce\",\"async\":true,\"parameters\":[{\"name\":\"nonce\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersMagicLinkToken | null>\",\"isStatic\":false,\"isPublic\":true},\"markUsed\":{\"name\":\"markUsed\",\"async\":true,\"parameters\":[{\"name\":\"nonce\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_magic_link_tokens\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersMagicLinkToken\",\"exportName\":\"UsersMagicLinkTokenCollection\",\"collectionExportName\":\"UsersMagicLinkTokenCollectionCollection\",\"schema\":{\"tableName\":\"users_magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_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 \\\"nonce\\\" TEXT NOT NULL UNIQUE DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"used\\\" BOOLEAN DEFAULT FALSE,\\n \\\"expires_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\"},\"nonce\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"used\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_magic_link_tokens_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"537853d3\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipCollection\":{\"name\":\"membershipcollection\",\"className\":\"MembershipCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipCollection\",\"collection\":\"memberships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findActiveByUser\":{\"name\":\"findActiveByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findActiveByTenant\":{\"name\":\"findActiveByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByUserAndTenant\":{\"name\":\"findByUserAndTenant\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership | null>\",\"isStatic\":false,\"isPublic\":true},\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"MembershipStatus\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Membership\",\"exportName\":\"MembershipCollection\",\"collectionExportName\":\"MembershipCollectionCollection\",\"schema\":{\"tableName\":\"memberships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"memberships\\\" (\\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 \\\"user_id\\\" UUID NOT NULL,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL,\\n \\\"status\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"memberships_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"memberships_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"memberships_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"memberships_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"ebfd11e0\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipOverrideCollection\":{\"name\":\"membershipoverridecollection\",\"className\":\"MembershipOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipOverrideCollection\",\"collection\":\"membershipoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipOverrideCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByMembership\":{\"name\":\"findByMembership\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findGrants\":{\"name\":\"findGrants\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findDenies\":{\"name\":\"findDenies\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"getGrantedPermissionIds\":{\"name\":\"getGrantedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getDeniedPermissionIds\":{\"name\":\"getDeniedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"OverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"grantPermission\":{\"name\":\"grantPermission\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true},\"denyPermission\":{\"name\":\"denyPermission\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"MembershipOverride\",\"exportName\":\"MembershipOverrideCollection\",\"collectionExportName\":\"MembershipOverrideCollectionCollection\",\"schema\":{\"tableName\":\"membership_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"membership_overrides\\\" (\\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 \\\"membership_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\"},\"membership_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"memberships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"membership_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"membership_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"membership_overrides_membership_id_idx\",\"columns\":[\"membership_id\"]},{\"name\":\"membership_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"25fe9da8\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:PermissionCollection\":{\"name\":\"permissioncollection\",\"className\":\"PermissionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:PermissionCollection\",\"collection\":\"permissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/PermissionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByCategory\":{\"name\":\"findByCategory\",\"async\":true,\"parameters\":[{\"name\":\"category\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Permission[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Permission | null>\",\"isStatic\":false,\"isPublic\":true},\"findByIds\":{\"name\":\"findByIds\",\"async\":true,\"parameters\":[{\"name\":\"ids\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, Permission>>\",\"isStatic\":false,\"isPublic\":true},\"getCategories\":{\"name\":\"getCategories\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"findOrCreate\":{\"name\":\"findOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"Partial<object>\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<Permission>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Permission\",\"exportName\":\"PermissionCollection\",\"collectionExportName\":\"PermissionCollectionCollection\",\"schema\":{\"tableName\":\"permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"permissions\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"category\\\" 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\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"category\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"permissions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"4c81b2af\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPinCredentialCollection\":{\"name\":\"userspincredentialcollection\",\"className\":\"UsersPinCredentialCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPinCredentialCollection\",\"collection\":\"userspincredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/PinCredentialCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByUserId\":{\"name\":\"findByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersPinCredential | null>\",\"isStatic\":false,\"isPublic\":true},\"upsertForUser\":{\"name\":\"upsertForUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"write\",\"type\":\"PinCredentialWrite\",\"optional\":false}],\"returnType\":\"Promise<UsersPinCredential>\",\"isStatic\":false,\"isPublic\":true},\"deleteByUserId\":{\"name\":\"deleteByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_pin_credentials\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersPinCredential\",\"exportName\":\"UsersPinCredentialCollection\",\"collectionExportName\":\"UsersPinCredentialCollectionCollection\",\"schema\":{\"tableName\":\"users_pin_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_pin_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"pin_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_reset\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pin_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_reset\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_pin_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_pin_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"0e2fa003\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:ResourceGrantCollection\":{\"name\":\"resourcegrantcollection\",\"className\":\"ResourceGrantCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:ResourceGrantCollection\",\"collection\":\"resourcegrants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/ResourceGrantCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findExact\":{\"name\":\"findExact\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceType\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permission\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ResourceGrant[]>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentGrantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ResourceGrant[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ResourceGrant\",\"exportName\":\"ResourceGrantCollection\",\"collectionExportName\":\"ResourceGrantCollectionCollection\",\"schema\":{\"tableName\":\"resource_grants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"resource_grants\\\" (\\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 NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL,\\n \\\"resource_type\\\" TEXT,\\n \\\"resource_id\\\" TEXT,\\n \\\"permission\\\" TEXT,\\n \\\"effect\\\" TEXT,\\n \\\"can_delegate\\\" BOOLEAN DEFAULT FALSE,\\n \\\"parent_grant_id\\\" UUID,\\n \\\"revoked_at\\\" TEXT\\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\":true,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"permission\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"can_delegate\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"parent_grant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"resource_grants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"revoked_at\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"resource_grants_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"resource_grants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"resource_grants_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"resource_grants_parent_grant_id_idx\",\"columns\":[\"parent_grant_id\"]}],\"version\":\"52e03776\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RoleCollection\":{\"name\":\"rolecollection\",\"className\":\"RoleCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:RoleCollection\",\"collection\":\"roles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/RoleCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findSystemRoles\":{\"name\":\"findSystemRoles\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findTenantRoles\":{\"name\":\"findTenantRoles\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Role | null>\",\"isStatic\":false,\"isPublic\":true},\"findSystemRoleBySlug\":{\"name\":\"findSystemRoleBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role | null>\",\"isStatic\":false,\"isPublic\":true},\"seedSystemRoles\":{\"name\":\"seedSystemRoles\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SeedSystemRolesOptions\",\"optional\":true}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Role\",\"exportName\":\"RoleCollection\",\"collectionExportName\":\"RoleCollectionCollection\",\"schema\":{\"tableName\":\"roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"roles\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"is_system\\\" BOOLEAN DEFAULT FALSE,\\n \\\"inherits_to_descendants\\\" 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\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"is_system\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"inherits_to_descendants\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false}},\"indexes\":[{\"name\":\"roles_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"roles_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"47369d9d\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RolePermissionCollection\":{\"name\":\"rolepermissioncollection\",\"className\":\"RolePermissionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:RolePermissionCollection\",\"collection\":\"rolepermissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/RolePermissionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission[]>\",\"isStatic\":false,\"isPublic\":true},\"findByPermission\":{\"name\":\"findByPermission\",\"async\":true,\"parameters\":[{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission[]>\",\"isStatic\":false,\"isPublic\":true},\"hasPermission\":{\"name\":\"hasPermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addPermission\":{\"name\":\"addPermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission>\",\"isStatic\":false,\"isPublic\":true},\"removePermission\":{\"name\":\"removePermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getPermissionIds\":{\"name\":\"getPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"seedRolePermissions\":{\"name\":\"seedRolePermissions\",\"async\":true,\"parameters\":[{\"name\":\"matrix\",\"type\":\"RolePermissionPatternMatrix\",\"optional\":true},{\"name\":\"options\",\"type\":\"SeedRolePermissionsOptions\",\"optional\":true}],\"returnType\":\"Promise<SeedRolePermissionsResult>\",\"isStatic\":false,\"isPublic\":true},\"seedDefaultRolePersonalizationPermissions\":{\"name\":\"seedDefaultRolePersonalizationPermissions\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"Omit<SeedRolePermissionsOptions, 'prune'>\",\"optional\":true}],\"returnType\":\"Promise<SeedRolePermissionsResult>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"RolePermission\",\"exportName\":\"RolePermissionCollection\",\"collectionExportName\":\"RolePermissionCollectionCollection\",\"schema\":{\"tableName\":\"role_permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"role_permissions\\\" (\\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 \\\"role_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL\\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\"},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"role_permissions_role_id_permission_id_idx\",\"columns\":[\"role_id\",\"permission_id\"],\"unique\":true},{\"name\":\"role_permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"role_permissions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"role_permissions_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"4dfed3ac\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:SessionCollection\":{\"name\":\"sessioncollection\",\"className\":\"SessionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:SessionCollection\",\"collection\":\"sessions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/SessionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"createSession\":{\"name\":\"createSession\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"CreateSessionOptions\",\"optional\":false}],\"returnType\":\"Promise<Session>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentSessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session[]>\",\"isStatic\":false,\"isPublic\":true},\"revokeChildren\":{\"name\":\"revokeChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentSessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeUserSessionsByAuthMethod\":{\"name\":\"revokeUserSessionsByAuthMethod\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"authMethod\",\"type\":\"SessionAuthMethod\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findValidSession\":{\"name\":\"findValidSession\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session | null>\",\"isStatic\":false,\"isPublic\":true},\"touch\":{\"name\":\"touch\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"extendTtl\",\"type\":\"boolean\",\"optional\":true},{\"name\":\"ttl\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session[]>\",\"isStatic\":false,\"isPublic\":true},\"deleteUserSessions\":{\"name\":\"deleteUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeUserSessions\":{\"name\":\"revokeUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeSession\":{\"name\":\"revokeSession\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"countUserSessions\":{\"name\":\"countUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"setSessionTenant\":{\"name\":\"setSessionTenant\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"setSessionData\":{\"name\":\"setSessionData\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getSessionData\":{\"name\":\"getSessionData\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<T | undefined>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Session\",\"exportName\":\"SessionCollection\",\"collectionExportName\":\"SessionCollectionCollection\",\"schema\":{\"tableName\":\"sessions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sessions\\\" (\\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 \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"status\\\" TEXT,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"user_agent\\\" TEXT DEFAULT '',\\n \\\"ip_address\\\" TEXT DEFAULT '',\\n \\\"last_accessed_at\\\" TIMESTAMP,\\n \\\"data\\\" JSON DEFAULT '{}',\\n \\\"auth_method\\\" TEXT,\\n \\\"parent_session_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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"user_agent\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"ip_address\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_accessed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"data\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"auth_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"parent_session_id\":{\"type\":\"UUID\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"sessions_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sessions_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"sessions_parent_session_id_idx\",\"columns\":[\"parent_session_id\"]},{\"name\":\"sessions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"sessions_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"b4260a0f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantCollection\":{\"name\":\"tenantcollection\",\"className\":\"TenantCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantCollection\",\"collection\":\"tenants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"TenantStatus\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant | null>\",\"isStatic\":false,\"isPublic\":true},\"findRoots\":{\"name\":\"findRoots\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentTenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findParent\":{\"name\":\"findParent\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant | null>\",\"isStatic\":false,\"isPublic\":true},\"getAncestors\":{\"name\":\"getAncestors\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getAncestorsFromRoot\":{\"name\":\"getAncestorsFromRoot\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getDescendants\":{\"name\":\"getDescendants\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getSiblings\":{\"name\":\"getSiblings\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"isAncestorOf\":{\"name\":\"isAncestorOf\",\"async\":true,\"parameters\":[{\"name\":\"potentialAncestorId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isDescendantOf\":{\"name\":\"isDescendantOf\",\"async\":true,\"parameters\":[{\"name\":\"potentialDescendantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"createChild\":{\"name\":\"createChild\",\"async\":true,\"parameters\":[{\"name\":\"parentTenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"CreateChildTenantOptions\",\"optional\":false}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"moveToParent\":{\"name\":\"moveToParent\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"newParentId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"makeRoot\":{\"name\":\"makeRoot\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"validateHierarchy\":{\"name\":\"validateHierarchy\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getTree\":{\"name\":\"getTree\",\"async\":true,\"parameters\":[{\"name\":\"rootTenantId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Tenant\",\"exportName\":\"TenantCollection\",\"collectionExportName\":\"TenantCollectionCollection\",\"schema\":{\"tableName\":\"tenants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenants\\\" (\\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 \\\"status\\\" TEXT,\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"parent_tenant_id\\\" UUID,\\n \\\"hierarchy_level\\\" INTEGER DEFAULT 0,\\n \\\"hierarchy_path\\\" TEXT DEFAULT '',\\n \\\"cascade_permissions\\\" BOOLEAN DEFAULT TRUE,\\n \\\"inherit_permissions\\\" 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\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"parent_tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"hierarchy_level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"hierarchy_path\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"cascade_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"inherit_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"tenants_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"tenants_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"tenants_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenants_parent_tenant_id_idx\",\"columns\":[\"parent_tenant_id\"]}],\"version\":\"934f7025\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantIntegrationCollection\":{\"name\":\"tenantintegrationcollection\",\"className\":\"TenantIntegrationCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantIntegrationCollection\",\"collection\":\"tenantintegrations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantIntegrationCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"listForTenant\":{\"name\":\"listForTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration[]>\",\"isStatic\":false,\"isPublic\":true},\"findFor\":{\"name\":\"findFor\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"provider\",\"type\":\"TenantIntegrationProvider\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration | null>\",\"isStatic\":false,\"isPublic\":true},\"findOrInit\":{\"name\":\"findOrInit\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"provider\",\"type\":\"TenantIntegrationProvider\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"tenant_integrations\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"TenantIntegration\",\"exportName\":\"TenantIntegrationCollection\",\"collectionExportName\":\"TenantIntegrationCollectionCollection\",\"schema\":{\"tableName\":\"tenant_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_integrations\\\" (\\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 NOT NULL,\\n \\\"provider\\\" TEXT DEFAULT 'aws',\\n \\\"external_ids\\\" TEXT,\\n \\\"status\\\" TEXT DEFAULT 'unprovisioned',\\n \\\"last_checked_at\\\" TIMESTAMP,\\n \\\"last_check_summary\\\" TEXT,\\n \\\"last_error\\\" TEXT\\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\":true,\"unique\":false},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"aws\"},\"external_ids\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"unprovisioned\"},\"last_checked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_check_summary\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_integrations_tenant_id_provider_idx\",\"columns\":[\"tenant_id\",\"provider\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"tenant_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"tenant_integrations_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"3ed31966\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantPermissionOverrideCollection\":{\"name\":\"tenantpermissionoverridecollection\",\"className\":\"TenantPermissionOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantPermissionOverrideCollection\",\"collection\":\"tenantpermissionoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantPermissionOverrideCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findGrants\":{\"name\":\"findGrants\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findDenies\":{\"name\":\"findDenies\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findInherits\":{\"name\":\"findInherits\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"getGrantedPermissionIds\":{\"name\":\"getGrantedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getDeniedPermissionIds\":{\"name\":\"getDeniedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getOverridesByEffect\":{\"name\":\"getOverridesByEffect\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverrideResult>\",\"isStatic\":false,\"isPublic\":true},\"getOverridesByEffectBatch\":{\"name\":\"getOverridesByEffectBatch\",\"async\":true,\"parameters\":[{\"name\":\"tenantIds\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, TenantPermissionOverrideResult>>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"TenantPermissionEffect\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"removeAllOverrides\":{\"name\":\"removeAllOverrides\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"grantPermission\":{\"name\":\"grantPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"denyPermission\":{\"name\":\"denyPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"inheritPermission\":{\"name\":\"inheritPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"bulkSetOverrides\":{\"name\":\"bulkSetOverrides\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"overrides\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\",\"TenantPermissionEffect\"]}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"copyOverrides\":{\"name\":\"copyOverrides\",\"async\":true,\"parameters\":[{\"name\":\"fromTenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"toTenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"TenantPermissionOverride\",\"exportName\":\"TenantPermissionOverrideCollection\",\"collectionExportName\":\"TenantPermissionOverrideCollectionCollection\",\"schema\":{\"tableName\":\"tenant_permission_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_permission_overrides\\\" (\\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 NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_permission_overrides_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"tenant_permission_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenant_permission_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"95b78bdd\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UserCollection\":{\"name\":\"usercollection\",\"className\":\"UserCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UserCollection\",\"collection\":\"users\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/UserCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<User | null>\",\"isStatic\":false,\"isPublic\":true},\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<User | null>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"UserStatus\",\"optional\":false}],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"findPending\":{\"name\":\"findPending\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateForProfile\":{\"name\":\"getOrCreateForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"Partial<object>\",\"optional\":true,\"memberTypes\":[\"UserStatus\"]}],\"returnType\":\"Promise<User>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateFromOidc\":{\"name\":\"getOrCreateFromOidc\",\"async\":true,\"parameters\":[{\"name\":\"claims\",\"type\":\"OidcClaims\",\"optional\":false},{\"name\":\"provider\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"GetOrCreateFromOidcOptions\",\"optional\":true}],\"returnType\":\"Promise<OidcIdentityResult>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"User\",\"exportName\":\"UserCollection\",\"collectionExportName\":\"UserCollectionCollection\",\"schema\":{\"tableName\":\"users\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users\\\" (\\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 UNIQUE,\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"email_key\\\" TEXT UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"last_login_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\":\"crossPackageRef\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_login_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_email_idx\",\"columns\":[\"email\"]},{\"name\":\"users_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"38fd1677\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:AccessRequest\":{\"name\":\"accessrequest\",\"className\":\"AccessRequest\",\"qualifiedName\":\"@happyvertical/smrt-users:AccessRequest\",\"collection\":\"accessrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/AccessRequest.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"email\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true,\"indexed\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"indexed\":true}},\"source\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"requestContext\":{\"type\":\"text\",\"required\":false,\"default\":\"{}\"},\"note\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"requestedAt\":{\"type\":\"datetime\",\"required\":false},\"decidedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"decidedBy\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"resultingUserId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"tenantHint\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{\"getRequestContext\":{\"name\":\"getRequestContext\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setRequestContext\":{\"name\":\"setRequestContext\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getTenantHint\":{\"name\":\"getTenantHint\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown> | null\",\"isStatic\":false,\"isPublic\":true},\"setTenantHint\":{\"name\":\"setTenantHint\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown> | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, unknown>\"},{\"type\":\"null\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"isOpen\":{\"name\":\"isOpen\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isApproved\":{\"name\":\"isApproved\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isTerminal\":{\"name\":\"isTerminal\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"access_requests\",\"conflictColumns\":[\"id\"],\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"include\":[]}},\"extends\":\"SmrtObject\",\"exportName\":\"AccessRequest\",\"collectionExportName\":\"AccessRequestCollection\",\"validationRules\":[{\"field\":\"email\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"access_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"access_requests\\\" (\\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 \\\"email\\\" TEXT NOT NULL DEFAULT '',\\n \\\"name\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"source\\\" TEXT DEFAULT '',\\n \\\"request_context\\\" TEXT DEFAULT '{}',\\n \\\"note\\\" TEXT,\\n \\\"requested_at\\\" TIMESTAMP,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"decided_by\\\" TEXT,\\n \\\"resulting_user_id\\\" TEXT,\\n \\\"tenant_hint\\\" TEXT\\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\"},\"email\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"request_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"requested_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_user_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"tenant_hint\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"access_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"access_requests_email_idx\",\"columns\":[\"email\"]},{\"name\":\"access_requests_status_idx\",\"columns\":[\"status\"]},{\"name\":\"access_requests_source_idx\",\"columns\":[\"source\"]},{\"name\":\"access_requests_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"f396996f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthApproveLimit\":{\"name\":\"userscliauthapprovelimit\",\"className\":\"UsersCliAuthApproveLimit\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthApproveLimit\",\"collection\":\"userscliauthapprovelimits\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthApproveLimit.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true,\"unique\":true}},\"attemptCount\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"windowStartedAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_approve_limits\",\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersCliAuthApproveLimit\",\"collectionExportName\":\"UsersCliAuthApproveLimitCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"attemptCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"windowStartedAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_cli_auth_approve_limits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_approve_limits\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_approve_limits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_cli_auth_approve_limits_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"c45c02de\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthRequest\":{\"name\":\"userscliauthrequest\",\"className\":\"UsersCliAuthRequest\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthRequest\",\"collection\":\"userscliauthrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthRequest.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userCode\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"deviceCodeHash\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"userId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"User\",\"_meta\":{\"nullable\":true}},\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"sessionId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Session\",\"_meta\":{\"nullable\":true}},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}},\"approvedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_requests\",\"sensitive\":true,\"api\":{\"include\":[]},\"cli\":{\"include\":[]},\"mcp\":{\"include\":[]},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"UsersCliAuthRequest\",\"collectionExportName\":\"UsersCliAuthRequestCollection\",\"validationRules\":[{\"field\":\"userCode\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"deviceCodeHash\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"users_cli_auth_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_requests\\\" (\\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 \\\"user_code\\\" TEXT NOT NULL UNIQUE,\\n \\\"device_code_hash\\\" TEXT NOT NULL UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"session_id\\\" UUID,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"approved_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\"},\"user_code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"device_code_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"session_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sessions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_requests_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"users_cli_auth_requests_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_cli_auth_requests_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"users_cli_auth_requests_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"users_cli_auth_requests_session_id_idx\",\"columns\":[\"session_id\"]}],\"version\":\"713ae04c\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Group\":{\"name\":\"group\",\"className\":\"Group\",\"qualifiedName\":\"@happyvertical/smrt-users:Group\",\"collection\":\"groups\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Group.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Group\",\"collectionExportName\":\"GroupCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"groups\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"groups\\\" (\\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 NOT NULL,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" 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\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"groups_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"groups_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"1824c19b\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupMember\":{\"name\":\"groupmember\",\"className\":\"GroupMember\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupMember\",\"collection\":\"groupmembers\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/GroupMember.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"groupId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Group\",\"_meta\":{\"required\":true}},\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true},\"extends\":\"SmrtObject\",\"exportName\":\"GroupMember\",\"collectionExportName\":\"GroupMemberCollection\",\"validationRules\":[{\"field\":\"groupId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"group_members\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_members\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_members_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_members_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_members_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_members_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"ed4d1187\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupRole\":{\"name\":\"grouprole\",\"className\":\"GroupRole\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupRole\",\"collection\":\"grouproles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/GroupRole.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"groupId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Group\",\"_meta\":{\"required\":true}},\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true},\"extends\":\"SmrtObject\",\"exportName\":\"GroupRole\",\"collectionExportName\":\"GroupRoleCollection\",\"validationRules\":[{\"field\":\"groupId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"group_roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_roles\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_roles_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_roles_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_roles_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_roles_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"b1e35f93\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAttempt\":{\"name\":\"usersloginattempt\",\"className\":\"UsersLoginAttempt\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAttempt\",\"collection\":\"usersloginattempts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/LoginAttempt.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"limiterKey\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"scope\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"attemptCount\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"windowStartedAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true}},\"failureStreak\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"lockedUntil\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"lastFailedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"retainUntil\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true,\"indexed\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_login_attempts\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersLoginAttempt\",\"collectionExportName\":\"UsersLoginAttemptCollection\",\"validationRules\":[{\"field\":\"limiterKey\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"scope\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"attemptCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"windowStartedAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"},{\"field\":\"failureStreak\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"retainUntil\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_login_attempts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_attempts\\\" (\\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 \\\"limiter_key\\\" TEXT NOT NULL UNIQUE,\\n \\\"scope\\\" TEXT NOT NULL,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL,\\n \\\"failure_streak\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"locked_until\\\" TIMESTAMP,\\n \\\"last_failed_at\\\" TIMESTAMP,\\n \\\"retain_until\\\" TIMESTAMP NOT NULL\\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\"},\"limiter_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"scope\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"failure_streak\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"locked_until\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_failed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"retain_until\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_attempts_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_attempts_locked_until_idx\",\"columns\":[\"locked_until\"]},{\"name\":\"users_login_attempts_retain_until_idx\",\"columns\":[\"retain_until\"]},{\"name\":\"users_login_attempts_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"89dfe336\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAuditEvent\":{\"name\":\"usersloginauditevent\",\"className\":\"UsersLoginAuditEvent\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAuditEvent\",\"collection\":\"usersloginauditevents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/LoginAuditEvent.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"kind\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"outcome\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"subjectKeyHash\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"sourceKeyHash\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"retryAfterSeconds\":{\"type\":\"integer\",\"required\":false,\"_meta\":{\"nullable\":true}},\"occurredAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true,\"indexed\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_audit_events\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersLoginAuditEvent\",\"collectionExportName\":\"UsersLoginAuditEventCollection\",\"validationRules\":[{\"field\":\"kind\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"outcome\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"occurredAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_login_audit_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_audit_events\\\" (\\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 \\\"kind\\\" TEXT NOT NULL,\\n \\\"outcome\\\" TEXT NOT NULL,\\n \\\"subject_key_hash\\\" TEXT,\\n \\\"source_key_hash\\\" TEXT,\\n \\\"retry_after_seconds\\\" INTEGER,\\n \\\"occurred_at\\\" TIMESTAMP NOT NULL,\\n \\\"metadata\\\" TEXT\\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\"},\"kind\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"outcome\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"subject_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"retry_after_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_audit_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_audit_events_subject_key_hash_idx\",\"columns\":[\"subject_key_hash\"]},{\"name\":\"users_login_audit_events_source_key_hash_idx\",\"columns\":[\"source_key_hash\"]},{\"name\":\"users_login_audit_events_occurred_at_idx\",\"columns\":[\"occurred_at\"]},{\"name\":\"users_login_audit_events_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"485105a9\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersMagicLinkToken\":{\"name\":\"usersmagiclinktoken\",\"className\":\"UsersMagicLinkToken\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersMagicLinkToken\",\"collection\":\"usersmagiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/MagicLinkToken.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"nonce\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true,\"unique\":true}},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"used\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}}},\"methods\":{\"isExpired\":{\"name\":\"isExpired\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isValid\":{\"name\":\"isValid\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_magic_link_tokens\",\"sensitive\":true,\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"UsersMagicLinkToken\",\"collectionExportName\":\"UsersMagicLinkTokenCollection\",\"validationRules\":[{\"field\":\"nonce\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"users_magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_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 \\\"nonce\\\" TEXT NOT NULL UNIQUE DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"used\\\" BOOLEAN DEFAULT FALSE,\\n \\\"expires_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\"},\"nonce\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"used\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_magic_link_tokens_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"537853d3\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Membership\":{\"name\":\"membership\",\"className\":\"Membership\",\"qualifiedName\":\"@happyvertical/smrt-users:Membership\",\"collection\":\"memberships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Membership.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}},\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPending\":{\"name\":\"isPending\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"indexes\":[{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenantId\",\"userId\"]}],\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Membership\",\"collectionExportName\":\"MembershipCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"memberships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"memberships\\\" (\\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 \\\"user_id\\\" UUID NOT NULL,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL,\\n \\\"status\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"memberships_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"memberships_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"memberships_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"memberships_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"ebfd11e0\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipOverride\":{\"name\":\"membershipoverride\",\"className\":\"MembershipOverride\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipOverride\",\"collection\":\"membershipoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/MembershipOverride.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"membershipId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Membership\",\"_meta\":{\"required\":true}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isGrant\":{\"name\":\"isGrant\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDeny\":{\"name\":\"isDeny\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"MembershipOverride\",\"collectionExportName\":\"MembershipOverrideCollection\",\"validationRules\":[{\"field\":\"membershipId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"membership_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"membership_overrides\\\" (\\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 \\\"membership_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\"},\"membership_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"memberships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"membership_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"membership_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"membership_overrides_membership_id_idx\",\"columns\":[\"membership_id\"]},{\"name\":\"membership_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"25fe9da8\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Permission\":{\"name\":\"permission\",\"className\":\"Permission\",\"qualifiedName\":\"@happyvertical/smrt-users:Permission\",\"collection\":\"permissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Permission.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"category\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"parseSlug\":{\"name\":\"parseSlug\",\"async\":false,\"parameters\":[],\"returnType\":\"ParsedPermissionSlug\",\"isStatic\":false,\"isPublic\":true},\"getResource\":{\"name\":\"getResource\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"getAction\":{\"name\":\"getAction\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"isValidSlug\":{\"name\":\"isValidSlug\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"Permission\",\"collectionExportName\":\"PermissionCollection\",\"schema\":{\"tableName\":\"permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"permissions\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"category\\\" 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\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"category\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"permissions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"4c81b2af\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPinCredential\":{\"name\":\"userspincredential\",\"className\":\"UsersPinCredential\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPinCredential\",\"collection\":\"userspincredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/PinCredential.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true,\"unique\":true}},\"pinHash\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"sensitive\":true},\"sensitive\":true},\"version\":{\"type\":\"integer\",\"required\":true,\"default\":1,\"_meta\":{\"required\":true,\"default\":1}},\"mustReset\":{\"type\":\"boolean\",\"required\":true,\"default\":false,\"_meta\":{\"required\":true,\"default\":false}},\"rotatedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"rotatedBy\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_pin_credentials\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersPinCredential\",\"collectionExportName\":\"UsersPinCredentialCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"pinHash\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"version\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"mustReset\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"users_pin_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_pin_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"pin_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_reset\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pin_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_reset\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_pin_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_pin_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"0e2fa003\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:ResourceGrant\":{\"name\":\"resourcegrant\",\"className\":\"ResourceGrant\",\"qualifiedName\":\"@happyvertical/smrt-users:ResourceGrant\",\"collection\":\"resourcegrants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/ResourceGrant.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true,\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"mode\":\"required\",\"field\":\"tenantId\",\"autoFilter\":true,\"autoPopulate\":true,\"allowSuperAdminBypass\":false}}},\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}},\"resourceType\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resourceId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"permission\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"canDelegate\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"parentGrantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"ResourceGrant\"},\"revokedAt\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tenantScoped\":true,\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true},\"indexes\":[{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenantId\",\"userId\"]}],\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ResourceGrant\",\"collectionExportName\":\"ResourceGrantCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"resource_grants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"resource_grants\\\" (\\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 NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL,\\n \\\"resource_type\\\" TEXT,\\n \\\"resource_id\\\" TEXT,\\n \\\"permission\\\" TEXT,\\n \\\"effect\\\" TEXT,\\n \\\"can_delegate\\\" BOOLEAN DEFAULT FALSE,\\n \\\"parent_grant_id\\\" UUID,\\n \\\"revoked_at\\\" TEXT\\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\":true,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"permission\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"can_delegate\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"parent_grant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"resource_grants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"revoked_at\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"resource_grants_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"resource_grants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"resource_grants_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"resource_grants_parent_grant_id_idx\",\"columns\":[\"parent_grant_id\"]}],\"version\":\"52e03776\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Role\":{\"name\":\"role\",\"className\":\"Role\",\"qualifiedName\":\"@happyvertical/smrt-users:Role\",\"collection\":\"roles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Role.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"isSystem\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"inheritsToDescendants\":{\"type\":\"boolean\",\"required\":false,\"default\":false}},\"methods\":{\"isSystemRole\":{\"name\":\"isSystemRole\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isTenantRole\":{\"name\":\"isTenantRole\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"canDelete\":{\"name\":\"canDelete\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Role\",\"collectionExportName\":\"RoleCollection\",\"schema\":{\"tableName\":\"roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"roles\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"is_system\\\" BOOLEAN DEFAULT FALSE,\\n \\\"inherits_to_descendants\\\" 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\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"is_system\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"inherits_to_descendants\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false}},\"indexes\":[{\"name\":\"roles_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"roles_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"47369d9d\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RolePermission\":{\"name\":\"rolepermission\",\"className\":\"RolePermission\",\"qualifiedName\":\"@happyvertical/smrt-users:RolePermission\",\"collection\":\"rolepermissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/RolePermission.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true,\"onDelete\":\"NO ACTION\"}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true,\"onDelete\":\"NO ACTION\"}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"conflictColumns\":[\"role_id\",\"permission_id\"]},\"extends\":\"SmrtObject\",\"exportName\":\"RolePermission\",\"collectionExportName\":\"RolePermissionCollection\",\"validationRules\":[{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"role_permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"role_permissions\\\" (\\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 \\\"role_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL\\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\"},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"role_permissions_role_id_permission_id_idx\",\"columns\":[\"role_id\",\"permission_id\"],\"unique\":true},{\"name\":\"role_permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"role_permissions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"role_permissions_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"4dfed3ac\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Session\":{\"name\":\"session\",\"className\":\"Session\",\"qualifiedName\":\"@happyvertical/smrt-users:Session\",\"collection\":\"sessions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Session.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"User\"},\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}},\"userAgent\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"ipAddress\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"lastAccessedAt\":{\"type\":\"datetime\",\"required\":false},\"data\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"authMethod\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"parentSessionId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"indexed\":true,\"sensitive\":true},\"sensitive\":true}},\"methods\":{\"isLayered\":{\"name\":\"isLayered\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getAbsoluteExpiry\":{\"name\":\"getAbsoluteExpiry\",\"async\":false,\"parameters\":[],\"returnType\":\"Date | null\",\"isStatic\":false,\"isPublic\":true},\"getIdleSeconds\":{\"name\":\"getIdleSeconds\",\"async\":false,\"parameters\":[],\"returnType\":\"number | null\",\"isStatic\":false,\"isPublic\":true},\"getPermissionCeiling\":{\"name\":\"getPermissionCeiling\",\"async\":false,\"parameters\":[],\"returnType\":\"string[] | null\",\"isStatic\":false,\"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},\"isRevoked\":{\"name\":\"isRevoked\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"touch\":{\"name\":\"touch\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"extend\":{\"name\":\"extend\",\"async\":false,\"parameters\":[{\"name\":\"ttlSeconds\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"recordActivity\":{\"name\":\"recordActivity\",\"async\":true,\"parameters\":[{\"name\":\"extendTtl\",\"type\":\"any\",\"optional\":true},{\"name\":\"ttlSeconds\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"revoke\":{\"name\":\"revoke\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"setTenant\":{\"name\":\"setTenant\",\"async\":false,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getData\":{\"name\":\"getData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"T | undefined\",\"isStatic\":false,\"isPublic\":true},\"setData\":{\"name\":\"setData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"removeData\":{\"name\":\"removeData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"sensitive\":true,\"api\":{\"include\":[\"get\",\"delete\"]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Session\",\"collectionExportName\":\"SessionCollection\",\"schema\":{\"tableName\":\"sessions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sessions\\\" (\\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 \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"status\\\" TEXT,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"user_agent\\\" TEXT DEFAULT '',\\n \\\"ip_address\\\" TEXT DEFAULT '',\\n \\\"last_accessed_at\\\" TIMESTAMP,\\n \\\"data\\\" JSON DEFAULT '{}',\\n \\\"auth_method\\\" TEXT,\\n \\\"parent_session_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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"user_agent\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"ip_address\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_accessed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"data\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"auth_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"parent_session_id\":{\"type\":\"UUID\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"sessions_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sessions_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"sessions_parent_session_id_idx\",\"columns\":[\"parent_session_id\"]},{\"name\":\"sessions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"sessions_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"b4260a0f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Tenant\":{\"name\":\"tenant\",\"className\":\"Tenant\",\"qualifiedName\":\"@happyvertical/smrt-users:Tenant\",\"collection\":\"tenants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Tenant.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"parentTenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"hierarchyLevel\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"hierarchyPath\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"cascadePermissions\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"inheritPermissions\":{\"type\":\"boolean\",\"required\":false,\"default\":true}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuspended\":{\"name\":\"isSuspended\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isRoot\":{\"name\":\"isRoot\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"canCascadeToChildren\":{\"name\":\"canCascadeToChildren\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"acceptsInheritance\":{\"name\":\"acceptsInheritance\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SmrtSaveOptions\",\"optional\":true}],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getAncestorIds\":{\"name\":\"getAncestorIds\",\"async\":false,\"parameters\":[],\"returnType\":\"string[]\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"Tenant\",\"collectionExportName\":\"TenantCollection\",\"schema\":{\"tableName\":\"tenants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenants\\\" (\\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 \\\"status\\\" TEXT,\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"parent_tenant_id\\\" UUID,\\n \\\"hierarchy_level\\\" INTEGER DEFAULT 0,\\n \\\"hierarchy_path\\\" TEXT DEFAULT '',\\n \\\"cascade_permissions\\\" BOOLEAN DEFAULT TRUE,\\n \\\"inherit_permissions\\\" 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\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"parent_tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"hierarchy_level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"hierarchy_path\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"cascade_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"inherit_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"tenants_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"tenants_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"tenants_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenants_parent_tenant_id_idx\",\"columns\":[\"parent_tenant_id\"]}],\"version\":\"934f7025\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantIntegration\":{\"name\":\"tenantintegration\",\"className\":\"TenantIntegration\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantIntegration\",\"collection\":\"tenantintegrations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/TenantIntegration.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"provider\":{\"type\":\"text\",\"required\":false,\"default\":\"aws\"},\"externalIds\":{\"type\":\"text\",\"required\":false},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"unprovisioned\"},\"lastCheckedAt\":{\"type\":\"datetime\",\"required\":false},\"lastCheckSummary\":{\"type\":\"text\",\"required\":false},\"lastError\":{\"type\":\"text\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getExternalIds\":{\"name\":\"getExternalIds\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, string>\",\"isStatic\":false,\"isPublic\":true},\"setExternalIds\":{\"name\":\"setExternalIds\",\"async\":false,\"parameters\":[{\"name\":\"externalIds\",\"type\":\"Record<string, string> | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, string>\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getExternalId\":{\"name\":\"getExternalId\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string | undefined\",\"isStatic\":false,\"isPublic\":true},\"setExternalId\":{\"name\":\"setExternalId\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"string | undefined\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"undefined\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getLastCheckSummary\":{\"name\":\"getLastCheckSummary\",\"async\":false,\"parameters\":[],\"returnType\":\"TenantIntegrationCheckSummary[]\",\"isStatic\":false,\"isPublic\":true},\"setLastCheckSummary\":{\"name\":\"setLastCheckSummary\",\"async\":false,\"parameters\":[{\"name\":\"summary\",\"type\":\"TenantIntegrationCheckSummary[] | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"TenantIntegrationCheckSummary[]\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"recordDoctorRun\":{\"name\":\"recordDoctorRun\",\"async\":false,\"parameters\":[{\"name\":\"outcome\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"TenantIntegrationStatus\",\"TenantIntegrationCheckSummary[]\",\"string | null\"]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"tenant_integrations\",\"conflictColumns\":[\"tenant_id\",\"provider\"],\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"TenantIntegration\",\"collectionExportName\":\"TenantIntegrationCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"tenant_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_integrations\\\" (\\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 NOT NULL,\\n \\\"provider\\\" TEXT DEFAULT 'aws',\\n \\\"external_ids\\\" TEXT,\\n \\\"status\\\" TEXT DEFAULT 'unprovisioned',\\n \\\"last_checked_at\\\" TIMESTAMP,\\n \\\"last_check_summary\\\" TEXT,\\n \\\"last_error\\\" TEXT\\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\":true,\"unique\":false},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"aws\"},\"external_ids\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"unprovisioned\"},\"last_checked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_check_summary\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_integrations_tenant_id_provider_idx\",\"columns\":[\"tenant_id\",\"provider\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"tenant_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"tenant_integrations_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"3ed31966\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantPermissionOverride\":{\"name\":\"tenantpermissionoverride\",\"className\":\"TenantPermissionOverride\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantPermissionOverride\",\"collection\":\"tenantpermissionoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/TenantPermissionOverride.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isInherit\":{\"name\":\"isInherit\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isGrant\":{\"name\":\"isGrant\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDeny\":{\"name\":\"isDeny\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"hasExplicitEffect\":{\"name\":\"hasExplicitEffect\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"TenantPermissionOverride\",\"collectionExportName\":\"TenantPermissionOverrideCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"tenant_permission_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_permission_overrides\\\" (\\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 NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_permission_overrides_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"tenant_permission_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenant_permission_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"95b78bdd\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:User\":{\"name\":\"user\",\"className\":\"User\",\"qualifiedName\":\"@happyvertical/smrt-users:User\",\"collection\":\"users\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/User.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"profileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"unique\":true}},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"unique\":true,\"readonly\":true},\"readonly\":true},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"lastLoginAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"hasValidEmail\":{\"name\":\"hasValidEmail\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuspended\":{\"name\":\"isSuspended\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPending\":{\"name\":\"isPending\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"recordLogin\":{\"name\":\"recordLogin\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"User\",\"collectionExportName\":\"UserCollection\",\"schema\":{\"tableName\":\"users\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users\\\" (\\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 UNIQUE,\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"email_key\\\" TEXT UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"last_login_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\":\"crossPackageRef\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_login_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_email_idx\",\"columns\":[\"email\"]},{\"name\":\"users_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"38fd1677\"},\"importPath\":\"@happyvertical/smrt-users\"}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-mobile-contract\",\"@happyvertical/smrt-profiles\",\"@happyvertical/smrt-tenancy\"]}"));
|
|
308
|
-
var __defProp$
|
|
309
|
-
var __getOwnPropDesc$
|
|
310
|
-
var __decorateClass$
|
|
311
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
307
|
+
ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-users\",\"packageVersion\":\"0.54.2\",\"objects\":{\"@happyvertical/smrt-users:AccessRequestCollection\":{\"name\":\"accessrequestcollection\",\"className\":\"AccessRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:AccessRequestCollection\",\"collection\":\"accessrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/AccessRequestCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpenByEmail\":{\"name\":\"findOpenByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"AccessRequestStatus\",\"optional\":false}],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<AccessRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"access_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AccessRequest\",\"exportName\":\"AccessRequestCollection\",\"collectionExportName\":\"AccessRequestCollectionCollection\",\"schema\":{\"tableName\":\"access_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"access_requests\\\" (\\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 \\\"email\\\" TEXT NOT NULL DEFAULT '',\\n \\\"name\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"source\\\" TEXT DEFAULT '',\\n \\\"request_context\\\" TEXT DEFAULT '{}',\\n \\\"note\\\" TEXT,\\n \\\"requested_at\\\" TIMESTAMP,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"decided_by\\\" TEXT,\\n \\\"resulting_user_id\\\" TEXT,\\n \\\"tenant_hint\\\" TEXT\\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\"},\"email\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"request_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"requested_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_user_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"tenant_hint\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"access_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"access_requests_email_idx\",\"columns\":[\"email\"]},{\"name\":\"access_requests_status_idx\",\"columns\":[\"status\"]},{\"name\":\"access_requests_source_idx\",\"columns\":[\"source\"]},{\"name\":\"access_requests_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"f396996f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection\":{\"name\":\"userscliauthapprovelimitcollection\",\"className\":\"UsersCliAuthApproveLimitCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection\",\"collection\":\"userscliauthapprovelimits\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthApproveLimitCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"reserveAttempt\":{\"name\":\"reserveAttempt\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"number\",\"string\"]}],\"returnType\":\"Promise<CliAuthApproveReservation>\",\"isStatic\":false,\"isPublic\":true},\"releaseAttempt\":{\"name\":\"releaseAttempt\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"windowStartedAt\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_approve_limits\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersCliAuthApproveLimit\",\"exportName\":\"UsersCliAuthApproveLimitCollection\",\"collectionExportName\":\"UsersCliAuthApproveLimitCollectionCollection\",\"schema\":{\"tableName\":\"users_cli_auth_approve_limits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_approve_limits\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_approve_limits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_cli_auth_approve_limits_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"c45c02de\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthRequestCollection\":{\"name\":\"userscliauthrequestcollection\",\"className\":\"UsersCliAuthRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthRequestCollection\",\"collection\":\"userscliauthrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthRequestCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"approvePendingRequest\":{\"name\":\"approvePendingRequest\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"ApprovePendingCliAuthRequestInput\",\"optional\":false}],\"returnType\":\"Promise<ApprovedCliAuthRequestSnapshot | null>\",\"isStatic\":false,\"isPublic\":true},\"consumeApprovedSession\":{\"name\":\"consumeApprovedSession\",\"async\":true,\"parameters\":[{\"name\":\"deviceCodeHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string | null>\",\"isStatic\":false,\"isPublic\":true},\"findByUserCode\":{\"name\":\"findByUserCode\",\"async\":true,\"parameters\":[{\"name\":\"userCode\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersCliAuthRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findByDeviceCodeHash\":{\"name\":\"findByDeviceCodeHash\",\"async\":true,\"parameters\":[{\"name\":\"deviceCodeHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersCliAuthRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersCliAuthRequest\",\"exportName\":\"UsersCliAuthRequestCollection\",\"collectionExportName\":\"UsersCliAuthRequestCollectionCollection\",\"schema\":{\"tableName\":\"users_cli_auth_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_requests\\\" (\\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 \\\"user_code\\\" TEXT NOT NULL UNIQUE,\\n \\\"device_code_hash\\\" TEXT NOT NULL UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"session_id\\\" UUID,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"approved_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\"},\"user_code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"device_code_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"session_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sessions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_requests_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"users_cli_auth_requests_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_cli_auth_requests_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"users_cli_auth_requests_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"users_cli_auth_requests_session_id_idx\",\"columns\":[\"session_id\"]}],\"version\":\"713ae04c\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupCollection\":{\"name\":\"groupcollection\",\"className\":\"GroupCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupCollection\",\"collection\":\"groups\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Group[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Group | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Group\",\"exportName\":\"GroupCollection\",\"collectionExportName\":\"GroupCollectionCollection\",\"schema\":{\"tableName\":\"groups\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"groups\\\" (\\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 NOT NULL,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" 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\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"groups_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"groups_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"1824c19b\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupMemberCollection\":{\"name\":\"groupmembercollection\",\"className\":\"GroupMemberCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupMemberCollection\",\"collection\":\"groupmembers\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupMemberCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByGroup\":{\"name\":\"findByGroup\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember[]>\",\"isStatic\":false,\"isPublic\":true},\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember[]>\",\"isStatic\":false,\"isPublic\":true},\"isMember\":{\"name\":\"isMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addMember\":{\"name\":\"addMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupMember>\",\"isStatic\":false,\"isPublic\":true},\"removeMember\":{\"name\":\"removeMember\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getGroupIds\":{\"name\":\"getGroupIds\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getGroupIdsForTenant\":{\"name\":\"getGroupIdsForTenant\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getUserIds\":{\"name\":\"getUserIds\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"GroupMember\",\"exportName\":\"GroupMemberCollection\",\"collectionExportName\":\"GroupMemberCollectionCollection\",\"schema\":{\"tableName\":\"group_members\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_members\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_members_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_members_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_members_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_members_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"ed4d1187\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupRoleCollection\":{\"name\":\"grouprolecollection\",\"className\":\"GroupRoleCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupRoleCollection\",\"collection\":\"grouproles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/GroupRoleCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByGroup\":{\"name\":\"findByGroup\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole[]>\",\"isStatic\":false,\"isPublic\":true},\"hasRole\":{\"name\":\"hasRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addRole\":{\"name\":\"addRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<GroupRole>\",\"isStatic\":false,\"isPublic\":true},\"removeRole\":{\"name\":\"removeRole\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false},{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getRoleIds\":{\"name\":\"getRoleIds\",\"async\":true,\"parameters\":[{\"name\":\"groupId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"GroupRole\",\"exportName\":\"GroupRoleCollection\",\"collectionExportName\":\"GroupRoleCollectionCollection\",\"schema\":{\"tableName\":\"group_roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_roles\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_roles_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_roles_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_roles_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_roles_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"b1e35f93\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAttemptCollection\":{\"name\":\"usersloginattemptcollection\",\"className\":\"UsersLoginAttemptCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAttemptCollection\",\"collection\":\"usersloginattempts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/LoginAttemptCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"reserveAttempt\":{\"name\":\"reserveAttempt\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"ReserveLoginAttemptInput\",\"optional\":false}],\"returnType\":\"Promise<LoginAttemptReservation>\",\"isStatic\":false,\"isPublic\":true},\"recordFailure\":{\"name\":\"recordFailure\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"RecordLoginFailureInput\",\"optional\":false}],\"returnType\":\"Promise<RecordedLoginFailure>\",\"isStatic\":false,\"isPublic\":true},\"releaseAttempt\":{\"name\":\"releaseAttempt\",\"async\":true,\"parameters\":[{\"name\":\"limiterKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"windowStartedAt\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"deleteIdle\":{\"name\":\"deleteIdle\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_attempts\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersLoginAttempt\",\"exportName\":\"UsersLoginAttemptCollection\",\"collectionExportName\":\"UsersLoginAttemptCollectionCollection\",\"schema\":{\"tableName\":\"users_login_attempts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_attempts\\\" (\\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 \\\"limiter_key\\\" TEXT NOT NULL UNIQUE,\\n \\\"scope\\\" TEXT NOT NULL,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL,\\n \\\"failure_streak\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"locked_until\\\" TIMESTAMP,\\n \\\"last_failed_at\\\" TIMESTAMP,\\n \\\"retain_until\\\" TIMESTAMP NOT NULL\\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\"},\"limiter_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"scope\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"failure_streak\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"locked_until\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_failed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"retain_until\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_attempts_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_attempts_locked_until_idx\",\"columns\":[\"locked_until\"]},{\"name\":\"users_login_attempts_retain_until_idx\",\"columns\":[\"retain_until\"]},{\"name\":\"users_login_attempts_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"89dfe336\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAuditEventCollection\":{\"name\":\"usersloginauditeventcollection\",\"className\":\"UsersLoginAuditEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAuditEventCollection\",\"collection\":\"usersloginauditevents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/LoginAuditEventCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"deleteOlderThan\":{\"name\":\"deleteOlderThan\",\"async\":true,\"parameters\":[{\"name\":\"maxAgeMs\",\"type\":\"number\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_audit_events\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersLoginAuditEvent\",\"exportName\":\"UsersLoginAuditEventCollection\",\"collectionExportName\":\"UsersLoginAuditEventCollectionCollection\",\"schema\":{\"tableName\":\"users_login_audit_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_audit_events\\\" (\\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 \\\"kind\\\" TEXT NOT NULL,\\n \\\"outcome\\\" TEXT NOT NULL,\\n \\\"subject_key_hash\\\" TEXT,\\n \\\"source_key_hash\\\" TEXT,\\n \\\"retry_after_seconds\\\" INTEGER,\\n \\\"occurred_at\\\" TIMESTAMP NOT NULL,\\n \\\"metadata\\\" TEXT\\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\"},\"kind\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"outcome\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"subject_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"retry_after_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_audit_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_audit_events_subject_key_hash_idx\",\"columns\":[\"subject_key_hash\"]},{\"name\":\"users_login_audit_events_source_key_hash_idx\",\"columns\":[\"source_key_hash\"]},{\"name\":\"users_login_audit_events_occurred_at_idx\",\"columns\":[\"occurred_at\"]},{\"name\":\"users_login_audit_events_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"485105a9\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersMagicLinkTokenCollection\":{\"name\":\"usersmagiclinktokencollection\",\"className\":\"UsersMagicLinkTokenCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersMagicLinkTokenCollection\",\"collection\":\"usersmagiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MagicLinkTokenCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByNonce\":{\"name\":\"findByNonce\",\"async\":true,\"parameters\":[{\"name\":\"nonce\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersMagicLinkToken | null>\",\"isStatic\":false,\"isPublic\":true},\"markUsed\":{\"name\":\"markUsed\",\"async\":true,\"parameters\":[{\"name\":\"nonce\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_magic_link_tokens\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersMagicLinkToken\",\"exportName\":\"UsersMagicLinkTokenCollection\",\"collectionExportName\":\"UsersMagicLinkTokenCollectionCollection\",\"schema\":{\"tableName\":\"users_magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_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 \\\"nonce\\\" TEXT NOT NULL UNIQUE DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"used\\\" BOOLEAN DEFAULT FALSE,\\n \\\"expires_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\"},\"nonce\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"used\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_magic_link_tokens_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"537853d3\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipCollection\":{\"name\":\"membershipcollection\",\"className\":\"MembershipCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipCollection\",\"collection\":\"memberships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findActiveByUser\":{\"name\":\"findActiveByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findActiveByTenant\":{\"name\":\"findActiveByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByUserAndTenant\":{\"name\":\"findByUserAndTenant\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership | null>\",\"isStatic\":false,\"isPublic\":true},\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"MembershipStatus\",\"optional\":false}],\"returnType\":\"Promise<Membership[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Membership\",\"exportName\":\"MembershipCollection\",\"collectionExportName\":\"MembershipCollectionCollection\",\"schema\":{\"tableName\":\"memberships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"memberships\\\" (\\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 \\\"user_id\\\" UUID NOT NULL,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL,\\n \\\"status\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"memberships_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"memberships_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"memberships_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"memberships_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"ebfd11e0\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipOverrideCollection\":{\"name\":\"membershipoverridecollection\",\"className\":\"MembershipOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipOverrideCollection\",\"collection\":\"membershipoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipOverrideCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByMembership\":{\"name\":\"findByMembership\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findGrants\":{\"name\":\"findGrants\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findDenies\":{\"name\":\"findDenies\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"getGrantedPermissionIds\":{\"name\":\"getGrantedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getDeniedPermissionIds\":{\"name\":\"getDeniedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"OverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"grantPermission\":{\"name\":\"grantPermission\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true},\"denyPermission\":{\"name\":\"denyPermission\",\"async\":true,\"parameters\":[{\"name\":\"membershipId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<MembershipOverride>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"MembershipOverride\",\"exportName\":\"MembershipOverrideCollection\",\"collectionExportName\":\"MembershipOverrideCollectionCollection\",\"schema\":{\"tableName\":\"membership_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"membership_overrides\\\" (\\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 \\\"membership_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\"},\"membership_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"memberships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"membership_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"membership_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"membership_overrides_membership_id_idx\",\"columns\":[\"membership_id\"]},{\"name\":\"membership_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"25fe9da8\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPasswordCredentialCollection\":{\"name\":\"userspasswordcredentialcollection\",\"className\":\"UsersPasswordCredentialCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPasswordCredentialCollection\",\"collection\":\"userspasswordcredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/PasswordCredentialCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByUserId\":{\"name\":\"findByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersPasswordCredential | null>\",\"isStatic\":false,\"isPublic\":true},\"insertIfAbsent\":{\"name\":\"insertIfAbsent\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"write\",\"type\":\"PasswordCredentialWrite\",\"optional\":false}],\"returnType\":\"Promise<UsersPasswordCredential | null>\",\"isStatic\":false,\"isPublic\":true},\"upsertForUser\":{\"name\":\"upsertForUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"write\",\"type\":\"PasswordCredentialWrite\",\"optional\":false}],\"returnType\":\"Promise<UsersPasswordCredential>\",\"isStatic\":false,\"isPublic\":true},\"replaceIfCurrent\":{\"name\":\"replaceIfCurrent\",\"async\":true,\"parameters\":[{\"name\":\"expected\",\"type\":\"UsersPasswordCredential\",\"optional\":false},{\"name\":\"write\",\"type\":\"Omit<PasswordCredentialWrite, 'mustChange'>\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteIfCurrent\":{\"name\":\"deleteIfCurrent\",\"async\":true,\"parameters\":[{\"name\":\"expected\",\"type\":\"UsersPasswordCredential\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"replaceHashIfUnchanged\":{\"name\":\"replaceHashIfUnchanged\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"expectedHash\",\"type\":\"string\",\"optional\":false},{\"name\":\"upgradedHash\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteByUserId\":{\"name\":\"deleteByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_password_credentials\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersPasswordCredential\",\"exportName\":\"UsersPasswordCredentialCollection\",\"collectionExportName\":\"UsersPasswordCredentialCollectionCollection\",\"schema\":{\"tableName\":\"users_password_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_password_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"password_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_change\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"password_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_change\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_password_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_password_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"9a828f77\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:PermissionCollection\":{\"name\":\"permissioncollection\",\"className\":\"PermissionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:PermissionCollection\",\"collection\":\"permissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/PermissionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByCategory\":{\"name\":\"findByCategory\",\"async\":true,\"parameters\":[{\"name\":\"category\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Permission[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Permission | null>\",\"isStatic\":false,\"isPublic\":true},\"findByIds\":{\"name\":\"findByIds\",\"async\":true,\"parameters\":[{\"name\":\"ids\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, Permission>>\",\"isStatic\":false,\"isPublic\":true},\"getCategories\":{\"name\":\"getCategories\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"findOrCreate\":{\"name\":\"findOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"Partial<object>\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<Permission>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Permission\",\"exportName\":\"PermissionCollection\",\"collectionExportName\":\"PermissionCollectionCollection\",\"schema\":{\"tableName\":\"permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"permissions\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"category\\\" 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\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"category\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"permissions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"4c81b2af\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPinCredentialCollection\":{\"name\":\"userspincredentialcollection\",\"className\":\"UsersPinCredentialCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPinCredentialCollection\",\"collection\":\"userspincredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/PinCredentialCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByUserId\":{\"name\":\"findByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<UsersPinCredential | null>\",\"isStatic\":false,\"isPublic\":true},\"upsertForUser\":{\"name\":\"upsertForUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"write\",\"type\":\"PinCredentialWrite\",\"optional\":false}],\"returnType\":\"Promise<UsersPinCredential>\",\"isStatic\":false,\"isPublic\":true},\"deleteByUserId\":{\"name\":\"deleteByUserId\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_pin_credentials\",\"api\":false,\"mcp\":false,\"cli\":false},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"UsersPinCredential\",\"exportName\":\"UsersPinCredentialCollection\",\"collectionExportName\":\"UsersPinCredentialCollectionCollection\",\"schema\":{\"tableName\":\"users_pin_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_pin_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"pin_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_reset\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pin_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_reset\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_pin_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_pin_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"0e2fa003\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:ResourceGrantCollection\":{\"name\":\"resourcegrantcollection\",\"className\":\"ResourceGrantCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:ResourceGrantCollection\",\"collection\":\"resourcegrants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/ResourceGrantCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findExact\":{\"name\":\"findExact\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceType\",\"type\":\"string\",\"optional\":false},{\"name\":\"resourceId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permission\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ResourceGrant[]>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentGrantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ResourceGrant[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ResourceGrant\",\"exportName\":\"ResourceGrantCollection\",\"collectionExportName\":\"ResourceGrantCollectionCollection\",\"schema\":{\"tableName\":\"resource_grants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"resource_grants\\\" (\\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 NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL,\\n \\\"resource_type\\\" TEXT,\\n \\\"resource_id\\\" TEXT,\\n \\\"permission\\\" TEXT,\\n \\\"effect\\\" TEXT,\\n \\\"can_delegate\\\" BOOLEAN DEFAULT FALSE,\\n \\\"parent_grant_id\\\" UUID,\\n \\\"revoked_at\\\" TEXT\\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\":true,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"permission\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"can_delegate\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"parent_grant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"resource_grants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"revoked_at\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"resource_grants_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"resource_grants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"resource_grants_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"resource_grants_parent_grant_id_idx\",\"columns\":[\"parent_grant_id\"]}],\"version\":\"52e03776\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RoleCollection\":{\"name\":\"rolecollection\",\"className\":\"RoleCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:RoleCollection\",\"collection\":\"roles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/RoleCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findSystemRoles\":{\"name\":\"findSystemRoles\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findTenantRoles\":{\"name\":\"findTenantRoles\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Role | null>\",\"isStatic\":false,\"isPublic\":true},\"findSystemRoleBySlug\":{\"name\":\"findSystemRoleBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Role | null>\",\"isStatic\":false,\"isPublic\":true},\"seedSystemRoles\":{\"name\":\"seedSystemRoles\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SeedSystemRolesOptions\",\"optional\":true}],\"returnType\":\"Promise<Role[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Role\",\"exportName\":\"RoleCollection\",\"collectionExportName\":\"RoleCollectionCollection\",\"schema\":{\"tableName\":\"roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"roles\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"is_system\\\" BOOLEAN DEFAULT FALSE,\\n \\\"inherits_to_descendants\\\" 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\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"is_system\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"inherits_to_descendants\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false}},\"indexes\":[{\"name\":\"roles_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"roles_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"47369d9d\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RolePermissionCollection\":{\"name\":\"rolepermissioncollection\",\"className\":\"RolePermissionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:RolePermissionCollection\",\"collection\":\"rolepermissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/RolePermissionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByRole\":{\"name\":\"findByRole\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission[]>\",\"isStatic\":false,\"isPublic\":true},\"findByPermission\":{\"name\":\"findByPermission\",\"async\":true,\"parameters\":[{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission[]>\",\"isStatic\":false,\"isPublic\":true},\"hasPermission\":{\"name\":\"hasPermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"addPermission\":{\"name\":\"addPermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<RolePermission>\",\"isStatic\":false,\"isPublic\":true},\"removePermission\":{\"name\":\"removePermission\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getPermissionIds\":{\"name\":\"getPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"roleId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"seedRolePermissions\":{\"name\":\"seedRolePermissions\",\"async\":true,\"parameters\":[{\"name\":\"matrix\",\"type\":\"RolePermissionPatternMatrix\",\"optional\":true},{\"name\":\"options\",\"type\":\"SeedRolePermissionsOptions\",\"optional\":true}],\"returnType\":\"Promise<SeedRolePermissionsResult>\",\"isStatic\":false,\"isPublic\":true},\"seedDefaultRolePersonalizationPermissions\":{\"name\":\"seedDefaultRolePersonalizationPermissions\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"Omit<SeedRolePermissionsOptions, 'prune'>\",\"optional\":true}],\"returnType\":\"Promise<SeedRolePermissionsResult>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"RolePermission\",\"exportName\":\"RolePermissionCollection\",\"collectionExportName\":\"RolePermissionCollectionCollection\",\"schema\":{\"tableName\":\"role_permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"role_permissions\\\" (\\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 \\\"role_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL\\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\"},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"role_permissions_role_id_permission_id_idx\",\"columns\":[\"role_id\",\"permission_id\"],\"unique\":true},{\"name\":\"role_permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"role_permissions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"role_permissions_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"4dfed3ac\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:SessionCollection\":{\"name\":\"sessioncollection\",\"className\":\"SessionCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:SessionCollection\",\"collection\":\"sessions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/SessionCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"createSession\":{\"name\":\"createSession\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"CreateSessionOptions\",\"optional\":false}],\"returnType\":\"Promise<Session>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentSessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session[]>\",\"isStatic\":false,\"isPublic\":true},\"revokeChildren\":{\"name\":\"revokeChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentSessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeUserSessionsByAuthMethod\":{\"name\":\"revokeUserSessionsByAuthMethod\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"authMethod\",\"type\":\"SessionAuthMethod\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findValidSession\":{\"name\":\"findValidSession\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session | null>\",\"isStatic\":false,\"isPublic\":true},\"touch\":{\"name\":\"touch\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"extendTtl\",\"type\":\"boolean\",\"optional\":true},{\"name\":\"ttl\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"findByUser\":{\"name\":\"findByUser\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Session[]>\",\"isStatic\":false,\"isPublic\":true},\"deleteUserSessions\":{\"name\":\"deleteUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeUserSessions\":{\"name\":\"revokeUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"revokeSession\":{\"name\":\"revokeSession\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"deleteExpired\":{\"name\":\"deleteExpired\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"boolean\"]}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"countUserSessions\":{\"name\":\"countUserSessions\",\"async\":true,\"parameters\":[{\"name\":\"userId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"setSessionTenant\":{\"name\":\"setSessionTenant\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"setSessionData\":{\"name\":\"setSessionData\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"getSessionData\":{\"name\":\"getSessionData\",\"async\":true,\"parameters\":[{\"name\":\"sessionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<T | undefined>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Session\",\"exportName\":\"SessionCollection\",\"collectionExportName\":\"SessionCollectionCollection\",\"schema\":{\"tableName\":\"sessions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sessions\\\" (\\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 \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"status\\\" TEXT,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"user_agent\\\" TEXT DEFAULT '',\\n \\\"ip_address\\\" TEXT DEFAULT '',\\n \\\"last_accessed_at\\\" TIMESTAMP,\\n \\\"data\\\" JSON DEFAULT '{}',\\n \\\"auth_method\\\" TEXT,\\n \\\"parent_session_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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"user_agent\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"ip_address\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_accessed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"data\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"auth_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"parent_session_id\":{\"type\":\"UUID\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"sessions_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sessions_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"sessions_parent_session_id_idx\",\"columns\":[\"parent_session_id\"]},{\"name\":\"sessions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"sessions_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"b4260a0f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantCollection\":{\"name\":\"tenantcollection\",\"className\":\"TenantCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantCollection\",\"collection\":\"tenants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"TenantStatus\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySlug\":{\"name\":\"findBySlug\",\"async\":true,\"parameters\":[{\"name\":\"slug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant | null>\",\"isStatic\":false,\"isPublic\":true},\"findRoots\":{\"name\":\"findRoots\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findChildren\":{\"name\":\"findChildren\",\"async\":true,\"parameters\":[{\"name\":\"parentTenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"findParent\":{\"name\":\"findParent\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant | null>\",\"isStatic\":false,\"isPublic\":true},\"getAncestors\":{\"name\":\"getAncestors\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getAncestorsFromRoot\":{\"name\":\"getAncestorsFromRoot\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getDescendants\":{\"name\":\"getDescendants\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"getSiblings\":{\"name\":\"getSiblings\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant[]>\",\"isStatic\":false,\"isPublic\":true},\"isAncestorOf\":{\"name\":\"isAncestorOf\",\"async\":true,\"parameters\":[{\"name\":\"potentialAncestorId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isDescendantOf\":{\"name\":\"isDescendantOf\",\"async\":true,\"parameters\":[{\"name\":\"potentialDescendantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"createChild\":{\"name\":\"createChild\",\"async\":true,\"parameters\":[{\"name\":\"parentTenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"CreateChildTenantOptions\",\"optional\":false}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"moveToParent\":{\"name\":\"moveToParent\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"newParentId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"makeRoot\":{\"name\":\"makeRoot\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Tenant>\",\"isStatic\":false,\"isPublic\":true},\"validateHierarchy\":{\"name\":\"validateHierarchy\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getTree\":{\"name\":\"getTree\",\"async\":true,\"parameters\":[{\"name\":\"rootTenantId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Tenant\",\"exportName\":\"TenantCollection\",\"collectionExportName\":\"TenantCollectionCollection\",\"schema\":{\"tableName\":\"tenants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenants\\\" (\\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 \\\"status\\\" TEXT,\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"parent_tenant_id\\\" UUID,\\n \\\"hierarchy_level\\\" INTEGER DEFAULT 0,\\n \\\"hierarchy_path\\\" TEXT DEFAULT '',\\n \\\"cascade_permissions\\\" BOOLEAN DEFAULT TRUE,\\n \\\"inherit_permissions\\\" 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\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"parent_tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"hierarchy_level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"hierarchy_path\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"cascade_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"inherit_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"tenants_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"tenants_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"tenants_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenants_parent_tenant_id_idx\",\"columns\":[\"parent_tenant_id\"]}],\"version\":\"934f7025\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantIntegrationCollection\":{\"name\":\"tenantintegrationcollection\",\"className\":\"TenantIntegrationCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantIntegrationCollection\",\"collection\":\"tenantintegrations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantIntegrationCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"listForTenant\":{\"name\":\"listForTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration[]>\",\"isStatic\":false,\"isPublic\":true},\"findFor\":{\"name\":\"findFor\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"provider\",\"type\":\"TenantIntegrationProvider\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration | null>\",\"isStatic\":false,\"isPublic\":true},\"findOrInit\":{\"name\":\"findOrInit\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"provider\",\"type\":\"TenantIntegrationProvider\",\"optional\":false}],\"returnType\":\"Promise<TenantIntegration>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"tenant_integrations\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"TenantIntegration\",\"exportName\":\"TenantIntegrationCollection\",\"collectionExportName\":\"TenantIntegrationCollectionCollection\",\"schema\":{\"tableName\":\"tenant_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_integrations\\\" (\\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 NOT NULL,\\n \\\"provider\\\" TEXT DEFAULT 'aws',\\n \\\"external_ids\\\" TEXT,\\n \\\"status\\\" TEXT DEFAULT 'unprovisioned',\\n \\\"last_checked_at\\\" TIMESTAMP,\\n \\\"last_check_summary\\\" TEXT,\\n \\\"last_error\\\" TEXT\\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\":true,\"unique\":false},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"aws\"},\"external_ids\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"unprovisioned\"},\"last_checked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_check_summary\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_integrations_tenant_id_provider_idx\",\"columns\":[\"tenant_id\",\"provider\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"tenant_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"tenant_integrations_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"3ed31966\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantPermissionOverrideCollection\":{\"name\":\"tenantpermissionoverridecollection\",\"className\":\"TenantPermissionOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantPermissionOverrideCollection\",\"collection\":\"tenantpermissionoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/TenantPermissionOverrideCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findGrants\":{\"name\":\"findGrants\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findDenies\":{\"name\":\"findDenies\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findInherits\":{\"name\":\"findInherits\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"getGrantedPermissionIds\":{\"name\":\"getGrantedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getDeniedPermissionIds\":{\"name\":\"getDeniedPermissionIds\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getOverridesByEffect\":{\"name\":\"getOverridesByEffect\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverrideResult>\",\"isStatic\":false,\"isPublic\":true},\"getOverridesByEffectBatch\":{\"name\":\"getOverridesByEffectBatch\",\"async\":true,\"parameters\":[{\"name\":\"tenantIds\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, TenantPermissionOverrideResult>>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"TenantPermissionEffect\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"removeAllOverrides\":{\"name\":\"removeAllOverrides\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"grantPermission\":{\"name\":\"grantPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"denyPermission\":{\"name\":\"denyPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"inheritPermission\":{\"name\":\"inheritPermission\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"permissionId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride>\",\"isStatic\":false,\"isPublic\":true},\"bulkSetOverrides\":{\"name\":\"bulkSetOverrides\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"overrides\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\",\"TenantPermissionEffect\"]}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"copyOverrides\":{\"name\":\"copyOverrides\",\"async\":true,\"parameters\":[{\"name\":\"fromTenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"toTenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<TenantPermissionOverride[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"TenantPermissionOverride\",\"exportName\":\"TenantPermissionOverrideCollection\",\"collectionExportName\":\"TenantPermissionOverrideCollectionCollection\",\"schema\":{\"tableName\":\"tenant_permission_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_permission_overrides\\\" (\\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 NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_permission_overrides_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"tenant_permission_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenant_permission_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"95b78bdd\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UserCollection\":{\"name\":\"usercollection\",\"className\":\"UserCollection\",\"qualifiedName\":\"@happyvertical/smrt-users:UserCollection\",\"collection\":\"users\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/collections/UserCollection.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{},\"methods\":{\"findByEmail\":{\"name\":\"findByEmail\",\"async\":true,\"parameters\":[{\"name\":\"email\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<User | null>\",\"isStatic\":false,\"isPublic\":true},\"findByProfile\":{\"name\":\"findByProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<User | null>\",\"isStatic\":false,\"isPublic\":true},\"findByStatus\":{\"name\":\"findByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"UserStatus\",\"optional\":false}],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"findPending\":{\"name\":\"findPending\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<User[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateForProfile\":{\"name\":\"getOrCreateForProfile\",\"async\":true,\"parameters\":[{\"name\":\"profileId\",\"type\":\"string\",\"optional\":false},{\"name\":\"email\",\"type\":\"string\",\"optional\":false},{\"name\":\"defaults\",\"type\":\"Partial<object>\",\"optional\":true,\"memberTypes\":[\"UserStatus\"]}],\"returnType\":\"Promise<User>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreateFromOidc\":{\"name\":\"getOrCreateFromOidc\",\"async\":true,\"parameters\":[{\"name\":\"claims\",\"type\":\"OidcClaims\",\"optional\":false},{\"name\":\"provider\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"GetOrCreateFromOidcOptions\",\"optional\":true}],\"returnType\":\"Promise<OidcIdentityResult>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"User\",\"exportName\":\"UserCollection\",\"collectionExportName\":\"UserCollectionCollection\",\"schema\":{\"tableName\":\"users\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users\\\" (\\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 UNIQUE,\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"email_key\\\" TEXT UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"last_login_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\":\"crossPackageRef\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_login_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_email_idx\",\"columns\":[\"email\"]},{\"name\":\"users_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"38fd1677\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:AccessRequest\":{\"name\":\"accessrequest\",\"className\":\"AccessRequest\",\"qualifiedName\":\"@happyvertical/smrt-users:AccessRequest\",\"collection\":\"accessrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/AccessRequest.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"email\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true,\"indexed\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"indexed\":true}},\"source\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"requestContext\":{\"type\":\"text\",\"required\":false,\"default\":\"{}\"},\"note\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"requestedAt\":{\"type\":\"datetime\",\"required\":false},\"decidedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"decidedBy\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"resultingUserId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"tenantHint\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{\"getRequestContext\":{\"name\":\"getRequestContext\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setRequestContext\":{\"name\":\"setRequestContext\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getTenantHint\":{\"name\":\"getTenantHint\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown> | null\",\"isStatic\":false,\"isPublic\":true},\"setTenantHint\":{\"name\":\"setTenantHint\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown> | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, unknown>\"},{\"type\":\"null\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"isOpen\":{\"name\":\"isOpen\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isApproved\":{\"name\":\"isApproved\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isTerminal\":{\"name\":\"isTerminal\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"access_requests\",\"conflictColumns\":[\"id\"],\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"include\":[]}},\"extends\":\"SmrtObject\",\"exportName\":\"AccessRequest\",\"collectionExportName\":\"AccessRequestCollection\",\"validationRules\":[{\"field\":\"email\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"access_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"access_requests\\\" (\\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 \\\"email\\\" TEXT NOT NULL DEFAULT '',\\n \\\"name\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"source\\\" TEXT DEFAULT '',\\n \\\"request_context\\\" TEXT DEFAULT '{}',\\n \\\"note\\\" TEXT,\\n \\\"requested_at\\\" TIMESTAMP,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"decided_by\\\" TEXT,\\n \\\"resulting_user_id\\\" TEXT,\\n \\\"tenant_hint\\\" TEXT\\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\"},\"email\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"request_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"{}\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"requested_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"decided_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_user_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"tenant_hint\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"access_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"access_requests_email_idx\",\"columns\":[\"email\"]},{\"name\":\"access_requests_status_idx\",\"columns\":[\"status\"]},{\"name\":\"access_requests_source_idx\",\"columns\":[\"source\"]},{\"name\":\"access_requests_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"f396996f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthApproveLimit\":{\"name\":\"userscliauthapprovelimit\",\"className\":\"UsersCliAuthApproveLimit\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthApproveLimit\",\"collection\":\"userscliauthapprovelimits\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthApproveLimit.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true,\"unique\":true}},\"attemptCount\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"windowStartedAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_approve_limits\",\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersCliAuthApproveLimit\",\"collectionExportName\":\"UsersCliAuthApproveLimitCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"attemptCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"windowStartedAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_cli_auth_approve_limits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_approve_limits\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_approve_limits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_cli_auth_approve_limits_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"c45c02de\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersCliAuthRequest\":{\"name\":\"userscliauthrequest\",\"className\":\"UsersCliAuthRequest\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersCliAuthRequest\",\"collection\":\"userscliauthrequests\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthRequest.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userCode\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"deviceCodeHash\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"userId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"User\",\"_meta\":{\"nullable\":true}},\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"sessionId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Session\",\"_meta\":{\"nullable\":true}},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}},\"approvedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_cli_auth_requests\",\"sensitive\":true,\"api\":{\"include\":[]},\"cli\":{\"include\":[]},\"mcp\":{\"include\":[]},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"UsersCliAuthRequest\",\"collectionExportName\":\"UsersCliAuthRequestCollection\",\"validationRules\":[{\"field\":\"userCode\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"deviceCodeHash\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"users_cli_auth_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_cli_auth_requests\\\" (\\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 \\\"user_code\\\" TEXT NOT NULL UNIQUE,\\n \\\"device_code_hash\\\" TEXT NOT NULL UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"session_id\\\" UUID,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"approved_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\"},\"user_code\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"device_code_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"session_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"sessions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_cli_auth_requests_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"users_cli_auth_requests_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_cli_auth_requests_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"users_cli_auth_requests_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"users_cli_auth_requests_session_id_idx\",\"columns\":[\"session_id\"]}],\"version\":\"713ae04c\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Group\":{\"name\":\"group\",\"className\":\"Group\",\"qualifiedName\":\"@happyvertical/smrt-users:Group\",\"collection\":\"groups\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Group.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Group\",\"collectionExportName\":\"GroupCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"groups\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"groups\\\" (\\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 NOT NULL,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" 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\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"groups_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"groups_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"1824c19b\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupMember\":{\"name\":\"groupmember\",\"className\":\"GroupMember\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupMember\",\"collection\":\"groupmembers\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/GroupMember.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"groupId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Group\",\"_meta\":{\"required\":true}},\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true},\"extends\":\"SmrtObject\",\"exportName\":\"GroupMember\",\"collectionExportName\":\"GroupMemberCollection\",\"validationRules\":[{\"field\":\"groupId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"group_members\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_members\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_members_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_members_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_members_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_members_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"ed4d1187\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:GroupRole\":{\"name\":\"grouprole\",\"className\":\"GroupRole\",\"qualifiedName\":\"@happyvertical/smrt-users:GroupRole\",\"collection\":\"grouproles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/GroupRole.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"groupId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Group\",\"_meta\":{\"required\":true}},\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true},\"extends\":\"SmrtObject\",\"exportName\":\"GroupRole\",\"collectionExportName\":\"GroupRoleCollection\",\"validationRules\":[{\"field\":\"groupId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"group_roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"group_roles\\\" (\\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 \\\"group_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL\\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\"},\"group_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"groups\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"group_roles_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"group_roles_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"group_roles_group_id_idx\",\"columns\":[\"group_id\"]},{\"name\":\"group_roles_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"b1e35f93\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAttempt\":{\"name\":\"usersloginattempt\",\"className\":\"UsersLoginAttempt\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAttempt\",\"collection\":\"usersloginattempts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/LoginAttempt.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"limiterKey\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"unique\":true}},\"scope\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"attemptCount\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"windowStartedAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true}},\"failureStreak\":{\"type\":\"integer\",\"required\":true,\"default\":0,\"_meta\":{\"required\":true,\"default\":0}},\"lockedUntil\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"lastFailedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"retainUntil\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true,\"indexed\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_login_attempts\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersLoginAttempt\",\"collectionExportName\":\"UsersLoginAttemptCollection\",\"validationRules\":[{\"field\":\"limiterKey\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"scope\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"attemptCount\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"windowStartedAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"},{\"field\":\"failureStreak\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"retainUntil\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_login_attempts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_attempts\\\" (\\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 \\\"limiter_key\\\" TEXT NOT NULL UNIQUE,\\n \\\"scope\\\" TEXT NOT NULL,\\n \\\"attempt_count\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"window_started_at\\\" TIMESTAMP NOT NULL,\\n \\\"failure_streak\\\" INTEGER NOT NULL DEFAULT 0,\\n \\\"locked_until\\\" TIMESTAMP,\\n \\\"last_failed_at\\\" TIMESTAMP,\\n \\\"retain_until\\\" TIMESTAMP NOT NULL\\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\"},\"limiter_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true},\"scope\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"attempt_count\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"window_started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"failure_streak\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":0},\"locked_until\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_failed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"retain_until\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_attempts_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_attempts_locked_until_idx\",\"columns\":[\"locked_until\"]},{\"name\":\"users_login_attempts_retain_until_idx\",\"columns\":[\"retain_until\"]},{\"name\":\"users_login_attempts_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"89dfe336\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersLoginAuditEvent\":{\"name\":\"usersloginauditevent\",\"className\":\"UsersLoginAuditEvent\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersLoginAuditEvent\",\"collection\":\"usersloginauditevents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/LoginAuditEvent.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"kind\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"outcome\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true}},\"subjectKeyHash\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"sourceKeyHash\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"indexed\":true}},\"retryAfterSeconds\":{\"type\":\"integer\",\"required\":false,\"_meta\":{\"nullable\":true}},\"occurredAt\":{\"type\":\"datetime\",\"required\":true,\"_meta\":{\"required\":true,\"indexed\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_login_audit_events\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersLoginAuditEvent\",\"collectionExportName\":\"UsersLoginAuditEventCollection\",\"validationRules\":[{\"field\":\"kind\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"outcome\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"occurredAt\",\"rule\":\"required\",\"fieldType\":\"datetime\"}],\"schema\":{\"tableName\":\"users_login_audit_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_login_audit_events\\\" (\\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 \\\"kind\\\" TEXT NOT NULL,\\n \\\"outcome\\\" TEXT NOT NULL,\\n \\\"subject_key_hash\\\" TEXT,\\n \\\"source_key_hash\\\" TEXT,\\n \\\"retry_after_seconds\\\" INTEGER,\\n \\\"occurred_at\\\" TIMESTAMP NOT NULL,\\n \\\"metadata\\\" TEXT\\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\"},\"kind\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"outcome\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"subject_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_key_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"retry_after_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_login_audit_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_login_audit_events_subject_key_hash_idx\",\"columns\":[\"subject_key_hash\"]},{\"name\":\"users_login_audit_events_source_key_hash_idx\",\"columns\":[\"source_key_hash\"]},{\"name\":\"users_login_audit_events_occurred_at_idx\",\"columns\":[\"occurred_at\"]},{\"name\":\"users_login_audit_events_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"485105a9\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersMagicLinkToken\":{\"name\":\"usersmagiclinktoken\",\"className\":\"UsersMagicLinkToken\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersMagicLinkToken\",\"collection\":\"usersmagiclinktokens\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/MagicLinkToken.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"nonce\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true,\"unique\":true}},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"used\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}}},\"methods\":{\"isExpired\":{\"name\":\"isExpired\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isValid\":{\"name\":\"isValid\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"users_magic_link_tokens\",\"sensitive\":true,\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"UsersMagicLinkToken\",\"collectionExportName\":\"UsersMagicLinkTokenCollection\",\"validationRules\":[{\"field\":\"nonce\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"users_magic_link_tokens\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_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 \\\"nonce\\\" TEXT NOT NULL UNIQUE DEFAULT '',\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"used\\\" BOOLEAN DEFAULT FALSE,\\n \\\"expires_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\"},\"nonce\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":true,\"default\":\"\"},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"used\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_magic_link_tokens_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_magic_link_tokens_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"users_magic_link_tokens_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"537853d3\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Membership\":{\"name\":\"membership\",\"className\":\"Membership\",\"qualifiedName\":\"@happyvertical/smrt-users:Membership\",\"collection\":\"memberships\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Membership.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}},\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPending\":{\"name\":\"isPending\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"indexes\":[{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenantId\",\"userId\"]}],\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Membership\",\"collectionExportName\":\"MembershipCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"memberships\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"memberships\\\" (\\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 \\\"user_id\\\" UUID NOT NULL,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"role_id\\\" UUID NOT NULL,\\n \\\"status\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"memberships_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"memberships_tenant_id_user_id_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"memberships_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"memberships_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"memberships_role_id_idx\",\"columns\":[\"role_id\"]}],\"version\":\"ebfd11e0\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:MembershipOverride\":{\"name\":\"membershipoverride\",\"className\":\"MembershipOverride\",\"qualifiedName\":\"@happyvertical/smrt-users:MembershipOverride\",\"collection\":\"membershipoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/MembershipOverride.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"membershipId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Membership\",\"_meta\":{\"required\":true}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isGrant\":{\"name\":\"isGrant\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDeny\":{\"name\":\"isDeny\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"MembershipOverride\",\"collectionExportName\":\"MembershipOverrideCollection\",\"validationRules\":[{\"field\":\"membershipId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"membership_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"membership_overrides\\\" (\\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 \\\"membership_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\"},\"membership_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"memberships\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"membership_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"membership_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"membership_overrides_membership_id_idx\",\"columns\":[\"membership_id\"]},{\"name\":\"membership_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"25fe9da8\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPasswordCredential\":{\"name\":\"userspasswordcredential\",\"className\":\"UsersPasswordCredential\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPasswordCredential\",\"collection\":\"userspasswordcredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/PasswordCredential.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true,\"unique\":true}},\"passwordHash\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"sensitive\":true},\"sensitive\":true},\"version\":{\"type\":\"integer\",\"required\":true,\"default\":1,\"_meta\":{\"required\":true,\"default\":1}},\"mustChange\":{\"type\":\"boolean\",\"required\":true,\"default\":false,\"_meta\":{\"required\":true,\"default\":false}},\"rotatedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"rotatedBy\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_password_credentials\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersPasswordCredential\",\"collectionExportName\":\"UsersPasswordCredentialCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"passwordHash\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"version\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"mustChange\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"users_password_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_password_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"password_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_change\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"password_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_change\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_password_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_password_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"9a828f77\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Permission\":{\"name\":\"permission\",\"className\":\"Permission\",\"qualifiedName\":\"@happyvertical/smrt-users:Permission\",\"collection\":\"permissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Permission.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"category\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"parseSlug\":{\"name\":\"parseSlug\",\"async\":false,\"parameters\":[],\"returnType\":\"ParsedPermissionSlug\",\"isStatic\":false,\"isPublic\":true},\"getResource\":{\"name\":\"getResource\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"getAction\":{\"name\":\"getAction\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"isValidSlug\":{\"name\":\"isValidSlug\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"Permission\",\"collectionExportName\":\"PermissionCollection\",\"schema\":{\"tableName\":\"permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"permissions\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"category\\\" 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\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"category\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"permissions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"4c81b2af\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:UsersPinCredential\":{\"name\":\"userspincredential\",\"className\":\"UsersPinCredential\",\"qualifiedName\":\"@happyvertical/smrt-users:UsersPinCredential\",\"collection\":\"userspincredentials\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/PinCredential.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true,\"unique\":true}},\"pinHash\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"required\":true,\"sensitive\":true},\"sensitive\":true},\"version\":{\"type\":\"integer\",\"required\":true,\"default\":1,\"_meta\":{\"required\":true,\"default\":1}},\"mustReset\":{\"type\":\"boolean\",\"required\":true,\"default\":false,\"_meta\":{\"required\":true,\"default\":false}},\"rotatedAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"nullable\":true}},\"rotatedBy\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"users_pin_credentials\",\"sensitive\":true,\"api\":false,\"cli\":false,\"mcp\":false},\"extends\":\"SmrtObject\",\"exportName\":\"UsersPinCredential\",\"collectionExportName\":\"UsersPinCredentialCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"pinHash\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"version\",\"rule\":\"required\",\"fieldType\":\"integer\"},{\"field\":\"mustReset\",\"rule\":\"required\",\"fieldType\":\"boolean\"}],\"schema\":{\"tableName\":\"users_pin_credentials\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users_pin_credentials\\\" (\\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 \\\"user_id\\\" UUID NOT NULL UNIQUE,\\n \\\"pin_hash\\\" TEXT NOT NULL,\\n \\\"version\\\" INTEGER NOT NULL DEFAULT 1,\\n \\\"must_reset\\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\\"rotated_at\\\" TIMESTAMP,\\n \\\"rotated_by\\\" TEXT\\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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":true,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"pin_hash\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false},\"version\":{\"type\":\"INTEGER\",\"notNull\":true,\"unique\":false,\"default\":1},\"must_reset\":{\"type\":\"BOOLEAN\",\"notNull\":true,\"unique\":false,\"default\":false},\"rotated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rotated_by\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_pin_credentials_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_pin_credentials_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"0e2fa003\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:ResourceGrant\":{\"name\":\"resourcegrant\",\"className\":\"ResourceGrant\",\"qualifiedName\":\"@happyvertical/smrt-users:ResourceGrant\",\"collection\":\"resourcegrants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/ResourceGrant.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true,\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"mode\":\"required\",\"field\":\"tenantId\",\"autoFilter\":true,\"autoPopulate\":true,\"allowSuperAdminBypass\":false}}},\"userId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"User\",\"_meta\":{\"required\":true}},\"resourceType\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resourceId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"permission\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"canDelegate\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"parentGrantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"ResourceGrant\"},\"revokedAt\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tenantScoped\":true,\"api\":{\"include\":[]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true},\"indexes\":[{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenantId\",\"userId\"]}],\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"ResourceGrant\",\"collectionExportName\":\"ResourceGrantCollection\",\"validationRules\":[{\"field\":\"userId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"resource_grants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"resource_grants\\\" (\\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 NOT NULL,\\n \\\"user_id\\\" UUID NOT NULL,\\n \\\"resource_type\\\" TEXT,\\n \\\"resource_id\\\" TEXT,\\n \\\"permission\\\" TEXT,\\n \\\"effect\\\" TEXT,\\n \\\"can_delegate\\\" BOOLEAN DEFAULT FALSE,\\n \\\"parent_grant_id\\\" UUID,\\n \\\"revoked_at\\\" TEXT\\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\":true,\"unique\":false},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"resource_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resource_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"permission\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"can_delegate\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"parent_grant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"resource_grants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"revoked_at\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"resource_grants_slug_context_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"resource_grants_lookup_idx\",\"columns\":[\"tenant_id\",\"user_id\"]},{\"name\":\"resource_grants_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"resource_grants_user_id_idx\",\"columns\":[\"user_id\"]},{\"name\":\"resource_grants_parent_grant_id_idx\",\"columns\":[\"parent_grant_id\"]}],\"version\":\"52e03776\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Role\":{\"name\":\"role\",\"className\":\"Role\",\"qualifiedName\":\"@happyvertical/smrt-users:Role\",\"collection\":\"roles\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Role.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"isSystem\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"inheritsToDescendants\":{\"type\":\"boolean\",\"required\":false,\"default\":false}},\"methods\":{\"isSystemRole\":{\"name\":\"isSystemRole\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isTenantRole\":{\"name\":\"isTenantRole\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"canDelete\":{\"name\":\"canDelete\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Role\",\"collectionExportName\":\"RoleCollection\",\"schema\":{\"tableName\":\"roles\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"roles\\\" (\\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 \\\"name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"is_system\\\" BOOLEAN DEFAULT FALSE,\\n \\\"inherits_to_descendants\\\" 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\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"is_system\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"inherits_to_descendants\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false}},\"indexes\":[{\"name\":\"roles_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"roles_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"47369d9d\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:RolePermission\":{\"name\":\"rolepermission\",\"className\":\"RolePermission\",\"qualifiedName\":\"@happyvertical/smrt-users:RolePermission\",\"collection\":\"rolepermissions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/RolePermission.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"roleId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Role\",\"_meta\":{\"required\":true,\"onDelete\":\"NO ACTION\"}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true,\"onDelete\":\"NO ACTION\"}}},\"methods\":{},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":true,\"conflictColumns\":[\"role_id\",\"permission_id\"]},\"extends\":\"SmrtObject\",\"exportName\":\"RolePermission\",\"collectionExportName\":\"RolePermissionCollection\",\"validationRules\":[{\"field\":\"roleId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"role_permissions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"role_permissions\\\" (\\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 \\\"role_id\\\" UUID NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL\\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\"},\"role_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"roles\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}}},\"indexes\":[{\"name\":\"role_permissions_role_id_permission_id_idx\",\"columns\":[\"role_id\",\"permission_id\"],\"unique\":true},{\"name\":\"role_permissions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"role_permissions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"role_permissions_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"4dfed3ac\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Session\":{\"name\":\"session\",\"className\":\"Session\",\"qualifiedName\":\"@happyvertical/smrt-users:Session\",\"collection\":\"sessions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Session.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"userId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"User\"},\"tenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"expiresAt\":{\"type\":\"datetime\",\"required\":false,\"_meta\":{\"indexed\":true}},\"userAgent\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"ipAddress\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"lastAccessedAt\":{\"type\":\"datetime\",\"required\":false},\"data\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"authMethod\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"parentSessionId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"indexed\":true,\"sensitive\":true},\"sensitive\":true}},\"methods\":{\"isLayered\":{\"name\":\"isLayered\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getAbsoluteExpiry\":{\"name\":\"getAbsoluteExpiry\",\"async\":false,\"parameters\":[],\"returnType\":\"Date | null\",\"isStatic\":false,\"isPublic\":true},\"getIdleSeconds\":{\"name\":\"getIdleSeconds\",\"async\":false,\"parameters\":[],\"returnType\":\"number | null\",\"isStatic\":false,\"isPublic\":true},\"getPermissionCeiling\":{\"name\":\"getPermissionCeiling\",\"async\":false,\"parameters\":[],\"returnType\":\"string[] | null\",\"isStatic\":false,\"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},\"isRevoked\":{\"name\":\"isRevoked\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"touch\":{\"name\":\"touch\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"extend\":{\"name\":\"extend\",\"async\":false,\"parameters\":[{\"name\":\"ttlSeconds\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"recordActivity\":{\"name\":\"recordActivity\",\"async\":true,\"parameters\":[{\"name\":\"extendTtl\",\"type\":\"any\",\"optional\":true},{\"name\":\"ttlSeconds\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"revoke\":{\"name\":\"revoke\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"setTenant\":{\"name\":\"setTenant\",\"async\":false,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string | null\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"null\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getData\":{\"name\":\"getData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"T | undefined\",\"isStatic\":false,\"isPublic\":true},\"setData\":{\"name\":\"setData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"unknown\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"removeData\":{\"name\":\"removeData\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"sensitive\":true,\"api\":{\"include\":[\"get\",\"delete\"]},\"mcp\":{\"include\":[]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"Session\",\"collectionExportName\":\"SessionCollection\",\"schema\":{\"tableName\":\"sessions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"sessions\\\" (\\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 \\\"user_id\\\" UUID,\\n \\\"tenant_id\\\" UUID,\\n \\\"status\\\" TEXT,\\n \\\"expires_at\\\" TIMESTAMP,\\n \\\"user_agent\\\" TEXT DEFAULT '',\\n \\\"ip_address\\\" TEXT DEFAULT '',\\n \\\"last_accessed_at\\\" TIMESTAMP,\\n \\\"data\\\" JSON DEFAULT '{}',\\n \\\"auth_method\\\" TEXT,\\n \\\"parent_session_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\"},\"user_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"users\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"expires_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"user_agent\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"ip_address\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"last_accessed_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"data\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"auth_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"parent_session_id\":{\"type\":\"UUID\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"sessions_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"sessions_expires_at_idx\",\"columns\":[\"expires_at\"]},{\"name\":\"sessions_parent_session_id_idx\",\"columns\":[\"parent_session_id\"]},{\"name\":\"sessions_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"sessions_user_id_idx\",\"columns\":[\"user_id\"]}],\"version\":\"b4260a0f\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:Tenant\":{\"name\":\"tenant\",\"className\":\"Tenant\",\"qualifiedName\":\"@happyvertical/smrt-users:Tenant\",\"collection\":\"tenants\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/Tenant.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"parentTenantId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Tenant\",\"_meta\":{\"nullable\":true}},\"hierarchyLevel\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"hierarchyPath\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"cascadePermissions\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"inheritPermissions\":{\"type\":\"boolean\",\"required\":false,\"default\":true}},\"methods\":{\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuspended\":{\"name\":\"isSuspended\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isRoot\":{\"name\":\"isRoot\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"canCascadeToChildren\":{\"name\":\"canCascadeToChildren\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"acceptsInheritance\":{\"name\":\"acceptsInheritance\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SmrtSaveOptions\",\"optional\":true}],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getAncestorIds\":{\"name\":\"getAncestorIds\",\"async\":false,\"parameters\":[],\"returnType\":\"string[]\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"Tenant\",\"collectionExportName\":\"TenantCollection\",\"schema\":{\"tableName\":\"tenants\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenants\\\" (\\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 \\\"status\\\" TEXT,\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"parent_tenant_id\\\" UUID,\\n \\\"hierarchy_level\\\" INTEGER DEFAULT 0,\\n \\\"hierarchy_path\\\" TEXT DEFAULT '',\\n \\\"cascade_permissions\\\" BOOLEAN DEFAULT TRUE,\\n \\\"inherit_permissions\\\" 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\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"parent_tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"hierarchy_level\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"hierarchy_path\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"cascade_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"inherit_permissions\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true}},\"indexes\":[{\"name\":\"tenants_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"tenants_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"tenants_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenants_parent_tenant_id_idx\",\"columns\":[\"parent_tenant_id\"]}],\"version\":\"934f7025\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantIntegration\":{\"name\":\"tenantintegration\",\"className\":\"TenantIntegration\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantIntegration\",\"collection\":\"tenantintegrations\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/TenantIntegration.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"provider\":{\"type\":\"text\",\"required\":false,\"default\":\"aws\"},\"externalIds\":{\"type\":\"text\",\"required\":false},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"unprovisioned\"},\"lastCheckedAt\":{\"type\":\"datetime\",\"required\":false},\"lastCheckSummary\":{\"type\":\"text\",\"required\":false},\"lastError\":{\"type\":\"text\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true},\"getExternalIds\":{\"name\":\"getExternalIds\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, string>\",\"isStatic\":false,\"isPublic\":true},\"setExternalIds\":{\"name\":\"setExternalIds\",\"async\":false,\"parameters\":[{\"name\":\"externalIds\",\"type\":\"Record<string, string> | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"Record<string, string>\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getExternalId\":{\"name\":\"getExternalId\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"string | undefined\",\"isStatic\":false,\"isPublic\":true},\"setExternalId\":{\"name\":\"setExternalId\",\"async\":false,\"parameters\":[{\"name\":\"key\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"string | undefined\",\"optional\":false,\"unionBranches\":[{\"type\":\"string\"},{\"type\":\"undefined\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getLastCheckSummary\":{\"name\":\"getLastCheckSummary\",\"async\":false,\"parameters\":[],\"returnType\":\"TenantIntegrationCheckSummary[]\",\"isStatic\":false,\"isPublic\":true},\"setLastCheckSummary\":{\"name\":\"setLastCheckSummary\",\"async\":false,\"parameters\":[{\"name\":\"summary\",\"type\":\"TenantIntegrationCheckSummary[] | string\",\"optional\":false,\"unionBranches\":[{\"type\":\"TenantIntegrationCheckSummary[]\"},{\"type\":\"string\"}]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"recordDoctorRun\":{\"name\":\"recordDoctorRun\",\"async\":false,\"parameters\":[{\"name\":\"outcome\",\"type\":\"object\",\"optional\":false,\"memberTypes\":[\"TenantIntegrationStatus\",\"TenantIntegrationCheckSummary[]\",\"string | null\"]}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"tenant_integrations\",\"conflictColumns\":[\"tenant_id\",\"provider\"],\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"TenantIntegration\",\"collectionExportName\":\"TenantIntegrationCollection\",\"validationRules\":[],\"schema\":{\"tableName\":\"tenant_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_integrations\\\" (\\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 NOT NULL,\\n \\\"provider\\\" TEXT DEFAULT 'aws',\\n \\\"external_ids\\\" TEXT,\\n \\\"status\\\" TEXT DEFAULT 'unprovisioned',\\n \\\"last_checked_at\\\" TIMESTAMP,\\n \\\"last_check_summary\\\" TEXT,\\n \\\"last_error\\\" TEXT\\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\":true,\"unique\":false},\"provider\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"aws\"},\"external_ids\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"unprovisioned\"},\"last_checked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"last_check_summary\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_integrations_tenant_id_provider_idx\",\"columns\":[\"tenant_id\",\"provider\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"tenant_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"tenant_integrations_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"3ed31966\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:TenantPermissionOverride\":{\"name\":\"tenantpermissionoverride\",\"className\":\"TenantPermissionOverride\",\"qualifiedName\":\"@happyvertical/smrt-users:TenantPermissionOverride\",\"collection\":\"tenantpermissionoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/TenantPermissionOverride.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"tenantId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Tenant\",\"_meta\":{\"required\":true}},\"permissionId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Permission\",\"_meta\":{\"required\":true}},\"effect\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"isInherit\":{\"name\":\"isInherit\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isGrant\":{\"name\":\"isGrant\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDeny\":{\"name\":\"isDeny\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"hasExplicitEffect\":{\"name\":\"hasExplicitEffect\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\"]},\"extends\":\"SmrtObject\",\"exportName\":\"TenantPermissionOverride\",\"collectionExportName\":\"TenantPermissionOverrideCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"permissionId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"tenant_permission_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"tenant_permission_overrides\\\" (\\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 NOT NULL,\\n \\\"permission_id\\\" UUID NOT NULL,\\n \\\"effect\\\" TEXT\\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\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"tenants\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"permission_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"permissions\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"tenant_permission_overrides_tenant_id_slug_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\"],\"unique\":true},{\"name\":\"tenant_permission_overrides_created_at_idx\",\"columns\":[\"created_at\"]},{\"name\":\"tenant_permission_overrides_permission_id_idx\",\"columns\":[\"permission_id\"]}],\"version\":\"95b78bdd\"},\"importPath\":\"@happyvertical/smrt-users\"},\"@happyvertical/smrt-users:User\":{\"name\":\"user\",\"className\":\"User\",\"qualifiedName\":\"@happyvertical/smrt-users:User\",\"collection\":\"users\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/users/src/models/User.ts\",\"packageName\":\"@happyvertical/smrt-users\",\"fields\":{\"profileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"unique\":true}},\"email\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"indexed\":true}},\"emailKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"unique\":true,\"readonly\":true},\"readonly\":true},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"lastLoginAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"hasValidEmail\":{\"name\":\"hasValidEmail\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuspended\":{\"name\":\"isSuspended\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPending\":{\"name\":\"isPending\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"recordLogin\":{\"name\":\"recordLogin\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<this>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"skipApiCheck\":true}},\"extends\":\"SmrtObject\",\"exportName\":\"User\",\"collectionExportName\":\"UserCollection\",\"schema\":{\"tableName\":\"users\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"users\\\" (\\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 UNIQUE,\\n \\\"email\\\" TEXT DEFAULT '',\\n \\\"email_key\\\" TEXT UNIQUE,\\n \\\"status\\\" TEXT,\\n \\\"last_login_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\":\"crossPackageRef\",\"notNull\":false,\"unique\":true},\"email\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"email_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":true},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_login_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"users_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"users_email_idx\",\"columns\":[\"email\"]},{\"name\":\"users_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"38fd1677\"},\"importPath\":\"@happyvertical/smrt-users\"}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-mobile-contract\",\"@happyvertical/smrt-profiles\",\"@happyvertical/smrt-tenancy\"]}"));
|
|
308
|
+
var __defProp$16 = Object.defineProperty;
|
|
309
|
+
var __getOwnPropDesc$16 = Object.getOwnPropertyDescriptor;
|
|
310
|
+
var __decorateClass$16 = (decorators, target, key, kind) => {
|
|
311
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$16(target, key) : target;
|
|
312
312
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
313
|
-
if (kind && result) __defProp$
|
|
313
|
+
if (kind && result) __defProp$16(target, key, result);
|
|
314
314
|
return result;
|
|
315
315
|
};
|
|
316
316
|
var UsersCliAuthRequest = class extends SmrtObject {
|
|
@@ -323,41 +323,41 @@ var UsersCliAuthRequest = class extends SmrtObject {
|
|
|
323
323
|
expiresAt = /* @__PURE__ */ new Date();
|
|
324
324
|
approvedAt = null;
|
|
325
325
|
};
|
|
326
|
-
__decorateClass$
|
|
326
|
+
__decorateClass$16([field({
|
|
327
327
|
type: "text",
|
|
328
328
|
required: true,
|
|
329
329
|
unique: true
|
|
330
330
|
})], UsersCliAuthRequest.prototype, "userCode", 2);
|
|
331
|
-
__decorateClass$
|
|
331
|
+
__decorateClass$16([field({
|
|
332
332
|
type: "text",
|
|
333
333
|
required: true,
|
|
334
334
|
unique: true
|
|
335
335
|
})], UsersCliAuthRequest.prototype, "deviceCodeHash", 2);
|
|
336
|
-
__decorateClass$
|
|
337
|
-
__decorateClass$
|
|
338
|
-
__decorateClass$
|
|
339
|
-
__decorateClass$
|
|
340
|
-
__decorateClass$
|
|
336
|
+
__decorateClass$16([field({ type: "text" })], UsersCliAuthRequest.prototype, "status", 2);
|
|
337
|
+
__decorateClass$16([foreignKey("User", { nullable: true })], UsersCliAuthRequest.prototype, "userId", 2);
|
|
338
|
+
__decorateClass$16([foreignKey("Tenant", { nullable: true })], UsersCliAuthRequest.prototype, "tenantId", 2);
|
|
339
|
+
__decorateClass$16([foreignKey("Session", { nullable: true })], UsersCliAuthRequest.prototype, "sessionId", 2);
|
|
340
|
+
__decorateClass$16([field({
|
|
341
341
|
type: "datetime",
|
|
342
342
|
indexed: true
|
|
343
343
|
})], UsersCliAuthRequest.prototype, "expiresAt", 2);
|
|
344
|
-
__decorateClass$
|
|
344
|
+
__decorateClass$16([field({
|
|
345
345
|
type: "datetime",
|
|
346
346
|
nullable: true
|
|
347
347
|
})], UsersCliAuthRequest.prototype, "approvedAt", 2);
|
|
348
|
-
UsersCliAuthRequest = __decorateClass$
|
|
348
|
+
UsersCliAuthRequest = __decorateClass$16([smrt({
|
|
349
349
|
tableName: "users_cli_auth_requests",
|
|
350
350
|
sensitive: true,
|
|
351
351
|
api: { include: [] },
|
|
352
352
|
cli: { include: [] },
|
|
353
353
|
mcp: { include: [] }
|
|
354
354
|
})], UsersCliAuthRequest);
|
|
355
|
-
var __defProp$
|
|
356
|
-
var __getOwnPropDesc$
|
|
357
|
-
var __decorateClass$
|
|
358
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
355
|
+
var __defProp$15 = Object.defineProperty;
|
|
356
|
+
var __getOwnPropDesc$15 = Object.getOwnPropertyDescriptor;
|
|
357
|
+
var __decorateClass$15 = (decorators, target, key, kind) => {
|
|
358
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$15(target, key) : target;
|
|
359
359
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
360
|
-
if (kind && result) __defProp$
|
|
360
|
+
if (kind && result) __defProp$15(target, key, result);
|
|
361
361
|
return result;
|
|
362
362
|
};
|
|
363
363
|
var DEFAULT_SESSION_TTL = 10080 * 60;
|
|
@@ -536,24 +536,24 @@ var Session = class extends SmrtObject {
|
|
|
536
536
|
delete this.data[key];
|
|
537
537
|
}
|
|
538
538
|
};
|
|
539
|
-
__decorateClass$
|
|
540
|
-
__decorateClass$
|
|
541
|
-
__decorateClass$
|
|
542
|
-
__decorateClass$
|
|
539
|
+
__decorateClass$15([foreignKey("User")], Session.prototype, "userId", 2);
|
|
540
|
+
__decorateClass$15([foreignKey("Tenant", { nullable: true })], Session.prototype, "tenantId", 2);
|
|
541
|
+
__decorateClass$15([field({ type: "text" })], Session.prototype, "status", 2);
|
|
542
|
+
__decorateClass$15([field({
|
|
543
543
|
type: "datetime",
|
|
544
544
|
indexed: true
|
|
545
545
|
})], Session.prototype, "expiresAt", 2);
|
|
546
|
-
__decorateClass$
|
|
546
|
+
__decorateClass$15([field({
|
|
547
547
|
type: "text",
|
|
548
548
|
nullable: true
|
|
549
549
|
})], Session.prototype, "authMethod", 2);
|
|
550
|
-
__decorateClass$
|
|
550
|
+
__decorateClass$15([field({
|
|
551
551
|
sqlType: "UUID",
|
|
552
552
|
nullable: true,
|
|
553
553
|
indexed: true,
|
|
554
554
|
sensitive: true
|
|
555
555
|
})], Session.prototype, "parentSessionId", 2);
|
|
556
|
-
Session = __decorateClass$
|
|
556
|
+
Session = __decorateClass$15([smrt({
|
|
557
557
|
sensitive: true,
|
|
558
558
|
api: { include: ["get", "delete"] },
|
|
559
559
|
mcp: { include: [] },
|
|
@@ -701,15 +701,18 @@ var SessionCollection = class extends SmrtCollection {
|
|
|
701
701
|
return count;
|
|
702
702
|
}
|
|
703
703
|
/**
|
|
704
|
-
* Revoke all sessions for a user (soft delete)
|
|
704
|
+
* Revoke all sessions for a user (soft delete), optionally sparing one —
|
|
705
|
+
* the session a person changes their password from (#3274). Ids come from
|
|
706
|
+
* the unbounded raw read, so caller list bounds can never leave a session
|
|
707
|
+
* of the user un-revoked.
|
|
705
708
|
*/
|
|
706
|
-
async revokeUserSessions(userId) {
|
|
707
|
-
const
|
|
708
|
-
userId,
|
|
709
|
-
status: SessionStatus.ACTIVE
|
|
710
|
-
} });
|
|
709
|
+
async revokeUserSessions(userId, options = {}) {
|
|
710
|
+
const sessionIds = await this.activeSessionIds("user_id", userId);
|
|
711
711
|
let count = 0;
|
|
712
|
-
for (const
|
|
712
|
+
for (const sessionId of sessionIds) {
|
|
713
|
+
if (sessionId === options.exceptSessionId) continue;
|
|
714
|
+
if (await this.revokeWithRetry(sessionId)) count++;
|
|
715
|
+
}
|
|
713
716
|
return count;
|
|
714
717
|
}
|
|
715
718
|
/**
|
|
@@ -894,12 +897,12 @@ var UsersCliAuthRequestCollection = class extends SmrtCollection {
|
|
|
894
897
|
return total;
|
|
895
898
|
}
|
|
896
899
|
};
|
|
897
|
-
var __defProp$
|
|
898
|
-
var __getOwnPropDesc$
|
|
899
|
-
var __decorateClass$
|
|
900
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
900
|
+
var __defProp$14 = Object.defineProperty;
|
|
901
|
+
var __getOwnPropDesc$14 = Object.getOwnPropertyDescriptor;
|
|
902
|
+
var __decorateClass$14 = (decorators, target, key, kind) => {
|
|
903
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$14(target, key) : target;
|
|
901
904
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
902
|
-
if (kind && result) __defProp$
|
|
905
|
+
if (kind && result) __defProp$14(target, key, result);
|
|
903
906
|
return result;
|
|
904
907
|
};
|
|
905
908
|
var UsersLoginAttempt = class extends SmrtObject {
|
|
@@ -912,44 +915,44 @@ var UsersLoginAttempt = class extends SmrtObject {
|
|
|
912
915
|
lastFailedAt = null;
|
|
913
916
|
retainUntil = /* @__PURE__ */ new Date();
|
|
914
917
|
};
|
|
915
|
-
__decorateClass$
|
|
918
|
+
__decorateClass$14([field({
|
|
916
919
|
type: "text",
|
|
917
920
|
required: true,
|
|
918
921
|
unique: true
|
|
919
922
|
})], UsersLoginAttempt.prototype, "limiterKey", 2);
|
|
920
|
-
__decorateClass$
|
|
923
|
+
__decorateClass$14([field({
|
|
921
924
|
type: "text",
|
|
922
925
|
required: true
|
|
923
926
|
})], UsersLoginAttempt.prototype, "scope", 2);
|
|
924
|
-
__decorateClass$
|
|
927
|
+
__decorateClass$14([field({
|
|
925
928
|
type: "integer",
|
|
926
929
|
required: true,
|
|
927
930
|
default: 0
|
|
928
931
|
})], UsersLoginAttempt.prototype, "attemptCount", 2);
|
|
929
|
-
__decorateClass$
|
|
932
|
+
__decorateClass$14([field({
|
|
930
933
|
type: "datetime",
|
|
931
934
|
required: true
|
|
932
935
|
})], UsersLoginAttempt.prototype, "windowStartedAt", 2);
|
|
933
|
-
__decorateClass$
|
|
936
|
+
__decorateClass$14([field({
|
|
934
937
|
type: "integer",
|
|
935
938
|
required: true,
|
|
936
939
|
default: 0
|
|
937
940
|
})], UsersLoginAttempt.prototype, "failureStreak", 2);
|
|
938
|
-
__decorateClass$
|
|
941
|
+
__decorateClass$14([field({
|
|
939
942
|
type: "datetime",
|
|
940
943
|
nullable: true,
|
|
941
944
|
indexed: true
|
|
942
945
|
})], UsersLoginAttempt.prototype, "lockedUntil", 2);
|
|
943
|
-
__decorateClass$
|
|
946
|
+
__decorateClass$14([field({
|
|
944
947
|
type: "datetime",
|
|
945
948
|
nullable: true
|
|
946
949
|
})], UsersLoginAttempt.prototype, "lastFailedAt", 2);
|
|
947
|
-
__decorateClass$
|
|
950
|
+
__decorateClass$14([field({
|
|
948
951
|
type: "datetime",
|
|
949
952
|
required: true,
|
|
950
953
|
indexed: true
|
|
951
954
|
})], UsersLoginAttempt.prototype, "retainUntil", 2);
|
|
952
|
-
UsersLoginAttempt = __decorateClass$
|
|
955
|
+
UsersLoginAttempt = __decorateClass$14([smrt({
|
|
953
956
|
tableName: "users_login_attempts",
|
|
954
957
|
sensitive: true,
|
|
955
958
|
api: false,
|
|
@@ -1153,12 +1156,12 @@ var UsersLoginAttemptCollection = class extends SmrtCollection {
|
|
|
1153
1156
|
return total;
|
|
1154
1157
|
}
|
|
1155
1158
|
};
|
|
1156
|
-
var __defProp$
|
|
1157
|
-
var __getOwnPropDesc$
|
|
1158
|
-
var __decorateClass$
|
|
1159
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1159
|
+
var __defProp$13 = Object.defineProperty;
|
|
1160
|
+
var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
|
|
1161
|
+
var __decorateClass$13 = (decorators, target, key, kind) => {
|
|
1162
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$13(target, key) : target;
|
|
1160
1163
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1161
|
-
if (kind && result) __defProp$
|
|
1164
|
+
if (kind && result) __defProp$13(target, key, result);
|
|
1162
1165
|
return result;
|
|
1163
1166
|
};
|
|
1164
1167
|
var UsersLoginAuditEvent = class extends SmrtObject {
|
|
@@ -1181,35 +1184,35 @@ var UsersLoginAuditEvent = class extends SmrtObject {
|
|
|
1181
1184
|
this.metadata = JSON.stringify(value ?? {});
|
|
1182
1185
|
}
|
|
1183
1186
|
};
|
|
1184
|
-
__decorateClass$
|
|
1187
|
+
__decorateClass$13([field({
|
|
1185
1188
|
type: "text",
|
|
1186
1189
|
required: true
|
|
1187
1190
|
})], UsersLoginAuditEvent.prototype, "kind", 2);
|
|
1188
|
-
__decorateClass$
|
|
1191
|
+
__decorateClass$13([field({
|
|
1189
1192
|
type: "text",
|
|
1190
1193
|
required: true
|
|
1191
1194
|
})], UsersLoginAuditEvent.prototype, "outcome", 2);
|
|
1192
|
-
__decorateClass$
|
|
1195
|
+
__decorateClass$13([field({
|
|
1193
1196
|
type: "text",
|
|
1194
1197
|
nullable: true,
|
|
1195
1198
|
indexed: true
|
|
1196
1199
|
})], UsersLoginAuditEvent.prototype, "subjectKeyHash", 2);
|
|
1197
|
-
__decorateClass$
|
|
1200
|
+
__decorateClass$13([field({
|
|
1198
1201
|
type: "text",
|
|
1199
1202
|
nullable: true,
|
|
1200
1203
|
indexed: true
|
|
1201
1204
|
})], UsersLoginAuditEvent.prototype, "sourceKeyHash", 2);
|
|
1202
|
-
__decorateClass$
|
|
1205
|
+
__decorateClass$13([field({
|
|
1203
1206
|
type: "integer",
|
|
1204
1207
|
nullable: true
|
|
1205
1208
|
})], UsersLoginAuditEvent.prototype, "retryAfterSeconds", 2);
|
|
1206
|
-
__decorateClass$
|
|
1209
|
+
__decorateClass$13([field({
|
|
1207
1210
|
type: "datetime",
|
|
1208
1211
|
required: true,
|
|
1209
1212
|
indexed: true
|
|
1210
1213
|
})], UsersLoginAuditEvent.prototype, "occurredAt", 2);
|
|
1211
|
-
__decorateClass$
|
|
1212
|
-
UsersLoginAuditEvent = __decorateClass$
|
|
1214
|
+
__decorateClass$13([field({ type: "text" })], UsersLoginAuditEvent.prototype, "metadata", 2);
|
|
1215
|
+
UsersLoginAuditEvent = __decorateClass$13([smrt({
|
|
1213
1216
|
tableName: "users_login_audit_events",
|
|
1214
1217
|
sensitive: true,
|
|
1215
1218
|
api: false,
|
|
@@ -1231,12 +1234,12 @@ var UsersLoginAuditEventCollection = class extends SmrtCollection {
|
|
|
1231
1234
|
return total;
|
|
1232
1235
|
}
|
|
1233
1236
|
};
|
|
1234
|
-
var __defProp$
|
|
1235
|
-
var __getOwnPropDesc$
|
|
1236
|
-
var __decorateClass$
|
|
1237
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1237
|
+
var __defProp$12 = Object.defineProperty;
|
|
1238
|
+
var __getOwnPropDesc$12 = Object.getOwnPropertyDescriptor;
|
|
1239
|
+
var __decorateClass$12 = (decorators, target, key, kind) => {
|
|
1240
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$12(target, key) : target;
|
|
1238
1241
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1239
|
-
if (kind && result) __defProp$
|
|
1242
|
+
if (kind && result) __defProp$12(target, key, result);
|
|
1240
1243
|
return result;
|
|
1241
1244
|
};
|
|
1242
1245
|
var EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -1302,26 +1305,26 @@ var User = class extends SmrtObject {
|
|
|
1302
1305
|
return super.save();
|
|
1303
1306
|
}
|
|
1304
1307
|
};
|
|
1305
|
-
__decorateClass$
|
|
1306
|
-
__decorateClass$
|
|
1307
|
-
__decorateClass$
|
|
1308
|
+
__decorateClass$12([crossPackageRef("@happyvertical/smrt-profiles:Profile", { unique: true })], User.prototype, "profileId", 2);
|
|
1309
|
+
__decorateClass$12([field({ indexed: true })], User.prototype, "email", 2);
|
|
1310
|
+
__decorateClass$12([field({
|
|
1308
1311
|
type: "text",
|
|
1309
1312
|
nullable: true,
|
|
1310
1313
|
unique: true,
|
|
1311
1314
|
readonly: true
|
|
1312
1315
|
})], User.prototype, "emailKey", 2);
|
|
1313
|
-
__decorateClass$
|
|
1314
|
-
User = __decorateClass$
|
|
1316
|
+
__decorateClass$12([field({ type: "text" })], User.prototype, "status", 2);
|
|
1317
|
+
User = __decorateClass$12([smrt({
|
|
1315
1318
|
api: { include: ["list", "get"] },
|
|
1316
1319
|
mcp: { include: ["list", "get"] },
|
|
1317
1320
|
cli: { skipApiCheck: true }
|
|
1318
1321
|
})], User);
|
|
1319
|
-
var __defProp$
|
|
1320
|
-
var __getOwnPropDesc$
|
|
1321
|
-
var __decorateClass$
|
|
1322
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1322
|
+
var __defProp$11 = Object.defineProperty;
|
|
1323
|
+
var __getOwnPropDesc$11 = Object.getOwnPropertyDescriptor;
|
|
1324
|
+
var __decorateClass$11 = (decorators, target, key, kind) => {
|
|
1325
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$11(target, key) : target;
|
|
1323
1326
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1324
|
-
if (kind && result) __defProp$
|
|
1327
|
+
if (kind && result) __defProp$11(target, key, result);
|
|
1325
1328
|
return result;
|
|
1326
1329
|
};
|
|
1327
1330
|
var Group = class extends SmrtObject {
|
|
@@ -1341,18 +1344,18 @@ var Group = class extends SmrtObject {
|
|
|
1341
1344
|
if (options.description !== void 0) this.description = options.description;
|
|
1342
1345
|
}
|
|
1343
1346
|
};
|
|
1344
|
-
__decorateClass$
|
|
1345
|
-
Group = __decorateClass$
|
|
1347
|
+
__decorateClass$11([foreignKey("Tenant", { required: true })], Group.prototype, "tenantId", 2);
|
|
1348
|
+
Group = __decorateClass$11([smrt({
|
|
1346
1349
|
api: { include: ["list", "get"] },
|
|
1347
1350
|
mcp: { include: ["list", "get"] },
|
|
1348
1351
|
cli: true
|
|
1349
1352
|
})], Group);
|
|
1350
|
-
var __defProp$
|
|
1351
|
-
var __getOwnPropDesc$
|
|
1352
|
-
var __decorateClass$
|
|
1353
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1353
|
+
var __defProp$10 = Object.defineProperty;
|
|
1354
|
+
var __getOwnPropDesc$10 = Object.getOwnPropertyDescriptor;
|
|
1355
|
+
var __decorateClass$10 = (decorators, target, key, kind) => {
|
|
1356
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$10(target, key) : target;
|
|
1354
1357
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1355
|
-
if (kind && result) __defProp$
|
|
1358
|
+
if (kind && result) __defProp$10(target, key, result);
|
|
1356
1359
|
return result;
|
|
1357
1360
|
};
|
|
1358
1361
|
var GroupMember = class extends SmrtObject {
|
|
@@ -1364,19 +1367,19 @@ var GroupMember = class extends SmrtObject {
|
|
|
1364
1367
|
if (options.userId !== void 0) this.userId = options.userId;
|
|
1365
1368
|
}
|
|
1366
1369
|
};
|
|
1367
|
-
__decorateClass$
|
|
1368
|
-
__decorateClass$
|
|
1369
|
-
GroupMember = __decorateClass$
|
|
1370
|
+
__decorateClass$10([foreignKey("Group", { required: true })], GroupMember.prototype, "groupId", 2);
|
|
1371
|
+
__decorateClass$10([foreignKey("User", { required: true })], GroupMember.prototype, "userId", 2);
|
|
1372
|
+
GroupMember = __decorateClass$10([smrt({
|
|
1370
1373
|
api: { include: ["list", "get"] },
|
|
1371
1374
|
mcp: { include: ["list", "get"] },
|
|
1372
1375
|
cli: true
|
|
1373
1376
|
})], GroupMember);
|
|
1374
|
-
var __defProp$
|
|
1375
|
-
var __getOwnPropDesc$
|
|
1376
|
-
var __decorateClass$
|
|
1377
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1377
|
+
var __defProp$9 = Object.defineProperty;
|
|
1378
|
+
var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;
|
|
1379
|
+
var __decorateClass$9 = (decorators, target, key, kind) => {
|
|
1380
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;
|
|
1378
1381
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1379
|
-
if (kind && result) __defProp$
|
|
1382
|
+
if (kind && result) __defProp$9(target, key, result);
|
|
1380
1383
|
return result;
|
|
1381
1384
|
};
|
|
1382
1385
|
var GroupRole = class extends SmrtObject {
|
|
@@ -1388,19 +1391,19 @@ var GroupRole = class extends SmrtObject {
|
|
|
1388
1391
|
if (options.roleId !== void 0) this.roleId = options.roleId;
|
|
1389
1392
|
}
|
|
1390
1393
|
};
|
|
1391
|
-
__decorateClass$
|
|
1392
|
-
__decorateClass$
|
|
1393
|
-
GroupRole = __decorateClass$
|
|
1394
|
+
__decorateClass$9([foreignKey("Group", { required: true })], GroupRole.prototype, "groupId", 2);
|
|
1395
|
+
__decorateClass$9([foreignKey("Role", { required: true })], GroupRole.prototype, "roleId", 2);
|
|
1396
|
+
GroupRole = __decorateClass$9([smrt({
|
|
1394
1397
|
api: { include: ["list", "get"] },
|
|
1395
1398
|
mcp: { include: ["list", "get"] },
|
|
1396
1399
|
cli: true
|
|
1397
1400
|
})], GroupRole);
|
|
1398
|
-
var __defProp$
|
|
1399
|
-
var __getOwnPropDesc$
|
|
1400
|
-
var __decorateClass$
|
|
1401
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1401
|
+
var __defProp$8 = Object.defineProperty;
|
|
1402
|
+
var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;
|
|
1403
|
+
var __decorateClass$8 = (decorators, target, key, kind) => {
|
|
1404
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;
|
|
1402
1405
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1403
|
-
if (kind && result) __defProp$
|
|
1406
|
+
if (kind && result) __defProp$8(target, key, result);
|
|
1404
1407
|
return result;
|
|
1405
1408
|
};
|
|
1406
1409
|
var Membership = class extends SmrtObject {
|
|
@@ -1428,11 +1431,11 @@ var Membership = class extends SmrtObject {
|
|
|
1428
1431
|
return this.status === MembershipStatus.PENDING;
|
|
1429
1432
|
}
|
|
1430
1433
|
};
|
|
1431
|
-
__decorateClass$
|
|
1432
|
-
__decorateClass$
|
|
1433
|
-
__decorateClass$
|
|
1434
|
-
__decorateClass$
|
|
1435
|
-
Membership = __decorateClass$
|
|
1434
|
+
__decorateClass$8([foreignKey("User", { required: true })], Membership.prototype, "userId", 2);
|
|
1435
|
+
__decorateClass$8([foreignKey("Tenant", { required: true })], Membership.prototype, "tenantId", 2);
|
|
1436
|
+
__decorateClass$8([foreignKey("Role", { required: true })], Membership.prototype, "roleId", 2);
|
|
1437
|
+
__decorateClass$8([field({ type: "text" })], Membership.prototype, "status", 2);
|
|
1438
|
+
Membership = __decorateClass$8([smrt({
|
|
1436
1439
|
api: { include: ["list", "get"] },
|
|
1437
1440
|
mcp: { include: ["list", "get"] },
|
|
1438
1441
|
cli: { skipApiCheck: true },
|
|
@@ -1441,12 +1444,12 @@ Membership = __decorateClass$7([smrt({
|
|
|
1441
1444
|
columns: ["tenantId", "userId"]
|
|
1442
1445
|
}]
|
|
1443
1446
|
})], Membership);
|
|
1444
|
-
var __defProp$
|
|
1445
|
-
var __getOwnPropDesc$
|
|
1446
|
-
var __decorateClass$
|
|
1447
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
1447
|
+
var __defProp$7 = Object.defineProperty;
|
|
1448
|
+
var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
|
|
1449
|
+
var __decorateClass$7 = (decorators, target, key, kind) => {
|
|
1450
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;
|
|
1448
1451
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1449
|
-
if (kind && result) __defProp$
|
|
1452
|
+
if (kind && result) __defProp$7(target, key, result);
|
|
1450
1453
|
return result;
|
|
1451
1454
|
};
|
|
1452
1455
|
var MembershipOverride = class extends SmrtObject {
|
|
@@ -1472,14 +1475,64 @@ var MembershipOverride = class extends SmrtObject {
|
|
|
1472
1475
|
return this.effect === OverrideEffect.DENY;
|
|
1473
1476
|
}
|
|
1474
1477
|
};
|
|
1475
|
-
__decorateClass$
|
|
1476
|
-
__decorateClass$
|
|
1477
|
-
__decorateClass$
|
|
1478
|
-
MembershipOverride = __decorateClass$
|
|
1478
|
+
__decorateClass$7([foreignKey("Membership", { required: true })], MembershipOverride.prototype, "membershipId", 2);
|
|
1479
|
+
__decorateClass$7([foreignKey("Permission", { required: true })], MembershipOverride.prototype, "permissionId", 2);
|
|
1480
|
+
__decorateClass$7([field({ type: "text" })], MembershipOverride.prototype, "effect", 2);
|
|
1481
|
+
MembershipOverride = __decorateClass$7([smrt({
|
|
1479
1482
|
api: { include: ["list", "get"] },
|
|
1480
1483
|
mcp: { include: ["list", "get"] },
|
|
1481
1484
|
cli: { skipApiCheck: true }
|
|
1482
1485
|
})], MembershipOverride);
|
|
1486
|
+
var __defProp$6 = Object.defineProperty;
|
|
1487
|
+
var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
|
|
1488
|
+
var __decorateClass$6 = (decorators, target, key, kind) => {
|
|
1489
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;
|
|
1490
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
1491
|
+
if (kind && result) __defProp$6(target, key, result);
|
|
1492
|
+
return result;
|
|
1493
|
+
};
|
|
1494
|
+
var UsersPasswordCredential = class extends SmrtObject {
|
|
1495
|
+
userId = "";
|
|
1496
|
+
passwordHash = "";
|
|
1497
|
+
version = 1;
|
|
1498
|
+
mustChange = false;
|
|
1499
|
+
rotatedAt = null;
|
|
1500
|
+
rotatedBy = null;
|
|
1501
|
+
};
|
|
1502
|
+
__decorateClass$6([foreignKey("User", {
|
|
1503
|
+
required: true,
|
|
1504
|
+
unique: true
|
|
1505
|
+
})], UsersPasswordCredential.prototype, "userId", 2);
|
|
1506
|
+
__decorateClass$6([field({
|
|
1507
|
+
type: "text",
|
|
1508
|
+
required: true,
|
|
1509
|
+
sensitive: true
|
|
1510
|
+
})], UsersPasswordCredential.prototype, "passwordHash", 2);
|
|
1511
|
+
__decorateClass$6([field({
|
|
1512
|
+
type: "integer",
|
|
1513
|
+
required: true,
|
|
1514
|
+
default: 1
|
|
1515
|
+
})], UsersPasswordCredential.prototype, "version", 2);
|
|
1516
|
+
__decorateClass$6([field({
|
|
1517
|
+
type: "boolean",
|
|
1518
|
+
required: true,
|
|
1519
|
+
default: false
|
|
1520
|
+
})], UsersPasswordCredential.prototype, "mustChange", 2);
|
|
1521
|
+
__decorateClass$6([field({
|
|
1522
|
+
type: "datetime",
|
|
1523
|
+
nullable: true
|
|
1524
|
+
})], UsersPasswordCredential.prototype, "rotatedAt", 2);
|
|
1525
|
+
__decorateClass$6([field({
|
|
1526
|
+
type: "text",
|
|
1527
|
+
nullable: true
|
|
1528
|
+
})], UsersPasswordCredential.prototype, "rotatedBy", 2);
|
|
1529
|
+
UsersPasswordCredential = __decorateClass$6([smrt({
|
|
1530
|
+
tableName: "users_password_credentials",
|
|
1531
|
+
sensitive: true,
|
|
1532
|
+
api: false,
|
|
1533
|
+
cli: false,
|
|
1534
|
+
mcp: false
|
|
1535
|
+
})], UsersPasswordCredential);
|
|
1483
1536
|
var __defProp$5 = Object.defineProperty;
|
|
1484
1537
|
var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
|
|
1485
1538
|
var __decorateClass$5 = (decorators, target, key, kind) => {
|
|
@@ -3173,12 +3226,12 @@ var TenantCollection = class extends SmrtCollection {
|
|
|
3173
3226
|
return (await Promise.all(roots.map(buildTree))).filter(Boolean);
|
|
3174
3227
|
}
|
|
3175
3228
|
};
|
|
3176
|
-
var __defProp$
|
|
3177
|
-
var __getOwnPropDesc$
|
|
3178
|
-
var __decorateClass$
|
|
3179
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$
|
|
3229
|
+
var __defProp$18 = Object.defineProperty;
|
|
3230
|
+
var __getOwnPropDesc$17 = Object.getOwnPropertyDescriptor;
|
|
3231
|
+
var __decorateClass$17 = (decorators, target, key, kind) => {
|
|
3232
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$17(target, key) : target;
|
|
3180
3233
|
for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
3181
|
-
if (kind && result) __defProp$
|
|
3234
|
+
if (kind && result) __defProp$18(target, key, result);
|
|
3182
3235
|
return result;
|
|
3183
3236
|
};
|
|
3184
3237
|
var TenantPermissionOverride = class extends SmrtObject {
|
|
@@ -3216,10 +3269,10 @@ var TenantPermissionOverride = class extends SmrtObject {
|
|
|
3216
3269
|
return this.effect !== TenantPermissionEffect.INHERIT;
|
|
3217
3270
|
}
|
|
3218
3271
|
};
|
|
3219
|
-
__decorateClass$
|
|
3220
|
-
__decorateClass$
|
|
3221
|
-
__decorateClass$
|
|
3222
|
-
TenantPermissionOverride = __decorateClass$
|
|
3272
|
+
__decorateClass$17([foreignKey("Tenant", { required: true })], TenantPermissionOverride.prototype, "tenantId", 2);
|
|
3273
|
+
__decorateClass$17([foreignKey("Permission", { required: true })], TenantPermissionOverride.prototype, "permissionId", 2);
|
|
3274
|
+
__decorateClass$17([field({ type: "text" })], TenantPermissionOverride.prototype, "effect", 2);
|
|
3275
|
+
TenantPermissionOverride = __decorateClass$17([smrt({
|
|
3223
3276
|
api: { include: ["list", "get"] },
|
|
3224
3277
|
mcp: { include: ["list", "get"] },
|
|
3225
3278
|
cli: { skipApiCheck: true }
|
|
@@ -3335,6 +3388,31 @@ function getRequestScopedDatabase() {
|
|
|
3335
3388
|
}
|
|
3336
3389
|
globalThis.__smrtGetRequestPermissionContext ??= getCurrentSessionPermissionContext;
|
|
3337
3390
|
globalThis.__smrtGetRequestScopedDatabase ??= getRequestScopedDatabase;
|
|
3391
|
+
Object.freeze([
|
|
3392
|
+
"1234567890",
|
|
3393
|
+
"0123456789",
|
|
3394
|
+
"12345678910",
|
|
3395
|
+
"1111111111",
|
|
3396
|
+
"0000000000",
|
|
3397
|
+
"qwertyuiop",
|
|
3398
|
+
"password12",
|
|
3399
|
+
"password123",
|
|
3400
|
+
"password1234",
|
|
3401
|
+
"passw0rd123",
|
|
3402
|
+
"iloveyou123",
|
|
3403
|
+
"letmein123",
|
|
3404
|
+
"welcome123",
|
|
3405
|
+
"abc1234567",
|
|
3406
|
+
"abcdefghij",
|
|
3407
|
+
"qwerty1234",
|
|
3408
|
+
"qwerty12345",
|
|
3409
|
+
"1q2w3e4r5t",
|
|
3410
|
+
"1qaz2wsx3edc",
|
|
3411
|
+
"zaq12wsxcde",
|
|
3412
|
+
"changeme123",
|
|
3413
|
+
"administrator",
|
|
3414
|
+
"trustno1234"
|
|
3415
|
+
]);
|
|
3338
3416
|
//#endregion
|
|
3339
3417
|
//#region ../users/dist/index.js
|
|
3340
3418
|
var __defProp$4 = Object.defineProperty;
|