@happyvertical/smrt-facts 0.49.2 → 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/README.md +122 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +229 -39
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +466 -45
- package/dist/smrt-knowledge.json +58 -9
- package/dist/types.d.ts +4 -0
- package/package.json +5 -5
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.2\",\"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
|
|
1027
|
-
const
|
|
1028
|
-
|
|
1029
|
-
|
|
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
|
-
|
|
1047
|
-
return
|
|
1195
|
+
const page2 = await this.listCatalogPage(tenantId, includeSuperseded, latestOnly, safeLimit, safeOffset, latestResolutionLimit, readScope);
|
|
1196
|
+
return await readScope.finish(page2);
|
|
1048
1197
|
}
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
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
|
-
|
|
1064
|
-
|
|
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.
|