@happyvertical/smrt-cli 0.55.12 → 0.55.14
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-WDHL-_AF-BszXtso4.js → AuditLogCollection-WDHL-_AF-h2vNlSBk.js} +1 -1
- package/dist/{OidcIdentity-BUblgQLs-BKQM3V05.js → OidcIdentity-BUblgQLs-B43aJFVN.js} +2 -2
- package/dist/{OidcIdentityCollection-ClOyaHeF-Cl55iTxm.js → OidcIdentityCollection-ClOyaHeF-CI792HmI.js} +1 -1
- package/dist/{ProfileAssetCollection-CRMcjLJ--CEeWgEaI.js → ProfileAssetCollection-CRMcjLJ--7a1azqpn.js} +3 -3
- package/dist/{ProfileCollection-C4INKh7Y-BwsTQNNn.js → ProfileCollection-C4INKh7Y-DdLGe3yb.js} +17 -17
- package/dist/{ProfileLinkCollection-DFfZRsgv-Cc-IoY9N.js → ProfileLinkCollection-DFfZRsgv-C-eb00-A.js} +2 -2
- package/dist/{ProfileMetadataCollection-BIYKy4Y3-Defebkba.js → ProfileMetadataCollection-BIYKy4Y3-CVSWpN4z.js} +1 -1
- package/dist/{ProfileMetafieldCollection-Buz7gzag-Dp1xGqhO.js → ProfileMetafieldCollection-Buz7gzag-DBkvkeGG.js} +1 -1
- package/dist/{ProfileRelationshipCollection-C4g_QLI4-BJkzyR5B.js → ProfileRelationshipCollection-C4g_QLI4-DccFHK5q.js} +1 -1
- package/dist/{ProfileTypeCollection-B7kwi1mU-DMXAvisH.js → ProfileTypeCollection-B7kwi1mU-B_jgkmBV.js} +2 -2
- package/dist/{commands-D72vE9ew.js → commands-CVWvj1GV.js} +2 -2
- package/dist/{dist-BP9F7quh.js → dist-B6z5Im5c.js} +28 -9
- package/dist/{dist-BBhTd0bD.js → dist-C4uJTsZd.js} +3 -3
- package/dist/{dist-ByGzc20I.js → dist-ppEhHZiY.js} +112 -93
- package/dist/{dist-ZcbytynG.js → dist-sVa8xW_Q.js} +4 -4
- package/dist/dist-y1XyyiWr.js +21 -0
- package/dist/index.js +11 -11
- package/dist/{oidcProvisioningPrimitives-DNP9EZlU-CUqct6Rk.js → oidcProvisioningPrimitives-DNP9EZlU-DEpTx_Wn.js} +3 -3
- package/dist/{resolveIdentity-CkyqvctR-Zz28PljF.js → resolveIdentity-CkyqvctR-4bMMbvZc.js} +14 -14
- package/package.json +15 -15
- package/dist/dist-C75AUvCx.js +0 -21
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { i as tenantId, r as TenantScoped } from "./dist-
|
|
1
|
+
import { i as tenantId, r as TenantScoped } from "./dist-C4uJTsZd.js";
|
|
2
2
|
import { n as __exportAll$1 } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
|
|
3
3
|
import "./ApiKey-CVmlf3V6-BAeHuH48.js";
|
|
4
4
|
import "./ApiKeyCollection-CiiDNFdD-CMGF3_ul.js";
|
|
5
|
-
import "./AuditLogCollection-WDHL-_AF-
|
|
5
|
+
import "./AuditLogCollection-WDHL-_AF-h2vNlSBk.js";
|
|
6
6
|
import "./NostrIdentityCollection-CctlECpX-fkAPnK02.js";
|
|
7
|
-
import "./OidcIdentity-BUblgQLs-
|
|
8
|
-
import "./OidcIdentityCollection-ClOyaHeF-
|
|
9
|
-
import "./ProfileAssetCollection-CRMcjLJ--
|
|
10
|
-
import { u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-
|
|
11
|
-
import "./ProfileLinkCollection-DFfZRsgv-
|
|
12
|
-
import "./ProfileMetadataCollection-BIYKy4Y3-
|
|
13
|
-
import "./ProfileMetafieldCollection-Buz7gzag-
|
|
14
|
-
import "./ProfileRelationshipCollection-C4g_QLI4-
|
|
7
|
+
import "./OidcIdentity-BUblgQLs-B43aJFVN.js";
|
|
8
|
+
import "./OidcIdentityCollection-ClOyaHeF-CI792HmI.js";
|
|
9
|
+
import "./ProfileAssetCollection-CRMcjLJ--7a1azqpn.js";
|
|
10
|
+
import { u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-DdLGe3yb.js";
|
|
11
|
+
import "./ProfileLinkCollection-DFfZRsgv-C-eb00-A.js";
|
|
12
|
+
import "./ProfileMetadataCollection-BIYKy4Y3-CVSWpN4z.js";
|
|
13
|
+
import "./ProfileMetafieldCollection-Buz7gzag-DBkvkeGG.js";
|
|
14
|
+
import "./ProfileRelationshipCollection-C4g_QLI4-DccFHK5q.js";
|
|
15
15
|
import "./ProfileRelationshipTermCollection-C9J7mC7P-ChIFqjCg.js";
|
|
16
16
|
import "./ProfileRelationshipType-U7IwF6Wf-DNavf24e.js";
|
|
17
17
|
import "./ProfileRelationshipTypeCollection-_n22WqTb-DiZUWvev.js";
|
|
18
|
-
import "./ProfileTypeCollection-B7kwi1mU-
|
|
19
|
-
import "./oidcProvisioningPrimitives-DNP9EZlU-
|
|
20
|
-
import "./resolveIdentity-CkyqvctR-
|
|
18
|
+
import "./ProfileTypeCollection-B7kwi1mU-B_jgkmBV.js";
|
|
19
|
+
import "./oidcProvisioningPrimitives-DNP9EZlU-DEpTx_Wn.js";
|
|
20
|
+
import "./resolveIdentity-CkyqvctR-4bMMbvZc.js";
|
|
21
21
|
import { ObjectRegistry, SmrtCollection, SmrtObject, bumpChangeFeed, crossPackageRef, field, findManifestEntryByQualifiedName, foreignKey, isEmbeddedDatabase, isPostgresDatabase, registerRetentionTask, smrt, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
|
|
22
22
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
23
23
|
import { createLogger } from "@happyvertical/logger";
|
|
@@ -26,7 +26,7 @@ import "@happyvertical/smrt-core/migrations";
|
|
|
26
26
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
27
27
|
import { AccessRequestStatus, MembershipStatus, OverrideEffect, SessionStatus, TenantPermissionEffect, TenantStatus, UserStatus } from "@happyvertical/smrt-types";
|
|
28
28
|
//#region ../profiles/dist/index.js
|
|
29
|
-
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-profiles","packageVersion":"0.55.12","objects":{"@happyvertical/smrt-profiles:ApiKeyCollection":{"name":"apikeycollection","className":"ApiKeyCollection","qualifiedName":"@happyvertical/smrt-profiles:ApiKeyCollection","collection":"apikeys","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ApiKeyCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findActiveByProfile":{"name":"findActiveByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findByHash":{"name":"findByHash","async":true,"parameters":[{"name":"keyHash","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"key","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"generateForProfile":{"name":"generateForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"revokeAllForProfile":{"name":"revokeAllForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeByPrefix":{"name":"revokeByPrefix","async":true,"parameters":[{"name":"keyPrefix","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"api_keys"},"extends":"SmrtCollection","extendsTypeArg":"ApiKey","exportName":"ApiKeyCollection","collectionExportName":"ApiKeyCollectionCollection","schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLogCollection":{"name":"auditlogcollection","className":"AuditLogCollection","qualifiedName":"@happyvertical/smrt-profiles:AuditLogCollection","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/AuditLogCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByResource":{"name":"findByResource","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByAction":{"name":"findByAction","async":true,"parameters":[{"name":"action","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findBySource":{"name":"findBySource","async":true,"parameters":[{"name":"source","type":"AuditSource","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findOnBehalfOf":{"name":"findOnBehalfOf","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Profile","string","AuditSource","Record<string, unknown>","Profile | null","Record<string, AuditChange>"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true},"getRecentActivity":{"name":"getRecentActivity","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"getResourceTimeline":{"name":"getResourceTimeline","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"AuditLog","exportName":"AuditLogCollection","collectionExportName":"AuditLogCollectionCollection","schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkTokenCollection":{"name":"magiclinktokencollection","className":"MagicLinkTokenCollection","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkTokenCollection","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/MagicLinkTokenCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByTokenHash":{"name":"findByTokenHash","async":true,"parameters":[{"name":"tokenHash","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"findActiveForEmail":{"name":"findActiveForEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"findByIdentity":{"name":"findByIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"countRecentByEmail":{"name":"countRecentByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"countRecentByIp":{"name":"countRecentByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeForIdentity":{"name":"revokeForIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"isRateLimitedByEmail":{"name":"isRateLimitedByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"isRateLimitedByIp":{"name":"isRateLimitedByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens"},"extends":"SmrtCollection","extendsTypeArg":"MagicLinkToken","exportName":"MagicLinkTokenCollection","collectionExportName":"MagicLinkTokenCollectionCollection","schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentityCollection":{"name":"nostridentitycollection","className":"NostrIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentityCollection","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/NostrIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"createForProfile":{"name":"createForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"email","type":"string","optional":false},{"name":"masterSecret","type":"string","optional":false},{"name":"nip05Username","type":"string","optional":true}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getNip05Response":{"name":"getNip05Response","async":true,"parameters":[{"name":"username","type":"string","optional":true}],"returnType":"Promise<Nip05Response>","isStatic":false,"isPublic":true},"isNip05Available":{"name":"isNip05Available","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"updateNip05Username":{"name":"updateNip05Username","async":true,"parameters":[{"name":"identity","type":"NostrIdentity","optional":false},{"name":"newUsername","type":"string","optional":false}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities"},"extends":"SmrtCollection","extendsTypeArg":"NostrIdentity","exportName":"NostrIdentityCollection","collectionExportName":"NostrIdentityCollectionCollection","schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentityCollection":{"name":"oidcidentitycollection","className":"OidcIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentityCollection","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<OidcIdentity | null>","isStatic":false,"isPublic":true},"findByProvider":{"name":"findByProvider","async":true,"parameters":[{"name":"provider","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities"},"extends":"SmrtCollection","extendsTypeArg":"OidcIdentity","exportName":"OidcIdentityCollection","collectionExportName":"OidcIdentityCollectionCollection","schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection":{"name":"oidcprofileemailreservationcollection","className":"OidcProfileEmailReservationCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection","collection":"oidcprofileemailreservations","description":"Internal collection for canonical OIDC email reservations.","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcProfileEmailReservationCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"OidcProfileEmailReservation","exportName":"OidcProfileEmailReservationCollection","collectionExportName":"OidcProfileEmailReservationCollectionCollection","schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileAssetCollection":{"name":"profileassetcollection","className":"ProfileAssetCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileAssetCollection","collection":"profileassets","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileAssetCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"profile_assets"},"extends":"SmrtJunction","extendsTypeArg":"ProfileAsset","exportName":"ProfileAssetCollection","collectionExportName":"ProfileAssetCollectionCollection","schema":{"tableName":"profile_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_assets_profile_id_asset_id_idx","columns":["profile_id","asset_id","relationship"],"unique":true},{"name":"profile_assets_slug_context_idx","columns":["slug","context"]},{"name":"profile_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_assets_asset_id_idx","columns":["asset_id"]}],"version":"d0d7c2a2"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileCollection":{"name":"profilecollection","className":"ProfileCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileCollection","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findUniqueGlobalPersonByEmail":{"name":"findUniqueGlobalPersonByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"requireCanonicalGlobalPerson":{"name":"requireCanonicalGlobalPerson","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"reserveCanonicalIdentityEmail":{"name":"reserveCanonicalIdentityEmail","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"batchGetMetadata":{"name":"batchGetMetadata","async":true,"parameters":[{"name":"profileIds","type":"string[]","optional":false}],"returnType":"Promise<Map<string, Record<string, string>>>","isStatic":false,"isPublic":true},"batchUpdateMetadata":{"name":"batchUpdateMetadata","async":true,"parameters":[{"name":"updates","type":"Array<object>","optional":false,"memberTypes":["string","Record<string, unknown>"]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationshipNetwork":{"name":"getRelationshipNetwork","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["number"]}],"returnType":"Promise<Map<string, number>>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Profile","exportName":"ProfileCollection","collectionExportName":"ProfileCollectionCollection","schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"f4a7b632"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileLinkCollection":{"name":"profilelinkcollection","className":"ProfileLinkCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileLinkCollection","collection":"profilelinks","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileLinkCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"listForProfile":{"name":"listForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"replaceForProfile":{"name":"replaceForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"reorder":{"name":"reorder","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"linkIds","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"profile_links","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ProfileLink","exportName":"ProfileLinkCollection","collectionExportName":"ProfileLinkCollectionCollection","schema":{"tableName":"profile_links","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_links\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"platform\\" TEXT NOT NULL DEFAULT 'website',\\n \\"url\\" TEXT NOT NULL,\\n \\"label\\" TEXT,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"platform":{"type":"TEXT","notNull":true,"unique":false,"default":"website"},"url":{"type":"TEXT","notNull":true,"unique":false},"label":{"type":"TEXT","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_links_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"profile_links_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_links_profile_id_idx","columns":["profile_id"]}],"version":"847fd648"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetadataCollection":{"name":"profilemetadatacollection","className":"ProfileMetadataCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetadataCollection","collection":"profilemetadatas","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetadataCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByProfile":{"name":"getByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileMetadata[]>","isStatic":false,"isPublic":true},"getMetadataObject":{"name":"getMetadataObject","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"findProfilesByMetadata":{"name":"findProfilesByMetadata","async":true,"parameters":[{"name":"metafieldId","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<string[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetadata","exportName":"ProfileMetadataCollection","collectionExportName":"ProfileMetadataCollectionCollection","schema":{"tableName":"profile_metadata","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metadata\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"metafield_id\\" UUID,\\n \\"value\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"metafield_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_metafields","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"value":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"profile_metadata_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metadata_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metadata_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_metadata_profile_id_idx","columns":["profile_id"]},{"name":"profile_metadata_metafield_id_idx","columns":["metafield_id"]}],"version":"d3ab1b70"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetafieldCollection":{"name":"profilemetafieldcollection","className":"ProfileMetafieldCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetafieldCollection","collection":"profilemetafields","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetafieldCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileMetafield | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","ValidationSchema"]}],"returnType":"Promise<ProfileMetafield>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetafield","exportName":"ProfileMetafieldCollection","collectionExportName":"ProfileMetafieldCollectionCollection","schema":{"tableName":"profile_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"validation\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"validation":{"type":"JSON","notNull":false}},"indexes":[{"name":"profile_metafields_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metafields_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"afe420df"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipCollection":{"name":"profilerelationshipcollection","className":"ProfileRelationshipCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipCollection","collection":"profilerelationships","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getFromProfile":{"name":"getFromProfile","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getToProfile":{"name":"getToProfile","async":true,"parameters":[{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getForProfile":{"name":"getForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"exists":{"name":"exists","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationship","exportName":"ProfileRelationshipCollection","collectionExportName":"ProfileRelationshipCollectionCollection","schema":{"tableName":"profile_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"from_profile_id\\" UUID,\\n \\"to_profile_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"context_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"from_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"to_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationship_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"context_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"profile_relationships_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_relationships_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_relationships_from_profile_id_idx","columns":["from_profile_id"]},{"name":"profile_relationships_to_profile_id_idx","columns":["to_profile_id"]},{"name":"profile_relationships_type_id_idx","columns":["type_id"]},{"name":"profile_relationships_context_profile_id_idx","columns":["context_profile_id"]}],"version":"48878dba"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection":{"name":"profilerelationshiptermcollection","className":"ProfileRelationshipTermCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection","collection":"profilerelationshipterms","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTermCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByRelationship":{"name":"getByRelationship","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true},"getActiveTerm":{"name":"getActiveTerm","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm | null>","isStatic":false,"isPublic":true},"getHistoricalTerms":{"name":"getHistoricalTerms","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipTerm","exportName":"ProfileRelationshipTermCollection","collectionExportName":"ProfileRelationshipTermCollectionCollection","schema":{"tableName":"profile_relationship_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"relationship_id\\" UUID,\\n \\"started_at\\" TIMESTAMP,\\n \\"ended_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"relationship_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationships","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"started_at":{"type":"TIMESTAMP","notNull":false},"ended_at":{"type":"TIMESTAMP","notNull":false}},"indexes":[{"name":"profile_relationship_terms_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_terms_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_terms_created_at_idx","columns":["created_at"]},{"name":"profile_relationship_terms_relationship_id_idx","columns":["relationship_id"]}],"version":"ef299102"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection":{"name":"profilerelationshiptypecollection","className":"ProfileRelationshipTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection","collection":"profilerelationshiptypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipType | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","boolean"]}],"returnType":"Promise<ProfileRelationshipType>","isStatic":false,"isPublic":true},"getReciprocal":{"name":"getReciprocal","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true},"getDirectional":{"name":"getDirectional","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipType","exportName":"ProfileRelationshipTypeCollection","collectionExportName":"ProfileRelationshipTypeCollectionCollection","schema":{"tableName":"profile_relationship_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT DEFAULT '',\\n \\"reciprocal\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false,"default":""},"reciprocal":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"profile_relationship_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_types_created_at_idx","columns":["created_at"]}],"version":"719fe0d9"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileTypeCollection":{"name":"profiletypecollection","className":"ProfileTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileTypeCollection","collection":"profiletypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileType | null>","isStatic":false,"isPublic":true},"getAvailableById":{"name":"getAvailableById","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"tenantId","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","displayLabelField":"name","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLog":{"name":"auditlog","className":"AuditLog","qualifiedName":"@happyvertical/smrt-profiles:AuditLog","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/AuditLog.ts","packageName":"@happyvertical/smrt-profiles","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":true}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"action":{"type":"text","required":false,"default":""},"reason":{"type":"text","required":false,"default":""},"changes":{"type":"json","required":false,"default":{}},"resourceType":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"resourceId":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"occurredAt":{"type":"datetime","required":false,"default":"current_timestamp","_meta":{"indexed":true,"default":"current_timestamp"}},"source":{"type":"text","required":false,"default":"web","enum":["web","cli","ci","webhook","mcp"]},"metadata":{"type":"json","required":false,"default":{}},"onBehalfOfId":{"type":"foreignKey","required":false,"related":"Profile","_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getOnBehalfOf":{"name":"getOnBehalfOf","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getEffectiveActor":{"name":"getEffectiveActor","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<AuditLog>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","sensitive":true,"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional","allowSuperAdminBypass":true},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"AuditLog","collectionExportName":"AuditLogCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkToken":{"name":"magiclinktoken","className":"MagicLinkToken","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkToken","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/MagicLinkToken.ts","packageName":"@happyvertical/smrt-profiles","fields":{"nostrIdentityId":{"type":"foreignKey","required":true,"related":"NostrIdentity","_meta":{"required":true}},"tokenHash":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"email":{"type":"text","required":false,"default":""},"expiresAt":{"type":"datetime","required":false},"usedAt":{"type":"datetime","required":false},"requestedFromIp":{"type":"text","required":false,"default":""},"createdAt":{"type":"datetime","required":false}},"methods":{"hashToken":{"name":"hashToken","async":false,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"generate":{"name":"generate","async":true,"parameters":[{"name":"nostrIdentity","type":"NostrIdentity","optional":false},{"name":"email","type":"string","optional":false},{"name":"options","type":"object","optional":true,"typeUnresolved":true,"memberTypes":["number","string"]}],"returnType":"Promise<GenerateTokenResult>","isStatic":true,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<MagicLinkToken | null>","isStatic":true,"isPublic":true},"isValid":{"name":"isValid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isUsed":{"name":"isUsed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markUsed":{"name":"markUsed","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getNostrIdentity":{"name":"getNostrIdentity","async":true,"parameters":[],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"getTimeRemainingSeconds":{"name":"getTimeRemainingSeconds","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens","sensitive":true,"api":{"exclude":["*"]},"mcp":{"exclude":["*"]},"cli":{"include":["list"]}},"extends":"SmrtObject","exportName":"MagicLinkToken","collectionExportName":"MagicLinkTokenCollection","validationRules":[{"field":"nostrIdentityId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentity":{"name":"nostridentity","className":"NostrIdentity","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentity","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/NostrIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"pubkey":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"encryptedPrivkey":{"type":"text","required":false,"default":""},"encryptionIv":{"type":"text","required":false,"default":""},"encryptionTag":{"type":"text","required":false,"default":""},"email":{"type":"text","required":false,"default":""},"nip05Username":{"type":"text","required":false,"default":""},"lastUsedAt":{"type":"datetime","required":false},"verifiedAt":{"type":"datetime","required":false}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"decryptPrivkey":{"name":"decryptPrivkey","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true},"getKeypair":{"name":"getKeypair","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"object","isStatic":false,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"markVerified":{"name":"markVerified","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"isVerified":{"name":"isVerified","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getNip05Identifier":{"name":"getNip05Identifier","async":false,"parameters":[{"name":"domain","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities","sensitive":true,"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"NostrIdentity","collectionExportName":"NostrIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentity":{"name":"oidcidentity","className":"OidcIdentity","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentity","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"provider":{"type":"text","required":false,"_meta":{}},"issuer":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"identityKey":{"type":"text","required":false,"_meta":{"nullable":true,"unique":true,"readonly":true},"readonly":true},"email":{"type":"text","required":false,"_meta":{}},"lastUsedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity | null>","isStatic":true,"isPublic":true},"buildIdentityKey":{"name":"buildIdentityKey","async":false,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"findOrCreate":{"name":"findOrCreate","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity>","isStatic":true,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"OidcIdentity","collectionExportName":"OidcIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservation":{"name":"oidcprofileemailreservation","className":"OidcProfileEmailReservation","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservation","collection":"oidcprofileemailreservations","description":"Private database arbiter for canonical OIDC email provisioning races.","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcProfileEmailReservation.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true,"unique":true}},"emailKey":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"readonly":true},"readonly":true}},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"OidcProfileEmailReservation","collectionExportName":"OidcProfileEmailReservationCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"emailKey","rule":"required","fieldType":"text"}],"schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Profile":{"name":"profile","className":"Profile","qualifiedName":"@happyvertical/smrt-profiles:Profile","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/Profile.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Profile","collectionExportName":"ProfileCollection","displayLabelField":"name","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","displayLabelField":"label","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","displayLabelField":"name","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","displayLabelField":"name","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","displayLabelField":"name","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","description":"Person profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Person","collectionExportName":"PersonCollection","displayLabelField":"name","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","description":"Organization profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Organization","collectionExportName":"OrganizationCollection","displayLabelField":"name","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","description":"Bot profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Bot","collectionExportName":"BotCollection","displayLabelField":"name","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","recipes":[{"id":"profiles.audit-log","className":"AuditLogRecipe","label":"Activity log","summary":"Review who changed a record and when.","synonyms":["audit trail","record history","activity"],"models":["@happyvertical/smrt-profiles:AuditLog"],"nav":[],"requires":[],"group":{"id":"activity","label":"Activity","summary":"Review authorized record history independently of messaging."},"section":{"id":"activity","label":"Activity","icon":"book","description":"See who changed records and why."},"help":{"markdown":"## Activity log\\nReview changes to records you are authorized to inspect. Each activity shows the actor, action, time, and recorded reason or resource.\\nOpen the related record when your application provides a link.\\n\\n## Record history\\nThe application enables auditing on selected models and authorizes audit reads. Only recorded events appear; enabling auditing does not reconstruct earlier changes.\\nSensitive audit details are available only through the application's authorized history service.\\n","fieldRefs":[]},"surfaces":[{"kind":"route","path":"/activity","export":"@happyvertical/smrt-svelte#ActivityList","label":"Activity log"}],"providers":[{"id":"audit-trail","kind":"activity","options":["audit-log"],"required":true}],"runtime":"both","demoSeed":{"data":{"entries":[{"id":"demo-audit","title":"Demo colleague \xB7 updated","detail":"Approved a fictional record.","occurredAt":"2026-01-01T12:00:00Z","href":null}]}},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto in root; core migrations (node:os); and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}}],"smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-core","@happyvertical/smrt-prompts","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3617","#3624","#3626"],"reason":"node:crypto in root; core migrations (node:os)","via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
|
|
29
|
+
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-profiles","packageVersion":"0.55.14","objects":{"@happyvertical/smrt-profiles:ApiKeyCollection":{"name":"apikeycollection","className":"ApiKeyCollection","qualifiedName":"@happyvertical/smrt-profiles:ApiKeyCollection","collection":"apikeys","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ApiKeyCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findActiveByProfile":{"name":"findActiveByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"findByHash":{"name":"findByHash","async":true,"parameters":[{"name":"keyHash","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"key","type":"string","optional":false}],"returnType":"Promise<ApiKey | null>","isStatic":false,"isPublic":true},"generateForProfile":{"name":"generateForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"revokeAllForProfile":{"name":"revokeAllForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeByPrefix":{"name":"revokeByPrefix","async":true,"parameters":[{"name":"keyPrefix","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"api_keys"},"extends":"SmrtCollection","extendsTypeArg":"ApiKey","exportName":"ApiKeyCollection","collectionExportName":"ApiKeyCollectionCollection","schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLogCollection":{"name":"auditlogcollection","className":"AuditLogCollection","qualifiedName":"@happyvertical/smrt-profiles:AuditLogCollection","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/AuditLogCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByResource":{"name":"findByResource","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findByAction":{"name":"findByAction","async":true,"parameters":[{"name":"action","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findBySource":{"name":"findBySource","async":true,"parameters":[{"name":"source","type":"AuditSource","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"findOnBehalfOf":{"name":"findOnBehalfOf","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Profile","string","AuditSource","Record<string, unknown>","Profile | null","Record<string, AuditChange>"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true},"getRecentActivity":{"name":"getRecentActivity","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"getResourceTimeline":{"name":"getResourceTimeline","async":true,"parameters":[{"name":"resourceType","type":"string","optional":false},{"name":"resourceId","type":"string","optional":false}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"AuditLog","exportName":"AuditLogCollection","collectionExportName":"AuditLogCollectionCollection","schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkTokenCollection":{"name":"magiclinktokencollection","className":"MagicLinkTokenCollection","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkTokenCollection","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/MagicLinkTokenCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByTokenHash":{"name":"findByTokenHash","async":true,"parameters":[{"name":"tokenHash","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"findActiveForEmail":{"name":"findActiveForEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"findByIdentity":{"name":"findByIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken[]>","isStatic":false,"isPublic":true},"countRecentByEmail":{"name":"countRecentByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"countRecentByIp":{"name":"countRecentByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"withinMinutes","type":"number","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"Promise<MagicLinkToken | null>","isStatic":false,"isPublic":true},"cleanupExpired":{"name":"cleanupExpired","async":true,"parameters":[],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"revokeForIdentity":{"name":"revokeForIdentity","async":true,"parameters":[{"name":"nostrIdentityId","type":"string","optional":false}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"isRateLimitedByEmail":{"name":"isRateLimitedByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"isRateLimitedByIp":{"name":"isRateLimitedByIp","async":true,"parameters":[{"name":"ip","type":"string","optional":false},{"name":"maxPerHour","type":"number","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens"},"extends":"SmrtCollection","extendsTypeArg":"MagicLinkToken","exportName":"MagicLinkTokenCollection","collectionExportName":"MagicLinkTokenCollectionCollection","schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentityCollection":{"name":"nostridentitycollection","className":"NostrIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentityCollection","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/NostrIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"createForProfile":{"name":"createForProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"email","type":"string","optional":false},{"name":"masterSecret","type":"string","optional":false},{"name":"nip05Username","type":"string","optional":true}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"pubkey","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"getNip05Response":{"name":"getNip05Response","async":true,"parameters":[{"name":"username","type":"string","optional":true}],"returnType":"Promise<Nip05Response>","isStatic":false,"isPublic":true},"isNip05Available":{"name":"isNip05Available","async":true,"parameters":[{"name":"username","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"updateNip05Username":{"name":"updateNip05Username","async":true,"parameters":[{"name":"identity","type":"NostrIdentity","optional":false},{"name":"newUsername","type":"string","optional":false}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities"},"extends":"SmrtCollection","extendsTypeArg":"NostrIdentity","exportName":"NostrIdentityCollection","collectionExportName":"NostrIdentityCollectionCollection","schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentityCollection":{"name":"oidcidentitycollection","className":"OidcIdentityCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentityCollection","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcIdentityCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByProfile":{"name":"findByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<OidcIdentity | null>","isStatic":false,"isPublic":true},"findByProvider":{"name":"findByProvider","async":true,"parameters":[{"name":"provider","type":"string","optional":false}],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkToProfile":{"name":"linkToProfile","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"unlinkFromProfile":{"name":"unlinkFromProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities"},"extends":"SmrtCollection","extendsTypeArg":"OidcIdentity","exportName":"OidcIdentityCollection","collectionExportName":"OidcIdentityCollectionCollection","schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection":{"name":"oidcprofileemailreservationcollection","className":"OidcProfileEmailReservationCollection","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservationCollection","collection":"oidcprofileemailreservations","description":"Internal collection for canonical OIDC email reservations.","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/OidcProfileEmailReservationCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"OidcProfileEmailReservation","exportName":"OidcProfileEmailReservationCollection","collectionExportName":"OidcProfileEmailReservationCollectionCollection","schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileAssetCollection":{"name":"profileassetcollection","className":"ProfileAssetCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileAssetCollection","collection":"profileassets","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileAssetCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"profile_assets"},"extends":"SmrtJunction","extendsTypeArg":"ProfileAsset","exportName":"ProfileAssetCollection","collectionExportName":"ProfileAssetCollectionCollection","schema":{"tableName":"profile_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_assets_profile_id_asset_id_idx","columns":["profile_id","asset_id","relationship"],"unique":true},{"name":"profile_assets_slug_context_idx","columns":["slug","context"]},{"name":"profile_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_assets_asset_id_idx","columns":["asset_id"]}],"version":"d0d7c2a2"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileCollection":{"name":"profilecollection","className":"ProfileCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileCollection","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findUniqueGlobalPersonByEmail":{"name":"findUniqueGlobalPersonByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"requireCanonicalGlobalPerson":{"name":"requireCanonicalGlobalPerson","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"reserveCanonicalIdentityEmail":{"name":"reserveCanonicalIdentityEmail","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"email","type":"string","optional":true}],"returnType":"Promise<Profile>","isStatic":false,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"batchGetMetadata":{"name":"batchGetMetadata","async":true,"parameters":[{"name":"profileIds","type":"string[]","optional":false}],"returnType":"Promise<Map<string, Record<string, string>>>","isStatic":false,"isPublic":true},"batchUpdateMetadata":{"name":"batchUpdateMetadata","async":true,"parameters":[{"name":"updates","type":"Array<object>","optional":false,"memberTypes":["string","Record<string, unknown>"]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationshipNetwork":{"name":"getRelationshipNetwork","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["number"]}],"returnType":"Promise<Map<string, number>>","isStatic":false,"isPublic":true},"findByTenant":{"name":"findByTenant","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findGlobal":{"name":"findGlobal","async":true,"parameters":[],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"findWithGlobals":{"name":"findWithGlobals","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"Profile","exportName":"ProfileCollection","collectionExportName":"ProfileCollectionCollection","schema":{"tableName":"profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"email\\" TEXT,\\n \\"email_key\\" TEXT,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"is_public\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email":{"type":"TEXT","notNull":false},"email_key":{"type":"TEXT","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"is_public":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profiles_meta_type_idx","columns":["_meta_type"]},{"name":"profiles_email_key_idx","columns":["email_key"]},{"name":"profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profiles_type_id_idx","columns":["type_id"]}],"version":"f4a7b632"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileLinkCollection":{"name":"profilelinkcollection","className":"ProfileLinkCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileLinkCollection","collection":"profilelinks","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileLinkCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"listForProfile":{"name":"listForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"replaceForProfile":{"name":"replaceForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"reorder":{"name":"reorder","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"linkIds","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"profile_links","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ProfileLink","exportName":"ProfileLinkCollection","collectionExportName":"ProfileLinkCollectionCollection","schema":{"tableName":"profile_links","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_links\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"platform\\" TEXT NOT NULL DEFAULT 'website',\\n \\"url\\" TEXT NOT NULL,\\n \\"label\\" TEXT,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"platform":{"type":"TEXT","notNull":true,"unique":false,"default":"website"},"url":{"type":"TEXT","notNull":true,"unique":false},"label":{"type":"TEXT","notNull":false,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"profile_links_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"profile_links_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_links_profile_id_idx","columns":["profile_id"]}],"version":"847fd648"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetadataCollection":{"name":"profilemetadatacollection","className":"ProfileMetadataCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetadataCollection","collection":"profilemetadatas","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetadataCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByProfile":{"name":"getByProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<ProfileMetadata[]>","isStatic":false,"isPublic":true},"getMetadataObject":{"name":"getMetadataObject","async":true,"parameters":[{"name":"profileId","type":"string","optional":false}],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"findProfilesByMetadata":{"name":"findProfilesByMetadata","async":true,"parameters":[{"name":"metafieldId","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<string[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetadata","exportName":"ProfileMetadataCollection","collectionExportName":"ProfileMetadataCollectionCollection","schema":{"tableName":"profile_metadata","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metadata\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"metafield_id\\" UUID,\\n \\"value\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"metafield_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_metafields","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"value":{"type":"TEXT","notNull":false,"default":""}},"indexes":[{"name":"profile_metadata_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metadata_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metadata_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_metadata_profile_id_idx","columns":["profile_id"]},{"name":"profile_metadata_metafield_id_idx","columns":["metafield_id"]}],"version":"d3ab1b70"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileMetafieldCollection":{"name":"profilemetafieldcollection","className":"ProfileMetafieldCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileMetafieldCollection","collection":"profilemetafields","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileMetafieldCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileMetafield | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","ValidationSchema"]}],"returnType":"Promise<ProfileMetafield>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileMetafield","exportName":"ProfileMetafieldCollection","collectionExportName":"ProfileMetafieldCollectionCollection","schema":{"tableName":"profile_metafields","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_metafields\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"validation\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"validation":{"type":"JSON","notNull":false}},"indexes":[{"name":"profile_metafields_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_metafields_meta_type_idx","columns":["_meta_type"]},{"name":"profile_metafields_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"afe420df"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipCollection":{"name":"profilerelationshipcollection","className":"ProfileRelationshipCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipCollection","collection":"profilerelationships","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getFromProfile":{"name":"getFromProfile","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getToProfile":{"name":"getToProfile","async":true,"parameters":[{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getForProfile":{"name":"getForProfile","async":true,"parameters":[{"name":"profileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":true}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"exists":{"name":"exists","async":true,"parameters":[{"name":"fromProfileId","type":"string","optional":false},{"name":"toProfileId","type":"string","optional":false},{"name":"typeId","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationship","exportName":"ProfileRelationshipCollection","collectionExportName":"ProfileRelationshipCollectionCollection","schema":{"tableName":"profile_relationships","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"from_profile_id\\" UUID,\\n \\"to_profile_id\\" UUID,\\n \\"type_id\\" UUID,\\n \\"context_profile_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"from_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"to_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"type_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationship_types","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"context_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"profile_relationships_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"profile_relationships_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"profile_relationships_from_profile_id_idx","columns":["from_profile_id"]},{"name":"profile_relationships_to_profile_id_idx","columns":["to_profile_id"]},{"name":"profile_relationships_type_id_idx","columns":["type_id"]},{"name":"profile_relationships_context_profile_id_idx","columns":["context_profile_id"]}],"version":"48878dba"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection":{"name":"profilerelationshiptermcollection","className":"ProfileRelationshipTermCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTermCollection","collection":"profilerelationshipterms","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTermCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getByRelationship":{"name":"getByRelationship","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true},"getActiveTerm":{"name":"getActiveTerm","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm | null>","isStatic":false,"isPublic":true},"getHistoricalTerms":{"name":"getHistoricalTerms","async":true,"parameters":[{"name":"relationshipId","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipTerm[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipTerm","exportName":"ProfileRelationshipTermCollection","collectionExportName":"ProfileRelationshipTermCollectionCollection","schema":{"tableName":"profile_relationship_terms","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_terms\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"relationship_id\\" UUID,\\n \\"started_at\\" TIMESTAMP,\\n \\"ended_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"relationship_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"profile_relationships","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"started_at":{"type":"TIMESTAMP","notNull":false},"ended_at":{"type":"TIMESTAMP","notNull":false}},"indexes":[{"name":"profile_relationship_terms_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_terms_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_terms_created_at_idx","columns":["created_at"]},{"name":"profile_relationship_terms_relationship_id_idx","columns":["relationship_id"]}],"version":"ef299102"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection":{"name":"profilerelationshiptypecollection","className":"ProfileRelationshipTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileRelationshipTypeCollection","collection":"profilerelationshiptypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileRelationshipTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileRelationshipType | null>","isStatic":false,"isPublic":true},"getOrCreateBySlug":{"name":"getOrCreateBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false},{"name":"defaults","type":"object","optional":false,"memberTypes":["string","boolean"]}],"returnType":"Promise<ProfileRelationshipType>","isStatic":false,"isPublic":true},"getReciprocal":{"name":"getReciprocal","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true},"getDirectional":{"name":"getDirectional","async":true,"parameters":[],"returnType":"Promise<ProfileRelationshipType[]>","isStatic":false,"isPublic":true}},"decoratorConfig":{},"extends":"SmrtCollection","extendsTypeArg":"ProfileRelationshipType","exportName":"ProfileRelationshipTypeCollection","collectionExportName":"ProfileRelationshipTypeCollectionCollection","schema":{"tableName":"profile_relationship_types","ddl":"CREATE TABLE IF NOT EXISTS \\"profile_relationship_types\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"name\\" TEXT DEFAULT '',\\n \\"reciprocal\\" BOOLEAN DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"name":{"type":"TEXT","notNull":false,"default":""},"reciprocal":{"type":"BOOLEAN","notNull":false,"default":true}},"indexes":[{"name":"profile_relationship_types_slug_context_meta_type_idx","columns":["slug","context","_meta_type"],"unique":true},{"name":"profile_relationship_types_meta_type_idx","columns":["_meta_type"]},{"name":"profile_relationship_types_created_at_idx","columns":["created_at"]}],"version":"719fe0d9"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:ProfileTypeCollection":{"name":"profiletypecollection","className":"ProfileTypeCollection","qualifiedName":"@happyvertical/smrt-profiles:ProfileTypeCollection","collection":"profiletypes","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/collections/ProfileTypeCollection.ts","packageName":"@happyvertical/smrt-profiles","fields":{},"methods":{"getBySlug":{"name":"getBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<ProfileType | null>","isStatic":false,"isPublic":true},"getAvailableById":{"name":"getAvailableById","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"tenantId","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","displayLabelField":"name","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"api_keys","ddl":"CREATE TABLE IF NOT EXISTS \\"api_keys\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"key_hash\\" TEXT DEFAULT '',\\n \\"key_prefix\\" TEXT DEFAULT '',\\n \\"name\\" TEXT DEFAULT '',\\n \\"scopes\\" JSON DEFAULT '[]',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"expires_at\\" TIMESTAMP,\\n \\"revoked_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"key_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"key_prefix":{"type":"TEXT","notNull":false,"unique":false,"default":""},"name":{"type":"TEXT","notNull":false,"unique":false,"default":""},"scopes":{"type":"JSON","notNull":false,"unique":false,"default":[]},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"api_keys_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"api_keys_key_hash_idx","columns":["key_hash"]},{"name":"api_keys_created_at_idx","columns":["created_at"]},{"name":"api_keys_profile_id_idx","columns":["profile_id"]}],"version":"9b0d49e8"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:AuditLog":{"name":"auditlog","className":"AuditLog","qualifiedName":"@happyvertical/smrt-profiles:AuditLog","collection":"auditlogs","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/AuditLog.ts","packageName":"@happyvertical/smrt-profiles","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":true}}},"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"action":{"type":"text","required":false,"default":""},"reason":{"type":"text","required":false,"default":""},"changes":{"type":"json","required":false,"default":{}},"resourceType":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"resourceId":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"occurredAt":{"type":"datetime","required":false,"default":"current_timestamp","_meta":{"indexed":true,"default":"current_timestamp"}},"source":{"type":"text","required":false,"default":"web","enum":["web","cli","ci","webhook","mcp"]},"metadata":{"type":"json","required":false,"default":{}},"onBehalfOfId":{"type":"foreignKey","required":false,"related":"Profile","_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getOnBehalfOf":{"name":"getOnBehalfOf","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"getEffectiveActor":{"name":"getEffectiveActor","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"record":{"name":"record","async":true,"parameters":[{"name":"options","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<AuditLog>","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableName":"audit_logs","sensitive":true,"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional","allowSuperAdminBypass":true},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"AuditLog","collectionExportName":"AuditLogCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"audit_logs","ddl":"CREATE TABLE IF NOT EXISTS \\"audit_logs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"action\\" TEXT DEFAULT '',\\n \\"reason\\" TEXT DEFAULT '',\\n \\"changes\\" JSON DEFAULT '{}',\\n \\"resource_type\\" TEXT DEFAULT '',\\n \\"resource_id\\" TEXT DEFAULT '',\\n \\"occurred_at\\" TIMESTAMP DEFAULT current_timestamp,\\n \\"source\\" TEXT DEFAULT 'web',\\n \\"metadata\\" JSON DEFAULT '{}',\\n \\"on_behalf_of_id\\" UUID\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false,"default":""},"reason":{"type":"TEXT","notNull":false,"unique":false,"default":""},"changes":{"type":"JSON","notNull":false,"unique":false,"default":{}},"resource_type":{"type":"TEXT","notNull":false,"unique":false,"default":""},"resource_id":{"type":"TEXT","notNull":false,"unique":false,"default":""},"occurred_at":{"type":"TIMESTAMP","notNull":false,"unique":false,"default":"current_timestamp"},"source":{"type":"TEXT","notNull":false,"unique":false,"default":"web"},"metadata":{"type":"JSON","notNull":false,"unique":false,"default":{}},"on_behalf_of_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"audit_logs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"audit_logs_resource_type_idx","columns":["resource_type"]},{"name":"audit_logs_resource_id_idx","columns":["resource_id"]},{"name":"audit_logs_occurred_at_idx","columns":["occurred_at"]},{"name":"audit_logs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"audit_logs_profile_id_idx","columns":["profile_id"]},{"name":"audit_logs_on_behalf_of_id_idx","columns":["on_behalf_of_id"]}],"version":"769bd855"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:MagicLinkToken":{"name":"magiclinktoken","className":"MagicLinkToken","qualifiedName":"@happyvertical/smrt-profiles:MagicLinkToken","collection":"magiclinktokens","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/MagicLinkToken.ts","packageName":"@happyvertical/smrt-profiles","fields":{"nostrIdentityId":{"type":"foreignKey","required":true,"related":"NostrIdentity","_meta":{"required":true}},"tokenHash":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"email":{"type":"text","required":false,"default":""},"expiresAt":{"type":"datetime","required":false},"usedAt":{"type":"datetime","required":false},"requestedFromIp":{"type":"text","required":false,"default":""},"createdAt":{"type":"datetime","required":false}},"methods":{"hashToken":{"name":"hashToken","async":false,"parameters":[{"name":"token","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"generate":{"name":"generate","async":true,"parameters":[{"name":"nostrIdentity","type":"NostrIdentity","optional":false},{"name":"email","type":"string","optional":false},{"name":"options","type":"object","optional":true,"typeUnresolved":true,"memberTypes":["number","string"]}],"returnType":"Promise<GenerateTokenResult>","isStatic":true,"isPublic":true},"verify":{"name":"verify","async":true,"parameters":[{"name":"token","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<MagicLinkToken | null>","isStatic":true,"isPublic":true},"isValid":{"name":"isValid","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isExpired":{"name":"isExpired","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"isUsed":{"name":"isUsed","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"markUsed":{"name":"markUsed","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getNostrIdentity":{"name":"getNostrIdentity","async":true,"parameters":[],"returnType":"Promise<NostrIdentity | null>","isStatic":false,"isPublic":true},"getTimeRemainingSeconds":{"name":"getTimeRemainingSeconds","async":false,"parameters":[],"returnType":"number","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"magic_link_tokens","sensitive":true,"api":{"exclude":["*"]},"mcp":{"exclude":["*"]},"cli":{"include":["list"]}},"extends":"SmrtObject","exportName":"MagicLinkToken","collectionExportName":"MagicLinkTokenCollection","validationRules":[{"field":"nostrIdentityId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"magic_link_tokens","ddl":"CREATE TABLE IF NOT EXISTS \\"magic_link_tokens\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"nostr_identity_id\\" UUID NOT NULL,\\n \\"token_hash\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"expires_at\\" TIMESTAMP,\\n \\"used_at\\" TIMESTAMP,\\n \\"requested_from_ip\\" TEXT DEFAULT ''\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"nostr_identity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"nostr_identities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"token_hash":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"requested_from_ip":{"type":"TEXT","notNull":false,"unique":false,"default":""}},"indexes":[{"name":"magic_link_tokens_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"magic_link_tokens_token_hash_idx","columns":["token_hash"]},{"name":"magic_link_tokens_created_at_idx","columns":["created_at"]},{"name":"magic_link_tokens_nostr_identity_id_idx","columns":["nostr_identity_id"]}],"version":"d60748fe"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:NostrIdentity":{"name":"nostridentity","className":"NostrIdentity","qualifiedName":"@happyvertical/smrt-profiles:NostrIdentity","collection":"nostridentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/NostrIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"pubkey":{"type":"text","required":false,"default":"","_meta":{"indexed":true}},"encryptedPrivkey":{"type":"text","required":false,"default":""},"encryptionIv":{"type":"text","required":false,"default":""},"encryptionTag":{"type":"text","required":false,"default":""},"email":{"type":"text","required":false,"default":""},"nip05Username":{"type":"text","required":false,"default":""},"lastUsedAt":{"type":"datetime","required":false},"verifiedAt":{"type":"datetime","required":false}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findByPubkey":{"name":"findByPubkey","async":true,"parameters":[{"name":"pubkey","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByEmail":{"name":"findByEmail","async":true,"parameters":[{"name":"email","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"findByNip05":{"name":"findByNip05","async":true,"parameters":[{"name":"username","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<NostrIdentity | null>","isStatic":true,"isPublic":true},"decryptPrivkey":{"name":"decryptPrivkey","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true},"getKeypair":{"name":"getKeypair","async":false,"parameters":[{"name":"masterSecret","type":"string","optional":false}],"returnType":"object","isStatic":false,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"markVerified":{"name":"markVerified","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"isVerified":{"name":"isVerified","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true},"getNip05Identifier":{"name":"getNip05Identifier","async":false,"parameters":[{"name":"domain","type":"string","optional":false}],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"nostr_identities","sensitive":true,"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"NostrIdentity","collectionExportName":"NostrIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"nostr_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"nostr_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"pubkey\\" TEXT DEFAULT '',\\n \\"encrypted_privkey\\" TEXT DEFAULT '',\\n \\"encryption_iv\\" TEXT DEFAULT '',\\n \\"encryption_tag\\" TEXT DEFAULT '',\\n \\"email\\" TEXT DEFAULT '',\\n \\"nip05_username\\" TEXT DEFAULT '',\\n \\"last_used_at\\" TIMESTAMP,\\n \\"verified_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"pubkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encrypted_privkey":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_iv":{"type":"TEXT","notNull":false,"unique":false,"default":""},"encryption_tag":{"type":"TEXT","notNull":false,"unique":false,"default":""},"email":{"type":"TEXT","notNull":false,"unique":false,"default":""},"nip05_username":{"type":"TEXT","notNull":false,"unique":false,"default":""},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"verified_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"nostr_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"nostr_identities_pubkey_idx","columns":["pubkey"]},{"name":"nostr_identities_created_at_idx","columns":["created_at"]},{"name":"nostr_identities_profile_id_idx","columns":["profile_id"]}],"version":"92eda375"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcIdentity":{"name":"oidcidentity","className":"OidcIdentity","qualifiedName":"@happyvertical/smrt-profiles:OidcIdentity","collection":"oidcidentities","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcIdentity.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true}},"provider":{"type":"text","required":false,"_meta":{}},"issuer":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"identityKey":{"type":"text","required":false,"_meta":{"nullable":true,"unique":true,"readonly":true},"readonly":true},"email":{"type":"text","required":false,"_meta":{}},"lastUsedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getProfile":{"name":"getProfile","async":true,"parameters":[],"returnType":"Promise<Profile | null>","isStatic":false,"isPublic":true},"findBySubject":{"name":"findBySubject","async":true,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity | null>","isStatic":true,"isPublic":true},"buildIdentityKey":{"name":"buildIdentityKey","async":false,"parameters":[{"name":"issuer","type":"string","optional":false},{"name":"subject","type":"string","optional":false}],"returnType":"string","isStatic":true,"isPublic":true},"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"findOrCreate":{"name":"findOrCreate","async":true,"parameters":[{"name":"profile","type":"Profile","optional":false},{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]},{"name":"options","type":"SmrtObjectOptions","optional":true}],"returnType":"Promise<OidcIdentity>","isStatic":true,"isPublic":true},"recordUsage":{"name":"recordUsage","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"oidc_identities","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"OidcIdentity","collectionExportName":"OidcIdentityCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"oidc_identities","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_identities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT,\\n \\"issuer\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"identity_key\\" TEXT UNIQUE,\\n \\"email\\" TEXT,\\n \\"last_used_at\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"provider":{"type":"TEXT","notNull":false,"unique":false},"issuer":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"identity_key":{"type":"TEXT","notNull":false,"unique":true},"email":{"type":"TEXT","notNull":false,"unique":false},"last_used_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"oidc_identities_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_identities_issuer_idx","columns":["issuer"]},{"name":"oidc_identities_subject_idx","columns":["subject"]},{"name":"oidc_identities_created_at_idx","columns":["created_at"]},{"name":"oidc_identities_profile_id_idx","columns":["profile_id"]}],"version":"925387ea"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:OidcProfileEmailReservation":{"name":"oidcprofileemailreservation","className":"OidcProfileEmailReservation","qualifiedName":"@happyvertical/smrt-profiles:OidcProfileEmailReservation","collection":"oidcprofileemailreservations","description":"Private database arbiter for canonical OIDC email provisioning races.","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/OidcProfileEmailReservation.ts","packageName":"@happyvertical/smrt-profiles","fields":{"profileId":{"type":"foreignKey","required":true,"related":"Profile","_meta":{"required":true,"unique":true}},"emailKey":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"readonly":true},"readonly":true}},"methods":{},"decoratorConfig":{"tableName":"oidc_profile_email_reservations","api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"OidcProfileEmailReservation","collectionExportName":"OidcProfileEmailReservationCollection","validationRules":[{"field":"profileId","rule":"required","fieldType":"foreignKey"},{"field":"emailKey","rule":"required","fieldType":"text"}],"schema":{"tableName":"oidc_profile_email_reservations","ddl":"CREATE TABLE IF NOT EXISTS \\"oidc_profile_email_reservations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"profile_id\\" UUID NOT NULL UNIQUE,\\n \\"email_key\\" TEXT NOT NULL UNIQUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":true,"foreignKey":{"table":"profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"email_key":{"type":"TEXT","notNull":true,"unique":true}},"indexes":[{"name":"oidc_profile_email_reservations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"oidc_profile_email_reservations_created_at_idx","columns":["created_at"]}],"version":"01586e67"},"importPath":"@happyvertical/smrt-profiles"},"@happyvertical/smrt-profiles:Profile":{"name":"profile","className":"Profile","qualifiedName":"@happyvertical/smrt-profiles:Profile","collection":"profiles","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/Profile.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true},"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Profile","collectionExportName":"ProfileCollection","displayLabelField":"name","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","displayLabelField":"label","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","displayLabelField":"name","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","displayLabelField":"name","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","displayLabelField":"name","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","description":"Person profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Person","collectionExportName":"PersonCollection","displayLabelField":"name","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","description":"Organization profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Organization","collectionExportName":"OrganizationCollection","displayLabelField":"name","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","description":"Bot profile type","filePath":"/home/runner/work/smrt/smrt/packages/profiles/src/models/ProfileTypes.ts","packageName":"@happyvertical/smrt-profiles","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"typeId":{"type":"foreignKey","required":true,"related":"ProfileType","_meta":{"required":true}},"email":{"type":"text","required":false},"emailKey":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true,"readonly":true},"readonly":true},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"description":{"type":"text","required":false},"isPublic":{"type":"boolean","required":false,"default":false,"_meta":{"default":false}},"metadata":{"type":"oneToMany","required":false,"related":"ProfileMetadata"},"relationshipsFrom":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"fromProfileId"}},"relationshipsTo":{"type":"oneToMany","required":false,"related":"ProfileRelationship","_meta":{"foreignKey":"toProfileId"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getTypeSlug":{"name":"getTypeSlug","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"setTypeBySlug":{"name":"setTypeBySlug","async":true,"parameters":[{"name":"slug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addMetadata":{"name":"addMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false},{"name":"value","type":"unknown","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getMetadata":{"name":"getMetadata","async":true,"parameters":[],"returnType":"Promise<Record<string, string>>","isStatic":false,"isPublic":true},"updateMetadata":{"name":"updateMetadata","async":true,"parameters":[{"name":"metadata","type":"Record<string, unknown>","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeMetadata":{"name":"removeMetadata","async":true,"parameters":[{"name":"metafieldSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getLinks":{"name":"getLinks","async":true,"parameters":[],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"links","type":"any","optional":false,"typeUnresolved":true}],"returnType":"Promise<ProfileLink[]>","isStatic":false,"isPublic":true},"getAssets":{"name":"getAssets","async":true,"parameters":[{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<Asset[]>","isStatic":false,"isPublic":true},"addAsset":{"name":"addAsset","async":true,"parameters":[{"name":"asset","type":"Asset","optional":false},{"name":"relationship","type":"any","optional":true,"default":"attachment"},{"name":"sortOrder","type":"any","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"removeAsset":{"name":"removeAsset","async":true,"parameters":[{"name":"assetId","type":"string","optional":false},{"name":"relationship","type":"string","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"addRelationship":{"name":"addRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false},{"name":"contextProfile","type":"Profile","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getRelationships":{"name":"getRelationships","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["string","'from' | 'to' | 'all'"]}],"returnType":"Promise<ProfileRelationship[]>","isStatic":false,"isPublic":true},"getRelatedProfiles":{"name":"getRelatedProfiles","async":true,"parameters":[{"name":"relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":false,"isPublic":true},"removeRelationship":{"name":"removeRelationship","async":true,"parameters":[{"name":"toProfile","type":"Profile","optional":false},{"name":"relationshipSlug","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"generateBio":{"name":"generateBio","async":true,"parameters":[],"returnType":"Promise<string>","isStatic":false,"isPublic":true},"matches":{"name":"matches","async":true,"parameters":[{"name":"criteria","type":"string","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"findByMetadata":{"name":"findByMetadata","async":true,"parameters":[{"name":"_metafieldSlug","type":"string","optional":false},{"name":"_value","type":"unknown","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findByType":{"name":"findByType","async":true,"parameters":[{"name":"_typeSlug","type":"string","optional":false}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"findRelated":{"name":"findRelated","async":true,"parameters":[{"name":"_profileId","type":"string","optional":false},{"name":"_relationshipSlug","type":"string","optional":true}],"returnType":"Promise<Profile[]>","isStatic":true,"isPublic":true},"searchByEmail":{"name":"searchByEmail","async":true,"parameters":[{"name":"_email","type":"string","optional":false}],"returnType":"Promise<Profile | null>","isStatic":true,"isPublic":true},"getApiKeys":{"name":"getApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"getActiveApiKeys":{"name":"getActiveApiKeys","async":true,"parameters":[],"returnType":"Promise<ApiKey[]>","isStatic":false,"isPublic":true},"generateApiKey":{"name":"generateApiKey","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["string","string[]","Date | null"]}],"returnType":"Promise<GenerateKeyResult>","isStatic":false,"isPublic":true},"getOidcIdentities":{"name":"getOidcIdentities","async":true,"parameters":[],"returnType":"Promise<OidcIdentity[]>","isStatic":false,"isPublic":true},"linkOidcIdentity":{"name":"linkOidcIdentity","async":true,"parameters":[{"name":"oidcData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<OidcIdentity>","isStatic":false,"isPublic":true},"getNostrIdentities":{"name":"getNostrIdentities","async":true,"parameters":[],"returnType":"Promise<NostrIdentity[]>","isStatic":false,"isPublic":true},"linkNostrIdentity":{"name":"linkNostrIdentity","async":true,"parameters":[{"name":"nostrData","type":"object","optional":false,"memberTypes":["string"]}],"returnType":"Promise<NostrIdentity>","isStatic":false,"isPublic":true},"getAuditLogs":{"name":"getAuditLogs","async":true,"parameters":[{"name":"limit","type":"number","optional":true}],"returnType":"Promise<AuditLog[]>","isStatic":false,"isPublic":true},"recordAction":{"name":"recordAction","async":true,"parameters":[{"name":"options","type":"object","optional":false,"typeUnresolved":true,"memberTypes":["string","'web' | 'cli' | 'ci' | 'webhook' | 'mcp'","Record<string, unknown>","Profile | null"]}],"returnType":"Promise<AuditLog>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","tableName":"profiles"},"extends":"Profile","exportName":"Bot","collectionExportName":"BotCollection","displayLabelField":"name","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","recipes":[{"id":"profiles.audit-log","className":"AuditLogRecipe","label":"Activity log","summary":"Review who changed a record and when.","synonyms":["audit trail","record history","activity"],"models":["@happyvertical/smrt-profiles:AuditLog"],"nav":[],"requires":[],"group":{"id":"activity","label":"Activity","summary":"Review authorized record history independently of messaging."},"section":{"id":"activity","label":"Activity","icon":"book","description":"See who changed records and why."},"help":{"markdown":"## Activity log\\nReview changes to records you are authorized to inspect. Each activity shows the actor, action, time, and recorded reason or resource.\\nOpen the related record when your application provides a link.\\n\\n## Record history\\nThe application enables auditing on selected models and authorizes audit reads. Only recorded events appear; enabling auditing does not reconstruct earlier changes.\\nSensitive audit details are available only through the application's authorized history service.\\n","fieldRefs":[]},"surfaces":[{"kind":"route","path":"/activity","export":"@happyvertical/smrt-svelte#ActivityList","label":"Activity log"}],"providers":[{"id":"audit-trail","kind":"activity","options":["audit-log"],"required":true}],"runtime":"both","demoSeed":{"data":{"entries":[{"id":"demo-audit","title":"Demo colleague \xB7 updated","detail":"Approved a fictional record.","occurredAt":"2026-01-01T12:00:00Z","href":null}]}},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto in root; core migrations (node:os); and its package depends on @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}}],"smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-core","@happyvertical/smrt-prompts","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3617","#3624","#3626"],"reason":"node:crypto in root; core migrations (node:os)","via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
|
|
30
30
|
var __defProp$19 = Object.defineProperty;
|
|
31
31
|
var __getOwnPropDesc$18 = Object.getOwnPropertyDescriptor;
|
|
32
32
|
var __defNormalProp$18 = (obj, key, value) => key in obj ? __defProp$19(obj, key, {
|
|
@@ -302,7 +302,7 @@ var DEFAULT_ROLES = [
|
|
|
302
302
|
}
|
|
303
303
|
];
|
|
304
304
|
//#endregion
|
|
305
|
-
//#region ../users/dist/chunks/TerminalAuthService-
|
|
305
|
+
//#region ../users/dist/chunks/TerminalAuthService-Btz3KcGi.js
|
|
306
306
|
var __defProp$17 = Object.defineProperty;
|
|
307
307
|
var __exportAll = (all, no_symbols) => {
|
|
308
308
|
let target = {};
|
|
@@ -313,7 +313,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
313
313
|
if (!no_symbols) __defProp$17(target, Symbol.toStringTag, { value: "Module" });
|
|
314
314
|
return target;
|
|
315
315
|
};
|
|
316
|
-
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-users","packageVersion":"0.55.12","objects":{"@happyvertical/smrt-users:AccessRequestCollection":{"name":"accessrequestcollection","className":"AccessRequestCollection","qualifiedName":"@happyvertical/smrt-users:AccessRequestCollection","collection":"accessrequests","description":"Collection for managing AccessRequest objects.","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","description":"Collection for managing Group objects","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","description":"Collection for managing GroupMember objects","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","description":"Collection for managing GroupRole objects","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","description":"Collection for managing smrt-users magic link token records","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","description":"Collection for managing Membership objects","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","description":"Collection for managing MembershipOverride objects","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","description":"Collection for managing Permission objects","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","description":"Collection for managing Role objects","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","description":"Collection for managing RolePermission objects","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","description":"Collection for managing Session objects","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","description":"Collection for managing Tenant objects with hierarchical support.","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","description":"Collection for managing TenantPermissionOverride objects.","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","description":"Collection for managing User objects","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","description":"A prospective user's request for access, captured before they become a User.","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","displayLabelField":"name","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","description":"Private database arbiter shared by every terminal-auth process.","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":{},"enum":["pending","approved","consumed","expired"]},"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","description":"Group represents a team or department within a tenant.","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","displayLabelField":"name","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","description":"GroupMember is a join table linking Users to Groups.","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","description":"GroupRole is a join table linking Groups to Roles.","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","description":"Private database arbiter shared by every process that authenticates.","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},"enum":["subject","source"]},"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},"enum":["denied","failed","succeeded","locked","managed"]},"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","description":"Membership represents a user's membership in a tenant with an assigned role.","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","description":"MembershipOverride allows granting or denying specific permissions to a user beyond what their role and groups provide.","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","description":"Permission represents a named capability in the system.","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","displayLabelField":"name","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","description":"An exact tenant/resource/user/permission decision. This deliberately does not replace tenant RBAC: ResourceGrantResolver only allows after the normal operation guard has allowed the same permission.","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":{},"enum":["grant","deny"]},"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","description":"Role represents a permission template that can be assigned to users.","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","displayLabelField":"name","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","description":"RolePermission is a join table linking Roles to Permissions.","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","description":"Session represents an authenticated user session.","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","description":"Tenant represents an organizational boundary in the multi-tenant system.","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","displayLabelField":"name","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","enum":["unprovisioned","provisioning","active","drifted","failed"]},"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","description":"TenantPermissionOverride allows setting explicit permission values at the tenant level.","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","description":"User represents an authenticated identity in the system.","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","recipes":[{"id":"users.roles-and-permissions","className":"UsersRolesAndPermissionsRecipe","label":"Roles and permissions","summary":"Manage tenant roles, memberships, permissions, and controlled sharing.","synonyms":["access control","rbac","sharing"],"models":["@happyvertical/smrt-users:Role","@happyvertical/smrt-users:Permission","@happyvertical/smrt-users:Membership","@happyvertical/smrt-users:ResourceGrant"],"nav":[{"label":"Roles","model":"@happyvertical/smrt-users:Role","icon":"users","description":"Define tenant permission bundles.","noun":"role"},{"label":"Permissions","model":"@happyvertical/smrt-users:Permission","icon":"settings","description":"Review operations available to roles.","noun":"permission"}],"requires":[],"group":{"id":"account-access","label":"Account access","summary":"Sign in and manage account sessions."},"section":{"id":"access-control","label":"Access control","icon":"users","description":"Manage tenant roles, permissions, and reviewed sharing."},"options":{"@happyvertical/smrt-users:ResourceGrant":{"exposure":{"api":false,"mcp":false,"cli":false}}},"help":{"markdown":"## Overview\\n\\nRoles and permissions control tenant access. Denies take precedence, and role changes should be reviewed before they are applied.\\n\\n## Tasks\\n\\n- Create a role and assign only the permissions required for its work.\\n- Add a member to the correct tenant through {field:Membership.tenantId} and assign a role through {field:Membership.roleId}.\\n- Use a resource grant only when a record needs a reviewed exception to its ordinary role rules.\\n","fieldRefs":["Membership.roleId","Membership.tenantId"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}},{"id":"users.sign-in","className":"UsersSignInRecipe","label":"Sign in","summary":"Access an account through an application-authorized sign-in flow.","synonyms":["log in","authentication","single sign-on"],"models":["@happyvertical/smrt-users:User","@happyvertical/smrt-users:Session"],"nav":[{"label":"Security sessions","model":"@happyvertical/smrt-users:Session","icon":"settings","description":"Review active sessions and sign out unrecognized devices.","noun":"security session"}],"requires":[],"group":{"id":"account-access","label":"Account access","summary":"Sign in and manage account sessions."},"section":{"id":"account-security","label":"Account security","icon":"settings","description":"Review account access and active sessions."},"options":{"@happyvertical/smrt-users:Session":{"exposure":{"api":false,"mcp":false,"cli":false}}},"help":{"markdown":"## Overview\\n\\nUse your organization\u2019s approved sign-in method. Sessions are managed on the server and are never shared through API or MCP tools.\\n\\n## Tasks\\n\\n- Review active sign-in sessions from your account security page and end sessions you no longer recognize.\\n- Ask an administrator for recovery help if you lose access to every available credential.\\n","fieldRefs":[]},"surfaces":[{"kind":"settings-panel","export":"@happyvertical/smrt-users/svelte#AccountSecurityPanel","label":"Account security"}],"providers":[{"id":"oidc","kind":"oauth","options":["oidc"],"required":false}],"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-mobile-contract","@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3617","#3624","#3626"],"reason":"node:crypto/async_hooks; core migrations","via":["@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
|
|
316
|
+
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-users","packageVersion":"0.55.14","objects":{"@happyvertical/smrt-users:AccessRequestCollection":{"name":"accessrequestcollection","className":"AccessRequestCollection","qualifiedName":"@happyvertical/smrt-users:AccessRequestCollection","collection":"accessrequests","description":"Collection for managing AccessRequest objects.","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","cli":false},"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","cli":false},"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","description":"Collection for managing Group objects","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","description":"Collection for managing GroupMember objects","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","description":"Collection for managing GroupRole objects","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","description":"Collection for managing smrt-users magic link token records","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","cli":false},"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","description":"Collection for managing Membership objects","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","description":"Collection for managing MembershipOverride objects","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","description":"Collection for managing Permission objects","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":{"cli":false},"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","description":"Collection for managing Role objects","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","description":"Collection for managing RolePermission objects","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","description":"Collection for managing Session objects","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":{"cli":false},"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","description":"Collection for managing Tenant objects with hierarchical support.","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","description":"Collection for managing TenantPermissionOverride objects.","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","description":"Collection for managing User objects","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","description":"A prospective user's request for access, captured before they become a User.","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":false},"extends":"SmrtObject","exportName":"AccessRequest","collectionExportName":"AccessRequestCollection","displayLabelField":"name","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","description":"Private database arbiter shared by every terminal-auth process.","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":{},"enum":["pending","approved","consumed","expired"]},"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":false,"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","description":"Group represents a team or department within a tenant.","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":{"include":["list","get"]},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Group","collectionExportName":"GroupCollection","displayLabelField":"name","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","description":"GroupMember is a join table linking Users to Groups.","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":{"include":["list","get"]}},"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","description":"GroupRole is a join table linking Groups to Roles.","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":{"include":["list","get"]}},"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","description":"Private database arbiter shared by every process that authenticates.","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},"enum":["subject","source"]},"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},"enum":["denied","failed","succeeded","locked","managed"]},"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":false},"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","description":"Membership represents a user's membership in a tenant with an assigned role.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/Membership.ts","packageName":"@happyvertical/smrt-users","fields":{"userId":{"type":"foreignKey","required":true,"related":"User","description":"The person who belongs to this organization.","_meta":{"description":"The person who belongs to this organization.","required":true}},"tenantId":{"type":"foreignKey","required":true,"related":"Tenant","_meta":{"required":true}},"roleId":{"type":"foreignKey","required":true,"related":"Role","description":"The role that determines this member's permissions.","_meta":{"description":"The role that determines this member's permissions.","required":true}},"status":{"type":"text","required":false,"description":"Whether this membership is active, pending, or inactive.","_meta":{"description":"Whether this membership is active, pending, or inactive."}}},"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":{"include":["list","get"]},"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","description":"MembershipOverride allows granting or denying specific permissions to a user beyond what their role and groups provide.","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":{"include":["list","get"]}},"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","description":"Permission represents a named capability in the system.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/Permission.ts","packageName":"@happyvertical/smrt-users","fields":{"name":{"type":"text","required":false,"default":"","description":"The name of an action people can be allowed to perform.","_meta":{"description":"The name of an action people can be allowed to perform."}},"description":{"type":"text","required":false,"default":"","description":"What this permission allows someone to do.","_meta":{"description":"What this permission allows someone to do."}},"category":{"type":"text","required":false,"default":"","description":"The area of the application this permission belongs to.","_meta":{"description":"The area of the application this permission belongs to."}}},"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":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"Permission","collectionExportName":"PermissionCollection","displayLabelField":"name","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","description":"An exact tenant/resource/user/permission decision. This deliberately does not replace tenant RBAC: ResourceGrantResolver only allows after the normal operation guard has allowed the same permission.","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","description":"The person receiving this record-specific access rule.","_meta":{"description":"The person receiving this record-specific access rule.","required":true}},"resourceType":{"type":"text","required":false,"description":"The kind of record this access rule applies to.","_meta":{"description":"The kind of record this access rule applies to."}},"resourceId":{"type":"text","required":false,"description":"The specific record covered by this access rule.","_meta":{"description":"The specific record covered by this access rule."}},"permission":{"type":"text","required":false,"description":"The action this rule allows or denies for the record.","_meta":{"description":"The action this rule allows or denies for the record."}},"effect":{"type":"text","required":false,"description":"Whether this rule grants access or denies it. Denies take precedence.","_meta":{"description":"Whether this rule grants access or denies it. Denies take precedence."},"enum":["grant","deny"]},"canDelegate":{"type":"boolean","required":false,"default":false,"description":"Whether the recipient may pass this grant on to another person.","_meta":{"description":"Whether the recipient may pass this grant on to another person."}},"parentGrantId":{"type":"foreignKey","required":false,"related":"ResourceGrant","description":"The earlier grant from which this access was delegated.","_meta":{"description":"The earlier grant from which this access was delegated."}},"revokedAt":{"type":"text","required":false,"description":"When this access rule was revoked, if it has ended.","_meta":{"description":"When this access rule was revoked, if it has ended."}}},"methods":{"isActive":{"name":"isActive","async":false,"parameters":[],"returnType":"boolean","isStatic":false,"isPublic":true}},"decoratorConfig":{"tenantScoped":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"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","description":"Role represents a permission template that can be assigned to users.","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":"The name of this set of permissions.","_meta":{"description":"The name of this set of permissions."}},"description":{"type":"text","required":false,"default":"","description":"What this role allows and who should receive it.","_meta":{"description":"What this role allows and who should receive it."}},"isSystem":{"type":"boolean","required":false,"default":false,"description":"Whether this is a built-in role protected from deletion.","_meta":{"description":"Whether this is a built-in role protected from deletion."}},"inheritsToDescendants":{"type":"boolean","required":false,"default":false,"description":"Whether this role can give members access to organizations below theirs.","_meta":{"description":"Whether this role can give members access to organizations below theirs."}}},"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":{"include":["list","get"]},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Role","collectionExportName":"RoleCollection","displayLabelField":"name","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","description":"RolePermission is a join table linking Roles to Permissions.","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":{"include":["list","get"]},"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","description":"Session represents an authenticated user session.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/Session.ts","packageName":"@happyvertical/smrt-users","fields":{"userId":{"type":"foreignKey","required":false,"related":"User","description":"The person signed in through this session.","_meta":{"description":"The person signed in through this session."}},"tenantId":{"type":"foreignKey","required":false,"related":"Tenant","_meta":{"nullable":true}},"status":{"type":"text","required":false,"description":"Whether this sign-in session is active or has ended.","_meta":{"description":"Whether this sign-in session is active or has ended."}},"expiresAt":{"type":"datetime","required":false,"description":"When this session expires unless renewed within its allowed limits.","_meta":{"description":"When this session expires unless renewed within its allowed limits.","indexed":true}},"userAgent":{"type":"text","required":false,"default":"","description":"The browser or device reported when this session was created.","_meta":{"description":"The browser or device reported when this session was created."}},"ipAddress":{"type":"text","required":false,"default":"","description":"The network address reported for this session.","_meta":{"description":"The network address reported for this session."}},"lastAccessedAt":{"type":"datetime","required":false,"description":"When this session was last used.","_meta":{"description":"When this session was last used."}},"data":{"type":"json","required":false,"default":{},"description":"Additional session details maintained by your application.","_meta":{"description":"Additional session details maintained by your application."}},"authMethod":{"type":"text","required":false,"description":"The sign-in method used to establish this session.","_meta":{"description":"The sign-in method used to establish this session.","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":false,"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","description":"Tenant represents an organizational boundary in the multi-tenant system.","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":{"include":["list","get"]}},"extends":"SmrtObject","exportName":"Tenant","collectionExportName":"TenantCollection","displayLabelField":"name","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","enum":["unprovisioned","provisioning","active","drifted","failed"]},"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":{"include":["list","get"]},"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","description":"TenantPermissionOverride allows setting explicit permission values at the tenant level.","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":{"include":["list","get"]},"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","description":"User represents an authenticated identity in the system.","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","description":"The personal profile linked to this account.","_meta":{"description":"The personal profile linked to this account.","unique":true}},"email":{"type":"text","required":false,"default":"","description":"The email address used for this account.","_meta":{"description":"The email address used for this account.","indexed":true}},"emailKey":{"type":"text","required":false,"description":"The standardized email address used to recognize this account; maintained automatically.","_meta":{"description":"The standardized email address used to recognize this account; maintained automatically.","nullable":true,"unique":true,"readonly":true},"readonly":true},"status":{"type":"text","required":false,"description":"Whether this account is active, inactive, pending, or suspended.","_meta":{"description":"Whether this account is active, inactive, pending, or suspended."}},"lastLoginAt":{"type":"datetime","required":false,"description":"When this person most recently signed in.","_meta":{"description":"When this person most recently signed in."}}},"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":{"include":["list","get"]}},"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","recipes":[{"id":"users.roles-and-permissions","className":"UsersRolesAndPermissionsRecipe","label":"Roles and permissions","summary":"Manage tenant roles, memberships, permissions, and controlled sharing.","synonyms":["access control","rbac","sharing"],"models":["@happyvertical/smrt-users:Role","@happyvertical/smrt-users:Permission","@happyvertical/smrt-users:Membership","@happyvertical/smrt-users:ResourceGrant"],"nav":[{"label":"Roles","model":"@happyvertical/smrt-users:Role","icon":"users","description":"Define tenant permission bundles.","noun":"role"},{"label":"Permissions","model":"@happyvertical/smrt-users:Permission","icon":"settings","description":"Review operations available to roles.","noun":"permission"}],"requires":[],"group":{"id":"account-access","label":"Account access","summary":"Sign in and manage account sessions."},"section":{"id":"access-control","label":"Access control","icon":"users","description":"Manage tenant roles, permissions, and reviewed sharing."},"options":{"@happyvertical/smrt-users:ResourceGrant":{"exposure":{"api":false,"mcp":false,"cli":false}}},"help":{"markdown":"## Overview\\n\\nRoles and permissions control access to your organization. Denies take precedence, and role changes should be reviewed before they are applied.\\n\\n## Tasks\\n\\n- Ask an authorized administrator to create a role and assign only the permissions required for its work.\\n- Add a member to the correct organization through your approved membership settings and assign a role through {field:Membership.roleId}.\\n- Use a resource grant only when a record needs a reviewed exception to its ordinary role rules.\\n","fieldRefs":["Membership.roleId"]},"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}},{"id":"users.sign-in","className":"UsersSignInRecipe","label":"Sign in","summary":"Access an account through an application-authorized sign-in flow.","synonyms":["log in","authentication","single sign-on"],"models":["@happyvertical/smrt-users:User","@happyvertical/smrt-users:Session"],"nav":[{"label":"Security sessions","model":"@happyvertical/smrt-users:Session","icon":"settings","description":"Review active sessions and sign out unrecognized devices.","noun":"security session"}],"requires":[],"group":{"id":"account-access","label":"Account access","summary":"Sign in and manage account sessions."},"section":{"id":"account-security","label":"Account security","icon":"settings","description":"Review account access and active sessions."},"options":{"@happyvertical/smrt-users:Session":{"exposure":{"api":false,"mcp":false,"cli":false}}},"help":{"markdown":"## Overview\\n\\nUse your organization\u2019s approved sign-in method. Review your signed-in devices on your account security page.\\n\\n## Tasks\\n\\n- Review active sign-in sessions from your account security page and end sessions you no longer recognize.\\n- Ask an administrator for recovery help if you lose access to every available credential.\\n","fieldRefs":[]},"surfaces":[{"kind":"settings-panel","export":"@happyvertical/smrt-users/svelte#AccountSecurityPanel","label":"Account security"}],"providers":[{"id":"oidc","kind":"oauth","options":["oidc"],"required":false}],"demo":{"mode":"server","reasons":["Needs a server because its package does not build for a browser: node:crypto/async_hooks; core migrations; and its package depends on @happyvertical/smrt-profiles, @happyvertical/smrt-tenancy, which do not build for a browser (#3617, #3624, #3626)."]}}],"smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-mobile-contract","@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3617","#3624","#3626"],"reason":"node:crypto/async_hooks; core migrations","via":["@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
|
|
317
317
|
var __defProp$16 = Object.defineProperty;
|
|
318
318
|
var __getOwnPropDesc$16 = Object.getOwnPropertyDescriptor;
|
|
319
319
|
var __defNormalProp$16 = (obj, key, value) => key in obj ? __defProp$16(obj, key, {
|
|
@@ -355,14 +355,17 @@ var Membership = class extends SmrtObject {
|
|
|
355
355
|
}
|
|
356
356
|
};
|
|
357
357
|
__publicField$16(Membership, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
358
|
-
__decorateClass$16([foreignKey("User", { required: true })], Membership.prototype, "userId", 2);
|
|
358
|
+
__decorateClass$16([foreignKey("User", { required: true }), field({ description: "The person who belongs to this organization." })], Membership.prototype, "userId", 2);
|
|
359
359
|
__decorateClass$16([foreignKey("Tenant", { required: true })], Membership.prototype, "tenantId", 2);
|
|
360
|
-
__decorateClass$16([foreignKey("Role", { required: true })], Membership.prototype, "roleId", 2);
|
|
361
|
-
__decorateClass$16([field({
|
|
360
|
+
__decorateClass$16([foreignKey("Role", { required: true }), field({ description: "The role that determines this member's permissions." })], Membership.prototype, "roleId", 2);
|
|
361
|
+
__decorateClass$16([field({
|
|
362
|
+
description: "Whether this membership is active, pending, or inactive.",
|
|
363
|
+
type: "text"
|
|
364
|
+
})], Membership.prototype, "status", 2);
|
|
362
365
|
Membership = __decorateClass$16([smrt({
|
|
363
366
|
api: { include: ["list", "get"] },
|
|
364
367
|
mcp: { include: ["list", "get"] },
|
|
365
|
-
cli: {
|
|
368
|
+
cli: { include: ["list", "get"] },
|
|
366
369
|
indexes: [{
|
|
367
370
|
name: "memberships_tenant_id_user_id_idx",
|
|
368
371
|
columns: ["tenantId", "userId"]
|
|
@@ -400,17 +403,8 @@ function isValidPermissionSlug(slug) {
|
|
|
400
403
|
return parsePermissionSlug(slug).isValid;
|
|
401
404
|
}
|
|
402
405
|
var Permission = class extends SmrtObject {
|
|
403
|
-
/**
|
|
404
|
-
* Display name for the permission
|
|
405
|
-
*/
|
|
406
406
|
name = "";
|
|
407
|
-
/**
|
|
408
|
-
* Description of what this permission allows
|
|
409
|
-
*/
|
|
410
407
|
description = "";
|
|
411
|
-
/**
|
|
412
|
-
* Category for grouping in UI (e.g., 'articles', 'users', 'settings')
|
|
413
|
-
*/
|
|
414
408
|
category = "";
|
|
415
409
|
constructor(options = {}) {
|
|
416
410
|
super(options);
|
|
@@ -447,10 +441,13 @@ var Permission = class extends SmrtObject {
|
|
|
447
441
|
}
|
|
448
442
|
};
|
|
449
443
|
__publicField$15(Permission, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
444
|
+
__decorateClass$15([field({ description: "The name of an action people can be allowed to perform." })], Permission.prototype, "name", 2);
|
|
445
|
+
__decorateClass$15([field({ description: "What this permission allows someone to do." })], Permission.prototype, "description", 2);
|
|
446
|
+
__decorateClass$15([field({ description: "The area of the application this permission belongs to." })], Permission.prototype, "category", 2);
|
|
450
447
|
Permission = __decorateClass$15([smrt({
|
|
451
448
|
api: { include: ["list", "get"] },
|
|
452
449
|
mcp: { include: ["list", "get"] },
|
|
453
|
-
cli: {
|
|
450
|
+
cli: { include: ["list", "get"] }
|
|
454
451
|
})], Permission);
|
|
455
452
|
var __defProp$14 = Object.defineProperty;
|
|
456
453
|
var __getOwnPropDesc$14 = Object.getOwnPropertyDescriptor;
|
|
@@ -469,27 +466,9 @@ var __decorateClass$14 = (decorators, target, key, kind) => {
|
|
|
469
466
|
var __publicField$14 = (obj, key, value) => __defNormalProp$14(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
470
467
|
var Role = class extends SmrtObject {
|
|
471
468
|
tenantId;
|
|
472
|
-
/**
|
|
473
|
-
* Display name for the role
|
|
474
|
-
*/
|
|
475
469
|
name = "";
|
|
476
|
-
/**
|
|
477
|
-
* Description of the role
|
|
478
|
-
*/
|
|
479
470
|
description = "";
|
|
480
|
-
/**
|
|
481
|
-
* Whether this is a system role (cannot be deleted)
|
|
482
|
-
*/
|
|
483
471
|
isSystem = false;
|
|
484
|
-
/**
|
|
485
|
-
* Opt-in hierarchical inheritance: when true, an ACTIVE membership holding
|
|
486
|
-
* this role also resolves permissions in descendant tenants where the user
|
|
487
|
-
* has no direct membership (nearest flagged ancestor membership wins).
|
|
488
|
-
*
|
|
489
|
-
* Default false: the role's authority is exact-tenant only, which is the
|
|
490
|
-
* pre-existing resolver behavior. Flag structural roles like a network-level
|
|
491
|
-
* owner/admin; leave per-tenant roles like member/viewer unflagged.
|
|
492
|
-
*/
|
|
493
472
|
inheritsToDescendants = false;
|
|
494
473
|
constructor(options = {}) {
|
|
495
474
|
super(options);
|
|
@@ -530,10 +509,14 @@ var Role = class extends SmrtObject {
|
|
|
530
509
|
};
|
|
531
510
|
__publicField$14(Role, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
532
511
|
__decorateClass$14([foreignKey("Tenant", { nullable: true })], Role.prototype, "tenantId", 2);
|
|
512
|
+
__decorateClass$14([field({ description: "The name of this set of permissions." })], Role.prototype, "name", 2);
|
|
513
|
+
__decorateClass$14([field({ description: "What this role allows and who should receive it." })], Role.prototype, "description", 2);
|
|
514
|
+
__decorateClass$14([field({ description: "Whether this is a built-in role protected from deletion." })], Role.prototype, "isSystem", 2);
|
|
515
|
+
__decorateClass$14([field({ description: "Whether this role can give members access to organizations below theirs." })], Role.prototype, "inheritsToDescendants", 2);
|
|
533
516
|
Role = __decorateClass$14([smrt({
|
|
534
517
|
api: { include: ["list", "get"] },
|
|
535
518
|
mcp: { include: ["list", "get"] },
|
|
536
|
-
cli: {
|
|
519
|
+
cli: { include: ["list", "get"] }
|
|
537
520
|
})], Role);
|
|
538
521
|
var __defProp$13 = Object.defineProperty;
|
|
539
522
|
var __getOwnPropDesc$13 = Object.getOwnPropertyDescriptor;
|
|
@@ -574,21 +557,9 @@ var Session = class extends SmrtObject {
|
|
|
574
557
|
tenantId = null;
|
|
575
558
|
status = SessionStatus.ACTIVE;
|
|
576
559
|
expiresAt = /* @__PURE__ */ new Date();
|
|
577
|
-
/**
|
|
578
|
-
* User agent string from the browser
|
|
579
|
-
*/
|
|
580
560
|
userAgent = "";
|
|
581
|
-
/**
|
|
582
|
-
* IP address of the client
|
|
583
|
-
*/
|
|
584
561
|
ipAddress = "";
|
|
585
|
-
/**
|
|
586
|
-
* Last activity timestamp (updated on each request)
|
|
587
|
-
*/
|
|
588
562
|
lastAccessedAt = /* @__PURE__ */ new Date();
|
|
589
|
-
/**
|
|
590
|
-
* Custom session data (JSON serializable)
|
|
591
|
-
*/
|
|
592
563
|
data = {};
|
|
593
564
|
authMethod = null;
|
|
594
565
|
parentSessionId = null;
|
|
@@ -727,14 +698,23 @@ var Session = class extends SmrtObject {
|
|
|
727
698
|
}
|
|
728
699
|
};
|
|
729
700
|
__publicField$13(Session, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
730
|
-
__decorateClass$13([foreignKey("User")], Session.prototype, "userId", 2);
|
|
701
|
+
__decorateClass$13([foreignKey("User"), field({ description: "The person signed in through this session." })], Session.prototype, "userId", 2);
|
|
731
702
|
__decorateClass$13([foreignKey("Tenant", { nullable: true })], Session.prototype, "tenantId", 2);
|
|
732
|
-
__decorateClass$13([field({ type: "text" })], Session.prototype, "status", 2);
|
|
733
703
|
__decorateClass$13([field({
|
|
704
|
+
description: "Whether this sign-in session is active or has ended.",
|
|
705
|
+
type: "text"
|
|
706
|
+
})], Session.prototype, "status", 2);
|
|
707
|
+
__decorateClass$13([field({
|
|
708
|
+
description: "When this session expires unless renewed within its allowed limits.",
|
|
734
709
|
type: "datetime",
|
|
735
710
|
indexed: true
|
|
736
711
|
})], Session.prototype, "expiresAt", 2);
|
|
712
|
+
__decorateClass$13([field({ description: "The browser or device reported when this session was created." })], Session.prototype, "userAgent", 2);
|
|
713
|
+
__decorateClass$13([field({ description: "The network address reported for this session." })], Session.prototype, "ipAddress", 2);
|
|
714
|
+
__decorateClass$13([field({ description: "When this session was last used." })], Session.prototype, "lastAccessedAt", 2);
|
|
715
|
+
__decorateClass$13([field({ description: "Additional session details maintained by your application." })], Session.prototype, "data", 2);
|
|
737
716
|
__decorateClass$13([field({
|
|
717
|
+
description: "The sign-in method used to establish this session.",
|
|
738
718
|
type: "text",
|
|
739
719
|
nullable: true
|
|
740
720
|
})], Session.prototype, "authMethod", 2);
|
|
@@ -748,7 +728,7 @@ Session = __decorateClass$13([smrt({
|
|
|
748
728
|
sensitive: true,
|
|
749
729
|
api: { include: ["get", "delete"] },
|
|
750
730
|
mcp: { include: [] },
|
|
751
|
-
cli:
|
|
731
|
+
cli: false
|
|
752
732
|
})], Session);
|
|
753
733
|
var __defProp$12 = Object.defineProperty;
|
|
754
734
|
var __getOwnPropDesc$12 = Object.getOwnPropertyDescriptor;
|
|
@@ -779,9 +759,6 @@ var User = class extends SmrtObject {
|
|
|
779
759
|
email = "";
|
|
780
760
|
emailKey = null;
|
|
781
761
|
status = UserStatus.ACTIVE;
|
|
782
|
-
/**
|
|
783
|
-
* Last login timestamp
|
|
784
|
-
*/
|
|
785
762
|
lastLoginAt = null;
|
|
786
763
|
constructor(options = {}) {
|
|
787
764
|
super(options);
|
|
@@ -829,19 +806,27 @@ var User = class extends SmrtObject {
|
|
|
829
806
|
}
|
|
830
807
|
};
|
|
831
808
|
__publicField$12(User, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
832
|
-
__decorateClass$12([crossPackageRef("@happyvertical/smrt-profiles:Profile", { unique: true })], User.prototype, "profileId", 2);
|
|
833
|
-
__decorateClass$12([field({
|
|
809
|
+
__decorateClass$12([crossPackageRef("@happyvertical/smrt-profiles:Profile", { unique: true }), field({ description: "The personal profile linked to this account." })], User.prototype, "profileId", 2);
|
|
810
|
+
__decorateClass$12([field({
|
|
811
|
+
description: "The email address used for this account.",
|
|
812
|
+
indexed: true
|
|
813
|
+
})], User.prototype, "email", 2);
|
|
834
814
|
__decorateClass$12([field({
|
|
815
|
+
description: "The standardized email address used to recognize this account; maintained automatically.",
|
|
835
816
|
type: "text",
|
|
836
817
|
nullable: true,
|
|
837
818
|
unique: true,
|
|
838
819
|
readonly: true
|
|
839
820
|
})], User.prototype, "emailKey", 2);
|
|
840
|
-
__decorateClass$12([field({
|
|
821
|
+
__decorateClass$12([field({
|
|
822
|
+
description: "Whether this account is active, inactive, pending, or suspended.",
|
|
823
|
+
type: "text"
|
|
824
|
+
})], User.prototype, "status", 2);
|
|
825
|
+
__decorateClass$12([field({ description: "When this person most recently signed in." })], User.prototype, "lastLoginAt", 2);
|
|
841
826
|
User = __decorateClass$12([smrt({
|
|
842
827
|
api: { include: ["list", "get"] },
|
|
843
828
|
mcp: { include: ["list", "get"] },
|
|
844
|
-
cli: {
|
|
829
|
+
cli: { include: ["list", "get"] }
|
|
845
830
|
})], User);
|
|
846
831
|
var __defProp$11 = Object.defineProperty;
|
|
847
832
|
var __getOwnPropDesc$11 = Object.getOwnPropertyDescriptor;
|
|
@@ -895,7 +880,7 @@ UsersCliAuthRequest = __decorateClass$11([smrt({
|
|
|
895
880
|
tableName: "users_cli_auth_requests",
|
|
896
881
|
sensitive: true,
|
|
897
882
|
api: { include: [] },
|
|
898
|
-
cli:
|
|
883
|
+
cli: false,
|
|
899
884
|
mcp: { include: [] }
|
|
900
885
|
})], UsersCliAuthRequest);
|
|
901
886
|
var SessionCollection = class extends SmrtCollection {
|
|
@@ -1626,7 +1611,7 @@ __decorateClass$8([foreignKey("Tenant", { required: true })], Group.prototype, "
|
|
|
1626
1611
|
Group = __decorateClass$8([smrt({
|
|
1627
1612
|
api: { include: ["list", "get"] },
|
|
1628
1613
|
mcp: { include: ["list", "get"] },
|
|
1629
|
-
cli:
|
|
1614
|
+
cli: { include: ["list", "get"] }
|
|
1630
1615
|
})], Group);
|
|
1631
1616
|
var __defProp$7 = Object.defineProperty;
|
|
1632
1617
|
var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
|
|
@@ -1658,7 +1643,7 @@ __decorateClass$7([foreignKey("User", { required: true })], GroupMember.prototyp
|
|
|
1658
1643
|
GroupMember = __decorateClass$7([smrt({
|
|
1659
1644
|
api: { include: ["list", "get"] },
|
|
1660
1645
|
mcp: { include: ["list", "get"] },
|
|
1661
|
-
cli:
|
|
1646
|
+
cli: { include: ["list", "get"] }
|
|
1662
1647
|
})], GroupMember);
|
|
1663
1648
|
var __defProp$6 = Object.defineProperty;
|
|
1664
1649
|
var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
|
|
@@ -1690,7 +1675,7 @@ __decorateClass$6([foreignKey("Role", { required: true })], GroupRole.prototype,
|
|
|
1690
1675
|
GroupRole = __decorateClass$6([smrt({
|
|
1691
1676
|
api: { include: ["list", "get"] },
|
|
1692
1677
|
mcp: { include: ["list", "get"] },
|
|
1693
|
-
cli:
|
|
1678
|
+
cli: { include: ["list", "get"] }
|
|
1694
1679
|
})], GroupRole);
|
|
1695
1680
|
var __defProp$5 = Object.defineProperty;
|
|
1696
1681
|
var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
|
|
@@ -1737,7 +1722,7 @@ __decorateClass$5([field({ type: "text" })], MembershipOverride.prototype, "effe
|
|
|
1737
1722
|
MembershipOverride = __decorateClass$5([smrt({
|
|
1738
1723
|
api: { include: ["list", "get"] },
|
|
1739
1724
|
mcp: { include: ["list", "get"] },
|
|
1740
|
-
cli: {
|
|
1725
|
+
cli: { include: ["list", "get"] }
|
|
1741
1726
|
})], MembershipOverride);
|
|
1742
1727
|
var __defProp$4$1 = Object.defineProperty;
|
|
1743
1728
|
var __getOwnPropDesc$4$1 = Object.getOwnPropertyDescriptor;
|
|
@@ -2054,7 +2039,7 @@ __decorateClass$2$1([foreignKey("Permission", {
|
|
|
2054
2039
|
RolePermission = __decorateClass$2$1([smrt({
|
|
2055
2040
|
api: { include: ["list", "get"] },
|
|
2056
2041
|
mcp: { include: ["list", "get"] },
|
|
2057
|
-
cli:
|
|
2042
|
+
cli: { include: ["list", "get"] },
|
|
2058
2043
|
conflictColumns: ["role_id", "permission_id"]
|
|
2059
2044
|
})], RolePermission);
|
|
2060
2045
|
async function writeInSeedingBatches(db, items, write) {
|
|
@@ -2256,6 +2241,23 @@ function getCustomMethodExposureNames(config, availableCustomMethods) {
|
|
|
2256
2241
|
const baseMethods = include.filter((methodName) => availableCustomMethods.includes(methodName));
|
|
2257
2242
|
return new Set(baseMethods.filter((methodName) => !exclude.includes(methodName)));
|
|
2258
2243
|
}
|
|
2244
|
+
var USERS_AUTHORITY_CATALOG_MODELS = new Set([
|
|
2245
|
+
"Group",
|
|
2246
|
+
"GroupMember",
|
|
2247
|
+
"GroupRole",
|
|
2248
|
+
"Membership",
|
|
2249
|
+
"MembershipOverride",
|
|
2250
|
+
"Permission",
|
|
2251
|
+
"ResourceGrant",
|
|
2252
|
+
"Role",
|
|
2253
|
+
"RolePermission",
|
|
2254
|
+
"Session",
|
|
2255
|
+
"Tenant",
|
|
2256
|
+
"TenantIntegration",
|
|
2257
|
+
"TenantPermissionOverride",
|
|
2258
|
+
"User",
|
|
2259
|
+
"UsersMagicLinkToken"
|
|
2260
|
+
].map((className) => `@happyvertical/smrt-users:${className}`));
|
|
2259
2261
|
function isOperationEnabled(config, action) {
|
|
2260
2262
|
if (config === false) return false;
|
|
2261
2263
|
if (config && typeof config === "object") {
|
|
@@ -2463,7 +2465,8 @@ var PermissionCatalogService = class PermissionCatalogService {
|
|
|
2463
2465
|
const qualifiedName = registered.qualifiedName;
|
|
2464
2466
|
const objectConfig = manifestEntry?.decoratorConfig ?? registered.config;
|
|
2465
2467
|
const collection = resolveCatalogCollectionName(registered, manifestEntry);
|
|
2466
|
-
|
|
2468
|
+
const catalogCliConfig = qualifiedName && USERS_AUTHORITY_CATALOG_MODELS.has(qualifiedName) ? true : objectConfig.cli;
|
|
2469
|
+
if (isOperationEnabled(objectConfig.api, "list") || isOperationEnabled(objectConfig.api, "get") || isOperationEnabled(catalogCliConfig, "list") || isOperationEnabled(catalogCliConfig, "get") || isOperationEnabled(objectConfig.mcp, "list") || isOperationEnabled(objectConfig.mcp, "get")) definitions.set(`${collection}.read`, {
|
|
2467
2470
|
className,
|
|
2468
2471
|
collection,
|
|
2469
2472
|
qualifiedName,
|
|
@@ -2488,7 +2491,7 @@ var PermissionCatalogService = class PermissionCatalogService {
|
|
|
2488
2491
|
"update",
|
|
2489
2492
|
"delete"
|
|
2490
2493
|
]) {
|
|
2491
|
-
if (!(isOperationEnabled(objectConfig.api, action) || isOperationEnabled(
|
|
2494
|
+
if (!(isOperationEnabled(objectConfig.api, action) || isOperationEnabled(catalogCliConfig, action) || isOperationEnabled(objectConfig.mcp, action))) continue;
|
|
2492
2495
|
definitions.set(`${collection}.${action}`, {
|
|
2493
2496
|
className,
|
|
2494
2497
|
collection,
|
|
@@ -2498,7 +2501,7 @@ var PermissionCatalogService = class PermissionCatalogService {
|
|
|
2498
2501
|
}
|
|
2499
2502
|
const publicCustomMethodNames = getPublicCustomMethodNames(manifestEntry?.methods ? Object.values(manifestEntry.methods) : Array.from(registered.methods.entries()), standardActions);
|
|
2500
2503
|
const customApiMethods = /* @__PURE__ */ new Set();
|
|
2501
|
-
const customCliMethods = getCustomMethodExposureNames(
|
|
2504
|
+
const customCliMethods = getCustomMethodExposureNames(catalogCliConfig, publicCustomMethodNames);
|
|
2502
2505
|
const customMcpMethods = getCustomMethodExposureNames(objectConfig.mcp, publicCustomMethodNames);
|
|
2503
2506
|
for (const methodName of publicCustomMethodNames) if (isOperationEnabled(objectConfig.api, methodName)) customApiMethods.add(methodName);
|
|
2504
2507
|
const customMethods = /* @__PURE__ */ new Set([
|
|
@@ -3168,7 +3171,7 @@ Tenant = __decorateClass$1$1([smrt({
|
|
|
3168
3171
|
tableStrategy: "sti",
|
|
3169
3172
|
api: { include: ["list", "get"] },
|
|
3170
3173
|
mcp: { include: ["list", "get"] },
|
|
3171
|
-
cli: {
|
|
3174
|
+
cli: { include: ["list", "get"] }
|
|
3172
3175
|
})], Tenant);
|
|
3173
3176
|
var TenantCollection_exports = /* @__PURE__ */ __exportAll({
|
|
3174
3177
|
TenantCollection: () => TenantCollection,
|
|
@@ -3424,7 +3427,7 @@ __decorateClass$17([field({ type: "text" })], TenantPermissionOverride.prototype
|
|
|
3424
3427
|
TenantPermissionOverride = __decorateClass$17([smrt({
|
|
3425
3428
|
api: { include: ["list", "get"] },
|
|
3426
3429
|
mcp: { include: ["list", "get"] },
|
|
3427
|
-
cli: {
|
|
3430
|
+
cli: { include: ["list", "get"] }
|
|
3428
3431
|
})], TenantPermissionOverride);
|
|
3429
3432
|
createLogger({ level: "info" });
|
|
3430
3433
|
new TextEncoder();
|
|
@@ -3607,18 +3610,34 @@ var ResourceGrant = class extends SmrtObject {
|
|
|
3607
3610
|
};
|
|
3608
3611
|
__publicField$4(ResourceGrant, "__smrtPackage__", "@happyvertical/smrt-users");
|
|
3609
3612
|
__decorateClass$4([foreignKey("Tenant", { required: true })], ResourceGrant.prototype, "tenantId", 2);
|
|
3610
|
-
__decorateClass$4([foreignKey("User", { required: true })], ResourceGrant.prototype, "userId", 2);
|
|
3611
|
-
__decorateClass$4([field({
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
__decorateClass$4([
|
|
3616
|
-
|
|
3613
|
+
__decorateClass$4([field({ description: "The person receiving this record-specific access rule." }), foreignKey("User", { required: true })], ResourceGrant.prototype, "userId", 2);
|
|
3614
|
+
__decorateClass$4([field({
|
|
3615
|
+
description: "The kind of record this access rule applies to.",
|
|
3616
|
+
type: "text"
|
|
3617
|
+
})], ResourceGrant.prototype, "resourceType", 2);
|
|
3618
|
+
__decorateClass$4([field({
|
|
3619
|
+
description: "The specific record covered by this access rule.",
|
|
3620
|
+
type: "text"
|
|
3621
|
+
})], ResourceGrant.prototype, "resourceId", 2);
|
|
3622
|
+
__decorateClass$4([field({
|
|
3623
|
+
description: "The action this rule allows or denies for the record.",
|
|
3624
|
+
type: "text"
|
|
3625
|
+
})], ResourceGrant.prototype, "permission", 2);
|
|
3626
|
+
__decorateClass$4([field({
|
|
3627
|
+
description: "Whether this rule grants access or denies it. Denies take precedence.",
|
|
3628
|
+
type: "text"
|
|
3629
|
+
})], ResourceGrant.prototype, "effect", 2);
|
|
3630
|
+
__decorateClass$4([field({ description: "Whether the recipient may pass this grant on to another person." })], ResourceGrant.prototype, "canDelegate", 2);
|
|
3631
|
+
__decorateClass$4([field({ description: "The earlier grant from which this access was delegated." }), foreignKey("ResourceGrant")], ResourceGrant.prototype, "parentGrantId", 2);
|
|
3632
|
+
__decorateClass$4([field({
|
|
3633
|
+
description: "When this access rule was revoked, if it has ended.",
|
|
3634
|
+
type: "text"
|
|
3635
|
+
})], ResourceGrant.prototype, "revokedAt", 2);
|
|
3617
3636
|
ResourceGrant = __decorateClass$4([smrt({
|
|
3618
3637
|
tenantScoped: true,
|
|
3619
3638
|
api: { include: [] },
|
|
3620
3639
|
mcp: { include: [] },
|
|
3621
|
-
cli:
|
|
3640
|
+
cli: false,
|
|
3622
3641
|
indexes: [{
|
|
3623
3642
|
name: "resource_grants_lookup_idx",
|
|
3624
3643
|
columns: ["tenantId", "userId"]
|
|
@@ -3676,7 +3695,7 @@ UsersMagicLinkToken = __decorateClass$3([smrt({
|
|
|
3676
3695
|
sensitive: true,
|
|
3677
3696
|
api: { include: [] },
|
|
3678
3697
|
mcp: { include: [] },
|
|
3679
|
-
cli:
|
|
3698
|
+
cli: false
|
|
3680
3699
|
})], UsersMagicLinkToken);
|
|
3681
3700
|
var UsersMagicLinkTokenCollection = class extends SmrtCollection {
|
|
3682
3701
|
static _itemClass = UsersMagicLinkToken;
|
|
@@ -3882,7 +3901,7 @@ AccessRequest = __decorateClass$2([smrt({
|
|
|
3882
3901
|
conflictColumns: ["id"],
|
|
3883
3902
|
api: { include: [] },
|
|
3884
3903
|
mcp: { include: [] },
|
|
3885
|
-
cli:
|
|
3904
|
+
cli: false
|
|
3886
3905
|
})], AccessRequest);
|
|
3887
3906
|
var __defProp$1 = Object.defineProperty;
|
|
3888
3907
|
var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
|
|
@@ -4062,7 +4081,7 @@ TenantIntegration = __decorateClass([TenantScoped({ mode: "required" }), smrt({
|
|
|
4062
4081
|
conflictColumns: ["tenant_id", "provider"],
|
|
4063
4082
|
api: { include: ["list", "get"] },
|
|
4064
4083
|
mcp: { include: ["list", "get"] },
|
|
4065
|
-
cli: {
|
|
4084
|
+
cli: { include: ["list", "get"] }
|
|
4066
4085
|
})], TenantIntegration);
|
|
4067
4086
|
var TenantHierarchyMaterializationError = class extends Error {
|
|
4068
4087
|
constructor(problems) {
|