@happyvertical/smrt-cli 0.57.6 → 0.57.7

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.
Files changed (21) hide show
  1. package/dist/{AuditLogCollection-WDHL-_AF-BkroKK9T.js → AuditLogCollection-WDHL-_AF-Cg2nIvl9.js} +1 -1
  2. package/dist/{OidcIdentity-BUblgQLs-doBRmj3Y.js → OidcIdentity-BUblgQLs-DEgy7C0z.js} +2 -2
  3. package/dist/{OidcIdentityCollection-ClOyaHeF-Cbb-iDx-.js → OidcIdentityCollection-ClOyaHeF-4ipWR6Rv.js} +1 -1
  4. package/dist/{ProfileAssetCollection-CRMcjLJ--lV4-8UG4.js → ProfileAssetCollection-CRMcjLJ--DP0ZNoq0.js} +3 -3
  5. package/dist/{ProfileCollection-C4INKh7Y-AITzBMZW.js → ProfileCollection-C4INKh7Y-BgJkiF6l.js} +17 -17
  6. package/dist/{ProfileLinkCollection-DFfZRsgv-DWTiLtwu.js → ProfileLinkCollection-DFfZRsgv-BWXylDD7.js} +2 -2
  7. package/dist/{ProfileMetadataCollection-BIYKy4Y3-DMrOlwRc.js → ProfileMetadataCollection-BIYKy4Y3-Cmh5MuVs.js} +1 -1
  8. package/dist/{ProfileMetafieldCollection-Buz7gzag-BbegPZhl.js → ProfileMetafieldCollection-Buz7gzag-DQAMRy19.js} +1 -1
  9. package/dist/{ProfileRelationshipCollection-C4g_QLI4-BlTwTjGX.js → ProfileRelationshipCollection-C4g_QLI4-0KidLLfu.js} +1 -1
  10. package/dist/{ProfileTypeCollection-B7kwi1mU-1kv0T-ny.js → ProfileTypeCollection-B7kwi1mU-DyjqK1TF.js} +2 -2
  11. package/dist/{commands-C4Z-vCyZ.js → commands-Du6PRrBv.js} +2 -2
  12. package/dist/{dist-CsgULCJQ.js → dist-Ba-Uw8_Y.js} +5 -5
  13. package/dist/{dist-BhmnR5CR.js → dist-By3_JeEQ.js} +2 -2
  14. package/dist/{dist-CAE68ooz.js → dist-C7aYO9sq.js} +16 -16
  15. package/dist/{dist-H5ZOPaSd.js → dist-CIk2X5LP.js} +3 -3
  16. package/dist/dist-bZaP_1df.js +21 -0
  17. package/dist/index.js +11 -11
  18. package/dist/{oidcProvisioningPrimitives-DNP9EZlU-BQZZxZfQ.js → oidcProvisioningPrimitives-DNP9EZlU-C5yodiLP.js} +3 -3
  19. package/dist/{resolveIdentity-CkyqvctR-zGPRUtru.js → resolveIdentity-CkyqvctR-BBJdx3pU.js} +14 -14
  20. package/package.json +10 -10
  21. package/dist/dist-Bm1T0ECg.js +0 -21
@@ -1,23 +1,23 @@
1
- import { c as runTenantHierarchyReadScope, i as tenantId, r as TenantScoped, u as getCurrentTenant } from "./dist-BhmnR5CR.js";
1
+ import { c as runTenantHierarchyReadScope, i as tenantId, r as TenantScoped, u as getCurrentTenant } from "./dist-By3_JeEQ.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-BkroKK9T.js";
5
+ import "./AuditLogCollection-WDHL-_AF-Cg2nIvl9.js";
6
6
  import "./NostrIdentityCollection-CctlECpX-fkAPnK02.js";
7
- import "./OidcIdentity-BUblgQLs-doBRmj3Y.js";
8
- import "./OidcIdentityCollection-ClOyaHeF-Cbb-iDx-.js";
9
- import "./ProfileAssetCollection-CRMcjLJ--lV4-8UG4.js";
10
- import { u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-AITzBMZW.js";
11
- import "./ProfileLinkCollection-DFfZRsgv-DWTiLtwu.js";
12
- import "./ProfileMetadataCollection-BIYKy4Y3-DMrOlwRc.js";
13
- import "./ProfileMetafieldCollection-Buz7gzag-BbegPZhl.js";
14
- import "./ProfileRelationshipCollection-C4g_QLI4-BlTwTjGX.js";
7
+ import "./OidcIdentity-BUblgQLs-DEgy7C0z.js";
8
+ import "./OidcIdentityCollection-ClOyaHeF-4ipWR6Rv.js";
9
+ import "./ProfileAssetCollection-CRMcjLJ--DP0ZNoq0.js";
10
+ import { u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-BgJkiF6l.js";
11
+ import "./ProfileLinkCollection-DFfZRsgv-BWXylDD7.js";
12
+ import "./ProfileMetadataCollection-BIYKy4Y3-Cmh5MuVs.js";
13
+ import "./ProfileMetafieldCollection-Buz7gzag-DQAMRy19.js";
14
+ import "./ProfileRelationshipCollection-C4g_QLI4-0KidLLfu.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-1kv0T-ny.js";
19
- import "./oidcProvisioningPrimitives-DNP9EZlU-BQZZxZfQ.js";
20
- import "./resolveIdentity-CkyqvctR-zGPRUtru.js";
18
+ import "./ProfileTypeCollection-B7kwi1mU-DyjqK1TF.js";
19
+ import "./oidcProvisioningPrimitives-DNP9EZlU-C5yodiLP.js";
20
+ import "./resolveIdentity-CkyqvctR-BBJdx3pU.js";
21
21
  import { ObjectRegistry, SmrtCollection, SmrtObject, bumpChangeFeed, crossPackageRef, field, findManifestEntryByQualifiedName, foreignKey, inheritedCollectionSurface, isEmbeddedDatabase, isPostgresDatabase, registerRetentionTask, resolveOperationPermissionAlias, smrt, withEmbeddedWriteTransaction } from "@happyvertical/smrt-core";
22
22
  import { createHash, randomBytes, randomUUID } from "node:crypto";
23
23
  import { createLogger } from "@happyvertical/logger";
@@ -27,7 +27,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
27
27
  import { AccessRequestStatus, MembershipStatus, OverrideEffect, SessionStatus, TenantPermissionEffect, TenantStatus, UserStatus } from "@happyvertical/smrt-types";
28
28
  import { setTimeout } from "node:timers/promises";
29
29
  //#region ../profiles/dist/index.js
30
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-profiles","packageVersion":"0.57.6","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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get","create"],"skipApiCheck":true}},"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","api":{"exclude":["*"]},"mcp":{"include":["list","get"]},"cli":{"include":["list"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-profiles","packageVersion":"0.57.7","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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get","create"],"skipApiCheck":true}},"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","api":{"exclude":["*"]},"mcp":{"include":["list","get"]},"cli":{"include":["list"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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":{"api":{"include":["list","get","create","update"]},"mcp":{"include":["list","get"]}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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","api":{"include":["list","get","create","update","delete"]},"mcp":{"include":["list","get","create","update"]},"cli":{"skipApiCheck":true}},"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}`));
31
31
  var __defProp$19 = Object.defineProperty;
32
32
  var __getOwnPropDesc$18 = Object.getOwnPropertyDescriptor;
33
33
  var __defNormalProp$18 = (obj, key, value) => key in obj ? __defProp$19(obj, key, {
@@ -303,7 +303,7 @@ var DEFAULT_ROLES = [
303
303
  }
304
304
  ];
305
305
  //#endregion
306
- //#region ../users/dist/chunks/TerminalAuthService-BqdDnJ4T.js
306
+ //#region ../users/dist/chunks/TerminalAuthService-D4skXg_Q.js
307
307
  var __defProp$17 = Object.defineProperty;
308
308
  var __exportAll = (all, no_symbols) => {
309
309
  let target = {};
@@ -314,7 +314,7 @@ var __exportAll = (all, no_symbols) => {
314
314
  if (!no_symbols) __defProp$17(target, Symbol.toStringTag, { value: "Module" });
315
315
  return target;
316
316
  };
317
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-users","packageVersion":"0.57.6","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","api":{"include":[]},"mcp":{"include":[]},"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","api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_group_id_user_id_idx","columns":["group_id","user_id"],"unique":true},{"name":"group_members_slug_context_idx","columns":["slug","context"]},{"name":"group_members_created_at_idx","columns":["created_at"]},{"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_membership_id_permission_id_idx","columns":["membership_id","permission_id"],"unique":true},{"name":"membership_overrides_slug_context_idx","columns":["slug","context"]},{"name":"membership_overrides_created_at_idx","columns":["created_at"]},{"name":"membership_overrides_permission_id_idx","columns":["permission_id"]}],"version":"25fe9da8"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthClientCollection":{"name":"usersoauthclientcollection","className":"UsersOAuthClientCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthClientCollection","collection":"usersoauthclients","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"findByClientId":{"name":"findByClientId","async":false,"parameters":[{"name":"clientId","type":"string","optional":false}],"returnType":"Promise<UsersOAuthClient | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_clients","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthClient","exportName":"UsersOAuthClientCollection","collectionExportName":"UsersOAuthClientCollectionCollection","schema":{"tableName":"users_oauth_clients","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_clients\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"client_id\\" TEXT NOT NULL UNIQUE,\\n \\"redirect_uris\\" TEXT,\\n \\"allowed_scopes\\" TEXT,\\n \\"token_endpoint_auth_method\\" TEXT DEFAULT 'none',\\n \\"secret_hash\\" TEXT,\\n \\"allowed_resources\\" 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"},"client_id":{"type":"TEXT","notNull":true,"unique":true},"redirect_uris":{"type":"TEXT","notNull":false,"unique":false},"allowed_scopes":{"type":"TEXT","notNull":false,"unique":false},"token_endpoint_auth_method":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"secret_hash":{"type":"TEXT","notNull":false,"unique":false},"allowed_resources":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_clients_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_clients_created_at_idx","columns":["created_at"]}],"version":"0ecda18c"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCodeCollection":{"name":"usersoauthauthorizationcodecollection","className":"UsersOAuthAuthorizationCodeCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCodeCollection","collection":"usersoauthauthorizationcodes","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"consume":{"name":"consume","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"codeHash","type":"string","optional":false},{"name":"clientId","type":"string","optional":false},{"name":"redirectUri","type":"string","optional":false},{"name":"resource","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorization_codes","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAuthorizationCode","exportName":"UsersOAuthAuthorizationCodeCollection","collectionExportName":"UsersOAuthAuthorizationCodeCollectionCollection","schema":{"tableName":"users_oauth_authorization_codes","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorization_codes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\n \\"code_hash\\" TEXT NOT NULL UNIQUE,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"redirect_uri\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"code_challenge\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"code_hash":{"type":"TEXT","notNull":true,"unique":true},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"redirect_uri":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"code_challenge":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorization_codes_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorization_codes_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_authorization_codes_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorization_codes_subject_idx","columns":["subject"]},{"name":"users_oauth_authorization_codes_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_authorization_codes_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_authorization_codes_created_at_idx","columns":["created_at"]}],"version":"f5c5d615"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshGrantCollection":{"name":"usersoauthrefreshgrantcollection","className":"UsersOAuthRefreshGrantCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshGrantCollection","collection":"usersoauthrefreshgrants","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"consume":{"name":"consume","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"tokenHash","type":"string","optional":false},{"name":"clientId","type":"string","optional":false},{"name":"resource","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"revokeFamily":{"name":"revokeFamily","async":true,"parameters":[{"name":"familyId","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_grants","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthRefreshGrant","exportName":"UsersOAuthRefreshGrantCollection","collectionExportName":"UsersOAuthRefreshGrantCollectionCollection","schema":{"tableName":"users_oauth_refresh_grants","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_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 \\"authorization_id\\" TEXT,\\n \\"token_hash\\" TEXT NOT NULL UNIQUE,\\n \\"family_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"token_hash":{"type":"TEXT","notNull":true,"unique":true},"family_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_grants_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_refresh_grants_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_grants_family_id_idx","columns":["family_id"]},{"name":"users_oauth_refresh_grants_client_id_idx","columns":["client_id"]},{"name":"users_oauth_refresh_grants_subject_idx","columns":["subject"]},{"name":"users_oauth_refresh_grants_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_refresh_grants_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_refresh_grants_revoked_at_idx","columns":["revoked_at"]},{"name":"users_oauth_refresh_grants_created_at_idx","columns":["created_at"]}],"version":"d332998e"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocationCollection":{"name":"usersoauthaccesstokenrevocationcollection","className":"UsersOAuthAccessTokenRevocationCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocationCollection","collection":"usersoauthaccesstokenrevocations","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"findByJti":{"name":"findByJti","async":true,"parameters":[{"name":"jti","type":"string","optional":false}],"returnType":"Promise<UsersOAuthAccessTokenRevocation | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_access_token_revocations","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAccessTokenRevocation","exportName":"UsersOAuthAccessTokenRevocationCollection","collectionExportName":"UsersOAuthAccessTokenRevocationCollectionCollection","schema":{"tableName":"users_oauth_access_token_revocations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_access_token_revocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"jti\\" TEXT NOT NULL UNIQUE,\\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"},"jti":{"type":"TEXT","notNull":true,"unique":true},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_access_token_revocations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_access_token_revocations_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_access_token_revocations_created_at_idx","columns":["created_at"]}],"version":"79147089"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCollection":{"name":"usersoauthauthorizationcollection","className":"UsersOAuthAuthorizationCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCollection","collection":"usersoauthauthorizations","description":"Consent storage is intentionally inaccessible through generated surfaces.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"tableName":"users_oauth_authorizations","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAuthorization","exportName":"UsersOAuthAuthorizationCollection","collectionExportName":"UsersOAuthAuthorizationCollectionCollection","schema":{"tableName":"users_oauth_authorizations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorizations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"subject\\" TEXT,\\n \\"session_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"permission_ceiling\\" TEXT,\\n \\"resource\\" TEXT,\\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"},"subject":{"type":"TEXT","notNull":false,"unique":false},"session_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"permission_ceiling":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorizations_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorizations_subject_idx","columns":["subject"]},{"name":"users_oauth_authorizations_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorizations_created_at_idx","columns":["created_at"]}],"version":"291f8816"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshFamilyCollection":{"name":"usersoauthrefreshfamilycollection","className":"UsersOAuthRefreshFamilyCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshFamilyCollection","collection":"usersoauthrefreshfamilies","description":"Family rows exist for the entire lifetime of every descendant refresh token.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"lock":{"name":"lock","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"revoke":{"name":"revoke","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_families","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthRefreshFamily","exportName":"UsersOAuthRefreshFamilyCollection","collectionExportName":"UsersOAuthRefreshFamilyCollectionCollection","schema":{"tableName":"users_oauth_refresh_families","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_families\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_families_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_refresh_families_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_families_created_at_idx","columns":["created_at"]}],"version":"37392f31"},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["get","delete"]},"mcp":{"include":[]},"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},"getAncestorIds":{"name":"getAncestorIds","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<string[]>","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},"getDescendantIds":{"name":"getDescendantIds","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<string[]>","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},"requireChildOf":{"name":"requireChildOf","async":true,"parameters":[{"name":"parentId","type":"string","optional":false},{"name":"childId","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"withTenantCatalogReadScope":{"name":"withTenantCatalogReadScope","async":true,"parameters":[{"name":"options","type":"TenantReadScopeOptions","optional":false},{"name":"callback","type":"Function","optional":false}],"returnType":"Promise<T>","isStatic":false,"isPublic":true},"withTenantHierarchyContext":{"name":"withTenantHierarchyContext","async":true,"parameters":[{"name":"rootTenantId","type":"string","optional":false},{"name":"options","type":"TenantReadScopeOptions","optional":false},{"name":"callback","type":"Function","optional":false}],"returnType":"Promise<T>","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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_permission_id_idx","columns":["tenant_id","permission_id"],"unique":true},{"name":"tenant_permission_overrides_slug_context_idx","columns":["slug","context"]},{"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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:MemberClass":{"name":"memberclass","className":"MemberClass","qualifiedName":"@happyvertical/smrt-users:MemberClass","collection":"memberclasses","description":"A tenant-configured legal class; it has no authority or entitlement effect.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"key":{"type":"text","required":false,"_meta":{}},"name":{"type":"text","required":false},"description":{"type":"text","required":false},"policyMetadata":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"member_classes","sensitive":true,"indexes":[{"name":"member_classes_tenant_key_uq","columns":["tenantId","key"],"unique":true}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberClass","collectionExportName":"MemberClassCollection","displayLabelField":"name","validationRules":[],"schema":{"tableName":"member_classes","ddl":"CREATE TABLE IF NOT EXISTS \\"member_classes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"policy_metadata\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"policy_metadata":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_classes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_classes_tenant_key_uq","columns":["tenant_id","key"],"unique":true},{"name":"member_classes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fa7a152"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMember":{"name":"legalmember","className":"LegalMember","qualifiedName":"@happyvertical/smrt-users:LegalMember","collection":"legalmembers","description":"The legal register entry, deliberately separate from RBAC Membership.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberClassId":{"type":"foreignKey","required":false,"related":"MemberClass","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["individual","organisation"]},"displayName":{"type":"text","required":false},"userId":{"type":"foreignKey","required":false,"related":"User","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"externalPartyRef":{"type":"text","required":false,"_meta":{"nullable":true}},"joinedOn":{"type":"text","required":false,"_meta":{}},"leftOn":{"type":"text","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","suspended","resigned","ceased"]}},"methods":{},"decoratorConfig":{"tableName":"legal_members","sensitive":true,"indexes":[{"name":"legal_members_tenant_class_status_idx","columns":["tenantId","memberClassId","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenantId","userId"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMember","collectionExportName":"LegalMemberCollection","validationRules":[],"schema":{"tableName":"legal_members","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_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 \\"tenant_id\\" UUID NOT NULL,\\n \\"member_class_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"display_name\\" TEXT,\\n \\"user_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"external_party_ref\\" TEXT,\\n \\"joined_on\\" TEXT,\\n \\"left_on\\" TEXT,\\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"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"member_class_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"member_classes","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"users","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_party_ref":{"type":"TEXT","notNull":false,"unique":false},"joined_on":{"type":"TEXT","notNull":false,"unique":false},"left_on":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_members_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_members_tenant_class_status_idx","columns":["tenant_id","member_class_id","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"legal_members_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_members_member_class_id_idx","columns":["member_class_id"]},{"name":"legal_members_user_id_idx","columns":["user_id"]},{"name":"legal_members_profile_id_idx","columns":["profile_id"]}],"version":"b05fd9f3"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberStatusHistory":{"name":"legalmemberstatushistory","className":"LegalMemberStatusHistory","qualifiedName":"@happyvertical/smrt-users:LegalMemberStatusHistory","collection":"legalmemberstatushistories","description":"Append-only effective history; current status never erases it.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","suspended","resigned","ceased"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"sequence":{"type":"integer","required":false,"_meta":{}},"reason":{"type":"text","required":false},"actorRef":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"legal_member_status_history","sensitive":true,"indexes":[{"name":"legal_member_status_history_member_on_idx","columns":["tenantId","memberId","effectiveOn"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMemberStatusHistory","collectionExportName":"LegalMemberStatusHistoryCollection","validationRules":[],"schema":{"tableName":"legal_member_status_history","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_status_history\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"status\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"sequence\\" INTEGER,\\n \\"reason\\" TEXT,\\n \\"actor_ref\\" 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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_ref":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_member_status_history_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_status_history_member_on_idx","columns":["tenant_id","member_id","effective_on"]},{"name":"legal_member_status_history_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_status_history_member_id_idx","columns":["member_id"]}],"version":"3885f61f"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberReference":{"name":"legalmemberreference","className":"LegalMemberReference","qualifiedName":"@happyvertical/smrt-users:LegalMemberReference","collection":"legalmemberreferences","description":"A link to authoritative share/dues/subscription/agreement/ledger evidence.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["share","dues","subscription","agreement","ledger"]},"sourceType":{"type":"text","required":false},"sourceId":{"type":"text","required":false},"authoritative":{"type":"boolean","required":false,"_meta":{}},"effectiveFrom":{"type":"text","required":false,"_meta":{}},"effectiveTo":{"type":"text","required":false,"_meta":{"nullable":true}},"revokesId":{"type":"foreignKey","required":false,"related":"LegalMemberReference","_meta":{"nullable":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"legal_member_references","sensitive":true,"indexes":[{"name":"legal_member_references_member_kind_idx","columns":["tenantId","memberId","kind"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMemberReference","collectionExportName":"LegalMemberReferenceCollection","validationRules":[],"schema":{"tableName":"legal_member_references","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_references\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"source_type\\" TEXT,\\n \\"source_id\\" TEXT,\\n \\"authoritative\\" BOOLEAN,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"revokes_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":true,"unique":false},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"source_type":{"type":"TEXT","notNull":false,"unique":false},"source_id":{"type":"TEXT","notNull":false,"unique":false},"authoritative":{"type":"BOOLEAN","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"revokes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_member_references","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"legal_member_references_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_references_member_kind_idx","columns":["tenant_id","member_id","kind"]},{"name":"legal_member_references_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_references_member_id_idx","columns":["member_id"]},{"name":"legal_member_references_revokes_id_idx","columns":["revokes_id"]}],"version":"30237bd4"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberOfficerAppointment":{"name":"memberofficerappointment","className":"MemberOfficerAppointment","qualifiedName":"@happyvertical/smrt-users:MemberOfficerAppointment","collection":"memberofficerappointments","description":"A dated register of board/officer appointments; it does not implement elections.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"role":{"type":"text","required":false,"_meta":{}},"effectiveFrom":{"type":"text","required":false,"_meta":{}},"effectiveTo":{"type":"text","required":false,"_meta":{"nullable":true}},"authority":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"member_officer_appointments","sensitive":true,"indexes":[{"name":"member_officer_appointments_member_term_idx","columns":["tenantId","memberId","effectiveFrom"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberOfficerAppointment","collectionExportName":"MemberOfficerAppointmentCollection","validationRules":[],"schema":{"tableName":"member_officer_appointments","ddl":"CREATE TABLE IF NOT EXISTS \\"member_officer_appointments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"role\\" TEXT,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"authority\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"role":{"type":"TEXT","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"authority":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_officer_appointments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_officer_appointments_member_term_idx","columns":["tenant_id","member_id","effective_from"]},{"name":"member_officer_appointments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_officer_appointments_member_id_idx","columns":["member_id"]}],"version":"eed54759"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberEligibilitySnapshot":{"name":"membereligibilitysnapshot","className":"MemberEligibilitySnapshot","qualifiedName":"@happyvertical/smrt-users:MemberEligibilitySnapshot","collection":"membereligibilitysnapshots","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"recordDate":{"type":"text","required":false,"_meta":{}},"eligible":{"type":"boolean","required":false,"_meta":{}},"reason":{"type":"text","required":false},"evidence":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"member_eligibility_snapshots","sensitive":true,"indexes":[{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenantId","recordDate"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberEligibilitySnapshot","collectionExportName":"MemberEligibilitySnapshotCollection","validationRules":[],"schema":{"tableName":"member_eligibility_snapshots","ddl":"CREATE TABLE IF NOT EXISTS \\"member_eligibility_snapshots\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"record_date\\" TEXT,\\n \\"eligible\\" BOOLEAN,\\n \\"reason\\" TEXT,\\n \\"evidence\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"record_date":{"type":"TEXT","notNull":false,"unique":false},"eligible":{"type":"BOOLEAN","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"evidence":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_eligibility_snapshots_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenant_id","record_date"]},{"name":"member_eligibility_snapshots_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_eligibility_snapshots_member_id_idx","columns":["member_id"]}],"version":"f3899c14"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberClassCollection":{"name":"memberclasscollection","className":"MemberClassCollection","qualifiedName":"@happyvertical/smrt-users:MemberClassCollection","collection":"memberclasses","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_classes"},"extends":"SmrtCollection","extendsTypeArg":"MemberClass","exportName":"MemberClassCollection","collectionExportName":"MemberClassCollectionCollection","schema":{"tableName":"member_classes","ddl":"CREATE TABLE IF NOT EXISTS \\"member_classes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"policy_metadata\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"policy_metadata":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_classes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_classes_tenant_key_uq","columns":["tenant_id","key"],"unique":true},{"name":"member_classes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fa7a152"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberCollection":{"name":"legalmembercollection","className":"LegalMemberCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberCollection","collection":"legalmembers","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_members"},"extends":"SmrtCollection","extendsTypeArg":"LegalMember","exportName":"LegalMemberCollection","collectionExportName":"LegalMemberCollectionCollection","schema":{"tableName":"legal_members","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_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 \\"tenant_id\\" UUID NOT NULL,\\n \\"member_class_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"display_name\\" TEXT,\\n \\"user_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"external_party_ref\\" TEXT,\\n \\"joined_on\\" TEXT,\\n \\"left_on\\" TEXT,\\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"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"member_class_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"member_classes","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"users","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_party_ref":{"type":"TEXT","notNull":false,"unique":false},"joined_on":{"type":"TEXT","notNull":false,"unique":false},"left_on":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_members_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_members_tenant_class_status_idx","columns":["tenant_id","member_class_id","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"legal_members_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_members_member_class_id_idx","columns":["member_class_id"]},{"name":"legal_members_user_id_idx","columns":["user_id"]},{"name":"legal_members_profile_id_idx","columns":["profile_id"]}],"version":"b05fd9f3"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberStatusHistoryCollection":{"name":"legalmemberstatushistorycollection","className":"LegalMemberStatusHistoryCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberStatusHistoryCollection","collection":"legalmemberstatushistories","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_member_status_history"},"extends":"SmrtCollection","extendsTypeArg":"LegalMemberStatusHistory","exportName":"LegalMemberStatusHistoryCollection","collectionExportName":"LegalMemberStatusHistoryCollectionCollection","schema":{"tableName":"legal_member_status_history","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_status_history\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"status\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"sequence\\" INTEGER,\\n \\"reason\\" TEXT,\\n \\"actor_ref\\" 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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_ref":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_member_status_history_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_status_history_member_on_idx","columns":["tenant_id","member_id","effective_on"]},{"name":"legal_member_status_history_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_status_history_member_id_idx","columns":["member_id"]}],"version":"3885f61f"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberReferenceCollection":{"name":"legalmemberreferencecollection","className":"LegalMemberReferenceCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberReferenceCollection","collection":"legalmemberreferences","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_member_references"},"extends":"SmrtCollection","extendsTypeArg":"LegalMemberReference","exportName":"LegalMemberReferenceCollection","collectionExportName":"LegalMemberReferenceCollectionCollection","schema":{"tableName":"legal_member_references","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_references\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"source_type\\" TEXT,\\n \\"source_id\\" TEXT,\\n \\"authoritative\\" BOOLEAN,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"revokes_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":true,"unique":false},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"source_type":{"type":"TEXT","notNull":false,"unique":false},"source_id":{"type":"TEXT","notNull":false,"unique":false},"authoritative":{"type":"BOOLEAN","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"revokes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_member_references","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"legal_member_references_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_references_member_kind_idx","columns":["tenant_id","member_id","kind"]},{"name":"legal_member_references_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_references_member_id_idx","columns":["member_id"]},{"name":"legal_member_references_revokes_id_idx","columns":["revokes_id"]}],"version":"30237bd4"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberOfficerAppointmentCollection":{"name":"memberofficerappointmentcollection","className":"MemberOfficerAppointmentCollection","qualifiedName":"@happyvertical/smrt-users:MemberOfficerAppointmentCollection","collection":"memberofficerappointments","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_officer_appointments"},"extends":"SmrtCollection","extendsTypeArg":"MemberOfficerAppointment","exportName":"MemberOfficerAppointmentCollection","collectionExportName":"MemberOfficerAppointmentCollectionCollection","schema":{"tableName":"member_officer_appointments","ddl":"CREATE TABLE IF NOT EXISTS \\"member_officer_appointments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"role\\" TEXT,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"authority\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"role":{"type":"TEXT","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"authority":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_officer_appointments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_officer_appointments_member_term_idx","columns":["tenant_id","member_id","effective_from"]},{"name":"member_officer_appointments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_officer_appointments_member_id_idx","columns":["member_id"]}],"version":"eed54759"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberEligibilitySnapshotCollection":{"name":"membereligibilitysnapshotcollection","className":"MemberEligibilitySnapshotCollection","qualifiedName":"@happyvertical/smrt-users:MemberEligibilitySnapshotCollection","collection":"membereligibilitysnapshots","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_eligibility_snapshots"},"extends":"SmrtCollection","extendsTypeArg":"MemberEligibilitySnapshot","exportName":"MemberEligibilitySnapshotCollection","collectionExportName":"MemberEligibilitySnapshotCollectionCollection","schema":{"tableName":"member_eligibility_snapshots","ddl":"CREATE TABLE IF NOT EXISTS \\"member_eligibility_snapshots\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"record_date\\" TEXT,\\n \\"eligible\\" BOOLEAN,\\n \\"reason\\" TEXT,\\n \\"evidence\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"record_date":{"type":"TEXT","notNull":false,"unique":false},"eligible":{"type":"BOOLEAN","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"evidence":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_eligibility_snapshots_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenant_id","record_date"]},{"name":"member_eligibility_snapshots_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_eligibility_snapshots_member_id_idx","columns":["member_id"]}],"version":"f3899c14"},"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,"onDelete":"NO ACTION"}},"userId":{"type":"foreignKey","required":true,"related":"User","_meta":{"required":true,"onDelete":"NO ACTION"}}},"methods":{},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"conflictColumns":["group_id","user_id"]},"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_group_id_user_id_idx","columns":["group_id","user_id"],"unique":true},{"name":"group_members_slug_context_idx","columns":["slug","context"]},{"name":"group_members_created_at_idx","columns":["created_at"]},{"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","source-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,"onDelete":"NO ACTION"}},"permissionId":{"type":"foreignKey","required":true,"related":"Permission","_meta":{"required":true,"onDelete":"NO ACTION"}},"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"]},"conflictColumns":["membership_id","permission_id"]},"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_membership_id_permission_id_idx","columns":["membership_id","permission_id"],"unique":true},{"name":"membership_overrides_slug_context_idx","columns":["slug","context"]},{"name":"membership_overrides_created_at_idx","columns":["created_at"]},{"name":"membership_overrides_permission_id_idx","columns":["permission_id"]}],"version":"25fe9da8"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthClient":{"name":"usersoauthclient","className":"UsersOAuthClient","qualifiedName":"@happyvertical/smrt-users:UsersOAuthClient","collection":"usersoauthclients","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"clientId":{"type":"text","required":true,"_meta":{"required":true,"unique":true}},"redirectUris":{"type":"text","required":false},"allowedScopes":{"type":"text","required":false},"tokenEndpointAuthMethod":{"type":"text","required":false,"default":"none","enum":["none","client_secret_post"]},"secretHash":{"type":"text","required":false,"_meta":{"nullable":true,"sensitive":true},"sensitive":true},"allowedResources":{"type":"text","required":false},"createdAt":{"type":"datetime","required":false,"_meta":{}}},"methods":{"getRedirectUris":{"name":"getRedirectUris","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getAllowedScopes":{"name":"getAllowedScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getAllowedResources":{"name":"getAllowedResources","async":false,"parameters":[],"returnType":"string[] | undefined","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_clients","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthClient","collectionExportName":"UsersOAuthClientCollection","validationRules":[{"field":"clientId","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_clients","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_clients\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"client_id\\" TEXT NOT NULL UNIQUE,\\n \\"redirect_uris\\" TEXT,\\n \\"allowed_scopes\\" TEXT,\\n \\"token_endpoint_auth_method\\" TEXT DEFAULT 'none',\\n \\"secret_hash\\" TEXT,\\n \\"allowed_resources\\" 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"},"client_id":{"type":"TEXT","notNull":true,"unique":true},"redirect_uris":{"type":"TEXT","notNull":false,"unique":false},"allowed_scopes":{"type":"TEXT","notNull":false,"unique":false},"token_endpoint_auth_method":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"secret_hash":{"type":"TEXT","notNull":false,"unique":false},"allowed_resources":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_clients_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_clients_created_at_idx","columns":["created_at"]}],"version":"0ecda18c"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCode":{"name":"usersoauthauthorizationcode","className":"UsersOAuthAuthorizationCode","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCode","collection":"usersoauthauthorizationcodes","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"codeHash":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"claims":{"type":"text","required":false},"redirectUri":{"type":"text","required":false},"scopes":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"codeChallenge":{"type":"text","required":false},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}},"consumedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getClaims":{"name":"getClaims","async":false,"parameters":[],"returnType":"OAuthTokenClaims","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorization_codes","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthAuthorizationCode","collectionExportName":"UsersOAuthAuthorizationCodeCollection","validationRules":[{"field":"codeHash","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_authorization_codes","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorization_codes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\n \\"code_hash\\" TEXT NOT NULL UNIQUE,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"redirect_uri\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"code_challenge\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"code_hash":{"type":"TEXT","notNull":true,"unique":true},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"redirect_uri":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"code_challenge":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorization_codes_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorization_codes_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_authorization_codes_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorization_codes_subject_idx","columns":["subject"]},{"name":"users_oauth_authorization_codes_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_authorization_codes_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_authorization_codes_created_at_idx","columns":["created_at"]}],"version":"f5c5d615"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshGrant":{"name":"usersoauthrefreshgrant","className":"UsersOAuthRefreshGrant","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshGrant","collection":"usersoauthrefreshgrants","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"tokenHash":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"familyId":{"type":"text","required":false,"_meta":{"indexed":true}},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"claims":{"type":"text","required":false},"scopes":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}},"consumedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true,"indexed":true}}},"methods":{"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getClaims":{"name":"getClaims","async":false,"parameters":[],"returnType":"OAuthTokenClaims","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_grants","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthRefreshGrant","collectionExportName":"UsersOAuthRefreshGrantCollection","validationRules":[{"field":"tokenHash","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_refresh_grants","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_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 \\"authorization_id\\" TEXT,\\n \\"token_hash\\" TEXT NOT NULL UNIQUE,\\n \\"family_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"token_hash":{"type":"TEXT","notNull":true,"unique":true},"family_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_grants_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_refresh_grants_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_grants_family_id_idx","columns":["family_id"]},{"name":"users_oauth_refresh_grants_client_id_idx","columns":["client_id"]},{"name":"users_oauth_refresh_grants_subject_idx","columns":["subject"]},{"name":"users_oauth_refresh_grants_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_refresh_grants_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_refresh_grants_revoked_at_idx","columns":["revoked_at"]},{"name":"users_oauth_refresh_grants_created_at_idx","columns":["created_at"]}],"version":"d332998e"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocation":{"name":"usersoauthaccesstokenrevocation","className":"UsersOAuthAccessTokenRevocation","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocation","collection":"usersoauthaccesstokenrevocations","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"jti":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}}},"methods":{},"decoratorConfig":{"tableName":"users_oauth_access_token_revocations","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthAccessTokenRevocation","collectionExportName":"UsersOAuthAccessTokenRevocationCollection","validationRules":[{"field":"jti","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_access_token_revocations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_access_token_revocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"jti\\" TEXT NOT NULL UNIQUE,\\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"},"jti":{"type":"TEXT","notNull":true,"unique":true},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_access_token_revocations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_access_token_revocations_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_access_token_revocations_created_at_idx","columns":["created_at"]}],"version":"79147089"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorization":{"name":"usersoauthauthorization","className":"UsersOAuthAuthorization","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorization","collection":"usersoauthauthorizations","description":"A consent decision bound to a server-side session; never exposes its bearer.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"sessionId":{"type":"text","required":false,"_meta":{"sensitive":true},"sensitive":true},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true}},"scopes":{"type":"text","required":false},"permissionCeiling":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getPermissionCeiling":{"name":"getPermissionCeiling","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorizations","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthAuthorization","collectionExportName":"UsersOAuthAuthorizationCollection","schema":{"tableName":"users_oauth_authorizations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorizations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"subject\\" TEXT,\\n \\"session_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"permission_ceiling\\" TEXT,\\n \\"resource\\" TEXT,\\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"},"subject":{"type":"TEXT","notNull":false,"unique":false},"session_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"permission_ceiling":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorizations_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorizations_subject_idx","columns":["subject"]},{"name":"users_oauth_authorizations_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorizations_created_at_idx","columns":["created_at"]}],"version":"291f8816"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshFamily":{"name":"usersoauthrefreshfamily","className":"UsersOAuthRefreshFamily","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshFamily","collection":"usersoauthrefreshfamilies","description":"Stable lock row: rotation and revocation always serialize on this family.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"users_oauth_refresh_families","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthRefreshFamily","collectionExportName":"UsersOAuthRefreshFamilyCollection","schema":{"tableName":"users_oauth_refresh_families","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_families\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_families_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_refresh_families_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_families_created_at_idx","columns":["created_at"]}],"version":"37392f31"},"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,"onDelete":"NO ACTION"}},"permissionId":{"type":"foreignKey","required":true,"related":"Permission","_meta":{"required":true,"onDelete":"NO ACTION"}},"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","permission_id"]},"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_permission_id_idx","columns":["tenant_id","permission_id"],"unique":true},{"name":"tenant_permission_overrides_slug_context_idx","columns":["slug","context"]},{"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
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-users","packageVersion":"0.57.7","objects":{"@happyvertical/smrt-users:MemberClass":{"name":"memberclass","className":"MemberClass","qualifiedName":"@happyvertical/smrt-users:MemberClass","collection":"memberclasses","description":"A tenant-configured legal class; it has no authority or entitlement effect.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"key":{"type":"text","required":false,"_meta":{}},"name":{"type":"text","required":false},"description":{"type":"text","required":false},"policyMetadata":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"member_classes","sensitive":true,"indexes":[{"name":"member_classes_tenant_key_uq","columns":["tenantId","key"],"unique":true}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberClass","collectionExportName":"MemberClassCollection","displayLabelField":"name","validationRules":[],"schema":{"tableName":"member_classes","ddl":"CREATE TABLE IF NOT EXISTS \\"member_classes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"policy_metadata\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"policy_metadata":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_classes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_classes_tenant_key_uq","columns":["tenant_id","key"],"unique":true},{"name":"member_classes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fa7a152"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMember":{"name":"legalmember","className":"LegalMember","qualifiedName":"@happyvertical/smrt-users:LegalMember","collection":"legalmembers","description":"The legal register entry, deliberately separate from RBAC Membership.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberClassId":{"type":"foreignKey","required":false,"related":"MemberClass","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["individual","organisation"]},"displayName":{"type":"text","required":false},"userId":{"type":"foreignKey","required":false,"related":"User","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"profileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"externalPartyRef":{"type":"text","required":false,"_meta":{"nullable":true}},"joinedOn":{"type":"text","required":false,"_meta":{}},"leftOn":{"type":"text","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","suspended","resigned","ceased"]}},"methods":{},"decoratorConfig":{"tableName":"legal_members","sensitive":true,"indexes":[{"name":"legal_members_tenant_class_status_idx","columns":["tenantId","memberClassId","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenantId","userId"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMember","collectionExportName":"LegalMemberCollection","validationRules":[],"schema":{"tableName":"legal_members","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_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 \\"tenant_id\\" UUID NOT NULL,\\n \\"member_class_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"display_name\\" TEXT,\\n \\"user_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"external_party_ref\\" TEXT,\\n \\"joined_on\\" TEXT,\\n \\"left_on\\" TEXT,\\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"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"member_class_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"member_classes","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"users","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_party_ref":{"type":"TEXT","notNull":false,"unique":false},"joined_on":{"type":"TEXT","notNull":false,"unique":false},"left_on":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_members_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_members_tenant_class_status_idx","columns":["tenant_id","member_class_id","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"legal_members_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_members_member_class_id_idx","columns":["member_class_id"]},{"name":"legal_members_user_id_idx","columns":["user_id"]},{"name":"legal_members_profile_id_idx","columns":["profile_id"]}],"version":"b05fd9f3"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberStatusHistory":{"name":"legalmemberstatushistory","className":"LegalMemberStatusHistory","qualifiedName":"@happyvertical/smrt-users:LegalMemberStatusHistory","collection":"legalmemberstatushistories","description":"Append-only effective history; current status never erases it.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"status":{"type":"text","required":false,"_meta":{},"enum":["active","suspended","resigned","ceased"]},"effectiveOn":{"type":"text","required":false,"_meta":{}},"sequence":{"type":"integer","required":false,"_meta":{}},"reason":{"type":"text","required":false},"actorRef":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"legal_member_status_history","sensitive":true,"indexes":[{"name":"legal_member_status_history_member_on_idx","columns":["tenantId","memberId","effectiveOn"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMemberStatusHistory","collectionExportName":"LegalMemberStatusHistoryCollection","validationRules":[],"schema":{"tableName":"legal_member_status_history","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_status_history\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"status\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"sequence\\" INTEGER,\\n \\"reason\\" TEXT,\\n \\"actor_ref\\" 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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_ref":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_member_status_history_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_status_history_member_on_idx","columns":["tenant_id","member_id","effective_on"]},{"name":"legal_member_status_history_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_status_history_member_id_idx","columns":["member_id"]}],"version":"3885f61f"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberReference":{"name":"legalmemberreference","className":"LegalMemberReference","qualifiedName":"@happyvertical/smrt-users:LegalMemberReference","collection":"legalmemberreferences","description":"A link to authoritative share/dues/subscription/agreement/ledger evidence.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"kind":{"type":"text","required":false,"_meta":{},"enum":["share","dues","subscription","agreement","ledger"]},"sourceType":{"type":"text","required":false},"sourceId":{"type":"text","required":false},"authoritative":{"type":"boolean","required":false,"_meta":{}},"effectiveFrom":{"type":"text","required":false,"_meta":{}},"effectiveTo":{"type":"text","required":false,"_meta":{"nullable":true}},"revokesId":{"type":"foreignKey","required":false,"related":"LegalMemberReference","_meta":{"nullable":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"legal_member_references","sensitive":true,"indexes":[{"name":"legal_member_references_member_kind_idx","columns":["tenantId","memberId","kind"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"LegalMemberReference","collectionExportName":"LegalMemberReferenceCollection","validationRules":[],"schema":{"tableName":"legal_member_references","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_references\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"source_type\\" TEXT,\\n \\"source_id\\" TEXT,\\n \\"authoritative\\" BOOLEAN,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"revokes_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":true,"unique":false},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"source_type":{"type":"TEXT","notNull":false,"unique":false},"source_id":{"type":"TEXT","notNull":false,"unique":false},"authoritative":{"type":"BOOLEAN","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"revokes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_member_references","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"legal_member_references_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_references_member_kind_idx","columns":["tenant_id","member_id","kind"]},{"name":"legal_member_references_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_references_member_id_idx","columns":["member_id"]},{"name":"legal_member_references_revokes_id_idx","columns":["revokes_id"]}],"version":"30237bd4"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberOfficerAppointment":{"name":"memberofficerappointment","className":"MemberOfficerAppointment","qualifiedName":"@happyvertical/smrt-users:MemberOfficerAppointment","collection":"memberofficerappointments","description":"A dated register of board/officer appointments; it does not implement elections.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"role":{"type":"text","required":false,"_meta":{}},"effectiveFrom":{"type":"text","required":false,"_meta":{}},"effectiveTo":{"type":"text","required":false,"_meta":{"nullable":true}},"authority":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"member_officer_appointments","sensitive":true,"indexes":[{"name":"member_officer_appointments_member_term_idx","columns":["tenantId","memberId","effectiveFrom"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberOfficerAppointment","collectionExportName":"MemberOfficerAppointmentCollection","validationRules":[],"schema":{"tableName":"member_officer_appointments","ddl":"CREATE TABLE IF NOT EXISTS \\"member_officer_appointments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"role\\" TEXT,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"authority\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"role":{"type":"TEXT","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"authority":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_officer_appointments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_officer_appointments_member_term_idx","columns":["tenant_id","member_id","effective_from"]},{"name":"member_officer_appointments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_officer_appointments_member_id_idx","columns":["member_id"]}],"version":"eed54759"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberEligibilitySnapshot":{"name":"membereligibilitysnapshot","className":"MemberEligibilitySnapshot","qualifiedName":"@happyvertical/smrt-users:MemberEligibilitySnapshot","collection":"membereligibilitysnapshots","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.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}}},"memberId":{"type":"foreignKey","required":false,"related":"LegalMember","_meta":{"onDelete":"RESTRICT"}},"recordDate":{"type":"text","required":false,"_meta":{}},"eligible":{"type":"boolean","required":false,"_meta":{}},"reason":{"type":"text","required":false},"evidence":{"type":"json","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"member_eligibility_snapshots","sensitive":true,"indexes":[{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenantId","recordDate"]}],"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"MemberEligibilitySnapshot","collectionExportName":"MemberEligibilitySnapshotCollection","validationRules":[],"schema":{"tableName":"member_eligibility_snapshots","ddl":"CREATE TABLE IF NOT EXISTS \\"member_eligibility_snapshots\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"record_date\\" TEXT,\\n \\"eligible\\" BOOLEAN,\\n \\"reason\\" TEXT,\\n \\"evidence\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"record_date":{"type":"TEXT","notNull":false,"unique":false},"eligible":{"type":"BOOLEAN","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"evidence":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_eligibility_snapshots_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenant_id","record_date"]},{"name":"member_eligibility_snapshots_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_eligibility_snapshots_member_id_idx","columns":["member_id"]}],"version":"f3899c14"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberClassCollection":{"name":"memberclasscollection","className":"MemberClassCollection","qualifiedName":"@happyvertical/smrt-users:MemberClassCollection","collection":"memberclasses","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_classes"},"extends":"SmrtCollection","extendsTypeArg":"MemberClass","exportName":"MemberClassCollection","collectionExportName":"MemberClassCollectionCollection","schema":{"tableName":"member_classes","ddl":"CREATE TABLE IF NOT EXISTS \\"member_classes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"key\\" TEXT,\\n \\"name\\" TEXT,\\n \\"description\\" TEXT,\\n \\"policy_metadata\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"key":{"type":"TEXT","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"description":{"type":"TEXT","notNull":false,"unique":false},"policy_metadata":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_classes_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_classes_tenant_key_uq","columns":["tenant_id","key"],"unique":true},{"name":"member_classes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"0fa7a152"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberCollection":{"name":"legalmembercollection","className":"LegalMemberCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberCollection","collection":"legalmembers","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_members"},"extends":"SmrtCollection","extendsTypeArg":"LegalMember","exportName":"LegalMemberCollection","collectionExportName":"LegalMemberCollectionCollection","schema":{"tableName":"legal_members","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_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 \\"tenant_id\\" UUID NOT NULL,\\n \\"member_class_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"display_name\\" TEXT,\\n \\"user_id\\" UUID,\\n \\"profile_id\\" UUID,\\n \\"external_party_ref\\" TEXT,\\n \\"joined_on\\" TEXT,\\n \\"left_on\\" TEXT,\\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"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"member_class_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"member_classes","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"user_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"users","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"external_party_ref":{"type":"TEXT","notNull":false,"unique":false},"joined_on":{"type":"TEXT","notNull":false,"unique":false},"left_on":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_members_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_members_tenant_class_status_idx","columns":["tenant_id","member_class_id","status"]},{"name":"legal_members_tenant_user_idx","columns":["tenant_id","user_id"]},{"name":"legal_members_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_members_member_class_id_idx","columns":["member_class_id"]},{"name":"legal_members_user_id_idx","columns":["user_id"]},{"name":"legal_members_profile_id_idx","columns":["profile_id"]}],"version":"b05fd9f3"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberStatusHistoryCollection":{"name":"legalmemberstatushistorycollection","className":"LegalMemberStatusHistoryCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberStatusHistoryCollection","collection":"legalmemberstatushistories","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_member_status_history"},"extends":"SmrtCollection","extendsTypeArg":"LegalMemberStatusHistory","exportName":"LegalMemberStatusHistoryCollection","collectionExportName":"LegalMemberStatusHistoryCollectionCollection","schema":{"tableName":"legal_member_status_history","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_status_history\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"status\\" TEXT,\\n \\"effective_on\\" TEXT,\\n \\"sequence\\" INTEGER,\\n \\"reason\\" TEXT,\\n \\"actor_ref\\" 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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false},"effective_on":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_ref":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"legal_member_status_history_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_status_history_member_on_idx","columns":["tenant_id","member_id","effective_on"]},{"name":"legal_member_status_history_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_status_history_member_id_idx","columns":["member_id"]}],"version":"3885f61f"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:LegalMemberReferenceCollection":{"name":"legalmemberreferencecollection","className":"LegalMemberReferenceCollection","qualifiedName":"@happyvertical/smrt-users:LegalMemberReferenceCollection","collection":"legalmemberreferences","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"legal_member_references"},"extends":"SmrtCollection","extendsTypeArg":"LegalMemberReference","exportName":"LegalMemberReferenceCollection","collectionExportName":"LegalMemberReferenceCollectionCollection","schema":{"tableName":"legal_member_references","ddl":"CREATE TABLE IF NOT EXISTS \\"legal_member_references\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"source_type\\" TEXT,\\n \\"source_id\\" TEXT,\\n \\"authoritative\\" BOOLEAN,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"revokes_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":true,"unique":false},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"source_type":{"type":"TEXT","notNull":false,"unique":false},"source_id":{"type":"TEXT","notNull":false,"unique":false},"authoritative":{"type":"BOOLEAN","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"revokes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_member_references","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"legal_member_references_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"legal_member_references_member_kind_idx","columns":["tenant_id","member_id","kind"]},{"name":"legal_member_references_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"legal_member_references_member_id_idx","columns":["member_id"]},{"name":"legal_member_references_revokes_id_idx","columns":["revokes_id"]}],"version":"30237bd4"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberOfficerAppointmentCollection":{"name":"memberofficerappointmentcollection","className":"MemberOfficerAppointmentCollection","qualifiedName":"@happyvertical/smrt-users:MemberOfficerAppointmentCollection","collection":"memberofficerappointments","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_officer_appointments"},"extends":"SmrtCollection","extendsTypeArg":"MemberOfficerAppointment","exportName":"MemberOfficerAppointmentCollection","collectionExportName":"MemberOfficerAppointmentCollectionCollection","schema":{"tableName":"member_officer_appointments","ddl":"CREATE TABLE IF NOT EXISTS \\"member_officer_appointments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"role\\" TEXT,\\n \\"effective_from\\" TEXT,\\n \\"effective_to\\" TEXT,\\n \\"authority\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"role":{"type":"TEXT","notNull":false,"unique":false},"effective_from":{"type":"TEXT","notNull":false,"unique":false},"effective_to":{"type":"TEXT","notNull":false,"unique":false},"authority":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_officer_appointments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_officer_appointments_member_term_idx","columns":["tenant_id","member_id","effective_from"]},{"name":"member_officer_appointments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_officer_appointments_member_id_idx","columns":["member_id"]}],"version":"eed54759"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:MemberEligibilitySnapshotCollection":{"name":"membereligibilitysnapshotcollection","className":"MemberEligibilitySnapshotCollection","qualifiedName":"@happyvertical/smrt-users:MemberEligibilitySnapshotCollection","collection":"membereligibilitysnapshots","filePath":"/home/runner/work/smrt/smrt/packages/users/src/member-register/models.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"api":{"include":[]},"mcp":{"include":[]},"cli":false,"tableName":"member_eligibility_snapshots"},"extends":"SmrtCollection","extendsTypeArg":"MemberEligibilitySnapshot","exportName":"MemberEligibilitySnapshotCollection","collectionExportName":"MemberEligibilitySnapshotCollectionCollection","schema":{"tableName":"member_eligibility_snapshots","ddl":"CREATE TABLE IF NOT EXISTS \\"member_eligibility_snapshots\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"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 \\"member_id\\" UUID,\\n \\"record_date\\" TEXT,\\n \\"eligible\\" BOOLEAN,\\n \\"reason\\" TEXT,\\n \\"evidence\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"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},"member_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"legal_members","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"record_date":{"type":"TEXT","notNull":false,"unique":false},"eligible":{"type":"BOOLEAN","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"evidence":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"member_eligibility_snapshots_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"member_eligibility_snapshots_tenant_date_idx","columns":["tenant_id","record_date"]},{"name":"member_eligibility_snapshots_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"member_eligibility_snapshots_member_id_idx","columns":["member_id"]}],"version":"f3899c14"},"importPath":"@happyvertical/smrt-users"},"@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","api":{"include":[]},"mcp":{"include":[]},"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","api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_group_id_user_id_idx","columns":["group_id","user_id"],"unique":true},{"name":"group_members_slug_context_idx","columns":["slug","context"]},{"name":"group_members_created_at_idx","columns":["created_at"]},{"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_membership_id_permission_id_idx","columns":["membership_id","permission_id"],"unique":true},{"name":"membership_overrides_slug_context_idx","columns":["slug","context"]},{"name":"membership_overrides_created_at_idx","columns":["created_at"]},{"name":"membership_overrides_permission_id_idx","columns":["permission_id"]}],"version":"25fe9da8"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthClientCollection":{"name":"usersoauthclientcollection","className":"UsersOAuthClientCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthClientCollection","collection":"usersoauthclients","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"findByClientId":{"name":"findByClientId","async":false,"parameters":[{"name":"clientId","type":"string","optional":false}],"returnType":"Promise<UsersOAuthClient | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_clients","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthClient","exportName":"UsersOAuthClientCollection","collectionExportName":"UsersOAuthClientCollectionCollection","schema":{"tableName":"users_oauth_clients","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_clients\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"client_id\\" TEXT NOT NULL UNIQUE,\\n \\"redirect_uris\\" TEXT,\\n \\"allowed_scopes\\" TEXT,\\n \\"token_endpoint_auth_method\\" TEXT DEFAULT 'none',\\n \\"secret_hash\\" TEXT,\\n \\"allowed_resources\\" 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"},"client_id":{"type":"TEXT","notNull":true,"unique":true},"redirect_uris":{"type":"TEXT","notNull":false,"unique":false},"allowed_scopes":{"type":"TEXT","notNull":false,"unique":false},"token_endpoint_auth_method":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"secret_hash":{"type":"TEXT","notNull":false,"unique":false},"allowed_resources":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_clients_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_clients_created_at_idx","columns":["created_at"]}],"version":"0ecda18c"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCodeCollection":{"name":"usersoauthauthorizationcodecollection","className":"UsersOAuthAuthorizationCodeCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCodeCollection","collection":"usersoauthauthorizationcodes","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"consume":{"name":"consume","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"codeHash","type":"string","optional":false},{"name":"clientId","type":"string","optional":false},{"name":"redirectUri","type":"string","optional":false},{"name":"resource","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorization_codes","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAuthorizationCode","exportName":"UsersOAuthAuthorizationCodeCollection","collectionExportName":"UsersOAuthAuthorizationCodeCollectionCollection","schema":{"tableName":"users_oauth_authorization_codes","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorization_codes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\n \\"code_hash\\" TEXT NOT NULL UNIQUE,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"redirect_uri\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"code_challenge\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"code_hash":{"type":"TEXT","notNull":true,"unique":true},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"redirect_uri":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"code_challenge":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorization_codes_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorization_codes_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_authorization_codes_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorization_codes_subject_idx","columns":["subject"]},{"name":"users_oauth_authorization_codes_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_authorization_codes_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_authorization_codes_created_at_idx","columns":["created_at"]}],"version":"f5c5d615"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshGrantCollection":{"name":"usersoauthrefreshgrantcollection","className":"UsersOAuthRefreshGrantCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshGrantCollection","collection":"usersoauthrefreshgrants","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"consume":{"name":"consume","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"tokenHash","type":"string","optional":false},{"name":"clientId","type":"string","optional":false},{"name":"resource","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"revokeFamily":{"name":"revokeFamily","async":true,"parameters":[{"name":"familyId","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_grants","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthRefreshGrant","exportName":"UsersOAuthRefreshGrantCollection","collectionExportName":"UsersOAuthRefreshGrantCollectionCollection","schema":{"tableName":"users_oauth_refresh_grants","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_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 \\"authorization_id\\" TEXT,\\n \\"token_hash\\" TEXT NOT NULL UNIQUE,\\n \\"family_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"token_hash":{"type":"TEXT","notNull":true,"unique":true},"family_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_grants_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_refresh_grants_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_grants_family_id_idx","columns":["family_id"]},{"name":"users_oauth_refresh_grants_client_id_idx","columns":["client_id"]},{"name":"users_oauth_refresh_grants_subject_idx","columns":["subject"]},{"name":"users_oauth_refresh_grants_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_refresh_grants_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_refresh_grants_revoked_at_idx","columns":["revoked_at"]},{"name":"users_oauth_refresh_grants_created_at_idx","columns":["created_at"]}],"version":"d332998e"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocationCollection":{"name":"usersoauthaccesstokenrevocationcollection","className":"UsersOAuthAccessTokenRevocationCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocationCollection","collection":"usersoauthaccesstokenrevocations","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"findByJti":{"name":"findByJti","async":true,"parameters":[{"name":"jti","type":"string","optional":false}],"returnType":"Promise<UsersOAuthAccessTokenRevocation | null>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_access_token_revocations","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAccessTokenRevocation","exportName":"UsersOAuthAccessTokenRevocationCollection","collectionExportName":"UsersOAuthAccessTokenRevocationCollectionCollection","schema":{"tableName":"users_oauth_access_token_revocations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_access_token_revocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"jti\\" TEXT NOT NULL UNIQUE,\\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"},"jti":{"type":"TEXT","notNull":true,"unique":true},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_access_token_revocations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_access_token_revocations_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_access_token_revocations_created_at_idx","columns":["created_at"]}],"version":"79147089"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCollection":{"name":"usersoauthauthorizationcollection","className":"UsersOAuthAuthorizationCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCollection","collection":"usersoauthauthorizations","description":"Consent storage is intentionally inaccessible through generated surfaces.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{},"decoratorConfig":{"tableName":"users_oauth_authorizations","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthAuthorization","exportName":"UsersOAuthAuthorizationCollection","collectionExportName":"UsersOAuthAuthorizationCollectionCollection","schema":{"tableName":"users_oauth_authorizations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorizations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"subject\\" TEXT,\\n \\"session_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"permission_ceiling\\" TEXT,\\n \\"resource\\" TEXT,\\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"},"subject":{"type":"TEXT","notNull":false,"unique":false},"session_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"permission_ceiling":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorizations_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorizations_subject_idx","columns":["subject"]},{"name":"users_oauth_authorizations_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorizations_created_at_idx","columns":["created_at"]}],"version":"291f8816"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshFamilyCollection":{"name":"usersoauthrefreshfamilycollection","className":"UsersOAuthRefreshFamilyCollection","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshFamilyCollection","collection":"usersoauthrefreshfamilies","description":"Family rows exist for the entire lifetime of every descendant refresh token.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/collections/OAuthAuthorizationCollection.ts","packageName":"@happyvertical/smrt-users","fields":{},"methods":{"lock":{"name":"lock","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"revoke":{"name":"revoke","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"now","type":"Date","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_families","api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtCollection","extendsTypeArg":"UsersOAuthRefreshFamily","exportName":"UsersOAuthRefreshFamilyCollection","collectionExportName":"UsersOAuthRefreshFamilyCollectionCollection","schema":{"tableName":"users_oauth_refresh_families","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_families\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_families_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_refresh_families_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_families_created_at_idx","columns":["created_at"]}],"version":"37392f31"},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":[]},"mcp":{"include":[]},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["get","delete"]},"mcp":{"include":[]},"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},"getAncestorIds":{"name":"getAncestorIds","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<string[]>","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},"getDescendantIds":{"name":"getDescendantIds","async":true,"parameters":[{"name":"tenantId","type":"string","optional":false}],"returnType":"Promise<string[]>","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},"requireChildOf":{"name":"requireChildOf","async":true,"parameters":[{"name":"parentId","type":"string","optional":false},{"name":"childId","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"withTenantCatalogReadScope":{"name":"withTenantCatalogReadScope","async":true,"parameters":[{"name":"options","type":"TenantReadScopeOptions","optional":false},{"name":"callback","type":"Function","optional":false}],"returnType":"Promise<T>","isStatic":false,"isPublic":true},"withTenantHierarchyContext":{"name":"withTenantHierarchyContext","async":true,"parameters":[{"name":"rootTenantId","type":"string","optional":false},{"name":"options","type":"TenantReadScopeOptions","optional":false},{"name":"callback","type":"Function","optional":false}],"returnType":"Promise<T>","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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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","api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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_permission_id_idx","columns":["tenant_id","permission_id"],"unique":true},{"name":"tenant_permission_overrides_slug_context_idx","columns":["slug","context"]},{"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":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]}},"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,"onDelete":"NO ACTION"}},"userId":{"type":"foreignKey","required":true,"related":"User","_meta":{"required":true,"onDelete":"NO ACTION"}}},"methods":{},"decoratorConfig":{"api":{"include":["list","get"]},"mcp":{"include":["list","get"]},"cli":{"include":["list","get"]},"conflictColumns":["group_id","user_id"]},"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_group_id_user_id_idx","columns":["group_id","user_id"],"unique":true},{"name":"group_members_slug_context_idx","columns":["slug","context"]},{"name":"group_members_created_at_idx","columns":["created_at"]},{"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","source-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,"onDelete":"NO ACTION"}},"permissionId":{"type":"foreignKey","required":true,"related":"Permission","_meta":{"required":true,"onDelete":"NO ACTION"}},"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"]},"conflictColumns":["membership_id","permission_id"]},"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_membership_id_permission_id_idx","columns":["membership_id","permission_id"],"unique":true},{"name":"membership_overrides_slug_context_idx","columns":["slug","context"]},{"name":"membership_overrides_created_at_idx","columns":["created_at"]},{"name":"membership_overrides_permission_id_idx","columns":["permission_id"]}],"version":"25fe9da8"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthClient":{"name":"usersoauthclient","className":"UsersOAuthClient","qualifiedName":"@happyvertical/smrt-users:UsersOAuthClient","collection":"usersoauthclients","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"clientId":{"type":"text","required":true,"_meta":{"required":true,"unique":true}},"redirectUris":{"type":"text","required":false},"allowedScopes":{"type":"text","required":false},"tokenEndpointAuthMethod":{"type":"text","required":false,"default":"none","enum":["none","client_secret_post"]},"secretHash":{"type":"text","required":false,"_meta":{"nullable":true,"sensitive":true},"sensitive":true},"allowedResources":{"type":"text","required":false},"createdAt":{"type":"datetime","required":false,"_meta":{}}},"methods":{"getRedirectUris":{"name":"getRedirectUris","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getAllowedScopes":{"name":"getAllowedScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getAllowedResources":{"name":"getAllowedResources","async":false,"parameters":[],"returnType":"string[] | undefined","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_clients","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthClient","collectionExportName":"UsersOAuthClientCollection","validationRules":[{"field":"clientId","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_clients","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_clients\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"client_id\\" TEXT NOT NULL UNIQUE,\\n \\"redirect_uris\\" TEXT,\\n \\"allowed_scopes\\" TEXT,\\n \\"token_endpoint_auth_method\\" TEXT DEFAULT 'none',\\n \\"secret_hash\\" TEXT,\\n \\"allowed_resources\\" 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"},"client_id":{"type":"TEXT","notNull":true,"unique":true},"redirect_uris":{"type":"TEXT","notNull":false,"unique":false},"allowed_scopes":{"type":"TEXT","notNull":false,"unique":false},"token_endpoint_auth_method":{"type":"TEXT","notNull":false,"unique":false,"default":"none"},"secret_hash":{"type":"TEXT","notNull":false,"unique":false},"allowed_resources":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_clients_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_clients_created_at_idx","columns":["created_at"]}],"version":"0ecda18c"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorizationCode":{"name":"usersoauthauthorizationcode","className":"UsersOAuthAuthorizationCode","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorizationCode","collection":"usersoauthauthorizationcodes","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"codeHash":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"claims":{"type":"text","required":false},"redirectUri":{"type":"text","required":false},"scopes":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"codeChallenge":{"type":"text","required":false},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}},"consumedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getClaims":{"name":"getClaims","async":false,"parameters":[],"returnType":"OAuthTokenClaims","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorization_codes","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthAuthorizationCode","collectionExportName":"UsersOAuthAuthorizationCodeCollection","validationRules":[{"field":"codeHash","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_authorization_codes","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorization_codes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\n \\"code_hash\\" TEXT NOT NULL UNIQUE,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"redirect_uri\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"code_challenge\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"code_hash":{"type":"TEXT","notNull":true,"unique":true},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"redirect_uri":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"code_challenge":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorization_codes_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorization_codes_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_authorization_codes_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorization_codes_subject_idx","columns":["subject"]},{"name":"users_oauth_authorization_codes_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_authorization_codes_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_authorization_codes_created_at_idx","columns":["created_at"]}],"version":"f5c5d615"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshGrant":{"name":"usersoauthrefreshgrant","className":"UsersOAuthRefreshGrant","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshGrant","collection":"usersoauthrefreshgrants","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"tokenHash":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"familyId":{"type":"text","required":false,"_meta":{"indexed":true}},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"claims":{"type":"text","required":false},"scopes":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}},"consumedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true,"indexed":true}}},"methods":{"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getClaims":{"name":"getClaims","async":false,"parameters":[],"returnType":"OAuthTokenClaims","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_refresh_grants","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthRefreshGrant","collectionExportName":"UsersOAuthRefreshGrantCollection","validationRules":[{"field":"tokenHash","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_refresh_grants","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_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 \\"authorization_id\\" TEXT,\\n \\"token_hash\\" TEXT NOT NULL UNIQUE,\\n \\"family_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"claims\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"resource\\" TEXT,\\n \\"expires_at\\" TIMESTAMP,\\n \\"consumed_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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"token_hash":{"type":"TEXT","notNull":true,"unique":true},"family_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"claims":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"consumed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_grants_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_refresh_grants_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_grants_family_id_idx","columns":["family_id"]},{"name":"users_oauth_refresh_grants_client_id_idx","columns":["client_id"]},{"name":"users_oauth_refresh_grants_subject_idx","columns":["subject"]},{"name":"users_oauth_refresh_grants_tenant_id_idx","columns":["tenant_id"]},{"name":"users_oauth_refresh_grants_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_refresh_grants_revoked_at_idx","columns":["revoked_at"]},{"name":"users_oauth_refresh_grants_created_at_idx","columns":["created_at"]}],"version":"d332998e"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocation":{"name":"usersoauthaccesstokenrevocation","className":"UsersOAuthAccessTokenRevocation","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAccessTokenRevocation","collection":"usersoauthaccesstokenrevocations","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"jti":{"type":"text","required":true,"_meta":{"required":true,"unique":true,"sensitive":true},"sensitive":true},"expiresAt":{"type":"datetime","required":false,"_meta":{"indexed":true}}},"methods":{},"decoratorConfig":{"tableName":"users_oauth_access_token_revocations","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthAccessTokenRevocation","collectionExportName":"UsersOAuthAccessTokenRevocationCollection","validationRules":[{"field":"jti","rule":"required","fieldType":"text"}],"schema":{"tableName":"users_oauth_access_token_revocations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_access_token_revocations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"jti\\" TEXT NOT NULL UNIQUE,\\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"},"jti":{"type":"TEXT","notNull":true,"unique":true},"expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_access_token_revocations_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_access_token_revocations_expires_at_idx","columns":["expires_at"]},{"name":"users_oauth_access_token_revocations_created_at_idx","columns":["created_at"]}],"version":"79147089"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthAuthorization":{"name":"usersoauthauthorization","className":"UsersOAuthAuthorization","qualifiedName":"@happyvertical/smrt-users:UsersOAuthAuthorization","collection":"usersoauthauthorizations","description":"A consent decision bound to a server-side session; never exposes its bearer.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"subject":{"type":"text","required":false,"_meta":{"indexed":true}},"sessionId":{"type":"text","required":false,"_meta":{"sensitive":true},"sensitive":true},"clientId":{"type":"text","required":false,"_meta":{"indexed":true}},"tenantId":{"type":"text","required":false,"_meta":{"nullable":true}},"scopes":{"type":"text","required":false},"permissionCeiling":{"type":"text","required":false},"resource":{"type":"text","required":false,"_meta":{"nullable":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"getPermissionCeiling":{"name":"getPermissionCeiling","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true},"getScopes":{"name":"getScopes","async":false,"parameters":[],"returnType":"string[]","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"users_oauth_authorizations","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false,"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"UsersOAuthAuthorization","collectionExportName":"UsersOAuthAuthorizationCollection","schema":{"tableName":"users_oauth_authorizations","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_authorizations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"subject\\" TEXT,\\n \\"session_id\\" TEXT,\\n \\"client_id\\" TEXT,\\n \\"tenant_id\\" TEXT,\\n \\"scopes\\" TEXT,\\n \\"permission_ceiling\\" TEXT,\\n \\"resource\\" TEXT,\\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"},"subject":{"type":"TEXT","notNull":false,"unique":false},"session_id":{"type":"TEXT","notNull":false,"unique":false},"client_id":{"type":"TEXT","notNull":false,"unique":false},"tenant_id":{"type":"TEXT","notNull":false,"unique":false},"scopes":{"type":"TEXT","notNull":false,"unique":false},"permission_ceiling":{"type":"TEXT","notNull":false,"unique":false},"resource":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_authorizations_tenant_id_slug_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"users_oauth_authorizations_subject_idx","columns":["subject"]},{"name":"users_oauth_authorizations_client_id_idx","columns":["client_id"]},{"name":"users_oauth_authorizations_created_at_idx","columns":["created_at"]}],"version":"291f8816"},"importPath":"@happyvertical/smrt-users"},"@happyvertical/smrt-users:UsersOAuthRefreshFamily":{"name":"usersoauthrefreshfamily","className":"UsersOAuthRefreshFamily","qualifiedName":"@happyvertical/smrt-users:UsersOAuthRefreshFamily","collection":"usersoauthrefreshfamilies","description":"Stable lock row: rotation and revocation always serialize on this family.","filePath":"/home/runner/work/smrt/smrt/packages/users/src/models/OAuthAuthorization.ts","packageName":"@happyvertical/smrt-users","fields":{"authorizationId":{"type":"text","required":false,"_meta":{"nullable":true,"indexed":true}},"revokedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{},"decoratorConfig":{"tableName":"users_oauth_refresh_families","sensitive":true,"api":{"include":[]},"mcp":{"include":[]},"cli":false},"extends":"SmrtObject","exportName":"UsersOAuthRefreshFamily","collectionExportName":"UsersOAuthRefreshFamilyCollection","schema":{"tableName":"users_oauth_refresh_families","ddl":"CREATE TABLE IF NOT EXISTS \\"users_oauth_refresh_families\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"authorization_id\\" TEXT,\\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"},"authorization_id":{"type":"TEXT","notNull":false,"unique":false},"revoked_at":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"users_oauth_refresh_families_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"users_oauth_refresh_families_authorization_id_idx","columns":["authorization_id"]},{"name":"users_oauth_refresh_families_created_at_idx","columns":["created_at"]}],"version":"37392f31"},"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,"onDelete":"NO ACTION"}},"permissionId":{"type":"foreignKey","required":true,"related":"Permission","_meta":{"required":true,"onDelete":"NO ACTION"}},"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","permission_id"]},"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_permission_id_idx","columns":["tenant_id","permission_id"],"unique":true},{"name":"tenant_permission_overrides_slug_context_idx","columns":["slug","context"]},{"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}`));
318
318
  var __defProp$16 = Object.defineProperty;
319
319
  var __getOwnPropDesc$16 = Object.getOwnPropertyDescriptor;
320
320
  var __defNormalProp$16 = (obj, key, value) => key in obj ? __defProp$16(obj, key, {