@happyvertical/smrt-facts 0.49.3 → 0.49.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./chunks/rolldown-runtime-D7D4PA-g.js";
2
2
  import { r as FactSource, t as FactSourceCollection } from "./chunks/fact-sources-DRuY7BXx.js";
3
3
  import { r as FactSubject, t as FactSubjectCollection } from "./chunks/fact-subjects-C0cRW1Uo.js";
4
- import { ObjectRegistry, SmrtCollection, SmrtJunction, SmrtObject, crossPackageRef, field, foreignKey, smrt } from "@happyvertical/smrt-core";
4
+ import { ObjectRegistry, SmrtCollection, SmrtJunction, SmrtObject, classifyDatabaseError, crossPackageRef, field, foreignKey, isPostgresDatabase, smrt } from "@happyvertical/smrt-core";
5
5
  import { definePrompt, resolvePrompt } from "@happyvertical/smrt-prompts";
6
- import { TenantScoped, queryGlobal, queryWithGlobals, tenantId } from "@happyvertical/smrt-tenancy";
6
+ import { TenantScoped, assertTenantReadAllowed, getCurrentTenant, isSuperAdminBypass, isSystemContext, isTenancyEnabled, queryGlobal, queryWithGlobals, tenantId, withTenantGlobalRead } from "@happyvertical/smrt-tenancy";
7
7
  //#region src/__smrt-register__.ts
8
- ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-facts\",\"packageVersion\":\"0.49.3\",\"objects\":{\"@happyvertical/smrt-facts:FactContent\":{\"name\":\"factcontent\",\"className\":\"FactContent\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactContent\",\"collection\":\"factcontents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-content.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"contentId\":{\"type\":\"crossPackageRef\",\"required\":true,\"related\":\"@happyvertical/smrt-content:Content\"},\"relationship\":{\"type\":\"text\",\"required\":true,\"default\":\"extracted_from\",\"_meta\":{\"required\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getRelationship\":{\"name\":\"getRelationship\",\"async\":false,\"parameters\":[],\"returnType\":\"FactContentRelationship\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"content_id\",\"relationship\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactContent\",\"collectionExportName\":\"FactContentCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"contentId\",\"rule\":\"required\",\"fieldType\":\"crossPackageRef\"},{\"field\":\"relationship\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_contents\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_contents\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"content_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL DEFAULT 'extracted_from',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"content_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"extracted_from\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_contents_fact_id_content_id_idx\",\"columns\":[\"fact_id\",\"content_id\",\"relationship\"],\"unique\":true},{\"name\":\"fact_contents_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_contents_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_contents_content_id_idx\",\"columns\":[\"content_id\"]}],\"version\":\"62831c36\"}},\"@happyvertical/smrt-facts:FactContentCollection\":{\"name\":\"factcontentcollection\",\"className\":\"FactContentCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactContentCollection\",\"collection\":\"factcontents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-contents.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"byLeft\":{\"name\":\"byLeft\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"byRight\":{\"name\":\"byRight\",\"async\":true,\"parameters\":[{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"attach\":{\"name\":\"attach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem>\",\"isStatic\":false,\"isPublic\":true},\"detach\":{\"name\":\"detach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightIds\",\"type\":\"string[]\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtJunction\",\"extendsTypeArg\":\"FactContent\",\"exportName\":\"FactContentCollection\",\"collectionExportName\":\"FactContentCollectionCollection\",\"schema\":{\"tableName\":\"fact_content_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_content_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_content_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_content_collections_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"22be8f54\"}},\"@happyvertical/smrt-facts:FactEvidence\":{\"name\":\"factevidence\",\"className\":\"FactEvidence\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactEvidence\",\"collection\":\"factevidences\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-evidence.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"evidenceKey\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":true,\"default\":\"supports\",\"_meta\":{\"required\":true,\"default\":\"supports\"}},\"sourceKind\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceTitle\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"quote\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"locator\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"extractionMethod\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"confidence\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"fact_evidences\",\"conflictColumns\":[\"fact_id\",\"evidence_key\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactEvidence\",\"collectionExportName\":\"FactEvidenceCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"evidenceKey\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"status\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_evidences\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_evidences\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"evidence_key\\\" TEXT NOT NULL DEFAULT '',\\n \\\"status\\\" TEXT NOT NULL DEFAULT 'supports',\\n \\\"source_kind\\\" TEXT DEFAULT '',\\n \\\"source_id\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"quote\\\" TEXT DEFAULT '',\\n \\\"locator\\\" TEXT DEFAULT '',\\n \\\"extraction_method\\\" TEXT DEFAULT '',\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"evidence_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"supports\"},\"source_kind\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"quote\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"locator\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"extraction_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_evidences_fact_id_evidence_key_idx\",\"columns\":[\"fact_id\",\"evidence_key\"],\"unique\":true},{\"name\":\"fact_evidences_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_evidences_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"7f1e96c4\"}},\"@happyvertical/smrt-facts:FactEvidenceCollection\":{\"name\":\"factevidencecollection\",\"className\":\"FactEvidenceCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactEvidenceCollection\",\"collection\":\"factevidences\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-evidences.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"getForSource\":{\"name\":\"getForSource\",\"async\":true,\"parameters\":[{\"name\":\"sourceKind\",\"type\":\"string\",\"optional\":false},{\"name\":\"sourceId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"getForSources\":{\"name\":\"getForSources\",\"async\":true,\"parameters\":[{\"name\":\"sources\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"bulkUpdateStatus\":{\"name\":\"bulkUpdateStatus\",\"async\":true,\"parameters\":[{\"name\":\"evidenceIds\",\"type\":\"string[]\",\"optional\":false},{\"name\":\"status\",\"type\":\"FactEvidenceStatus\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"string | null\"]}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"replaceGeneratedForSources\":{\"name\":\"replaceGeneratedForSources\",\"async\":true,\"parameters\":[{\"name\":\"sources\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\"]},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"string | null\"]}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"upsertEvidence\":{\"name\":\"upsertEvidence\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"FactEvidenceOptions\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"fact_evidences\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactEvidence\",\"exportName\":\"FactEvidenceCollection\",\"collectionExportName\":\"FactEvidenceCollectionCollection\",\"schema\":{\"tableName\":\"fact_evidences\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_evidences\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_evidences_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_evidences_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"80329e4f\"}},\"@happyvertical/smrt-facts:FactSource\":{\"name\":\"factsource\",\"className\":\"FactSource\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSource\",\"collection\":\"factsources\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-source.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"sourceType\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceTitle\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"credibility\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"extractedAt\":{\"type\":\"datetime\",\"required\":false},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FactSource\",\"collectionExportName\":\"FactSourceCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"fact_sources\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_sources\\\" (\\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 \\\"fact_id\\\" UUID,\\n \\\"source_type\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"credibility\\\" REAL DEFAULT 0,\\n \\\"extracted_at\\\" TIMESTAMP,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"source_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"credibility\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"extracted_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"fact_sources_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"fact_sources_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"fact_sources_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_sources_fact_id_idx\",\"columns\":[\"fact_id\"]}],\"version\":\"9d0f874e\"}},\"@happyvertical/smrt-facts:FactSourceCollection\":{\"name\":\"factsourcecollection\",\"className\":\"FactSourceCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSourceCollection\",\"collection\":\"factsources\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-sources.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"countForFact\":{\"name\":\"countForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"getByType\":{\"name\":\"getByType\",\"async\":true,\"parameters\":[{\"name\":\"sourceType\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"getHighCredibility\":{\"name\":\"getHighCredibility\",\"async\":true,\"parameters\":[{\"name\":\"minCredibility\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"getAverageCredibility\":{\"name\":\"getAverageCredibility\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactSource\",\"exportName\":\"FactSourceCollection\",\"collectionExportName\":\"FactSourceCollectionCollection\",\"schema\":{\"tableName\":\"fact_source_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_source_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_source_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_source_collections_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"36f4adef\"}},\"@happyvertical/smrt-facts:FactSubject\":{\"name\":\"factsubject\",\"className\":\"FactSubject\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSubject\",\"collection\":\"factsubjects\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-subject.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"entityType\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"entityId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"role\":{\"type\":\"text\",\"required\":false,\"default\":\"subject\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getRole\":{\"name\":\"getRole\",\"async\":false,\"parameters\":[],\"returnType\":\"SubjectRole\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"entity_type\",\"entity_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactSubject\",\"collectionExportName\":\"FactSubjectCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"entityType\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"entityId\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_subjects\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_subjects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"entity_type\\\" TEXT NOT NULL DEFAULT '',\\n \\\"entity_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"role\\\" TEXT DEFAULT 'subject',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"entity_type\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"entity_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"role\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"subject\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_subjects_fact_id_entity_type_idx\",\"columns\":[\"fact_id\",\"entity_type\",\"entity_id\"],\"unique\":true},{\"name\":\"fact_subjects_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_subjects_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"cb6eca71\"}},\"@happyvertical/smrt-facts:FactSubjectCollection\":{\"name\":\"factsubjectcollection\",\"className\":\"FactSubjectCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSubjectCollection\",\"collection\":\"factsubjects\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-subjects.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"getForEntity\":{\"name\":\"getForEntity\",\"async\":true,\"parameters\":[{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"linkEntity\":{\"name\":\"linkEntity\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false},{\"name\":\"role\",\"type\":\"SubjectRole\",\"optional\":true,\"default\":\"subject\"}],\"returnType\":\"Promise<FactSubject>\",\"isStatic\":false,\"isPublic\":true},\"unlinkEntity\":{\"name\":\"unlinkEntity\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getByRole\":{\"name\":\"getByRole\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"role\",\"type\":\"SubjectRole\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"countForFact\":{\"name\":\"countForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactSubject\",\"exportName\":\"FactSubjectCollection\",\"collectionExportName\":\"FactSubjectCollectionCollection\",\"schema\":{\"tableName\":\"fact_subject_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_subject_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_subject_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_subject_collections_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"0ce73db4\"}},\"@happyvertical/smrt-facts:FactTag\":{\"name\":\"facttag\",\"className\":\"FactTag\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactTag\",\"collection\":\"facttags\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-tag.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"tagSlug\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"tag_slug\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactTag\",\"collectionExportName\":\"FactTagCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"tagSlug\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_tags\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_tags\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"tag_slug\\\" TEXT NOT NULL DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"tag_slug\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_tags_fact_id_tag_slug_idx\",\"columns\":[\"fact_id\",\"tag_slug\"],\"unique\":true},{\"name\":\"fact_tags_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_tags_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"79df8b59\"}},\"@happyvertical/smrt-facts:FactTagCollection\":{\"name\":\"facttagcollection\",\"className\":\"FactTagCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactTagCollection\",\"collection\":\"facttags\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-tags.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"getForTag\":{\"name\":\"getForTag\",\"async\":true,\"parameters\":[{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"addTag\":{\"name\":\"addTag\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag>\",\"isStatic\":false,\"isPublic\":true},\"removeTag\":{\"name\":\"removeTag\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getTagSlugs\":{\"name\":\"getTagSlugs\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactTag\",\"exportName\":\"FactTagCollection\",\"collectionExportName\":\"FactTagCollectionCollection\",\"schema\":{\"tableName\":\"fact_tag_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_tag_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_tag_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_tag_collections_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"4bac3c1d\"}},\"@happyvertical/smrt-facts:Fact\":{\"name\":\"fact\",\"className\":\"Fact\",\"qualifiedName\":\"@happyvertical/smrt-facts:Fact\",\"collection\":\"facts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"textRefined\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"textRaw\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"type\":{\"type\":\"text\",\"required\":true,\"default\":\"assertion\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":true,\"default\":\"pending\",\"_meta\":{\"required\":true}},\"domain\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"previousFactId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Fact\"},\"evolutionType\":{\"type\":\"text\",\"required\":false,\"default\":\"original\"},\"sourceCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"confidence\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"FactMetadata\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"FactMetadata\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Partial<FactMetadata>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getType\":{\"name\":\"getType\",\"async\":false,\"parameters\":[],\"returnType\":\"FactType\",\"isStatic\":false,\"isPublic\":true},\"getStatus\":{\"name\":\"getStatus\",\"async\":false,\"parameters\":[],\"returnType\":\"FactStatus\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionType\":{\"name\":\"getEvolutionType\",\"async\":false,\"parameters\":[],\"returnType\":\"EvolutionType\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuperseded\":{\"name\":\"isSuperseded\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"hasPredecessor\":{\"name\":\"hasPredecessor\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getPredecessor\":{\"name\":\"getPredecessor\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact | null>\",\"isStatic\":false,\"isPublic\":true},\"getSuccessors\":{\"name\":\"getSuccessors\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getSources\":{\"name\":\"getSources\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSubjects\":{\"name\":\"getSubjects\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"embeddings\":{\"fields\":[\"textRefined\"],\"provider\":\"auto\",\"autoGenerate\":true,\"combinedField\":{\"name\":\"full_context\",\"template\":\"{textRefined}\\n\\nType: {type}\\nDomain: {domain}\"}},\"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\":\"Fact\",\"collectionExportName\":\"FactCollection\",\"validationRules\":[{\"field\":\"textRefined\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"type\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"status\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"facts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"facts\\\" (\\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 \\\"text_refined\\\" TEXT DEFAULT '',\\n \\\"text_raw\\\" TEXT DEFAULT '',\\n \\\"type\\\" TEXT DEFAULT 'assertion',\\n \\\"status\\\" TEXT DEFAULT 'pending',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"previous_fact_id\\\" UUID,\\n \\\"evolution_type\\\" TEXT DEFAULT 'original',\\n \\\"source_count\\\" INTEGER DEFAULT 0,\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"text_refined\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"text_raw\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"assertion\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"pending\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"previous_fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"evolution_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"original\"},\"source_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"facts_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"facts_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"facts_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"facts_previous_fact_id_idx\",\"columns\":[\"previous_fact_id\"]}],\"version\":\"ba4a9468\"}},\"@happyvertical/smrt-facts:FactCollection\":{\"name\":\"factcollection\",\"className\":\"FactCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactCollection\",\"collection\":\"facts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/facts.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getActive\":{\"name\":\"getActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getPending\":{\"name\":\"getPending\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByType\":{\"name\":\"getByType\",\"async\":true,\"parameters\":[{\"name\":\"type\",\"type\":\"FactType\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByDomain\":{\"name\":\"getByDomain\",\"async\":true,\"parameters\":[{\"name\":\"domain\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByStatus\":{\"name\":\"getByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"FactStatus\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getSuccessors\":{\"name\":\"getSuccessors\",\"async\":true,\"parameters\":[{\"name\":\"previousFactId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"browseCatalog\":{\"name\":\"browseCatalog\",\"async\":true,\"parameters\":[{\"name\":\"query\",\"type\":\"any\",\"optional\":true,\"default\":\"\"},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string | null\",\"number\",\"boolean\"]}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getForContent\":{\"name\":\"getForContent\",\"async\":true,\"parameters\":[{\"name\":\"contentId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"FactContentRelationship\",\"boolean\"]}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"reconcile\":{\"name\":\"reconcile\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"ReconcileOptions\",\"optional\":false}],\"returnType\":\"Promise<ReconcileResult>\",\"isStatic\":false,\"isPublic\":true},\"extractCandidatesFromText\":{\"name\":\"extractCandidatesFromText\",\"async\":true,\"parameters\":[{\"name\":\"text\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactExtractionOptions\",\"optional\":true}],\"returnType\":\"Promise<FactExtractionCandidate[]>\",\"isStatic\":false,\"isPublic\":true},\"extractArticleClaims\":{\"name\":\"extractArticleClaims\",\"async\":true,\"parameters\":[{\"name\":\"text\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactExtractionOptions\",\"optional\":true}],\"returnType\":\"Promise<FactExtractionCandidate[]>\",\"isStatic\":false,\"isPublic\":true},\"assessClaimSupport\":{\"name\":\"assessClaimSupport\",\"async\":true,\"parameters\":[{\"name\":\"claim\",\"type\":\"string\",\"optional\":false},{\"name\":\"candidateFacts\",\"type\":\"FactClaimSupportCandidate[]\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactClaimSupportOptions\",\"optional\":true}],\"returnType\":\"Promise<FactClaimSupportAssessment>\",\"isStatic\":false,\"isPublic\":true},\"branch\":{\"name\":\"branch\",\"async\":true,\"parameters\":[{\"name\":\"previousFactId\",\"type\":\"string\",\"optional\":false},{\"name\":\"data\",\"type\":\"Partial<FactOptions>\",\"optional\":false},{\"name\":\"evolutionType\",\"type\":\"EvolutionType\",\"optional\":true,\"default\":\"extension\"}],\"returnType\":\"Promise<Fact>\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionChain\":{\"name\":\"getEvolutionChain\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getLatestInChain\":{\"name\":\"getLatestInChain\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact>\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionTree\":{\"name\":\"getEvolutionTree\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"recalculateConfidence\":{\"name\":\"recalculateConfidence\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"getEntityBriefing\":{\"name\":\"getEntityBriefing\",\"async\":true,\"parameters\":[{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<EntityBriefing>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Fact\",\"exportName\":\"FactCollection\",\"collectionExportName\":\"FactCollectionCollection\",\"schema\":{\"tableName\":\"fact_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_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\"}},\"indexes\":[{\"name\":\"fact_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"fact_collections_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"3008a4e3\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-prompts\",\"@happyvertical/smrt-tenancy\"]}"));
8
+ ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-facts\",\"packageVersion\":\"0.49.4\",\"objects\":{\"@happyvertical/smrt-facts:FactContent\":{\"name\":\"factcontent\",\"className\":\"FactContent\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactContent\",\"collection\":\"factcontents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-content.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"contentId\":{\"type\":\"crossPackageRef\",\"required\":true,\"related\":\"@happyvertical/smrt-content:Content\"},\"relationship\":{\"type\":\"text\",\"required\":true,\"default\":\"extracted_from\",\"_meta\":{\"required\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getRelationship\":{\"name\":\"getRelationship\",\"async\":false,\"parameters\":[],\"returnType\":\"FactContentRelationship\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"content_id\",\"relationship\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactContent\",\"collectionExportName\":\"FactContentCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"contentId\",\"rule\":\"required\",\"fieldType\":\"crossPackageRef\"},{\"field\":\"relationship\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_contents\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_contents\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"content_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL DEFAULT 'extracted_from',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"content_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"extracted_from\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_contents_fact_id_content_id_idx\",\"columns\":[\"fact_id\",\"content_id\",\"relationship\"],\"unique\":true},{\"name\":\"fact_contents_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_contents_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_contents_content_id_idx\",\"columns\":[\"content_id\"]}],\"version\":\"62831c36\"}},\"@happyvertical/smrt-facts:FactContentCollection\":{\"name\":\"factcontentcollection\",\"className\":\"FactContentCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactContentCollection\",\"collection\":\"factcontents\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-contents.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"byLeft\":{\"name\":\"byLeft\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"byRight\":{\"name\":\"byRight\",\"async\":true,\"parameters\":[{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem[]>\",\"isStatic\":false,\"isPublic\":true},\"attach\":{\"name\":\"attach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<TItem>\",\"isStatic\":false,\"isPublic\":true},\"detach\":{\"name\":\"detach\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightId\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionFilterOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"setLinks\":{\"name\":\"setLinks\",\"async\":true,\"parameters\":[{\"name\":\"leftId\",\"type\":\"string\",\"optional\":false},{\"name\":\"rightIds\",\"type\":\"string[]\",\"optional\":false},{\"name\":\"opts\",\"type\":\"JunctionAttachOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactContent[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtJunction\",\"extendsTypeArg\":\"FactContent\",\"exportName\":\"FactContentCollection\",\"collectionExportName\":\"FactContentCollectionCollection\",\"schema\":{\"tableName\":\"fact_contents\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_contents\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"content_id\\\" UUID NOT NULL,\\n \\\"relationship\\\" TEXT NOT NULL DEFAULT 'extracted_from',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"content_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":true,\"unique\":false},\"relationship\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"extracted_from\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_contents_fact_id_content_id_idx\",\"columns\":[\"fact_id\",\"content_id\",\"relationship\"],\"unique\":true},{\"name\":\"fact_contents_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_contents_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_contents_content_id_idx\",\"columns\":[\"content_id\"]}],\"version\":\"62831c36\"}},\"@happyvertical/smrt-facts:FactEvidence\":{\"name\":\"factevidence\",\"className\":\"FactEvidence\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactEvidence\",\"collection\":\"factevidences\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-evidence.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"evidenceKey\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":true,\"default\":\"supports\",\"_meta\":{\"required\":true,\"default\":\"supports\"}},\"sourceKind\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceTitle\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"quote\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"locator\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"extractionMethod\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"confidence\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"fact_evidences\",\"conflictColumns\":[\"fact_id\",\"evidence_key\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactEvidence\",\"collectionExportName\":\"FactEvidenceCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"evidenceKey\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"status\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_evidences\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_evidences\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"evidence_key\\\" TEXT NOT NULL DEFAULT '',\\n \\\"status\\\" TEXT NOT NULL DEFAULT 'supports',\\n \\\"source_kind\\\" TEXT DEFAULT '',\\n \\\"source_id\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"quote\\\" TEXT DEFAULT '',\\n \\\"locator\\\" TEXT DEFAULT '',\\n \\\"extraction_method\\\" TEXT DEFAULT '',\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"evidence_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"supports\"},\"source_kind\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"quote\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"locator\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"extraction_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_evidences_fact_id_evidence_key_idx\",\"columns\":[\"fact_id\",\"evidence_key\"],\"unique\":true},{\"name\":\"fact_evidences_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_evidences_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"7f1e96c4\"}},\"@happyvertical/smrt-facts:FactEvidenceCollection\":{\"name\":\"factevidencecollection\",\"className\":\"FactEvidenceCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactEvidenceCollection\",\"collection\":\"factevidences\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-evidences.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"getForSource\":{\"name\":\"getForSource\",\"async\":true,\"parameters\":[{\"name\":\"sourceKind\",\"type\":\"string\",\"optional\":false},{\"name\":\"sourceId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"getForSources\":{\"name\":\"getForSources\",\"async\":true,\"parameters\":[{\"name\":\"sources\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\"]}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"bulkUpdateStatus\":{\"name\":\"bulkUpdateStatus\",\"async\":true,\"parameters\":[{\"name\":\"evidenceIds\",\"type\":\"string[]\",\"optional\":false},{\"name\":\"status\",\"type\":\"FactEvidenceStatus\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"string | null\"]}],\"returnType\":\"Promise<FactEvidence[]>\",\"isStatic\":false,\"isPublic\":true},\"replaceGeneratedForSources\":{\"name\":\"replaceGeneratedForSources\",\"async\":true,\"parameters\":[{\"name\":\"sources\",\"type\":\"Array<object>\",\"optional\":false,\"memberTypes\":[\"string\"]},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string\",\"string | null\"]}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"upsertEvidence\":{\"name\":\"upsertEvidence\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"FactEvidenceOptions\",\"optional\":false}],\"returnType\":\"Promise<FactEvidence>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"fact_evidences\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactEvidence\",\"exportName\":\"FactEvidenceCollection\",\"collectionExportName\":\"FactEvidenceCollectionCollection\",\"schema\":{\"tableName\":\"fact_evidences\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_evidences\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"evidence_key\\\" TEXT NOT NULL DEFAULT '',\\n \\\"status\\\" TEXT NOT NULL DEFAULT 'supports',\\n \\\"source_kind\\\" TEXT DEFAULT '',\\n \\\"source_id\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"quote\\\" TEXT DEFAULT '',\\n \\\"locator\\\" TEXT DEFAULT '',\\n \\\"extraction_method\\\" TEXT DEFAULT '',\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"evidence_key\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"supports\"},\"source_kind\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"quote\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"locator\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"extraction_method\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_evidences_fact_id_evidence_key_idx\",\"columns\":[\"fact_id\",\"evidence_key\"],\"unique\":true},{\"name\":\"fact_evidences_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_evidences_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"7f1e96c4\"}},\"@happyvertical/smrt-facts:FactSource\":{\"name\":\"factsource\",\"className\":\"FactSource\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSource\",\"collection\":\"factsources\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-source.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"sourceType\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"sourceTitle\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"credibility\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"extractedAt\":{\"type\":\"datetime\",\"required\":false},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"conflictColumns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FactSource\",\"collectionExportName\":\"FactSourceCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"fact_sources\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_sources\\\" (\\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 \\\"fact_id\\\" UUID,\\n \\\"source_type\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"credibility\\\" REAL DEFAULT 0,\\n \\\"extracted_at\\\" TIMESTAMP,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"source_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"credibility\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"extracted_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"fact_sources_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"fact_sources_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"fact_sources_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_sources_fact_id_idx\",\"columns\":[\"fact_id\"]}],\"version\":\"9d0f874e\"}},\"@happyvertical/smrt-facts:FactSourceCollection\":{\"name\":\"factsourcecollection\",\"className\":\"FactSourceCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSourceCollection\",\"collection\":\"factsources\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-sources.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"countForFact\":{\"name\":\"countForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"getByType\":{\"name\":\"getByType\",\"async\":true,\"parameters\":[{\"name\":\"sourceType\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"getHighCredibility\":{\"name\":\"getHighCredibility\",\"async\":true,\"parameters\":[{\"name\":\"minCredibility\",\"type\":\"number\",\"optional\":true}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"getAverageCredibility\":{\"name\":\"getAverageCredibility\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSource[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactSource\",\"exportName\":\"FactSourceCollection\",\"collectionExportName\":\"FactSourceCollectionCollection\",\"schema\":{\"tableName\":\"fact_sources\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_sources\\\" (\\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 \\\"fact_id\\\" UUID,\\n \\\"source_type\\\" TEXT DEFAULT '',\\n \\\"source_url\\\" TEXT DEFAULT '',\\n \\\"source_title\\\" TEXT DEFAULT '',\\n \\\"credibility\\\" REAL DEFAULT 0,\\n \\\"extracted_at\\\" TIMESTAMP,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"source_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_url\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"source_title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"credibility\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"extracted_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"fact_sources_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"fact_sources_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"fact_sources_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"fact_sources_fact_id_idx\",\"columns\":[\"fact_id\"]}],\"version\":\"9d0f874e\"}},\"@happyvertical/smrt-facts:FactSubject\":{\"name\":\"factsubject\",\"className\":\"FactSubject\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSubject\",\"collection\":\"factsubjects\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-subject.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"entityType\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"entityId\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"role\":{\"type\":\"text\",\"required\":false,\"default\":\"subject\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getRole\":{\"name\":\"getRole\",\"async\":false,\"parameters\":[],\"returnType\":\"SubjectRole\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"entity_type\",\"entity_id\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactSubject\",\"collectionExportName\":\"FactSubjectCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"entityType\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"entityId\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_subjects\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_subjects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"entity_type\\\" TEXT NOT NULL DEFAULT '',\\n \\\"entity_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"role\\\" TEXT DEFAULT 'subject',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"entity_type\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"entity_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"role\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"subject\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_subjects_fact_id_entity_type_idx\",\"columns\":[\"fact_id\",\"entity_type\",\"entity_id\"],\"unique\":true},{\"name\":\"fact_subjects_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_subjects_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"cb6eca71\"}},\"@happyvertical/smrt-facts:FactSubjectCollection\":{\"name\":\"factsubjectcollection\",\"className\":\"FactSubjectCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactSubjectCollection\",\"collection\":\"factsubjects\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-subjects.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"getForEntity\":{\"name\":\"getForEntity\",\"async\":true,\"parameters\":[{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"linkEntity\":{\"name\":\"linkEntity\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false},{\"name\":\"role\",\"type\":\"SubjectRole\",\"optional\":true,\"default\":\"subject\"}],\"returnType\":\"Promise<FactSubject>\",\"isStatic\":false,\"isPublic\":true},\"unlinkEntity\":{\"name\":\"unlinkEntity\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getByRole\":{\"name\":\"getByRole\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"role\",\"type\":\"SubjectRole\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"countForFact\":{\"name\":\"countForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactSubject[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactSubject\",\"exportName\":\"FactSubjectCollection\",\"collectionExportName\":\"FactSubjectCollectionCollection\",\"schema\":{\"tableName\":\"fact_subjects\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_subjects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"entity_type\\\" TEXT NOT NULL DEFAULT '',\\n \\\"entity_id\\\" TEXT NOT NULL DEFAULT '',\\n \\\"role\\\" TEXT DEFAULT 'subject',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"entity_type\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"entity_id\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"role\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"subject\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_subjects_fact_id_entity_type_idx\",\"columns\":[\"fact_id\",\"entity_type\",\"entity_id\"],\"unique\":true},{\"name\":\"fact_subjects_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_subjects_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"cb6eca71\"}},\"@happyvertical/smrt-facts:FactTag\":{\"name\":\"facttag\",\"className\":\"FactTag\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactTag\",\"collection\":\"facttags\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-tag.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"factId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Fact\",\"_meta\":{\"required\":true}},\"tagSlug\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string, unknown>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Record<string, unknown>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getFact\":{\"name\":\"getFact\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"conflictColumns\":[\"fact_id\",\"tag_slug\"],\"api\":{\"include\":[\"list\",\"get\",\"create\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"FactTag\",\"collectionExportName\":\"FactTagCollection\",\"validationRules\":[{\"field\":\"factId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"tagSlug\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"fact_tags\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_tags\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"tag_slug\\\" TEXT NOT NULL DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"tag_slug\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_tags_fact_id_tag_slug_idx\",\"columns\":[\"fact_id\",\"tag_slug\"],\"unique\":true},{\"name\":\"fact_tags_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_tags_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"79df8b59\"}},\"@happyvertical/smrt-facts:FactTagCollection\":{\"name\":\"facttagcollection\",\"className\":\"FactTagCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactTagCollection\",\"collection\":\"facttags\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact-tags.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getForFact\":{\"name\":\"getForFact\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"getForTag\":{\"name\":\"getForTag\",\"async\":true,\"parameters\":[{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"addTag\":{\"name\":\"addTag\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag>\",\"isStatic\":false,\"isPublic\":true},\"removeTag\":{\"name\":\"removeTag\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false},{\"name\":\"tagSlug\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getTagSlugs\":{\"name\":\"getTagSlugs\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FactTag[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FactTag\",\"exportName\":\"FactTagCollection\",\"collectionExportName\":\"FactTagCollectionCollection\",\"schema\":{\"tableName\":\"fact_tags\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"fact_tags\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"fact_id\\\" UUID NOT NULL,\\n \\\"tag_slug\\\" TEXT NOT NULL DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"CASCADE\",\"onUpdate\":\"CASCADE\"}},\"tag_slug\":{\"type\":\"TEXT\",\"notNull\":true,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"fact_tags_fact_id_tag_slug_idx\",\"columns\":[\"fact_id\",\"tag_slug\"],\"unique\":true},{\"name\":\"fact_tags_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"fact_tags_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]}],\"version\":\"79df8b59\"}},\"@happyvertical/smrt-facts:Fact\":{\"name\":\"fact\",\"className\":\"Fact\",\"qualifiedName\":\"@happyvertical/smrt-facts:Fact\",\"collection\":\"facts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/fact.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"textRefined\":{\"type\":\"text\",\"required\":true,\"default\":\"\",\"_meta\":{\"required\":true}},\"textRaw\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"catalogSearch\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true,\"readonly\":true,\"sensitive\":true},\"sensitive\":true,\"readonly\":true},\"type\":{\"type\":\"text\",\"required\":true,\"default\":\"assertion\",\"_meta\":{\"required\":true}},\"status\":{\"type\":\"text\",\"required\":true,\"default\":\"pending\",\"_meta\":{\"required\":true}},\"domain\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"previousFactId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Fact\"},\"evolutionType\":{\"type\":\"text\",\"required\":false,\"default\":\"original\"},\"sourceCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"confidence\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"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}}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"FactMetadata\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"data\",\"type\":\"FactMetadata\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"updateMetadata\":{\"name\":\"updateMetadata\",\"async\":false,\"parameters\":[{\"name\":\"updates\",\"type\":\"Partial<FactMetadata>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getType\":{\"name\":\"getType\",\"async\":false,\"parameters\":[],\"returnType\":\"FactType\",\"isStatic\":false,\"isPublic\":true},\"getStatus\":{\"name\":\"getStatus\",\"async\":false,\"parameters\":[],\"returnType\":\"FactStatus\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionType\":{\"name\":\"getEvolutionType\",\"async\":false,\"parameters\":[],\"returnType\":\"EvolutionType\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isSuperseded\":{\"name\":\"isSuperseded\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"hasPredecessor\":{\"name\":\"hasPredecessor\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getPredecessor\":{\"name\":\"getPredecessor\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact | null>\",\"isStatic\":false,\"isPublic\":true},\"getSuccessors\":{\"name\":\"getSuccessors\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getSources\":{\"name\":\"getSources\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSubjects\":{\"name\":\"getSubjects\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"embeddings\":{\"fields\":[\"textRefined\"],\"provider\":\"auto\",\"autoGenerate\":true,\"combinedField\":{\"name\":\"full_context\",\"template\":\"{textRefined}\\n\\nType: {type}\\nDomain: {domain}\"}},\"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\":\"Fact\",\"collectionExportName\":\"FactCollection\",\"validationRules\":[{\"field\":\"textRefined\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"type\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"status\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"facts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"facts\\\" (\\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 \\\"text_refined\\\" TEXT DEFAULT '',\\n \\\"text_raw\\\" TEXT DEFAULT '',\\n \\\"catalog_search\\\" TEXT,\\n \\\"type\\\" TEXT DEFAULT 'assertion',\\n \\\"status\\\" TEXT DEFAULT 'pending',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"previous_fact_id\\\" UUID,\\n \\\"evolution_type\\\" TEXT DEFAULT 'original',\\n \\\"source_count\\\" INTEGER DEFAULT 0,\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"text_refined\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"text_raw\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"catalog_search\":{\"type\":\"TEXT\",\"notNull\":false},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"assertion\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"pending\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"previous_fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"evolution_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"original\"},\"source_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"facts_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"facts_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"facts_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"facts_previous_fact_id_idx\",\"columns\":[\"previous_fact_id\"]}],\"version\":\"a0a442b8\"}},\"@happyvertical/smrt-facts:FactCollection\":{\"name\":\"factcollection\",\"className\":\"FactCollection\",\"qualifiedName\":\"@happyvertical/smrt-facts:FactCollection\",\"collection\":\"facts\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/facts/src/facts.ts\",\"packageName\":\"@happyvertical/smrt-facts\",\"fields\":{},\"methods\":{\"getActive\":{\"name\":\"getActive\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getPending\":{\"name\":\"getPending\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByType\":{\"name\":\"getByType\",\"async\":true,\"parameters\":[{\"name\":\"type\",\"type\":\"FactType\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByDomain\":{\"name\":\"getByDomain\",\"async\":true,\"parameters\":[{\"name\":\"domain\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getByStatus\":{\"name\":\"getByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"FactStatus\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getSuccessors\":{\"name\":\"getSuccessors\",\"async\":true,\"parameters\":[{\"name\":\"previousFactId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"browseCatalog\":{\"name\":\"browseCatalog\",\"async\":true,\"parameters\":[{\"name\":\"query\",\"type\":\"any\",\"optional\":true,\"default\":\"\"},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"string | null\",\"number\",\"boolean\"]}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"backfillCatalogSearch\":{\"name\":\"backfillCatalogSearch\",\"async\":true,\"parameters\":[{\"name\":\"batchSize\",\"type\":\"any\",\"optional\":true}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"getForContent\":{\"name\":\"getForContent\",\"async\":true,\"parameters\":[{\"name\":\"contentId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true,\"memberTypes\":[\"FactContentRelationship\",\"boolean\"]}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"reconcile\":{\"name\":\"reconcile\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"ReconcileOptions\",\"optional\":false}],\"returnType\":\"Promise<ReconcileResult>\",\"isStatic\":false,\"isPublic\":true},\"extractCandidatesFromText\":{\"name\":\"extractCandidatesFromText\",\"async\":true,\"parameters\":[{\"name\":\"text\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactExtractionOptions\",\"optional\":true}],\"returnType\":\"Promise<FactExtractionCandidate[]>\",\"isStatic\":false,\"isPublic\":true},\"extractArticleClaims\":{\"name\":\"extractArticleClaims\",\"async\":true,\"parameters\":[{\"name\":\"text\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactExtractionOptions\",\"optional\":true}],\"returnType\":\"Promise<FactExtractionCandidate[]>\",\"isStatic\":false,\"isPublic\":true},\"assessClaimSupport\":{\"name\":\"assessClaimSupport\",\"async\":true,\"parameters\":[{\"name\":\"claim\",\"type\":\"string\",\"optional\":false},{\"name\":\"candidateFacts\",\"type\":\"FactClaimSupportCandidate[]\",\"optional\":false},{\"name\":\"options\",\"type\":\"FactClaimSupportOptions\",\"optional\":true}],\"returnType\":\"Promise<FactClaimSupportAssessment>\",\"isStatic\":false,\"isPublic\":true},\"branch\":{\"name\":\"branch\",\"async\":true,\"parameters\":[{\"name\":\"previousFactId\",\"type\":\"string\",\"optional\":false},{\"name\":\"data\",\"type\":\"Partial<FactOptions>\",\"optional\":false},{\"name\":\"evolutionType\",\"type\":\"EvolutionType\",\"optional\":true,\"default\":\"extension\"}],\"returnType\":\"Promise<Fact>\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionChain\":{\"name\":\"getEvolutionChain\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"getLatestInChain\":{\"name\":\"getLatestInChain\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact>\",\"isStatic\":false,\"isPublic\":true},\"getEvolutionTree\":{\"name\":\"getEvolutionTree\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Fact[]>\",\"isStatic\":false,\"isPublic\":true},\"recalculateConfidence\":{\"name\":\"recalculateConfidence\",\"async\":true,\"parameters\":[{\"name\":\"factId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"getEntityBriefing\":{\"name\":\"getEntityBriefing\",\"async\":true,\"parameters\":[{\"name\":\"entityType\",\"type\":\"string\",\"optional\":false},{\"name\":\"entityId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<EntityBriefing>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Fact\",\"exportName\":\"FactCollection\",\"collectionExportName\":\"FactCollectionCollection\",\"schema\":{\"tableName\":\"facts\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"facts\\\" (\\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 \\\"text_refined\\\" TEXT DEFAULT '',\\n \\\"text_raw\\\" TEXT DEFAULT '',\\n \\\"catalog_search\\\" TEXT,\\n \\\"type\\\" TEXT DEFAULT 'assertion',\\n \\\"status\\\" TEXT DEFAULT 'pending',\\n \\\"domain\\\" TEXT DEFAULT '',\\n \\\"previous_fact_id\\\" UUID,\\n \\\"evolution_type\\\" TEXT DEFAULT 'original',\\n \\\"source_count\\\" INTEGER DEFAULT 0,\\n \\\"confidence\\\" REAL DEFAULT 0,\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"tenant_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\"},\"text_refined\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"text_raw\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"catalog_search\":{\"type\":\"TEXT\",\"notNull\":false},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"assertion\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"pending\"},\"domain\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"previous_fact_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"foreignKey\":{\"table\":\"facts\",\"column\":\"id\",\"onDelete\":\"NO ACTION\",\"onUpdate\":\"CASCADE\"}},\"evolution_type\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"original\"},\"source_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"confidence\":{\"type\":\"REAL\",\"notNull\":false,\"default\":0},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false}},\"indexes\":[{\"name\":\"facts_slug_context_meta_type_idx\",\"columns\":[\"tenant_id\",\"slug\",\"context\",\"_meta_type\"],\"unique\":true,\"nullsNotDistinct\":true},{\"name\":\"facts_meta_type_idx\",\"columns\":[\"_meta_type\"]},{\"name\":\"facts_tenant_id_created_at_idx\",\"columns\":[\"tenant_id\",\"created_at\"]},{\"name\":\"facts_previous_fact_id_idx\",\"columns\":[\"previous_fact_id\"]}],\"version\":\"a0a442b8\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-prompts\",\"@happyvertical/smrt-tenancy\"]}"));
9
9
  //#endregion
10
10
  //#region src/prompts.ts
11
11
  var smrtFactsExtractCandidatesPrompt = definePrompt({
@@ -145,6 +145,14 @@ Rules:
145
145
  }
146
146
  });
147
147
  //#endregion
148
+ //#region src/catalog-search.ts
149
+ function encodeCatalogSearch(value) {
150
+ const normalized = value.toLowerCase();
151
+ let encoded = "";
152
+ for (let index = 0; index < normalized.length; index++) encoded += `x${normalized.charCodeAt(index).toString(16).padStart(4, "0")}`;
153
+ return encoded;
154
+ }
155
+ //#endregion
148
156
  //#region src/fact.ts
149
157
  var __defProp$4 = Object.defineProperty;
150
158
  var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
@@ -154,9 +162,13 @@ var __decorateClass$4 = (decorators, target, key, kind) => {
154
162
  if (kind && result) __defProp$4(target, key, result);
155
163
  return result;
156
164
  };
165
+ function isKnownPersistedText(value) {
166
+ return value === null || typeof value === "string" && !/[\uD800-\uDFFF]/u.test(value);
167
+ }
157
168
  var Fact = class extends SmrtObject {
158
169
  textRefined = "";
159
170
  textRaw = "";
171
+ catalogSearch = null;
160
172
  type = "assertion";
161
173
  status = "pending";
162
174
  domain = "";
@@ -182,6 +194,16 @@ var Fact = class extends SmrtObject {
182
194
  if (options.metadata !== void 0) if (typeof options.metadata === "string") this.metadata = options.metadata;
183
195
  else this.metadata = JSON.stringify(options.metadata);
184
196
  }
197
+ getPersistenceDerivedColumns() {
198
+ return [...super.getPersistenceDerivedColumns(), "catalog_search"];
199
+ }
200
+ normalizePersistenceData(data) {
201
+ this.catalogSearch = !isKnownPersistedText(data.text_refined) || !isKnownPersistedText(data.text_raw) ? null : encodeCatalogSearch(`${data.text_refined} ${data.text_raw}`);
202
+ return {
203
+ ...super.normalizePersistenceData(data),
204
+ catalog_search: this.catalogSearch
205
+ };
206
+ }
185
207
  getMetadata() {
186
208
  const raw = this.metadata;
187
209
  if (!raw) return {};
@@ -259,6 +281,12 @@ var Fact = class extends SmrtObject {
259
281
  };
260
282
  __decorateClass$4([field({ required: true })], Fact.prototype, "textRefined", 2);
261
283
  __decorateClass$4([field()], Fact.prototype, "textRaw", 2);
284
+ __decorateClass$4([field({
285
+ type: "text",
286
+ nullable: true,
287
+ readonly: true,
288
+ sensitive: true
289
+ })], Fact.prototype, "catalogSearch", 2);
262
290
  __decorateClass$4([field({ required: true })], Fact.prototype, "type", 2);
263
291
  __decorateClass$4([field({ required: true })], Fact.prototype, "status", 2);
264
292
  __decorateClass$4([field()], Fact.prototype, "domain", 2);
@@ -953,6 +981,142 @@ function asMessageCapableAi(ai) {
953
981
  var FactCollection = class extends SmrtCollection {
954
982
  static _itemClass = Fact;
955
983
  /**
984
+ * Fetch one catalog page in SQL. The recursive branch walk may inspect more
985
+ * rows inside the database, but the outer query only materializes the page.
986
+ */
987
+ async listCatalogPage(tenantId, includeSuperseded, latestOnly, limit, offset, candidateLimit, readScope, textQuery, rankedCandidateIds) {
988
+ let scopeSql = "1 = 1";
989
+ let scopeParams = [];
990
+ if (tenantId !== void 0 && tenantId !== null) {
991
+ assertTenantReadAllowed(tenantId, "Fact.browseCatalog");
992
+ scopeSql = "(tenant_id = ? OR tenant_id IS NULL)";
993
+ scopeParams = [tenantId];
994
+ } else if (isTenancyEnabled() && !isSystemContext() && !isSuperAdminBypass()) {
995
+ const tenant = getCurrentTenant();
996
+ if (tenant) {
997
+ scopeSql = "tenant_id = ?";
998
+ scopeParams = [tenant.tenantId];
999
+ }
1000
+ }
1001
+ const metaType = this.getStiChildMetaType();
1002
+ if (metaType) {
1003
+ scopeSql += " AND _meta_type = ?";
1004
+ scopeParams.push(metaType);
1005
+ }
1006
+ scopeSql = `(${scopeSql}) AND (${readScope.sql})`;
1007
+ scopeParams.push(...readScope.values);
1008
+ const statusSql = includeSuperseded ? "" : tenantId === void 0 || tenantId === null ? " AND status = ?" : " AND status != ?";
1009
+ const statusParams = includeSuperseded ? [] : [tenantId === void 0 || tenantId === null ? "active" : "superseded"];
1010
+ if (textQuery !== void 0) {
1011
+ const { rows } = await this.db.query(`SELECT COUNT(*) AS pending FROM ${this.tableName}
1012
+ WHERE ${scopeSql} AND catalog_search IS NULL`, ...scopeParams).catch((cause) => {
1013
+ const diagnostic = classifyDatabaseError(cause);
1014
+ if (!(diagnostic.sqlstate ? ["42703", "42P01"].includes(diagnostic.sqlstate) : ["unknown", "undefined_object"].includes(diagnostic.kind) && diagnostic.driverMessages.some((message) => /no such (?:table|column):|Catalog Error: Table with name .+ does not exist|Binder Error: Referenced column .+ not found/i.test(message)))) throw cause;
1015
+ throw new Error("Fact catalog search storage is unavailable: run db:migrate and backfillCatalogSearch() before text searches.", { cause });
1016
+ });
1017
+ if (Number(rows[0]?.pending) > 0) throw new Error("Fact catalog search is not ready: run db:migrate and backfillCatalogSearch() before text searches.");
1018
+ }
1019
+ const textSql = textQuery !== void 0 ? isPostgresDatabase(this.db) ? " AND strpos(catalog_search, ?) > 0" : " AND instr(catalog_search, ?) > 0" : "";
1020
+ const textParams = textQuery !== void 0 ? [encodeCatalogSearch(textQuery)] : [];
1021
+ const rankedCandidates = rankedCandidateIds?.filter(Boolean);
1022
+ if (rankedCandidates && rankedCandidates.length === 0) return [];
1023
+ const candidateSql = rankedCandidates ? `SELECT facts.id, semantic_candidates.candidate_order
1024
+ FROM (SELECT * FROM ${this.tableName}
1025
+ WHERE ${scopeSql}${statusSql}) AS facts
1026
+ INNER JOIN semantic_candidates ON semantic_candidates.id = facts.id` : `SELECT id, ROW_NUMBER() OVER (ORDER BY updated_at DESC) AS candidate_order
1027
+ FROM ${this.tableName}
1028
+ WHERE ${scopeSql}${statusSql}${textSql}
1029
+ ORDER BY updated_at DESC
1030
+ LIMIT ?`;
1031
+ const candidateParams = rankedCandidates ? [
1032
+ ...rankedCandidates.flatMap((id, index) => [id, index + 1]),
1033
+ ...scopeParams,
1034
+ ...statusParams
1035
+ ] : [
1036
+ ...scopeParams,
1037
+ ...statusParams,
1038
+ ...textParams,
1039
+ candidateLimit
1040
+ ];
1041
+ const semanticCandidatesSql = rankedCandidates ? `semantic_candidates(id, candidate_order) AS (VALUES ${rankedCandidates.map(() => isPostgresDatabase(this.db) ? "(CAST(? AS UUID), CAST(? AS INTEGER))" : "(?, ?)").join(", ")})` : "";
1042
+ const semanticCandidatesPrefix = semanticCandidatesSql ? `${semanticCandidatesSql},` : "";
1043
+ if (!latestOnly) return await this.query(`WITH ${semanticCandidatesPrefix}
1044
+ catalog_candidates AS (
1045
+ ${candidateSql}
1046
+ )
1047
+ SELECT facts.*
1048
+ FROM ${this.tableName} AS facts
1049
+ INNER JOIN catalog_candidates
1050
+ ON catalog_candidates.id = facts.id
1051
+ ORDER BY catalog_candidates.candidate_order
1052
+ LIMIT ? OFFSET ?`, [
1053
+ ...candidateParams,
1054
+ limit,
1055
+ offset
1056
+ ], { allowRawOnTenantScoped: true });
1057
+ return await this.query(`WITH RECURSIVE
1058
+ ${semanticCandidatesPrefix}
1059
+ catalog_candidates AS (
1060
+ ${candidateSql}
1061
+ ),
1062
+ successor_choices AS (
1063
+ SELECT id, previous_fact_id,
1064
+ ROW_NUMBER() OVER (
1065
+ PARTITION BY previous_fact_id
1066
+ ORDER BY confidence DESC${tenantId === void 0 || tenantId === null ? ", updated_at DESC" : ""}
1067
+ ) AS successor_rank
1068
+ FROM ${this.tableName}
1069
+ WHERE ${scopeSql}
1070
+ ),
1071
+ resolved(source_id, candidate_order, current_id, visited, cycle) AS (
1072
+ SELECT id, candidate_order, id, ',' || CAST(id AS TEXT) || ',', 0
1073
+ FROM catalog_candidates
1074
+ UNION ALL
1075
+ SELECT resolved.source_id,
1076
+ resolved.candidate_order,
1077
+ successor_choices.id,
1078
+ resolved.visited || CAST(successor_choices.id AS TEXT) || ',',
1079
+ CASE
1080
+ WHEN resolved.visited LIKE '%,' || CAST(successor_choices.id AS TEXT) || ',%'
1081
+ THEN 1
1082
+ ELSE 0
1083
+ END
1084
+ FROM resolved
1085
+ INNER JOIN successor_choices
1086
+ ON successor_choices.previous_fact_id = resolved.current_id
1087
+ AND successor_choices.successor_rank = 1
1088
+ WHERE resolved.cycle = 0
1089
+ ),
1090
+ terminal_latest AS (
1091
+ SELECT resolved.current_id AS latest_id, resolved.candidate_order
1092
+ FROM resolved
1093
+ LEFT JOIN successor_choices
1094
+ ON successor_choices.previous_fact_id = resolved.current_id
1095
+ AND successor_choices.successor_rank = 1
1096
+ WHERE successor_choices.id IS NULL OR resolved.cycle = 1
1097
+ ),
1098
+ distinct_latest AS (
1099
+ SELECT latest_id, candidate_order,
1100
+ ROW_NUMBER() OVER (
1101
+ PARTITION BY latest_id
1102
+ ORDER BY candidate_order
1103
+ ) AS duplicate_rank
1104
+ FROM terminal_latest
1105
+ )
1106
+ SELECT facts.*
1107
+ FROM ${this.tableName} AS facts
1108
+ INNER JOIN distinct_latest
1109
+ ON distinct_latest.latest_id = facts.id
1110
+ WHERE distinct_latest.duplicate_rank = 1
1111
+ ORDER BY distinct_latest.candidate_order
1112
+ LIMIT ? OFFSET ?`, [
1113
+ ...candidateParams,
1114
+ ...scopeParams,
1115
+ limit,
1116
+ offset
1117
+ ], { allowRawOnTenantScoped: true });
1118
+ }
1119
+ /**
956
1120
  * Get all active facts
957
1121
  */
958
1122
  async getActive() {
@@ -1023,45 +1187,71 @@ var FactCollection = class extends SmrtCollection {
1023
1187
  const { tenantId, limit = 25, offset = 0, minSimilarity = .55, includeSuperseded = false, latestOnly = true } = options;
1024
1188
  const safeLimit = Number.isFinite(limit) ? Math.max(1, Math.floor(limit)) : 25;
1025
1189
  const safeOffset = Number.isFinite(offset) ? Math.max(0, Math.floor(offset)) : 0;
1026
- const pageEnd = safeOffset + safeLimit;
1027
- const latestResolutionLimit = pageEnd + safeLimit;
1028
- const resolveLatestPage = async (facts) => {
1029
- const latestById = /* @__PURE__ */ new Map();
1030
- for (const fact of facts.slice(0, latestResolutionLimit)) {
1031
- const factId = fact.id;
1032
- if (!factId) continue;
1033
- const latest = await this.getLatestInChain(factId);
1034
- latestById.set(latest.id, latest);
1035
- if (latestById.size >= pageEnd) break;
1036
- }
1037
- return [...latestById.values()].slice(safeOffset, pageEnd);
1038
- };
1039
- const baseList = tenantId === void 0 || tenantId === null ? await this.list({
1040
- where: includeSuperseded ? {} : { status: "active" },
1041
- orderBy: "updated_at DESC"
1042
- }) : await this.findWithGlobals(tenantId);
1043
- const tenantScoped = includeSuperseded ? baseList : baseList.filter((fact) => fact.status !== "superseded");
1044
- const tenantScopedIds = new Set(tenantScoped.map((fact) => fact.id).filter((factId) => typeof factId === "string"));
1190
+ const latestResolutionLimit = safeOffset + safeLimit + safeLimit;
1191
+ const explicitTenant = tenantId !== void 0 && tenantId !== null;
1192
+ if (explicitTenant) assertTenantReadAllowed(tenantId, "Fact.browseCatalog");
1193
+ const readScope = explicitTenant ? await withTenantGlobalRead(tenantId, () => this.resolveListReadPredicate([[{ tenantId }], [{ tenantId: null }]])) : await this.resolveListReadPredicate();
1045
1194
  if (!query.trim()) {
1046
- if (!latestOnly) return tenantScoped.slice(safeOffset, safeOffset + safeLimit);
1047
- return resolveLatestPage(tenantScoped);
1195
+ const page2 = await this.listCatalogPage(tenantId, includeSuperseded, latestOnly, safeLimit, safeOffset, latestResolutionLimit, readScope);
1196
+ return await readScope.finish(page2);
1048
1197
  }
1049
- let matches = [];
1050
- try {
1051
- matches = await this.semanticSearch(query, {
1052
- limit: safeOffset + safeLimit,
1053
- minSimilarity,
1054
- where: includeSuperseded ? void 0 : { status: "active" }
1055
- });
1056
- if (tenantScopedIds.size > 0) matches = matches.filter((fact) => typeof fact.id === "string" && tenantScopedIds.has(fact.id));
1057
- } catch {
1058
- const normalizedQuery = query.toLowerCase();
1059
- matches = tenantScoped.filter((fact) => {
1060
- return `${fact.textRefined} ${fact.textRaw}`.toLowerCase().includes(normalizedQuery);
1061
- });
1198
+ const searchOptions = {
1199
+ limit: safeOffset + safeLimit,
1200
+ minSimilarity
1201
+ };
1202
+ const result = explicitTenant ? await withTenantGlobalRead(tenantId, () => this.semanticSearchIdsWithAvailability(query, {
1203
+ ...searchOptions,
1204
+ where: [[{
1205
+ tenantId,
1206
+ ...includeSuperseded ? {} : { "status !=": "superseded" }
1207
+ }], [{
1208
+ tenantId: null,
1209
+ ...includeSuperseded ? {} : { "status !=": "superseded" }
1210
+ }]]
1211
+ })) : await this.semanticSearchIdsWithAvailability(query, {
1212
+ ...searchOptions,
1213
+ where: includeSuperseded ? void 0 : { status: "active" }
1214
+ });
1215
+ const matches = result.available ? result.matches : void 0;
1216
+ const page = await this.listCatalogPage(tenantId, includeSuperseded, latestOnly, safeLimit, safeOffset, latestResolutionLimit, readScope, matches === void 0 ? query : void 0, matches?.map((match) => match.id).filter((id) => typeof id === "string"));
1217
+ if (matches && !latestOnly) {
1218
+ const similarityById = new Map(matches.map((match) => [match.id, match.similarity]));
1219
+ for (const fact of page) {
1220
+ const similarity = similarityById.get(fact.id);
1221
+ if (similarity !== void 0) fact._similarity = similarity;
1222
+ }
1062
1223
  }
1063
- if (!latestOnly) return matches.slice(safeOffset, safeOffset + safeLimit);
1064
- return resolveLatestPage(matches);
1224
+ return await readScope.finish(page);
1225
+ }
1226
+ /**
1227
+ * Explicit data migration after db:migrate adds catalog_search. Run under
1228
+ * withSystemContext with old writers stopped. Repeating a batch is safe;
1229
+ * concurrent source changes are protected by compare-and-set predicates.
1230
+ * A subtype collection backfills only its STI discriminator.
1231
+ */
1232
+ async backfillCatalogSearch(batchSize = 100) {
1233
+ if (!isSystemContext()) throw new Error("backfillCatalogSearch requires withSystemContext");
1234
+ if (!Number.isSafeInteger(batchSize) || batchSize < 1 || batchSize > 1e3) throw new Error("batchSize must be an integer between 1 and 1000");
1235
+ const metaType = this.getStiChildMetaType();
1236
+ const scope = metaType ? " AND _meta_type = ?" : "";
1237
+ const params = metaType ? [metaType] : [];
1238
+ const { rows } = await this.db.query(`SELECT CAST(id AS TEXT) AS id, text_refined, text_raw FROM ${this.tableName}
1239
+ WHERE catalog_search IS NULL${scope} ORDER BY id LIMIT ?`, ...params, batchSize);
1240
+ for (const row of rows) await this.query(`UPDATE ${this.tableName} SET catalog_search = ?
1241
+ WHERE id = ? AND catalog_search IS NULL${scope}
1242
+ AND (text_refined = ? OR (text_refined IS NULL AND CAST(? AS TEXT) IS NULL))
1243
+ AND (text_raw = ? OR (text_raw IS NULL AND CAST(? AS TEXT) IS NULL))`, [
1244
+ encodeCatalogSearch(`${row.text_refined} ${row.text_raw}`),
1245
+ row.id,
1246
+ ...params,
1247
+ row.text_refined,
1248
+ row.text_refined,
1249
+ row.text_raw,
1250
+ row.text_raw
1251
+ ], { allowRawOnTenantScoped: true });
1252
+ const { rows: counts } = await this.db.query(`SELECT COUNT(*) AS remaining FROM ${this.tableName}
1253
+ WHERE catalog_search IS NULL${scope}`, ...params);
1254
+ return { remaining: Number(counts[0]?.remaining ?? 0) };
1065
1255
  }
1066
1256
  /**
1067
1257
  * Get all facts linked to a content item.