@happyvertical/smrt-video 0.57.19 → 0.57.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/__smrt-register__.ts","../src/character.ts","../src/characters.ts","../src/composite-job.ts","../src/video-composition.ts","../src/video-compositions.ts","../src/video-sequence.ts","../src/video-sequences.ts","../src/video-shot.ts","../src/video-shot-character.ts","../src/video-shot-characters.ts","../src/video-shots.ts","../src/video-workflow.ts","../src/character-asset.ts","../src/character-owned-asset.ts","../src/character-assets.ts","../src/performer-asset.ts","../src/performer-owned-asset.ts","../src/performer-assets.ts","../src/scene-asset.ts","../src/scene-owned-asset.ts","../src/scene-assets.ts","../src/video-composition-asset.ts","../src/video-sequence-asset.ts","../src/video-shot-asset.ts"],"sourcesContent":["// Generated by @happyvertical/smrt-core smrtPlugin at library build time.\n// The package manifest is inlined so self-registration cannot miss when a\n// downstream bundler relocates this module away from dist/manifest.json\n// (https://github.com/happyvertical/smrt/issues/1506,\n// https://github.com/happyvertical/smrt/issues/1507).\nimport { ObjectRegistry } from '@happyvertical/smrt-core';\n\nObjectRegistry.registerPackageManifest(JSON.parse(\"{\\\"version\\\":\\\"1.0.0\\\",\\\"timestamp\\\":0,\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"packageVersion\\\":\\\"0.57.19\\\",\\\"objects\\\":{\\\"@happyvertical/smrt-video:CharacterAsset\\\":{\\\"name\\\":\\\"characterasset\\\",\\\"className\\\":\\\"CharacterAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Character\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"seed-image\\\",\\\"enum\\\":[\\\"seed-image\\\",\\\"base-motion\\\",\\\"logo\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"CharacterAsset\\\",\\\"collectionExportName\\\":\\\"CharacterAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"7965832a\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterOwnedAssetCollection\\\":{\\\"name\\\":\\\"characterownedassetcollection\\\",\\\"className\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterOwnedAssetCollection\\\",\\\"collection\\\":\\\"characterownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"character_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"CharacterOwnedAsset\\\",\\\"exportName\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"CharacterOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"character_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"character_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'seed-image',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"character_assets_character_id_asset_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"character_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"character_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"character_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"c032f70e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterOwnedAsset\\\":{\\\"name\\\":\\\"characterownedasset\\\",\\\"className\\\":\\\"CharacterOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterOwnedAsset\\\",\\\"collection\\\":\\\"characterownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Character\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"seed-image\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"seed-image\\\",\\\"base-motion\\\",\\\"logo\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"CharacterOwnedAsset\\\",\\\"tableName\\\":\\\"character_assets\\\",\\\"conflictColumns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"CharacterOwnedAsset\\\",\\\"collectionExportName\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"characterId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"character_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"character_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'seed-image',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"character_assets_character_id_asset_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"character_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"character_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"character_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"c032f70e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Character\\\":{\\\"name\\\":\\\"character\\\",\\\"className\\\":\\\"Character\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Character\\\",\\\"collection\\\":\\\"characters\\\",\\\"description\\\":\\\"Virtual character for AI-powered video production\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"imageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"baseMotionAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\"},\\\"brandingKit\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"defaultSceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"sceneConfigs\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"profileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\"}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"seed-image\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Character\\\",\\\"collectionExportName\\\":\\\"CharacterCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"base_motion_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"branding_kit\\\\\\\" JSON,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"default_scene_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_configs\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"base_motion_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"branding_kit\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"default_scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_configs\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"characters_image_asset_id_idx\\\",\\\"columns\\\":[\\\"image_asset_id\\\"]},{\\\"name\\\":\\\"characters_base_motion_asset_id_idx\\\",\\\"columns\\\":[\\\"base_motion_asset_id\\\"]},{\\\"name\\\":\\\"characters_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"characters_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"characters_default_scene_id_idx\\\",\\\"columns\\\":[\\\"default_scene_id\\\"]},{\\\"name\\\":\\\"characters_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"eae4aae5\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterCollection\\\":{\\\"name\\\":\\\"charactercollection\\\",\\\"className\\\":\\\"CharacterCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterCollection\\\",\\\"collection\\\":\\\"characters\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/characters.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByTenant\\\":{\\\"name\\\":\\\"findByTenant\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tenantId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findGlobal\\\":{\\\"name\\\":\\\"findGlobal\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByPerformer\\\":{\\\"name\\\":\\\"findByPerformer\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"performerId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findReady\\\":{\\\"name\\\":\\\"findReady\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"Character\\\",\\\"exportName\\\":\\\"CharacterCollection\\\",\\\"collectionExportName\\\":\\\"CharacterCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"base_motion_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"branding_kit\\\\\\\" JSON,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"default_scene_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_configs\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"base_motion_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"branding_kit\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"default_scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_configs\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"characters_image_asset_id_idx\\\",\\\"columns\\\":[\\\"image_asset_id\\\"]},{\\\"name\\\":\\\"characters_base_motion_asset_id_idx\\\",\\\"columns\\\":[\\\"base_motion_asset_id\\\"]},{\\\"name\\\":\\\"characters_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"characters_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"characters_default_scene_id_idx\\\",\\\"columns\\\":[\\\"default_scene_id\\\"]},{\\\"name\\\":\\\"characters_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"eae4aae5\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CompositeJob\\\":{\\\"name\\\":\\\"compositejob\\\",\\\"className\\\":\\\"CompositeJob\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CompositeJob\\\",\\\"collection\\\":\\\"compositejobs\\\",\\\"description\\\":\\\"Composite job for tracking virtual production compositing\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/composite-job.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"characterVideoAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"viewpointId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"anchorPointId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"scale\\\":{\\\"type\\\":\\\"decimal\\\",\\\"required\\\":false,\\\"default\\\":1},\\\"position\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"removing_bg\\\",\\\"analyzing_light\\\",\\\"compositing\\\",\\\"complete\\\",\\\"failed\\\"]},\\\"progress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"outputAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"CompositeJob\\\",\\\"collectionExportName\\\":\\\"CompositeJobCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"composite_jobs\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"composite_jobs\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_video_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"viewpoint_id\\\\\\\" TEXT,\\\\n \\\\\\\"anchor_point_id\\\\\\\" TEXT,\\\\n \\\\\\\"scale\\\\\\\" REAL DEFAULT 1,\\\\n \\\\\\\"position\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"output_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"error_message\\\\\\\" TEXT\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"character_video_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"viewpoint_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"anchor_point_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"scale\\\":{\\\"type\\\":\\\"REAL\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"position\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"output_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"composite_jobs_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"composite_jobs_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"composite_jobs_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"composite_jobs_character_video_asset_id_idx\\\",\\\"columns\\\":[\\\"character_video_asset_id\\\"]},{\\\"name\\\":\\\"composite_jobs_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"composite_jobs_output_asset_id_idx\\\",\\\"columns\\\":[\\\"output_asset_id\\\"]}],\\\"version\\\":\\\"4c7689a3\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerAsset\\\":{\\\"name\\\":\\\"performerasset\\\",\\\"className\\\":\\\"PerformerAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"reference\\\",\\\"enum\\\":[\\\"reference\\\",\\\"seed\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"PerformerAsset\\\",\\\"collectionExportName\\\":\\\"PerformerAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"4de881c3\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerOwnedAssetCollection\\\":{\\\"name\\\":\\\"performerownedassetcollection\\\",\\\"className\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerOwnedAssetCollection\\\",\\\"collection\\\":\\\"performerownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"performer_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"PerformerOwnedAsset\\\",\\\"exportName\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"PerformerOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"performer_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performer_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"performer_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'reference',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"reference\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"performer_assets_performer_id_asset_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"performer_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"performer_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performer_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"9a402665\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerOwnedAsset\\\":{\\\"name\\\":\\\"performerownedasset\\\",\\\"className\\\":\\\"PerformerOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerOwnedAsset\\\",\\\"collection\\\":\\\"performerownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Performer\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"reference\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"reference\\\",\\\"seed\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"PerformerOwnedAsset\\\",\\\"tableName\\\":\\\"performer_assets\\\",\\\"conflictColumns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"PerformerOwnedAsset\\\",\\\"collectionExportName\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"performerId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"performer_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performer_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"performer_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'reference',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"reference\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"performer_assets_performer_id_asset_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"performer_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"performer_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performer_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"9a402665\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Performer\\\":{\\\"name\\\":\\\"performer\\\",\\\"className\\\":\\\"Performer\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Performer\\\",\\\"collection\\\":\\\"performers\\\",\\\"description\\\":\\\"The physical likeness/face DNA\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"dna\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"referenceAssetIds\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"seedImageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\"},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"profileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\"}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"reference\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Performer\\\",\\\"collectionExportName\\\":\\\"PerformerCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"performers\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performers\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"dna\\\\\\\" JSON,\\\\n \\\\\\\"reference_asset_ids\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"seed_image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"dna\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"reference_asset_ids\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"seed_image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"performers_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"performers_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"performers_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performers_seed_image_asset_id_idx\\\",\\\"columns\\\":[\\\"seed_image_asset_id\\\"]},{\\\"name\\\":\\\"performers_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"performers_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"09b53659\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneAsset\\\":{\\\"name\\\":\\\"sceneasset\\\",\\\"className\\\":\\\"SceneAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"source\\\",\\\"enum\\\":[\\\"source\\\",\\\"viewpoint-extract\\\",\\\"env-map\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"SceneAsset\\\",\\\"collectionExportName\\\":\\\"SceneAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"ef4abd1e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneOwnedAssetCollection\\\":{\\\"name\\\":\\\"sceneownedassetcollection\\\",\\\"className\\\":\\\"SceneOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneOwnedAssetCollection\\\",\\\"collection\\\":\\\"sceneownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"scene_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"SceneOwnedAsset\\\",\\\"exportName\\\":\\\"SceneOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"SceneOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"scene_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scene_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'source',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"source\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"scene_assets_scene_id_asset_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"scene_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"scene_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scene_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"68f91ceb\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneOwnedAsset\\\":{\\\"name\\\":\\\"sceneownedasset\\\",\\\"className\\\":\\\"SceneOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneOwnedAsset\\\",\\\"collection\\\":\\\"sceneownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Scene\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"source\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"source\\\",\\\"viewpoint-extract\\\",\\\"env-map\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"SceneOwnedAsset\\\",\\\"tableName\\\":\\\"scene_assets\\\",\\\"conflictColumns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"SceneOwnedAsset\\\",\\\"collectionExportName\\\":\\\"SceneOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"sceneId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"scene_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scene_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'source',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"source\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"scene_assets_scene_id_asset_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"scene_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"scene_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scene_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"68f91ceb\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Scene\\\":{\\\"name\\\":\\\"scene\\\",\\\"className\\\":\\\"Scene\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Scene\\\",\\\"collection\\\":\\\"scenes\\\",\\\"description\\\":\\\"Scene for virtual production compositing\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"image\\\",\\\"enum\\\":[\\\"image\\\",\\\"video\\\",\\\"panorama_360\\\",\\\"panorama_180\\\"]},\\\"projection\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"equirectangular\\\",\\\"cubemap\\\"]},\\\"viewpoints\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"lightingProfile\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"location\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"anchorPoints\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\"]}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"source\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Scene\\\",\\\"collectionExportName\\\":\\\"SceneCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"scenes\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scenes\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT DEFAULT 'image',\\\\n \\\\\\\"projection\\\\\\\" TEXT,\\\\n \\\\\\\"viewpoints\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"lighting_profile\\\\\\\" JSON,\\\\n \\\\\\\"location\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"anchor_points\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending'\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"image\\\"},\\\"projection\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"viewpoints\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"lighting_profile\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"location\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"anchor_points\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"}},\\\"indexes\\\":[{\\\"name\\\":\\\"scenes_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"scenes_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"scenes_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scenes_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]}],\\\"version\\\":\\\"10393bea\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoCompositionAsset\\\":{\\\"name\\\":\\\"videocompositionasset\\\",\\\"className\\\":\\\"VideoCompositionAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoCompositionAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-composition-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoCompositionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoComposition\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoCompositionAsset\\\",\\\"collectionExportName\\\":\\\"VideoCompositionAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"76dc9f2b\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoComposition\\\":{\\\"name\\\":\\\"videocomposition\\\",\\\"className\\\":\\\"VideoComposition\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Publishable video composition\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-composition.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"fps\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1080},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"renderStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"draft\\\",\\\"rendering\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"renderProgress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoCompositionAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoComposition\\\",\\\"collectionExportName\\\":\\\"VideoCompositionCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"8f49f941\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoCompositionCollection\\\":{\\\"name\\\":\\\"videocompositioncollection\\\",\\\"className\\\":\\\"VideoCompositionCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoCompositionCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-compositions.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByRenderStatus\\\":{\\\"name\\\":\\\"findByRenderStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"renderStatus\\\",\\\"type\\\":\\\"RenderStatus\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoComposition[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findReady\\\":{\\\"name\\\":\\\"findReady\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoComposition[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoComposition\\\",\\\"exportName\\\":\\\"VideoCompositionCollection\\\",\\\"collectionExportName\\\":\\\"VideoCompositionCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"8f49f941\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequenceAsset\\\":{\\\"name\\\":\\\"videosequenceasset\\\",\\\"className\\\":\\\"VideoSequenceAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequenceAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequence-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoSequenceId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoSequence\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoSequenceAsset\\\",\\\"collectionExportName\\\":\\\"VideoSequenceAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"53fd6fda\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequence\\\":{\\\"name\\\":\\\"videosequence\\\",\\\"className\\\":\\\"VideoSequence\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Thematic section of a video composition\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequence.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"compositionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoComposition\\\"},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"transitionType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"none\\\",\\\"enum\\\":[\\\"none\\\",\\\"fade\\\",\\\"slide\\\",\\\"wipe\\\"]},\\\"transitionDurationFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoSequenceAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoSequence\\\",\\\"collectionExportName\\\":\\\"VideoSequenceCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"6a019937\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequenceCollection\\\":{\\\"name\\\":\\\"videosequencecollection\\\",\\\"className\\\":\\\"VideoSequenceCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequenceCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequences.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByComposition\\\":{\\\"name\\\":\\\"findByComposition\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"compositionId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoSequence[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findStandalone\\\":{\\\"name\\\":\\\"findStandalone\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoSequence[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoSequence\\\",\\\"exportName\\\":\\\"VideoSequenceCollection\\\",\\\"collectionExportName\\\":\\\"VideoSequenceCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"6a019937\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotAsset\\\":{\\\"name\\\":\\\"videoshotasset\\\",\\\"className\\\":\\\"VideoShotAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoShotId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoShot\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoShotAsset\\\",\\\"collectionExportName\\\":\\\"VideoShotAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"cc103113\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCharacter\\\":{\\\"name\\\":\\\"videoshotcharacter\\\",\\\"className\\\":\\\"VideoShotCharacter\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCharacter\\\",\\\"collection\\\":\\\"videoshotcharacters\\\",\\\"description\\\":\\\"Join model linking a VideoShot to a Character\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-character.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"videoShotId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"VideoShot\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Character\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"primary\\\",\\\"enum\\\":[\\\"primary\\\",\\\"secondary\\\",\\\"background\\\"]},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"VideoShotCharacter\\\",\\\"collectionExportName\\\":\\\"VideoShotCharacterCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"videoShotId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"characterId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"video_shot_characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_shot_characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'primary',\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"primary\\\"},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_shot_characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_shot_characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_shot_characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"video_shot_characters_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]},{\\\"name\\\":\\\"video_shot_characters_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]}],\\\"version\\\":\\\"4846f081\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCharacterCollection\\\":{\\\"name\\\":\\\"videoshotcharactercollection\\\",\\\"className\\\":\\\"VideoShotCharacterCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCharacterCollection\\\",\\\"collection\\\":\\\"videoshotcharacters\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-characters.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByShot\\\":{\\\"name\\\":\\\"findByShot\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"videoShotId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShotCharacter[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByCharacter\\\":{\\\"name\\\":\\\"findByCharacter\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"characterId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShotCharacter[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoShotCharacter\\\",\\\"exportName\\\":\\\"VideoShotCharacterCollection\\\",\\\"collectionExportName\\\":\\\"VideoShotCharacterCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"video_shot_characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_shot_characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'primary',\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"primary\\\"},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_shot_characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_shot_characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_shot_characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"video_shot_characters_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]},{\\\"name\\\":\\\"video_shot_characters_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]}],\\\"version\\\":\\\"4846f081\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShot\\\":{\\\"name\\\":\\\"videoshot\\\",\\\"className\\\":\\\"VideoShot\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Atomic video generation unit\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sequenceId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoSequence\\\"},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimBeforeFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimAfterFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"scriptText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"scriptWordCount\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"targetDuration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30},\\\"shotStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"draft\\\",\\\"queued\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\",\\\"published\\\"]},\\\"progress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"statusMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoMetadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoShotAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setScript\\\":{\\\"name\\\":\\\"setScript\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"text\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoShot\\\",\\\"collectionExportName\\\":\\\"VideoShotCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"08a96b6e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCollection\\\":{\\\"name\\\":\\\"videoshotcollection\\\",\\\"className\\\":\\\"VideoShotCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shots.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findBySequence\\\":{\\\"name\\\":\\\"findBySequence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"sequenceId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByStatus\\\":{\\\"name\\\":\\\"findByStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"shotStatus\\\",\\\"type\\\":\\\"VideoShotStatus\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findStandalone\\\":{\\\"name\\\":\\\"findStandalone\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoShot\\\",\\\"exportName\\\":\\\"VideoShotCollection\\\",\\\"collectionExportName\\\":\\\"VideoShotCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"08a96b6e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoWorkflow\\\":{\\\"name\\\":\\\"videoworkflow\\\",\\\"className\\\":\\\"VideoWorkflow\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoWorkflow\\\",\\\"collection\\\":\\\"videoworkflows\\\",\\\"description\\\":\\\"ComfyUI workflow template for video generation\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-workflow.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"workflowType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"custom\\\",\\\"enum\\\":[\\\"prebake\\\",\\\"broadcast\\\",\\\"lipsync\\\",\\\"postprod\\\",\\\"custom\\\"]},\\\"workflowJson\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"nodeMapping\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"estimatedTime\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":300},\\\"isActive\\\":{\\\"type\\\":\\\"boolean\\\",\\\"required\\\":false,\\\"default\\\":true},\\\"requiredModels\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]}},\\\"methods\\\":{\\\"injectParameters\\\":{\\\"name\\\":\\\"injectParameters\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"params\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"VideoWorkflow\\\",\\\"collectionExportName\\\":\\\"VideoWorkflowCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"video_workflows\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_workflows\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"workflow_type\\\\\\\" TEXT DEFAULT 'custom',\\\\n \\\\\\\"workflow_json\\\\\\\" TEXT,\\\\n \\\\\\\"node_mapping\\\\\\\" JSON,\\\\n \\\\\\\"estimated_time\\\\\\\" INTEGER DEFAULT 300,\\\\n \\\\\\\"is_active\\\\\\\" BOOLEAN DEFAULT TRUE,\\\\n \\\\\\\"required_models\\\\\\\" JSON DEFAULT '[]'\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"workflow_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"custom\\\"},\\\"workflow_json\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"node_mapping\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"estimated_time\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":300},\\\"is_active\\\":{\\\"type\\\":\\\"BOOLEAN\\\",\\\"notNull\\\":false,\\\"default\\\":true},\\\"required_models\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_workflows_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_workflows_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_workflows_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]}],\\\"version\\\":\\\"e836b1f6\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"}},\\\"moduleType\\\":\\\"smrt\\\",\\\"smrtDependencies\\\":[\\\"@happyvertical/smrt-assets\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-core\\\",\\\"@happyvertical/smrt-profiles\\\",\\\"@happyvertical/smrt-tenancy\\\",\\\"@happyvertical/smrt-voice\\\"],\\\"browser\\\":{\\\"status\\\":\\\"server-only\\\",\\\"issues\\\":[\\\"#3615\\\",\\\"#3617\\\",\\\"#3624\\\",\\\"#3625\\\",\\\"#3626\\\",\\\"#3627\\\",\\\"#3628\\\"],\\\"reason\\\":\\\"documents/spider SDK graph; CJS parse error\\\",\\\"via\\\":[\\\"@happyvertical/smrt-agents\\\",\\\"@happyvertical/smrt-chat\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-images\\\",\\\"@happyvertical/smrt-jobs\\\",\\\"@happyvertical/smrt-profiles\\\",\\\"@happyvertical/smrt-reports\\\",\\\"@happyvertical/smrt-secrets\\\",\\\"@happyvertical/smrt-tenancy\\\",\\\"@happyvertical/smrt-users\\\",\\\"@happyvertical/smrt-voice\\\"]},\\\"stampsConstructors\\\":true}\"));\n","/**\n * Character Model\n *\n * Manages virtual characters for AI-powered video production.\n * Each character combines a visual identity with a voice profile.\n *\n * Renamed from PersonalityProfile. A Character is the role being played\n * (outfit, voice, branding). A Performer is the physical likeness/face DNA.\n * \"A Performer plays Characters.\"\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport type { CharacterAssetRole } from './character-asset.js';\nimport {\n assertValidVideoAssetRole,\n assertValidVideoAssetSortOrder,\n legacyVideoAssetMetaTypes,\n listCanonicalOwnedAssetIds,\n listLegacyOwnedAssetIds,\n mergeOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport { Performer } from './performer.js';\nimport { Scene } from './scene.js';\n\n/**\n * Character status\n */\nexport type CharacterStatus = 'pending' | 'ready';\n\n/**\n * Scene-specific configuration for a character\n */\nexport interface CharacterSceneConfig {\n /** Scene ID */\n sceneId: string;\n\n /** Preferred viewpoint ID (for 360° scenes) */\n viewpointId?: string;\n\n /** Anchor point ID for placement */\n anchorPointId?: string;\n\n /** Character scale in this scene */\n scale: number;\n\n /** Character position in this scene (normalized 0-1) */\n position: { x: number; y: number };\n}\n\n/**\n * Branding configuration for video overlays\n */\nexport interface BrandingConfig {\n /** Asset ID for logo overlay */\n logoAssetId?: string | null;\n\n /** Primary brand color (hex) */\n primaryColor?: string | null;\n\n /** Background color (hex) */\n backgroundColor?: string | null;\n\n /** Lower-third template name */\n lowerThirdTemplate?: string | null;\n\n /** Font family for text overlays */\n fontFamily?: string | null;\n\n /** Whether to show news ticker */\n tickerEnabled?: boolean;\n}\n\n/**\n * Character creation options\n */\nexport interface CharacterOptions extends SmrtObjectOptions {\n /** Human-readable name for the character */\n name?: string;\n\n /** Description of the character persona */\n description?: string | null;\n\n /** Asset ID of the seed image for image-to-video generation */\n imageAssetId?: string | null;\n\n /** Asset ID of pre-baked base motion video */\n baseMotionAssetId?: string | null;\n\n /** Voice profile ID for speech synthesis */\n voiceProfileId?: string | null;\n\n /** Branding configuration for video overlays */\n brandingKit?: BrandingConfig;\n\n /** Character status */\n status?: CharacterStatus;\n\n /** Linked performer for IP-Adapter face consistency */\n performerId?: string | null;\n\n /** Default scene for this character */\n defaultSceneId?: string | null;\n\n /** Scene-specific configurations */\n sceneConfigs?: CharacterSceneConfig[];\n\n /** 1-1 profile record for this character */\n profileId?: string | null;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Virtual character for AI-powered video production\n *\n * Character represents a virtual persona combining:\n * - Visual identity: Seed image for I2V (image-to-video) generation\n * - Voice identity: Link to a VoiceProfile for TTS\n * - Branding: Logo overlays, lower-thirds, colors\n *\n * @example\n * ```typescript\n * import { Character } from '@happyvertical/smrt-video';\n *\n * const character = new Character({\n * name: 'Bentley News Anchor',\n * description: 'Professional news anchor for local broadcasts',\n * imageAssetId: 'asset-123',\n * voiceProfileId: 'voice-456',\n * brandingKit: {\n * logoAssetId: 'asset-789',\n * primaryColor: '#1a73e8',\n * lowerThirdTemplate: 'news-standard',\n * tickerEnabled: true,\n * },\n * });\n * await character.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: { skipApiCheck: true },\n})\nexport class Character extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Tenant ID for multi-tenant isolation */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Human-readable name for the character */\n name: string = '';\n\n /** Description of the character persona */\n description: string | null = null;\n\n /** Asset ID of the seed image for I2V generation */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n imageAssetId: string | null = null;\n\n /** Asset ID of pre-baked base motion video */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n baseMotionAssetId: string | null = null;\n\n /** Voice profile ID for speech synthesis */\n @crossPackageRef('@happyvertical/smrt-voice:VoiceProfile')\n voiceProfileId: string | null = null;\n\n /** Branding configuration for video overlays */\n brandingKit: BrandingConfig = {};\n\n /** Character status */\n status: CharacterStatus = 'pending';\n\n /** Linked performer for IP-Adapter face consistency */\n @foreignKey(() => Performer)\n performerId: string | null = null;\n\n /** Default scene for this character */\n @foreignKey(() => Scene)\n defaultSceneId: string | null = null;\n\n /** Scene-specific configurations */\n sceneConfigs: CharacterSceneConfig[] = [];\n\n /** 1-1 profile record for this character */\n @crossPackageRef('@happyvertical/smrt-profiles:Profile')\n profileId: string | null = null;\n\n constructor(options: CharacterOptions = {}) {\n super(options);\n\n if (options.name !== undefined) this.name = options.name;\n if (options.description !== undefined)\n this.description = options.description;\n if (options.imageAssetId !== undefined)\n this.imageAssetId = options.imageAssetId;\n if (options.baseMotionAssetId !== undefined)\n this.baseMotionAssetId = options.baseMotionAssetId;\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.brandingKit !== undefined)\n this.brandingKit = options.brandingKit;\n if (options.status !== undefined) this.status = options.status;\n if (options.performerId !== undefined)\n this.performerId = options.performerId;\n if (options.defaultSceneId !== undefined)\n this.defaultSceneId = options.defaultSceneId;\n if (options.sceneConfigs !== undefined)\n this.sceneConfigs = options.sceneConfigs;\n if (options.profileId !== undefined) this.profileId = options.profileId;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n private async getCharacterAssetCollection() {\n const { CharacterOwnedAssetCollection } = await import(\n './character-assets.js'\n );\n return CharacterOwnedAssetCollection.create({ db: this.db });\n }\n\n private getLegacyFieldAssetIds(role?: CharacterAssetRole): string[] {\n if (role === 'seed-image') {\n return this.imageAssetId ? [this.imageAssetId] : [];\n }\n\n if (role === 'base-motion') {\n return this.baseMotionAssetId ? [this.baseMotionAssetId] : [];\n }\n\n if (role === 'logo') {\n return this.brandingKit.logoAssetId ? [this.brandingKit.logoAssetId] : [];\n }\n\n return [\n this.imageAssetId,\n this.baseMotionAssetId,\n this.brandingKit.logoAssetId || null,\n ].filter((assetId): assetId is string => Boolean(assetId));\n }\n\n private setLegacyFieldAssetId(\n role: CharacterAssetRole,\n assetId: string | null,\n ): boolean {\n if (role === 'seed-image') {\n if (this.imageAssetId === assetId) {\n return false;\n }\n\n this.imageAssetId = assetId;\n return true;\n }\n\n if (role === 'base-motion') {\n if (this.baseMotionAssetId === assetId) {\n return false;\n }\n\n this.baseMotionAssetId = assetId;\n return true;\n }\n\n if ((this.brandingKit.logoAssetId || null) === assetId) {\n return false;\n }\n\n this.brandingKit = {\n ...this.brandingKit,\n logoAssetId: assetId,\n };\n return true;\n }\n\n private clearLegacyFieldAssetId(\n assetId: string,\n role?: CharacterAssetRole,\n ): boolean {\n let changed = false;\n\n if ((!role || role === 'seed-image') && this.imageAssetId === assetId) {\n this.imageAssetId = null;\n changed = true;\n }\n\n if (\n (!role || role === 'base-motion') &&\n this.baseMotionAssetId === assetId\n ) {\n this.baseMotionAssetId = null;\n changed = true;\n }\n\n if (\n (!role || role === 'logo') &&\n this.brandingKit.logoAssetId === assetId\n ) {\n this.brandingKit = {\n ...this.brandingKit,\n logoAssetId: null,\n };\n changed = true;\n }\n\n return changed;\n }\n\n async getAssets(role?: CharacterAssetRole): Promise<Asset[]> {\n const canonicalAssetIds = this.id\n ? await listCanonicalOwnedAssetIds({\n tableName: 'character_assets',\n loadLinks: async () =>\n (await this.getCharacterAssetCollection()).byLeft(\n this.id as string,\n role ? { role } : {},\n ),\n })\n : [];\n const legacyFieldAssetIds = this.getLegacyFieldAssetIds(role);\n const legacyOwnedAssetIds = this.id\n ? await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'character_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('CharacterAsset'),\n })\n : [];\n\n return resolveOwnedAssets(\n this.db,\n this.tenantId,\n mergeOwnedAssetIds(\n canonicalAssetIds,\n legacyFieldAssetIds,\n legacyOwnedAssetIds,\n ),\n );\n }\n\n async getAssetByRole(role: CharacterAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n\n async addAsset(\n asset: Asset,\n role: CharacterAssetRole = 'seed-image',\n sortOrder = 0,\n ): Promise<void> {\n if (!this.id || !asset.id) {\n throw new Error('Cannot associate unsaved character or asset');\n }\n\n assertValidVideoAssetRole(role);\n assertValidVideoAssetSortOrder(sortOrder);\n\n const characterAssets = await this.getCharacterAssetCollection();\n await characterAssets.attach(this.id, asset.id, {\n role,\n sortOrder,\n tenantId: this.tenantId,\n });\n\n if (this.setLegacyFieldAssetId(role, asset.id)) {\n await this.save();\n }\n }\n\n async removeAsset(assetId: string, role?: CharacterAssetRole): Promise<void> {\n if (!this.id) {\n return;\n }\n\n const characterAssets = await this.getCharacterAssetCollection();\n await characterAssets.detach(this.id, assetId, role ? { role } : {});\n\n if (this.clearLegacyFieldAssetId(assetId, role)) {\n await this.save();\n }\n }\n\n /**\n * Check if the character has a pre-baked base motion video\n * @deprecated Use getAssetByRole('base-motion') instead\n */\n get hasBaseMotion(): boolean {\n return this.baseMotionAssetId !== null;\n }\n\n /** Check if the character is complete and ready for video generation */\n get isComplete(): boolean {\n return (\n this.imageAssetId !== null &&\n this.voiceProfileId !== null &&\n this.status === 'ready'\n );\n }\n}\n","/**\n * CharacterCollection - Collection manager for Character instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { queryGlobal } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\n\nexport class CharacterCollection extends SmrtCollection<Character> {\n static readonly _itemClass = Character;\n\n /** Find all characters belonging to a specific tenant */\n async findByTenant(tenantId: string): Promise<Character[]> {\n return (await this.list({ where: { tenantId } })) as Character[];\n }\n\n /**\n * Find all global characters (no tenant association).\n *\n * Routes through the shared tenant-global helper so it does not throw under\n * an active tenant context (an explicit `tenant_id IS NULL` filter would be\n * flagged as an isolation violation). (#1600)\n */\n async findGlobal(): Promise<Character[]> {\n return queryGlobal<Character>(this);\n }\n\n /** Find characters by performer */\n async findByPerformer(performerId: string): Promise<Character[]> {\n return (await this.list({ where: { performerId } })) as Character[];\n }\n\n /** Find characters that are ready for video generation */\n async findReady(): Promise<Character[]> {\n return (await this.list({ where: { status: 'ready' } })) as Character[];\n }\n}\n","/**\n * CompositeJob Model\n *\n * Tracks the progress of compositing a character video onto a scene background.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Scene } from './scene.js';\n\n/**\n * Composite job status\n */\nexport type CompositeJobStatus =\n | 'pending'\n | 'removing_bg'\n | 'analyzing_light'\n | 'compositing'\n | 'complete'\n | 'failed';\n\n/**\n * Composite job creation options\n */\nexport interface CompositeJobOptions extends SmrtObjectOptions {\n /** Character video asset ID (after lip-sync) */\n characterVideoAssetId?: string | null;\n\n /** Scene ID to composite onto */\n sceneId?: string | null;\n\n /** Viewpoint ID (for 360° scenes) */\n viewpointId?: string | null;\n\n /** Anchor point ID for placement */\n anchorPointId?: string | null;\n\n /** Character scale */\n scale?: number;\n\n /** Character position (normalized 0-1) */\n position?: { x: number; y: number };\n\n /** Job status */\n status?: CompositeJobStatus;\n\n /** Progress percentage (0-100) */\n progress?: number;\n\n /** Output video asset ID */\n outputAssetId?: string | null;\n\n /** Error message if failed */\n errorMessage?: string | null;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Composite job for tracking virtual production compositing\n *\n * @example\n * ```typescript\n * import { CompositeJob } from '@happyvertical/smrt-video';\n *\n * const job = new CompositeJob({\n * characterVideoAssetId: 'asset-video-123',\n * sceneId: 'scene-townhall',\n * scale: 0.8,\n * position: { x: 0.5, y: 0.7 },\n * });\n * await job.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class CompositeJob extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Character video asset ID (after lip-sync) */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n characterVideoAssetId: string | null = null;\n\n /** Scene ID to composite onto */\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Viewpoint ID (for 360° scenes) */\n viewpointId: string | null = null;\n\n /** Anchor point ID for placement */\n anchorPointId: string | null = null;\n\n /** Character scale */\n scale: number = 1.0;\n\n /** Character position (normalized 0-1) */\n position: { x: number; y: number } = { x: 0.5, y: 0.5 };\n\n /** Job status */\n status: CompositeJobStatus = 'pending';\n\n /** Progress percentage (0-100) */\n progress: number = 0;\n\n /** Output video asset ID */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n outputAssetId: string | null = null;\n\n /** Error message if failed */\n errorMessage: string | null = null;\n\n constructor(options: CompositeJobOptions = {}) {\n super(options);\n\n if (options.characterVideoAssetId !== undefined)\n this.characterVideoAssetId = options.characterVideoAssetId;\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.viewpointId !== undefined)\n this.viewpointId = options.viewpointId;\n if (options.anchorPointId !== undefined)\n this.anchorPointId = options.anchorPointId;\n if (options.scale !== undefined) this.scale = options.scale;\n if (options.position !== undefined) this.position = options.position;\n if (options.status !== undefined) this.status = options.status;\n if (options.progress !== undefined) this.progress = options.progress;\n if (options.outputAssetId !== undefined)\n this.outputAssetId = options.outputAssetId;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /** Check if the job is complete */\n get isComplete(): boolean {\n return this.status === 'complete' && this.outputAssetId !== null;\n }\n\n /** Check if the job is in progress */\n get isProcessing(): boolean {\n return (\n this.status !== 'pending' &&\n this.status !== 'complete' &&\n this.status !== 'failed'\n );\n }\n}\n","/**\n * VideoComposition Model\n *\n * The publishable output. Defines render spec (fps, width, height).\n * Contains ordered sequences with optional transitions between them.\n * Maps to Remotion <Composition /> + <TransitionSeries>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport type { VideoCompositionAssetRole } from './video-composition-asset.js';\n\n/**\n * Render status for the composition\n */\nexport type RenderStatus = 'draft' | 'rendering' | 'ready' | 'failed';\n\n/**\n * VideoComposition creation options\n */\nexport interface VideoCompositionOptions extends ContentOptions {\n /** Frames per second (e.g., 30) — everything downstream is in frames */\n fps?: number;\n\n /** Render width in pixels */\n width?: number;\n\n /** Render height in pixels */\n height?: number;\n\n /** Computed total: sum of sequences minus transition overlaps */\n durationInFrames?: number;\n\n /** Render status */\n renderStatus?: RenderStatus;\n\n /** Render progress (0-100) */\n renderProgress?: number;\n}\n\n/**\n * Publishable video composition\n *\n * VideoComposition is the top-level container for a rendered video.\n * It defines the render spec and contains ordered VideoSequences.\n *\n * @example\n * ```typescript\n * import { VideoComposition } from '@happyvertical/smrt-video';\n *\n * const composition = new VideoComposition({\n * title: 'Evening News - January 25, 2026',\n * fps: 30,\n * width: 1920,\n * height: 1080,\n * });\n * await composition.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoComposition extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Frames per second — everything downstream is in frames */\n fps: number = 30;\n\n /** Render width in pixels */\n width: number = 1920;\n\n /** Render height in pixels */\n height: number = 1080;\n\n /** Computed total: sum of sequences minus transition overlaps */\n durationInFrames: number = 0;\n\n /** Render status */\n renderStatus: RenderStatus = 'draft';\n\n /** Render progress (0-100) */\n renderProgress: number = 0;\n\n constructor(options: VideoCompositionOptions = {}) {\n super({\n ...options,\n type: 'video-composition',\n });\n\n if (options.fps !== undefined) this.fps = options.fps;\n if (options.width !== undefined) this.width = options.width;\n if (options.height !== undefined) this.height = options.height;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.renderStatus !== undefined)\n this.renderStatus = options.renderStatus;\n if (options.renderProgress !== undefined)\n this.renderProgress = options.renderProgress;\n }\n\n /** Duration in seconds */\n get durationInSeconds(): number {\n if (this.fps === 0) return 0;\n return this.durationInFrames / this.fps;\n }\n\n /** Check if the composition is ready for publishing */\n get isReady(): boolean {\n return this.renderStatus === 'ready';\n }\n\n /** Check if the composition is currently rendering */\n get isRendering(): boolean {\n return this.renderStatus === 'rendering';\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoCompositionAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoCompositionAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_composition_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoCompositionAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoCompositionAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n}\n","/**\n * VideoCompositionCollection - Collection manager for VideoComposition instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { type RenderStatus, VideoComposition } from './video-composition.js';\n\nexport class VideoCompositionCollection extends SmrtCollection<VideoComposition> {\n static readonly _itemClass = VideoComposition;\n\n /** Find compositions by render status */\n async findByRenderStatus(\n renderStatus: RenderStatus,\n ): Promise<VideoComposition[]> {\n return (await this.list({\n where: { renderStatus },\n })) as VideoComposition[];\n }\n\n /** Find compositions that are ready for publishing */\n async findReady(): Promise<VideoComposition[]> {\n return (await this.list({\n where: { renderStatus: 'ready' },\n })) as VideoComposition[];\n }\n}\n","/**\n * VideoSequence Model\n *\n * A thematic section of a video: \"top story\", \"weather\", \"interview\".\n * Groups VideoShots. Maps to Remotion <TransitionSeries.Sequence>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport type { VideoSequenceAssetRole } from './video-sequence-asset.js';\n\n/**\n * Transition type to the next sequence\n */\nexport type TransitionType = 'none' | 'fade' | 'slide' | 'wipe';\n\n/**\n * VideoSequence creation options\n */\nexport interface VideoSequenceOptions extends ContentOptions {\n /** Composition this sequence belongs to (nullable — can exist standalone) */\n compositionId?: string | null;\n\n /** Order within composition */\n position?: number;\n\n /** Computed duration: sum of shot frames */\n durationInFrames?: number;\n\n /** Transition type to the next sequence */\n transitionType?: TransitionType;\n\n /** Overlap frames with next sequence for transition */\n transitionDurationFrames?: number;\n}\n\n/**\n * Thematic section of a video composition\n *\n * VideoSequence groups VideoShots into a logical section. It can belong\n * to a VideoComposition or exist standalone (e.g., during long-video generation).\n *\n * @example\n * ```typescript\n * import { VideoSequence } from '@happyvertical/smrt-video';\n *\n * const sequence = new VideoSequence({\n * title: 'Top Story',\n * position: 0,\n * transitionType: 'fade',\n * transitionDurationFrames: 15,\n * });\n * await sequence.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoSequence extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Composition this sequence belongs to */\n @foreignKey('VideoComposition')\n compositionId: string | null = null;\n\n /** Order within composition */\n position: number = 0;\n\n /** Computed duration: sum of shot frames */\n durationInFrames: number = 0;\n\n /** Transition type to the next sequence */\n transitionType: TransitionType = 'none';\n\n /** Overlap frames with next sequence for transition */\n transitionDurationFrames: number = 0;\n\n constructor(options: VideoSequenceOptions = {}) {\n super({\n ...options,\n type: 'video-sequence',\n });\n\n if (options.compositionId !== undefined)\n this.compositionId = options.compositionId;\n if (options.position !== undefined) this.position = options.position;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.transitionType !== undefined)\n this.transitionType = options.transitionType;\n if (options.transitionDurationFrames !== undefined)\n this.transitionDurationFrames = options.transitionDurationFrames;\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoSequenceAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoSequenceAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_sequence_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoSequenceAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoSequenceAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n}\n","/**\n * VideoSequenceCollection - Collection manager for VideoSequence instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoSequence } from './video-sequence.js';\n\nexport class VideoSequenceCollection extends SmrtCollection<VideoSequence> {\n static readonly _itemClass = VideoSequence;\n\n /** Find sequences belonging to a composition, ordered by position */\n async findByComposition(compositionId: string): Promise<VideoSequence[]> {\n return (await this.list({\n where: { compositionId },\n orderBy: 'position ASC',\n })) as VideoSequence[];\n }\n\n /** Find standalone sequences (not in any composition) */\n async findStandalone(): Promise<VideoSequence[]> {\n return (await this.list({\n where: { compositionId: null },\n })) as VideoSequence[];\n }\n}\n","/**\n * VideoShot Model\n *\n * The atomic video generation unit. One or more characters + one scene + one pipeline run.\n * This is what ComfyUI produces. Maps to Remotion <Sequence><Video /></Sequence>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport type { WordTiming } from '@happyvertical/smrt-voice';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport { Scene } from './scene.js';\nimport { VideoSequence } from './video-sequence.js';\nimport type { VideoShotAssetRole } from './video-shot-asset.js';\n\n/**\n * Video shot status\n */\nexport type VideoShotStatus =\n | 'draft'\n | 'queued'\n | 'processing'\n | 'ready'\n | 'failed'\n | 'published';\n\n/**\n * Video metadata\n */\nexport interface VideoMetadata {\n /** Actual duration in seconds */\n duration?: number;\n\n /** Video resolution (e.g., \"1920x1080\") */\n resolution?: string;\n\n /** Aspect ratio (e.g., \"16:9\", \"9:16\") */\n aspectRatio?: string;\n\n /** Video codec (e.g., \"h264\", \"h265\") */\n codec?: string;\n\n /** Frames per second */\n fps?: number;\n\n /** File size in bytes */\n fileSize?: number;\n\n /** Word timing data from TTS for lip-sync */\n wordTimings?: WordTiming[];\n\n /** ComfyUI prompt ID for tracking */\n comfyPromptId?: string;\n}\n\n/**\n * Video shot creation options\n */\nexport interface VideoShotOptions extends ContentOptions {\n /** Sequence this shot belongs to (nullable — shots can exist standalone) */\n sequenceId?: string | null;\n\n /** Scene for this shot (nullable) */\n sceneId?: string | null;\n\n /** Order within sequence */\n position?: number;\n\n /** Actual frame count of generated clip */\n durationInFrames?: number;\n\n /** Frames to skip at start (overlap handling) */\n trimBeforeFrames?: number;\n\n /** Frames to skip at end */\n trimAfterFrames?: number;\n\n /** Script text to be spoken */\n scriptText?: string;\n\n /** Word count in the script */\n scriptWordCount?: number;\n\n /** Target duration in seconds */\n targetDuration?: number;\n\n /** Video generation status */\n shotStatus?: VideoShotStatus;\n\n /** Generation progress (0-100) */\n progress?: number;\n\n /** Error message if status is 'failed' */\n errorMessage?: string | null;\n\n /** Detailed status message for progress tracking */\n statusMessage?: string | null;\n\n /** Video metadata */\n videoMetadata?: VideoMetadata;\n}\n\n/**\n * Atomic video generation unit\n *\n * VideoShot represents a single pipeline run producing one video clip.\n * It can belong to a VideoSequence (for multi-segment long videos) or\n * exist standalone. Characters are linked via the VideoShotCharacter join model.\n *\n * @example\n * ```typescript\n * import { VideoShot } from '@happyvertical/smrt-video';\n *\n * const shot = new VideoShot({\n * scriptText: 'Welcome to the evening news.',\n * targetDuration: 30,\n * title: 'Evening News - Opening',\n * });\n * await shot.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoShot extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Sequence this shot belongs to */\n @foreignKey(() => VideoSequence)\n sequenceId: string | null = null;\n\n /** Scene for this shot */\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Order within sequence */\n position: number = 0;\n\n /** Actual frame count of generated clip */\n durationInFrames: number = 0;\n\n /** Frames to skip at start (overlap handling) */\n trimBeforeFrames: number = 0;\n\n /** Frames to skip at end */\n trimAfterFrames: number = 0;\n\n /** Script text to be spoken */\n scriptText: string = '';\n\n /** Word count in the script */\n scriptWordCount: number = 0;\n\n /** Target duration in seconds */\n targetDuration: number = 30;\n\n /** Video generation status */\n shotStatus: VideoShotStatus = 'draft';\n\n /** Generation progress (0-100) */\n progress: number = 0;\n\n /** Error message if status is 'failed' */\n errorMessage: string | null = null;\n\n /** Detailed status message for progress tracking */\n statusMessage: string | null = null;\n\n /** Video metadata (duration, resolution, etc.) */\n videoMetadata: VideoMetadata = {};\n\n constructor(options: VideoShotOptions = {}) {\n super({\n ...options,\n type: 'video-shot',\n });\n\n if (options.sequenceId !== undefined) this.sequenceId = options.sequenceId;\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.position !== undefined) this.position = options.position;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.trimBeforeFrames !== undefined)\n this.trimBeforeFrames = options.trimBeforeFrames;\n if (options.trimAfterFrames !== undefined)\n this.trimAfterFrames = options.trimAfterFrames;\n if (options.scriptText !== undefined) {\n this.scriptText = options.scriptText;\n this.scriptWordCount = this.scriptText\n .split(/\\s+/)\n .filter(Boolean).length;\n }\n if (options.scriptWordCount !== undefined)\n this.scriptWordCount = options.scriptWordCount;\n if (options.targetDuration !== undefined)\n this.targetDuration = options.targetDuration;\n if (options.shotStatus !== undefined) this.shotStatus = options.shotStatus;\n if (options.progress !== undefined) this.progress = options.progress;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.statusMessage !== undefined)\n this.statusMessage = options.statusMessage;\n if (options.videoMetadata !== undefined)\n this.videoMetadata = options.videoMetadata;\n }\n\n /** Estimate speech duration based on word count (2.7 words/sec) */\n get estimatedDuration(): number {\n return this.scriptWordCount / 2.7;\n }\n\n /** Check if the script length matches target duration (+/- 15%) */\n get isScriptLengthValid(): boolean {\n const estimated = this.estimatedDuration;\n const tolerance = this.targetDuration * 0.15;\n return (\n estimated >= this.targetDuration - tolerance &&\n estimated <= this.targetDuration + tolerance\n );\n }\n\n /** Get the recommended word count for target duration */\n get recommendedWordCount(): { min: number; max: number; target: number } {\n const wordsPerSecond = 2.7;\n const target = Math.round(this.targetDuration * wordsPerSecond);\n const tolerance = Math.round(target * 0.15);\n return {\n min: target - tolerance,\n max: target + tolerance,\n target,\n };\n }\n\n /** Effective frame count after trimming */\n get effectiveFrames(): number {\n return Math.max(\n 0,\n this.durationInFrames - this.trimBeforeFrames - this.trimAfterFrames,\n );\n }\n\n /** Check if video generation is in progress */\n get isGenerating(): boolean {\n return this.shotStatus === 'queued' || this.shotStatus === 'processing';\n }\n\n /** Check if video is ready for publishing */\n get isReady(): boolean {\n return this.shotStatus === 'ready';\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoShotAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoShotAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_shot_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoShotAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoShotAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n\n /** Update script text and recalculate word count */\n setScript(text: string): void {\n this.scriptText = text;\n this.scriptWordCount = text.split(/\\s+/).filter(Boolean).length;\n }\n}\n","/**\n * VideoShotCharacter - Join model linking VideoShots to Characters\n *\n * Replaces the old single personalityProfileId FK on VideoContent.\n * Supports multiple characters per shot with role and ordering.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { foreignKey, SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\nimport { VideoShot } from './video-shot.js';\n\n/**\n * Character role within a shot\n */\nexport type VideoShotCharacterRole = 'primary' | 'secondary' | 'background';\n\n/**\n * VideoShotCharacter creation options\n */\nexport interface VideoShotCharacterOptions extends SmrtObjectOptions {\n /** Video shot ID */\n videoShotId: string;\n\n /** Character ID */\n characterId: string;\n\n /** Role of the character in this shot */\n role?: VideoShotCharacterRole;\n\n /** Order/layer position within the shot */\n position?: number;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Join model linking a VideoShot to a Character\n *\n * @example\n * ```typescript\n * import { VideoShotCharacter } from '@happyvertical/smrt-video';\n *\n * const link = new VideoShotCharacter({\n * videoShotId: 'shot-123',\n * characterId: 'char-456',\n * role: 'primary',\n * position: 0,\n * });\n * await link.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoShotCharacter extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Video shot ID */\n @foreignKey(() => VideoShot, { required: true })\n videoShotId: string = '';\n\n /** Character ID */\n @foreignKey(() => Character, { required: true })\n characterId: string = '';\n\n /** Role of the character in this shot */\n role: VideoShotCharacterRole = 'primary';\n\n /** Order/layer position within the shot */\n position: number = 0;\n\n constructor(options: VideoShotCharacterOptions) {\n super(options);\n\n this.videoShotId = options.videoShotId;\n this.characterId = options.characterId;\n if (options.role !== undefined) this.role = options.role;\n if (options.position !== undefined) this.position = options.position;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","/**\n * VideoShotCharacterCollection - Collection manager for VideoShotCharacter instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoShotCharacter } from './video-shot-character.js';\n\nexport class VideoShotCharacterCollection extends SmrtCollection<VideoShotCharacter> {\n static readonly _itemClass = VideoShotCharacter;\n\n /** Find all character links for a shot, ordered by position */\n async findByShot(videoShotId: string): Promise<VideoShotCharacter[]> {\n return (await this.list({\n where: { videoShotId },\n orderBy: 'position ASC',\n })) as VideoShotCharacter[];\n }\n\n /** Find all shot links for a character */\n async findByCharacter(characterId: string): Promise<VideoShotCharacter[]> {\n return (await this.list({\n where: { characterId },\n })) as VideoShotCharacter[];\n }\n}\n","/**\n * VideoShotCollection - Collection manager for VideoShot instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoShot, type VideoShotStatus } from './video-shot.js';\n\nexport class VideoShotCollection extends SmrtCollection<VideoShot> {\n static readonly _itemClass = VideoShot;\n\n /** Find shots belonging to a specific sequence, ordered by position */\n async findBySequence(sequenceId: string): Promise<VideoShot[]> {\n return (await this.list({\n where: { sequenceId },\n orderBy: 'position ASC',\n })) as VideoShot[];\n }\n\n /** Find shots by status */\n async findByStatus(shotStatus: VideoShotStatus): Promise<VideoShot[]> {\n return (await this.list({ where: { shotStatus } })) as VideoShot[];\n }\n\n /** Find standalone shots (not in any sequence) */\n async findStandalone(): Promise<VideoShot[]> {\n return (await this.list({ where: { sequenceId: null } })) as VideoShot[];\n }\n}\n","/**\n * Video Workflow Model\n *\n * Manages ComfyUI workflow templates for video generation.\n */\n\nimport { createLogger } from '@happyvertical/logger';\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\n\nconst logger = createLogger({ level: 'info' });\n\n/**\n * Node mapping for dynamic parameter injection\n */\nexport interface NodeMapping {\n /**\n * Node ID for anchor seed image input\n */\n seedImage?: string;\n\n /**\n * Node ID for TTS audio input\n */\n audioFile?: string;\n\n /**\n * Node ID for base motion video input\n */\n baseVideo?: string;\n\n /**\n * Node ID for final video output\n */\n outputVideo?: string;\n\n /**\n * Node ID for text prompt input\n */\n prompt?: string;\n\n /**\n * Node ID for negative prompt input\n */\n negativePrompt?: string;\n\n /**\n * Node ID for sampler/scheduler settings\n */\n sampler?: string;\n\n /**\n * Node ID for video duration control\n */\n duration?: string;\n\n /**\n * Additional custom node mappings\n */\n [key: string]: string | undefined;\n}\n\n/**\n * Workflow type classification\n */\nexport type WorkflowType =\n | 'prebake'\n | 'broadcast'\n | 'lipsync'\n | 'postprod'\n | 'custom';\n\n/**\n * Video workflow creation options\n */\nexport interface VideoWorkflowOptions extends SmrtObjectOptions {\n /**\n * Human-readable name for the workflow\n */\n name?: string;\n\n /**\n * Description of what this workflow does\n */\n description?: string | null;\n\n /**\n * Workflow type classification\n * @default 'custom'\n */\n workflowType?: WorkflowType;\n\n /**\n * ComfyUI API format JSON\n */\n workflowJson?: object | null;\n\n /**\n * Node ID mappings for dynamic parameter injection\n */\n nodeMapping?: NodeMapping;\n\n /**\n * Estimated processing time in seconds\n */\n estimatedTime?: number;\n\n /**\n * Whether this workflow is active/usable\n * @default true\n */\n isActive?: boolean;\n\n /**\n * ComfyUI models required by this workflow\n */\n requiredModels?: string[];\n\n /**\n * Tenant ID for multi-tenant isolation\n */\n tenantId?: string | null;\n}\n\n/**\n * ComfyUI workflow template for video generation\n *\n * VideoWorkflow stores ComfyUI workflow definitions with node mappings\n * for dynamic parameter injection. This allows the Histrio agent to\n * inject anchor images, audio, and other inputs at runtime.\n *\n * @example\n * ```typescript\n * import { VideoWorkflow } from '@happyvertical/smrt-video';\n *\n * const workflow = new VideoWorkflow({\n * name: 'Wan 2.6 + EchoMimic',\n * description: 'Full broadcast generation with lip-sync',\n * workflowType: 'broadcast',\n * workflowJson: comfyuiWorkflowJson,\n * nodeMapping: {\n * seedImage: '1',\n * audioFile: '5',\n * outputVideo: '12',\n * },\n * estimatedTime: 600, // 10 minutes\n * requiredModels: ['wan_2.6_t2v_14b_fp8', 'echomimic_v2'],\n * });\n * await workflow.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: { skipApiCheck: true },\n})\nexport class VideoWorkflow extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /**\n * Tenant ID for multi-tenant isolation\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Human-readable name for the workflow\n */\n name: string = '';\n\n /**\n * Description of what this workflow does\n */\n description: string | null = null;\n\n /**\n * Workflow type classification\n * - prebake: Pre-generate base motion from seed image\n * - broadcast: Full video generation pipeline\n * - lipsync: Lip-sync only (requires base video + audio)\n * - postprod: Post-production overlays and effects\n * - custom: User-defined workflow\n */\n workflowType: WorkflowType = 'custom';\n\n /**\n * ComfyUI API format JSON\n * This is the workflow definition that will be sent to ComfyUI\n */\n workflowJson: object | null = null;\n\n /**\n * Node ID mappings for dynamic parameter injection\n * Maps semantic names to ComfyUI node IDs\n */\n nodeMapping: NodeMapping = {};\n\n /**\n * Estimated processing time in seconds\n * Used for progress estimation\n */\n estimatedTime: number = 300;\n\n /**\n * Whether this workflow is active/usable\n */\n isActive: boolean = true;\n\n /**\n * ComfyUI models required by this workflow\n * Used for validation before queuing\n */\n requiredModels: string[] = [];\n\n constructor(options: VideoWorkflowOptions = {}) {\n super(options);\n\n if (options.name !== undefined) this.name = options.name;\n if (options.description !== undefined)\n this.description = options.description;\n if (options.workflowType !== undefined)\n this.workflowType = options.workflowType;\n if (options.workflowJson !== undefined)\n this.workflowJson = options.workflowJson;\n if (options.nodeMapping !== undefined)\n this.nodeMapping = options.nodeMapping;\n if (options.estimatedTime !== undefined)\n this.estimatedTime = options.estimatedTime;\n if (options.isActive !== undefined) this.isActive = options.isActive;\n if (options.requiredModels !== undefined)\n this.requiredModels = options.requiredModels;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if the workflow has all required node mappings\n */\n get hasRequiredMappings(): boolean {\n const required = ['outputVideo'];\n return required.every((key) => this.nodeMapping[key] !== undefined);\n }\n\n /**\n * Get a copy of the workflow JSON with injected parameters\n *\n * Parameter injection follows ComfyUI node structure conventions:\n * - seedImage, audioFile, baseVideo → node.inputs.image (file path)\n * - prompt → node.inputs.text (string)\n * - Other parameters → node.inputs[paramKey]\n *\n * @param params - Key-value pairs of parameters to inject\n * @returns Modified workflow JSON or null if no workflowJson set\n */\n injectParameters(params: Record<string, unknown>): object | null {\n if (!this.workflowJson) return null;\n\n const workflow = JSON.parse(JSON.stringify(this.workflowJson));\n const warnings: string[] = [];\n\n for (const [paramKey, nodeId] of Object.entries(this.nodeMapping)) {\n if (nodeId && params[paramKey] !== undefined) {\n // Validate nodeId exists in workflow\n if (!workflow[nodeId]) {\n warnings.push(\n `Node mapping '${paramKey}' references node '${nodeId}' which does not exist in workflow`,\n );\n continue;\n }\n\n // Inject parameter into the node\n workflow[nodeId].inputs = workflow[nodeId].inputs || {};\n\n // Map parameters to ComfyUI node input field names\n if (\n paramKey === 'seedImage' ||\n paramKey === 'audioFile' ||\n paramKey === 'baseVideo'\n ) {\n workflow[nodeId].inputs.image = params[paramKey];\n } else if (paramKey === 'prompt') {\n workflow[nodeId].inputs.text = params[paramKey];\n } else {\n workflow[nodeId].inputs[paramKey] = params[paramKey];\n }\n }\n }\n\n // Log warnings if any (in development)\n if (warnings.length > 0 && process.env.NODE_ENV !== 'production') {\n logger.warn(\n `[VideoWorkflow] Parameter injection warnings:\\n${warnings.join('\\n')}`,\n );\n }\n\n return workflow;\n }\n}\n","/**\n * CharacterAsset - legacy STI asset subclass for Character-owned assets\n *\n * @deprecated Character owned assets are now modeled canonically through\n * `CharacterOwnedAsset` join rows in `character_assets`. This legacy subtype\n * remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Character } from './character.js';\n\n/** Roles a character asset can play */\nexport type CharacterAssetRole = 'seed-image' | 'base-motion' | 'logo';\n\nexport interface CharacterAssetOptions extends AssetOptions {\n /** Character this asset belongs to */\n characterId?: string | null;\n /** Role of this asset for the character */\n role?: CharacterAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class CharacterAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Character)\n characterId: string | null = null;\n\n role: CharacterAssetRole = 'seed-image';\n\n constructor(options: CharacterAssetOptions = {}) {\n super(options);\n if (options.characterId !== undefined)\n this.characterId = options.characterId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\nimport type { CharacterAssetRole } from './character-asset.js';\n\nexport interface CharacterOwnedAssetOptions extends SmrtObjectOptions {\n characterId?: string;\n assetId?: string;\n role?: CharacterAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'CharacterOwnedAsset',\n tableName: 'character_assets',\n conflictColumns: ['character_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class CharacterOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Character, { required: true })\n characterId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: CharacterAssetRole = 'seed-image';\n\n @field()\n sortOrder = 0;\n\n constructor(options: CharacterOwnedAssetOptions = {}) {\n super(options);\n if (options.characterId) this.characterId = options.characterId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { CharacterOwnedAsset } from './character-owned-asset.js';\n\nexport interface CharacterOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class CharacterOwnedAssetCollection extends SmrtJunction<CharacterOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = CharacterOwnedAsset;\n protected leftField = 'characterId';\n protected rightField = 'assetId';\n}\n","/**\n * PerformerAsset - legacy STI asset subclass for Performer-owned assets\n *\n * @deprecated Performer owned assets are now modeled canonically through\n * `PerformerOwnedAsset` join rows in `performer_assets`. This legacy subtype\n * remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Performer } from './performer.js';\n\n/** Roles a performer asset can play */\nexport type PerformerAssetRole = 'reference' | 'seed';\n\nexport interface PerformerAssetOptions extends AssetOptions {\n /** Performer this asset belongs to */\n performerId?: string | null;\n /** Role of this asset for the performer */\n role?: PerformerAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class PerformerAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Performer)\n performerId: string | null = null;\n\n role: PerformerAssetRole = 'reference';\n\n constructor(options: PerformerAssetOptions = {}) {\n super(options);\n if (options.performerId !== undefined)\n this.performerId = options.performerId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Performer } from './performer.js';\nimport type { PerformerAssetRole } from './performer-asset.js';\n\nexport interface PerformerOwnedAssetOptions extends SmrtObjectOptions {\n performerId?: string;\n assetId?: string;\n role?: PerformerAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'PerformerOwnedAsset',\n tableName: 'performer_assets',\n conflictColumns: ['performer_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class PerformerOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Performer, { required: true })\n performerId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: PerformerAssetRole = 'reference';\n\n @field()\n sortOrder = 0;\n\n constructor(options: PerformerOwnedAssetOptions = {}) {\n super(options);\n if (options.performerId) this.performerId = options.performerId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { PerformerOwnedAsset } from './performer-owned-asset.js';\n\nexport interface PerformerOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class PerformerOwnedAssetCollection extends SmrtJunction<PerformerOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = PerformerOwnedAsset;\n protected leftField = 'performerId';\n protected rightField = 'assetId';\n}\n","/**\n * SceneAsset - legacy STI asset subclass for Scene-owned assets\n *\n * @deprecated Scene owned assets are now modeled canonically through\n * `SceneOwnedAsset` join rows in `scene_assets`. This legacy subtype remains\n * readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Scene } from './scene.js';\n\n/** Roles a scene asset can play */\nexport type SceneAssetRole = 'source' | 'viewpoint-extract' | 'env-map';\n\nexport interface SceneAssetOptions extends AssetOptions {\n /** Scene this asset belongs to */\n sceneId?: string | null;\n /** Role of this asset for the scene */\n role?: SceneAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class SceneAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n role: SceneAssetRole = 'source';\n\n constructor(options: SceneAssetOptions = {}) {\n super(options);\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Scene } from './scene.js';\nimport type { SceneAssetRole } from './scene-asset.js';\n\nexport interface SceneOwnedAssetOptions extends SmrtObjectOptions {\n sceneId?: string;\n assetId?: string;\n role?: SceneAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'SceneOwnedAsset',\n tableName: 'scene_assets',\n conflictColumns: ['scene_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class SceneOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Scene, { required: true })\n sceneId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: SceneAssetRole = 'source';\n\n @field()\n sortOrder = 0;\n\n constructor(options: SceneOwnedAssetOptions = {}) {\n super(options);\n if (options.sceneId) this.sceneId = options.sceneId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { SceneOwnedAsset } from './scene-owned-asset.js';\n\nexport interface SceneOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class SceneOwnedAssetCollection extends SmrtJunction<SceneOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = SceneOwnedAsset;\n protected leftField = 'sceneId';\n protected rightField = 'assetId';\n}\n","/**\n * VideoCompositionAsset - legacy STI asset subclass for VideoComposition-owned assets\n *\n * @deprecated VideoComposition now uses inherited Content asset helpers backed\n * by `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoComposition } from './video-composition.js';\n\n/** Roles a video composition asset can play */\nexport type VideoCompositionAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoCompositionAssetOptions extends AssetOptions {\n /** VideoComposition this asset belongs to */\n videoCompositionId?: string | null;\n /** Role of this asset for the composition */\n role?: VideoCompositionAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoCompositionAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoComposition)\n videoCompositionId: string | null = null;\n\n role: VideoCompositionAssetRole = 'video';\n\n constructor(options: VideoCompositionAssetOptions = {}) {\n super(options);\n if (options.videoCompositionId !== undefined)\n this.videoCompositionId = options.videoCompositionId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","/**\n * VideoSequenceAsset - legacy STI asset subclass for VideoSequence-owned assets\n *\n * @deprecated VideoSequence now uses inherited Content asset helpers backed by\n * `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoSequence } from './video-sequence.js';\n\n/** Roles a video sequence asset can play */\nexport type VideoSequenceAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoSequenceAssetOptions extends AssetOptions {\n /** VideoSequence this asset belongs to */\n videoSequenceId?: string | null;\n /** Role of this asset for the sequence */\n role?: VideoSequenceAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoSequenceAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoSequence)\n videoSequenceId: string | null = null;\n\n role: VideoSequenceAssetRole = 'video';\n\n constructor(options: VideoSequenceAssetOptions = {}) {\n super(options);\n if (options.videoSequenceId !== undefined)\n this.videoSequenceId = options.videoSequenceId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","/**\n * VideoShotAsset - legacy STI asset subclass for VideoShot-owned assets\n *\n * @deprecated VideoShot now uses inherited Content asset helpers backed by\n * `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoShot } from './video-shot.js';\n\n/** Roles a video shot asset can play */\nexport type VideoShotAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoShotAssetOptions extends AssetOptions {\n /** VideoShot this asset belongs to */\n videoShotId?: string | null;\n /** Role of this asset for the shot */\n role?: VideoShotAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoShotAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoShot)\n videoShotId: string | null = null;\n\n role: VideoShotAssetRole = 'video';\n\n constructor(options: VideoShotAssetOptions = {}) {\n super(options);\n if (options.videoShotId !== undefined)\n this.videoShotId = options.videoShotId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/__smrt-register__.ts","../src/character.ts","../src/characters.ts","../src/composite-job.ts","../src/video-composition.ts","../src/video-compositions.ts","../src/video-sequence.ts","../src/video-sequences.ts","../src/video-shot.ts","../src/video-shot-character.ts","../src/video-shot-characters.ts","../src/video-shots.ts","../src/video-workflow.ts","../src/character-asset.ts","../src/character-owned-asset.ts","../src/character-assets.ts","../src/performer-asset.ts","../src/performer-owned-asset.ts","../src/performer-assets.ts","../src/scene-asset.ts","../src/scene-owned-asset.ts","../src/scene-assets.ts","../src/video-composition-asset.ts","../src/video-sequence-asset.ts","../src/video-shot-asset.ts"],"sourcesContent":["// Generated by @happyvertical/smrt-core smrtPlugin at library build time.\n// The package manifest is inlined so self-registration cannot miss when a\n// downstream bundler relocates this module away from dist/manifest.json\n// (https://github.com/happyvertical/smrt/issues/1506,\n// https://github.com/happyvertical/smrt/issues/1507).\nimport { ObjectRegistry } from '@happyvertical/smrt-core';\n\nObjectRegistry.registerPackageManifest(JSON.parse(\"{\\\"version\\\":\\\"1.0.0\\\",\\\"timestamp\\\":0,\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"packageVersion\\\":\\\"0.57.20\\\",\\\"objects\\\":{\\\"@happyvertical/smrt-video:CharacterAsset\\\":{\\\"name\\\":\\\"characterasset\\\",\\\"className\\\":\\\"CharacterAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Character\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"seed-image\\\",\\\"enum\\\":[\\\"seed-image\\\",\\\"base-motion\\\",\\\"logo\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"CharacterAsset\\\",\\\"collectionExportName\\\":\\\"CharacterAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"7965832a\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterOwnedAssetCollection\\\":{\\\"name\\\":\\\"characterownedassetcollection\\\",\\\"className\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterOwnedAssetCollection\\\",\\\"collection\\\":\\\"characterownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"character_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"CharacterOwnedAsset\\\",\\\"exportName\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"CharacterOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"character_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"character_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'seed-image',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"character_assets_character_id_asset_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"character_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"character_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"character_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"c032f70e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterOwnedAsset\\\":{\\\"name\\\":\\\"characterownedasset\\\",\\\"className\\\":\\\"CharacterOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterOwnedAsset\\\",\\\"collection\\\":\\\"characterownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Character\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"seed-image\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"seed-image\\\",\\\"base-motion\\\",\\\"logo\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"CharacterOwnedAsset\\\",\\\"tableName\\\":\\\"character_assets\\\",\\\"conflictColumns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"CharacterOwnedAsset\\\",\\\"collectionExportName\\\":\\\"CharacterOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"characterId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"character_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"character_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'seed-image',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"character_assets_character_id_asset_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"character_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"character_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"character_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"c032f70e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Character\\\":{\\\"name\\\":\\\"character\\\",\\\"className\\\":\\\"Character\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Character\\\",\\\"collection\\\":\\\"characters\\\",\\\"description\\\":\\\"Virtual character for AI-powered video production\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/character.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"imageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"baseMotionAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\"},\\\"brandingKit\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"defaultSceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"sceneConfigs\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"profileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\"}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"seed-image\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"CharacterAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Character\\\",\\\"collectionExportName\\\":\\\"CharacterCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"base_motion_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"branding_kit\\\\\\\" JSON,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"default_scene_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_configs\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"base_motion_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"branding_kit\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"default_scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_configs\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"characters_image_asset_id_idx\\\",\\\"columns\\\":[\\\"image_asset_id\\\"]},{\\\"name\\\":\\\"characters_base_motion_asset_id_idx\\\",\\\"columns\\\":[\\\"base_motion_asset_id\\\"]},{\\\"name\\\":\\\"characters_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"characters_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"characters_default_scene_id_idx\\\",\\\"columns\\\":[\\\"default_scene_id\\\"]},{\\\"name\\\":\\\"characters_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"eae4aae5\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CharacterCollection\\\":{\\\"name\\\":\\\"charactercollection\\\",\\\"className\\\":\\\"CharacterCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CharacterCollection\\\",\\\"collection\\\":\\\"characters\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/characters.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByTenant\\\":{\\\"name\\\":\\\"findByTenant\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tenantId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findGlobal\\\":{\\\"name\\\":\\\"findGlobal\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByPerformer\\\":{\\\"name\\\":\\\"findByPerformer\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"performerId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findReady\\\":{\\\"name\\\":\\\"findReady\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Character[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"Character\\\",\\\"exportName\\\":\\\"CharacterCollection\\\",\\\"collectionExportName\\\":\\\"CharacterCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"base_motion_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"branding_kit\\\\\\\" JSON,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"default_scene_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_configs\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"base_motion_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"branding_kit\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"default_scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_configs\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"characters_image_asset_id_idx\\\",\\\"columns\\\":[\\\"image_asset_id\\\"]},{\\\"name\\\":\\\"characters_base_motion_asset_id_idx\\\",\\\"columns\\\":[\\\"base_motion_asset_id\\\"]},{\\\"name\\\":\\\"characters_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"characters_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"characters_default_scene_id_idx\\\",\\\"columns\\\":[\\\"default_scene_id\\\"]},{\\\"name\\\":\\\"characters_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"eae4aae5\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:CompositeJob\\\":{\\\"name\\\":\\\"compositejob\\\",\\\"className\\\":\\\"CompositeJob\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:CompositeJob\\\",\\\"collection\\\":\\\"compositejobs\\\",\\\"description\\\":\\\"Composite job for tracking virtual production compositing\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/composite-job.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"characterVideoAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"viewpointId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"anchorPointId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"scale\\\":{\\\"type\\\":\\\"decimal\\\",\\\"required\\\":false,\\\"default\\\":1},\\\"position\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"removing_bg\\\",\\\"analyzing_light\\\",\\\"compositing\\\",\\\"complete\\\",\\\"failed\\\"]},\\\"progress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"outputAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"CompositeJob\\\",\\\"collectionExportName\\\":\\\"CompositeJobCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"composite_jobs\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"composite_jobs\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"character_video_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"viewpoint_id\\\\\\\" TEXT,\\\\n \\\\\\\"anchor_point_id\\\\\\\" TEXT,\\\\n \\\\\\\"scale\\\\\\\" REAL DEFAULT 1,\\\\n \\\\\\\"position\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"output_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"error_message\\\\\\\" TEXT\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"character_video_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"viewpoint_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"anchor_point_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"scale\\\":{\\\"type\\\":\\\"REAL\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"position\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"output_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"composite_jobs_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"composite_jobs_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"composite_jobs_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"composite_jobs_character_video_asset_id_idx\\\",\\\"columns\\\":[\\\"character_video_asset_id\\\"]},{\\\"name\\\":\\\"composite_jobs_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"composite_jobs_output_asset_id_idx\\\",\\\"columns\\\":[\\\"output_asset_id\\\"]}],\\\"version\\\":\\\"4c7689a3\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerAsset\\\":{\\\"name\\\":\\\"performerasset\\\",\\\"className\\\":\\\"PerformerAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"reference\\\",\\\"enum\\\":[\\\"reference\\\",\\\"seed\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"PerformerAsset\\\",\\\"collectionExportName\\\":\\\"PerformerAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"4de881c3\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerOwnedAssetCollection\\\":{\\\"name\\\":\\\"performerownedassetcollection\\\",\\\"className\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerOwnedAssetCollection\\\",\\\"collection\\\":\\\"performerownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"performer_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"PerformerOwnedAsset\\\",\\\"exportName\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"PerformerOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"performer_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performer_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"performer_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'reference',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"reference\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"performer_assets_performer_id_asset_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"performer_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"performer_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performer_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"9a402665\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:PerformerOwnedAsset\\\":{\\\"name\\\":\\\"performerownedasset\\\",\\\"className\\\":\\\"PerformerOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:PerformerOwnedAsset\\\",\\\"collection\\\":\\\"performerownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Performer\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"reference\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"reference\\\",\\\"seed\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"PerformerOwnedAsset\\\",\\\"tableName\\\":\\\"performer_assets\\\",\\\"conflictColumns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"PerformerOwnedAsset\\\",\\\"collectionExportName\\\":\\\"PerformerOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"performerId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"performer_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performer_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"performer_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'reference',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"reference\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"performer_assets_performer_id_asset_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"performer_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"performer_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performer_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"9a402665\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Performer\\\":{\\\"name\\\":\\\"performer\\\",\\\"className\\\":\\\"Performer\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Performer\\\",\\\"collection\\\":\\\"performers\\\",\\\"description\\\":\\\"The physical likeness/face DNA\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/performer.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"dna\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"referenceAssetIds\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"seedImageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\"},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"profileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\"}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"reference\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"PerformerAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Performer\\\",\\\"collectionExportName\\\":\\\"PerformerCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"performers\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"performers\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"dna\\\\\\\" JSON,\\\\n \\\\\\\"reference_asset_ids\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"seed_image_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"profile_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"dna\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"reference_asset_ids\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"seed_image_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"performers_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"performers_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"performers_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"performers_seed_image_asset_id_idx\\\",\\\"columns\\\":[\\\"seed_image_asset_id\\\"]},{\\\"name\\\":\\\"performers_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"performers_profile_id_idx\\\",\\\"columns\\\":[\\\"profile_id\\\"]}],\\\"version\\\":\\\"09b53659\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneAsset\\\":{\\\"name\\\":\\\"sceneasset\\\",\\\"className\\\":\\\"SceneAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"source\\\",\\\"enum\\\":[\\\"source\\\",\\\"viewpoint-extract\\\",\\\"env-map\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"SceneAsset\\\",\\\"collectionExportName\\\":\\\"SceneAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"ef4abd1e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneOwnedAssetCollection\\\":{\\\"name\\\":\\\"sceneownedassetcollection\\\",\\\"className\\\":\\\"SceneOwnedAssetCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneOwnedAssetCollection\\\",\\\"collection\\\":\\\"sceneownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-assets.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"byRight\\\":{\\\"name\\\":\\\"byRight\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"byLeft\\\":{\\\"name\\\":\\\"byLeft\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"attach\\\":{\\\"name\\\":\\\"attach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<TItem>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"detach\\\":{\\\"name\\\":\\\"detach\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionFilterOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setLinks\\\":{\\\"name\\\":\\\"setLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"leftId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"rightIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"opts\\\",\\\"type\\\":\\\"JunctionAttachOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tableName\\\":\\\"scene_assets\\\"},\\\"extends\\\":\\\"SmrtJunction\\\",\\\"extendsTypeArg\\\":\\\"SceneOwnedAsset\\\",\\\"exportName\\\":\\\"SceneOwnedAssetCollection\\\",\\\"collectionExportName\\\":\\\"SceneOwnedAssetCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"scene_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scene_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'source',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"source\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"scene_assets_scene_id_asset_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"scene_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"scene_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scene_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"68f91ceb\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:SceneOwnedAsset\\\":{\\\"name\\\":\\\"sceneownedasset\\\",\\\"className\\\":\\\"SceneOwnedAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:SceneOwnedAsset\\\",\\\"collection\\\":\\\"sceneownedassets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene-owned-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Scene\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":true,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"source\\\",\\\"_meta\\\":{\\\"required\\\":true},\\\"enum\\\":[\\\"source\\\",\\\"viewpoint-extract\\\",\\\"env-map\\\"]},\\\"sortOrder\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"name\\\":\\\"SceneOwnedAsset\\\",\\\"tableName\\\":\\\"scene_assets\\\",\\\"conflictColumns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"api\\\":false,\\\"mcp\\\":false,\\\"cli\\\":false,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"}},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"SceneOwnedAsset\\\",\\\"collectionExportName\\\":\\\"SceneOwnedAssetCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"sceneId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"assetId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"crossPackageRef\\\"},{\\\"field\\\":\\\"role\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"},{\\\"field\\\":\\\"sortOrder\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"scene_assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scene_assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"asset_id\\\\\\\" UUID NOT NULL,\\\\n \\\\\\\"role\\\\\\\" TEXT NOT NULL DEFAULT 'source',\\\\n \\\\\\\"sort_order\\\\\\\" INTEGER NOT NULL DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false,\\\"unique\\\":false},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"CASCADE\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":true,\\\"unique\\\":false},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":\\\"source\\\"},\\\"sort_order\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":true,\\\"unique\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"scene_assets_scene_id_asset_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\",\\\"asset_id\\\",\\\"role\\\"],\\\"unique\\\":true},{\\\"name\\\":\\\"scene_assets_slug_context_idx\\\",\\\"columns\\\":[\\\"slug\\\",\\\"context\\\"]},{\\\"name\\\":\\\"scene_assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scene_assets_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"68f91ceb\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:Scene\\\":{\\\"name\\\":\\\"scene\\\",\\\"className\\\":\\\"Scene\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:Scene\\\",\\\"collection\\\":\\\"scenes\\\",\\\"description\\\":\\\"Scene for virtual production compositing\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/scene.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"image\\\",\\\"enum\\\":[\\\"image\\\",\\\"video\\\",\\\"panorama_360\\\",\\\"panorama_180\\\"]},\\\"projection\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"equirectangular\\\",\\\"cubemap\\\"]},\\\"viewpoints\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"lightingProfile\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"location\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"anchorPoints\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\"]}},\\\"methods\\\":{\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true,\\\"default\\\":\\\"source\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"SceneAssetRole\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"Scene\\\",\\\"collectionExportName\\\":\\\"SceneCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"scenes\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"scenes\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT DEFAULT 'image',\\\\n \\\\\\\"projection\\\\\\\" TEXT,\\\\n \\\\\\\"viewpoints\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"lighting_profile\\\\\\\" JSON,\\\\n \\\\\\\"location\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"anchor_points\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending'\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"image\\\"},\\\"projection\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"viewpoints\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"lighting_profile\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"location\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"anchor_points\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"}},\\\"indexes\\\":[{\\\"name\\\":\\\"scenes_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"scenes_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"scenes_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"scenes_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]}],\\\"version\\\":\\\"10393bea\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoCompositionAsset\\\":{\\\"name\\\":\\\"videocompositionasset\\\",\\\"className\\\":\\\"VideoCompositionAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoCompositionAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-composition-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoCompositionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoComposition\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoCompositionAsset\\\",\\\"collectionExportName\\\":\\\"VideoCompositionAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"76dc9f2b\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoComposition\\\":{\\\"name\\\":\\\"videocomposition\\\",\\\"className\\\":\\\"VideoComposition\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Publishable video composition\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-composition.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"fps\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1080},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"renderStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"draft\\\",\\\"rendering\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"renderProgress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoCompositionAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoComposition\\\",\\\"collectionExportName\\\":\\\"VideoCompositionCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"8f49f941\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoCompositionCollection\\\":{\\\"name\\\":\\\"videocompositioncollection\\\",\\\"className\\\":\\\"VideoCompositionCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoCompositionCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-compositions.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByRenderStatus\\\":{\\\"name\\\":\\\"findByRenderStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"renderStatus\\\",\\\"type\\\":\\\"RenderStatus\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoComposition[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findReady\\\":{\\\"name\\\":\\\"findReady\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoComposition[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoComposition\\\",\\\"exportName\\\":\\\"VideoCompositionCollection\\\",\\\"collectionExportName\\\":\\\"VideoCompositionCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"8f49f941\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequenceAsset\\\":{\\\"name\\\":\\\"videosequenceasset\\\",\\\"className\\\":\\\"VideoSequenceAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequenceAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequence-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoSequenceId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoSequence\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoSequenceAsset\\\",\\\"collectionExportName\\\":\\\"VideoSequenceAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"53fd6fda\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequence\\\":{\\\"name\\\":\\\"videosequence\\\",\\\"className\\\":\\\"VideoSequence\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Thematic section of a video composition\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequence.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"compositionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoComposition\\\"},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"transitionType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"none\\\",\\\"enum\\\":[\\\"none\\\",\\\"fade\\\",\\\"slide\\\",\\\"wipe\\\"]},\\\"transitionDurationFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoSequenceAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoSequence\\\",\\\"collectionExportName\\\":\\\"VideoSequenceCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"6a019937\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoSequenceCollection\\\":{\\\"name\\\":\\\"videosequencecollection\\\",\\\"className\\\":\\\"VideoSequenceCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoSequenceCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-sequences.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByComposition\\\":{\\\"name\\\":\\\"findByComposition\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"compositionId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoSequence[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findStandalone\\\":{\\\"name\\\":\\\"findStandalone\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoSequence[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoSequence\\\",\\\"exportName\\\":\\\"VideoSequenceCollection\\\",\\\"collectionExportName\\\":\\\"VideoSequenceCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"6a019937\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotAsset\\\":{\\\"name\\\":\\\"videoshotasset\\\",\\\"className\\\":\\\"VideoShotAsset\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotAsset\\\",\\\"collection\\\":\\\"assets\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-asset.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"accessMode\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"public\\\",\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether this record is public to ordinary asset APIs or private.\\\"},\\\"enum\\\":[\\\"public\\\",\\\"private\\\"]},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A recognizable name for this file or media item.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A recognizable name for this file or media item.\\\"}},\\\"sourceUri\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the original file is stored or can be retrieved.\\\"}},\\\"mimeType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The file format, such as image/jpeg or application/pdf.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Explain what the file contains and when it should be used.\\\"}},\\\"metadata\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Additional details recorded while processing this file.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Additional details recorded while processing this file.\\\"}},\\\"version\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":true,\\\"default\\\":1,\\\"description\\\":\\\"The revision number of this file in its version history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The revision number of this file in its version history.\\\"}},\\\"primaryVersionId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The first version of this file, linking its revision history.\\\"}},\\\"typeSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The category of asset, such as an image, video, or document.\\\"}},\\\"statusSlug\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The stage of this asset, such as draft, published, or archived.\\\"}},\\\"ownerProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-profiles:Profile\\\",\\\"description\\\":\\\"The person or organization responsible for this asset.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The person or organization responsible for this asset.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Asset\\\",\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The original asset used to produce this file or variation.\\\"}},\\\"folderId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Folder\\\",\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The folder that organizes this file in the asset library.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The service or source from which this file was obtained.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The service or source from which this file was obtained.\\\"}},\\\"externalId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The reference used to identify this file at its original source.\\\"}},\\\"externalRefs\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"References that connect this file to copies held by other services.\\\"}},\\\"createdAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"updatedAt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoShotId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoShot\\\"},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"video\\\",\\\"enum\\\":[\\\"video\\\",\\\"audio\\\",\\\"thumbnail\\\"]}},\\\"methods\\\":{\\\"getSlug\\\":{\\\"name\\\":\\\"getSlug\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<string | null | undefined>\\\",\\\"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\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mergeMetadata\\\":{\\\"name\\\":\\\"mergeMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRefs\\\":{\\\"name\\\":\\\"getExternalRefs\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, AssetExternalReference>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getExternalRef\\\":{\\\"name\\\":\\\"getExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"AssetExternalReference | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setExternalRef\\\":{\\\"name\\\":\\\"setExternalRef\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"provider\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"reference\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":false,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getTags\\\":{\\\"name\\\":\\\"getTags\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Tag[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"hasTag\\\":{\\\"name\\\":\\\"hasTag\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"tagSlug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"context\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getSource\\\":{\\\"name\\\":\\\"getSource\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getDerivatives\\\":{\\\"name\\\":\\\"getDerivatives\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getType\\\":{\\\"name\\\":\\\"getType\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetType | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getStatus\\\":{\\\"name\\\":\\\"getStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetStatus | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssociations\\\":{\\\"name\\\":\\\"getAssociations\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<AssetAssociation[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"associateWith\\\":{\\\"name\\\":\\\"associateWith\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"metaType\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"metaId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"default\\\"}],\\\"returnType\\\":\\\"Promise<AssetAssociation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getBySlug\\\":{\\\"name\\\":\\\"getBySlug\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"_slug\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tableName\\\":\\\"assets\\\",\\\"tableStrategy\\\":\\\"sti\\\"},\\\"extends\\\":\\\"Asset\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"exportName\\\":\\\"VideoShotAsset\\\",\\\"collectionExportName\\\":\\\"VideoShotAssetCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"version\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"integer\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"assets\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"assets\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"access_mode\\\\\\\" TEXT DEFAULT 'public',\\\\n \\\\\\\"name\\\\\\\" TEXT,\\\\n \\\\\\\"source_uri\\\\\\\" TEXT,\\\\n \\\\\\\"mime_type\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"metadata\\\\\\\" TEXT,\\\\n \\\\\\\"version\\\\\\\" INTEGER DEFAULT 1,\\\\n \\\\\\\"primary_version_id\\\\\\\" UUID,\\\\n \\\\\\\"type_slug\\\\\\\" TEXT,\\\\n \\\\\\\"status_slug\\\\\\\" TEXT,\\\\n \\\\\\\"owner_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"folder_id\\\\\\\" UUID,\\\\n \\\\\\\"source_type\\\\\\\" TEXT,\\\\n \\\\\\\"external_id\\\\\\\" TEXT,\\\\n \\\\\\\"external_refs\\\\\\\" TEXT,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'seed-image',\\\\n \\\\\\\"performer_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"video_composition_id\\\\\\\" UUID,\\\\n \\\\\\\"video_sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"access_mode\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"public\\\"},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_uri\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"mime_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"metadata\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"version\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"primary_version_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"type_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"owner_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"source_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"assets\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"folder_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_id\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_refs\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"seed-image\\\"},\\\"performer_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"performers\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}}},\\\"indexes\\\":[{\\\"name\\\":\\\"assets_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"assets_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"assets_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"assets_primary_version_id_idx\\\",\\\"columns\\\":[\\\"primary_version_id\\\"]},{\\\"name\\\":\\\"assets_owner_profile_id_idx\\\",\\\"columns\\\":[\\\"owner_profile_id\\\"]},{\\\"name\\\":\\\"assets_source_asset_id_idx\\\",\\\"columns\\\":[\\\"source_asset_id\\\"]},{\\\"name\\\":\\\"assets_folder_id_idx\\\",\\\"columns\\\":[\\\"folder_id\\\"]},{\\\"name\\\":\\\"assets_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]},{\\\"name\\\":\\\"assets_performer_id_idx\\\",\\\"columns\\\":[\\\"performer_id\\\"]},{\\\"name\\\":\\\"assets_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"assets_video_composition_id_idx\\\",\\\"columns\\\":[\\\"video_composition_id\\\"]},{\\\"name\\\":\\\"assets_video_sequence_id_idx\\\",\\\"columns\\\":[\\\"video_sequence_id\\\"]},{\\\"name\\\":\\\"assets_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]}],\\\"version\\\":\\\"cc103113\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCharacter\\\":{\\\"name\\\":\\\"videoshotcharacter\\\",\\\"className\\\":\\\"VideoShotCharacter\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCharacter\\\",\\\"collection\\\":\\\"videoshotcharacters\\\",\\\"description\\\":\\\"Join model linking a VideoShot to a Character\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-character.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"videoShotId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"VideoShot\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"characterId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":true,\\\"related\\\":\\\"Character\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"role\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"primary\\\",\\\"enum\\\":[\\\"primary\\\",\\\"secondary\\\",\\\"background\\\"]},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0}},\\\"methods\\\":{},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"VideoShotCharacter\\\",\\\"collectionExportName\\\":\\\"VideoShotCharacterCollection\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"videoShotId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"},{\\\"field\\\":\\\"characterId\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"foreignKey\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"video_shot_characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_shot_characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'primary',\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"primary\\\"},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_shot_characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_shot_characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_shot_characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"video_shot_characters_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]},{\\\"name\\\":\\\"video_shot_characters_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]}],\\\"version\\\":\\\"4846f081\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCharacterCollection\\\":{\\\"name\\\":\\\"videoshotcharactercollection\\\",\\\"className\\\":\\\"VideoShotCharacterCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCharacterCollection\\\",\\\"collection\\\":\\\"videoshotcharacters\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot-characters.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findByShot\\\":{\\\"name\\\":\\\"findByShot\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"videoShotId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShotCharacter[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByCharacter\\\":{\\\"name\\\":\\\"findByCharacter\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"characterId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShotCharacter[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoShotCharacter\\\",\\\"exportName\\\":\\\"VideoShotCharacterCollection\\\",\\\"collectionExportName\\\":\\\"VideoShotCharacterCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"video_shot_characters\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_shot_characters\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"video_shot_id\\\\\\\" UUID,\\\\n \\\\\\\"character_id\\\\\\\" UUID,\\\\n \\\\\\\"role\\\\\\\" TEXT DEFAULT 'primary',\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"video_shot_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"character_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"characters\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"role\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"primary\\\"},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_shot_characters_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_shot_characters_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_shot_characters_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"video_shot_characters_video_shot_id_idx\\\",\\\"columns\\\":[\\\"video_shot_id\\\"]},{\\\"name\\\":\\\"video_shot_characters_character_id_idx\\\",\\\"columns\\\":[\\\"character_id\\\"]}],\\\"version\\\":\\\"4846f081\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShot\\\":{\\\"name\\\":\\\"videoshot\\\",\\\"className\\\":\\\"VideoShot\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Atomic video generation unit\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shot.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"sequenceId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VideoSequence\\\"},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\"},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimBeforeFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimAfterFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"scriptText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"scriptWordCount\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"targetDuration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30},\\\"shotStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"draft\\\",\\\"queued\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\",\\\"published\\\"]},\\\"progress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"statusMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"videoMetadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false}},\\\"methods\\\":{\\\"initialize\\\":{\\\"name\\\":\\\"initialize\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<this>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"save\\\":{\\\"name\\\":\\\"save\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"SmrtSaveOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"resolveGovernance\\\":{\\\"name\\\":\\\"resolveGovernance\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ResolvedContentGovernance>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"loadReferences\\\":{\\\"name\\\":\\\"loadReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addReference\\\":{\\\"name\\\":\\\"addReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"content\\\",\\\"type\\\":\\\"Content | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Content\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number | null\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeReference\\\":{\\\"name\\\":\\\"removeReference\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"targetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferences\\\":{\\\"name\\\":\\\"getReferences\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceEdges\\\":{\\\"name\\\":\\\"getReferenceEdges\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReferenceDrift\\\":{\\\"name\\\":\\\"getReferenceDrift\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Array<object>>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isGoverned\\\":{\\\"name\\\":\\\"isGoverned\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactLinks\\\":{\\\"name\\\":\\\"getFactLinks\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFacts\\\":{\\\"name\\\":\\\"getFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addFact\\\":{\\\"name\\\":\\\"addFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"fact\\\",\\\"type\\\":\\\"Fact | string\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Fact\\\"},{\\\"type\\\":\\\"string\\\"}]},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true},{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeFact\\\":{\\\"name\\\":\\\"removeFact\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFacts\\\":{\\\"name\\\":\\\"syncFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"factIds\\\",\\\"type\\\":\\\"string[]\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"FactContentRelationship\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<object>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"browseFacts\\\":{\\\"name\\\":\\\"browseFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"query\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"boolean\\\"]}],\\\"returnType\\\":\\\"Promise<Fact[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAudit\\\":{\\\"name\\\":\\\"repairFactAudit\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactAuditAction\\\":{\\\"name\\\":\\\"repairFactAuditAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"number\\\",\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidence\\\":{\\\"name\\\":\\\"repairFactEvidence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"repairFactEvidenceAction\\\":{\\\"name\\\":\\\"repairFactEvidenceAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditResourceRepairOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaims\\\":{\\\"name\\\":\\\"recheckFactClaims\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"recheckFactClaimsAction\\\":{\\\"name\\\":\\\"recheckFactClaimsAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactAuditClaimRecheckOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatus\\\":{\\\"name\\\":\\\"updateFactEvidenceStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateFactEvidenceStatusAction\\\":{\\\"name\\\":\\\"updateFactEvidenceStatusAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"FactEvidenceStatusUpdateOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditState\\\":{\\\"name\\\":\\\"getFactAuditState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<FactAuditState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactAuditStateAction\\\":{\\\"name\\\":\\\"getFactAuditStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getFactsState\\\":{\\\"name\\\":\\\"getFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"syncFactsState\\\":{\\\"name\\\":\\\"syncFactsState\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string[]\\\",\\\"FactContentRelationship\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"createVersion\\\":{\\\"name\\\":\\\"createVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"CreateContentVersionOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getVersions\\\":{\\\"name\\\":\\\"getVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"restoreFromVersion\\\":{\\\"name\\\":\\\"restoreFromVersion\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"versionNumber\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviews\\\":{\\\"name\\\":\\\"getReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"kind\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviews\\\":{\\\"name\\\":\\\"listReviews\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getReviewRequirements\\\":{\\\"name\\\":\\\"getReviewRequirements\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"governance\\\",\\\"type\\\":\\\"ResolvedContentGovernance\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceState\\\":{\\\"name\\\":\\\"getGovernanceState\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<ContentGovernanceState>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getGovernanceStateAction\\\":{\\\"name\\\":\\\"getGovernanceStateAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listReviewProfilesAction\\\":{\\\"name\\\":\\\"listReviewProfilesAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfile\\\":{\\\"name\\\":\\\"evaluateReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<ContentReviewProfileEvaluation>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"evaluateReviewProfileAction\\\":{\\\"name\\\":\\\"evaluateReviewProfileAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"memberTypes\\\":[\\\"string\\\"]}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isReadyForReviewProfile\\\":{\\\"name\\\":\\\"isReadyForReviewProfile\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"profileKey\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<boolean>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparency\\\":{\\\"name\\\":\\\"getPublishedTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getPublishedTransparencyAction\\\":{\\\"name\\\":\\\"getPublishedTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparency\\\":{\\\"name\\\":\\\"previewTransparency\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"previewTransparencyAction\\\":{\\\"name\\\":\\\"previewTransparencyAction\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReview\\\":{\\\"name\\\":\\\"runReview\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"runReviewAction\\\":{\\\"name\\\":\\\"runReviewAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"RunContentReviewOptions\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewFacts\\\":{\\\"name\\\":\\\"reviewFacts\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"reviewSafety\\\":{\\\"name\\\":\\\"reviewSafety\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"Omit<RunContentReviewOptions, 'kind'>\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCorrections\\\":{\\\"name\\\":\\\"getCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listCorrections\\\":{\\\"name\\\":\\\"listCorrections\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrection\\\":{\\\"name\\\":\\\"issueCorrection\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"issueCorrectionAction\\\":{\\\"name\\\":\\\"issueCorrectionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"IssueContentCorrectionOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"listVersions\\\":{\\\"name\\\":\\\"listVersions\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"mutateVersionAction\\\":{\\\"name\\\":\\\"mutateVersionAction\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":true}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getCategorySegments\\\":{\\\"name\\\":\\\"getCategorySegments\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getParentCategory\\\":{\\\"name\\\":\\\"getParentCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getRootCategory\\\":{\\\"name\\\":\\\"getRootCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAncestorPaths\\\":{\\\"name\\\":\\\"getAncestorPaths\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"string[]\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"isInCategory\\\":{\\\"name\\\":\\\"isInCategory\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"categoryPath\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"includeChildren\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"boolean\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssets\\\":{\\\"name\\\":\\\"getAssets\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<Asset[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetIds\\\":{\\\"name\\\":\\\"getAssetIds\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<string[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"addAsset\\\":{\\\"name\\\":\\\"addAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"Asset\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true,\\\"default\\\":\\\"attachment\\\"},{\\\"name\\\":\\\"sortOrder\\\",\\\"type\\\":\\\"any\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"removeAsset\\\":{\\\"name\\\":\\\"removeAsset\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"assetId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false},{\\\"name\\\":\\\"relationship\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":true}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getMetadata\\\":{\\\"name\\\":\\\"getMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setMetadata\\\":{\\\"name\\\":\\\"setMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"metadata\\\",\\\"type\\\":\\\"Record<string, unknown> | null | undefined\\\",\\\"optional\\\":false,\\\"unionBranches\\\":[{\\\"type\\\":\\\"Record<string, unknown>\\\"},{\\\"type\\\":\\\"null\\\"},{\\\"type\\\":\\\"undefined\\\"}]}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"updateMetadata\\\":{\\\"name\\\":\\\"updateMetadata\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"patch\\\",\\\"type\\\":\\\"Partial<Record<string, unknown>>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Record<string, unknown>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getThumbnail\\\":{\\\"name\\\":\\\"getThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<Image | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setThumbnail\\\":{\\\"name\\\":\\\"setThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"image\\\",\\\"type\\\":\\\"Image\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<void>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"generateThumbnail\\\":{\\\"name\\\":\\\"generateThumbnail\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"ThumbnailOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Image>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"getAssetByRole\\\":{\\\"name\\\":\\\"getAssetByRole\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"role\\\",\\\"type\\\":\\\"VideoShotAssetRole\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<Asset | null>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"setScript\\\":{\\\"name\\\":\\\"setScript\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"text\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"void\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VideoShot\\\",\\\"collectionExportName\\\":\\\"VideoShotCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"validationRules\\\":[{\\\"field\\\":\\\"name\\\",\\\"rule\\\":\\\"required\\\",\\\"fieldType\\\":\\\"text\\\"}],\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"08a96b6e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoShotCollection\\\":{\\\"name\\\":\\\"videoshotcollection\\\",\\\"className\\\":\\\"VideoShotCollection\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoShotCollection\\\",\\\"collection\\\":\\\"contents\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-shots.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{},\\\"methods\\\":{\\\"findBySequence\\\":{\\\"name\\\":\\\"findBySequence\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"sequenceId\\\",\\\"type\\\":\\\"string\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findByStatus\\\":{\\\"name\\\":\\\"findByStatus\\\",\\\"async\\\":true,\\\"parameters\\\":[{\\\"name\\\":\\\"shotStatus\\\",\\\"type\\\":\\\"VideoShotStatus\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"findStandalone\\\":{\\\"name\\\":\\\"findStandalone\\\",\\\"async\\\":true,\\\"parameters\\\":[],\\\"returnType\\\":\\\"Promise<VideoShot[]>\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]}},\\\"extends\\\":\\\"SmrtCollection\\\",\\\"extendsTypeArg\\\":\\\"VideoShot\\\",\\\"exportName\\\":\\\"VideoShotCollection\\\",\\\"collectionExportName\\\":\\\"VideoShotCollectionCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"contents\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"contents\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"type\\\\\\\" TEXT,\\\\n \\\\\\\"variant\\\\\\\" TEXT,\\\\n \\\\\\\"file_key\\\\\\\" TEXT,\\\\n \\\\\\\"author\\\\\\\" TEXT,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"title\\\\\\\" TEXT,\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"body\\\\\\\" TEXT,\\\\n \\\\\\\"body_format\\\\\\\" TEXT,\\\\n \\\\\\\"publish_date\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"url\\\\\\\" TEXT,\\\\n \\\\\\\"source\\\\\\\" TEXT,\\\\n \\\\\\\"original_url\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT,\\\\n \\\\\\\"tags\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"category\\\\\\\" TEXT,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"state\\\\\\\" TEXT DEFAULT 'active',\\\\n \\\\\\\"metadata\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"thumbnail_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"fps\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"width\\\\\\\" INTEGER DEFAULT 1920,\\\\n \\\\\\\"height\\\\\\\" INTEGER DEFAULT 1080,\\\\n \\\\\\\"duration_in_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"render_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"render_progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"composition_id\\\\\\\" UUID,\\\\n \\\\\\\"position\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transition_type\\\\\\\" TEXT DEFAULT 'none',\\\\n \\\\\\\"transition_duration_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"sequence_id\\\\\\\" UUID,\\\\n \\\\\\\"scene_id\\\\\\\" UUID,\\\\n \\\\\\\"trim_before_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"trim_after_frames\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"script_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"script_word_count\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"target_duration\\\\\\\" INTEGER DEFAULT 30,\\\\n \\\\\\\"shot_status\\\\\\\" TEXT DEFAULT 'draft',\\\\n \\\\\\\"progress\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"error_message\\\\\\\" TEXT,\\\\n \\\\\\\"status_message\\\\\\\" TEXT,\\\\n \\\\\\\"video_metadata\\\\\\\" JSON,\\\\n \\\\\\\"feed_source_id\\\\\\\" UUID,\\\\n \\\\\\\"source_guid\\\\\\\" TEXT,\\\\n \\\\\\\"source_name\\\\\\\" TEXT,\\\\n \\\\\\\"source_homepage_url\\\\\\\" TEXT,\\\\n \\\\\\\"external_url\\\\\\\" TEXT,\\\\n \\\\\\\"original_published_at\\\\\\\" TIMESTAMP,\\\\n \\\\\\\"dedupe_key\\\\\\\" TEXT,\\\\n \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"source_text\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"audio_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"word_timings\\\\\\\" JSON DEFAULT '[]',\\\\n \\\\\\\"audio_metadata\\\\\\\" JSON\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"file_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"author\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"title\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"body_format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"publish_date\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"state\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"active\\\"},\\\"metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"thumbnail_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"fps\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"width\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1920},\\\"height\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":1080},\\\"duration_in_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"render_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"render_progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"composition_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"position\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transition_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"none\\\"},\\\"transition_duration_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"sequence_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"contents\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"scene_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"scenes\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"trim_before_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"trim_after_frames\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"script_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"script_word_count\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"target_duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":30},\\\"shot_status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"draft\\\"},\\\"progress\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"status_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"video_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"feed_source_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_guid\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"source_homepage_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"external_url\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"original_published_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":false},\\\"dedupe_key\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false},\\\"source_text\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"audio_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"word_timings\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]},\\\"audio_metadata\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"contents_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"contents_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"contents_tenant_id_publish_date_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"publish_date\\\"]},{\\\"name\\\":\\\"contents_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"contents_thumbnail_asset_id_idx\\\",\\\"columns\\\":[\\\"thumbnail_asset_id\\\"]},{\\\"name\\\":\\\"contents_composition_id_idx\\\",\\\"columns\\\":[\\\"composition_id\\\"]},{\\\"name\\\":\\\"contents_sequence_id_idx\\\",\\\"columns\\\":[\\\"sequence_id\\\"]},{\\\"name\\\":\\\"contents_scene_id_idx\\\",\\\"columns\\\":[\\\"scene_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]},{\\\"name\\\":\\\"contents_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]}],\\\"version\\\":\\\"08a96b6e\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"},\\\"@happyvertical/smrt-video:VideoWorkflow\\\":{\\\"name\\\":\\\"videoworkflow\\\",\\\"className\\\":\\\"VideoWorkflow\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-video:VideoWorkflow\\\",\\\"collection\\\":\\\"videoworkflows\\\",\\\"description\\\":\\\"ComfyUI workflow template for video generation\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/video/src/video-workflow.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-video\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"sqlType\\\":\\\"UUID\\\",\\\"nullable\\\":true,\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"autoFilter\\\":true,\\\"required\\\":false,\\\"autoPopulate\\\":true,\\\"nullable\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"allowSuperAdminBypass\\\":false}}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"workflowType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"custom\\\",\\\"enum\\\":[\\\"prebake\\\",\\\"broadcast\\\",\\\"lipsync\\\",\\\"postprod\\\",\\\"custom\\\"]},\\\"workflowJson\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"nodeMapping\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"estimatedTime\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":300},\\\"isActive\\\":{\\\"type\\\":\\\"boolean\\\",\\\"required\\\":false,\\\"default\\\":true},\\\"requiredModels\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]}},\\\"methods\\\":{\\\"injectParameters\\\":{\\\"name\\\":\\\"injectParameters\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"params\\\",\\\"type\\\":\\\"Record<string, unknown>\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"any\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"update\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":{\\\"skipApiCheck\\\":true},\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"conflictColumns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"]},\\\"extends\\\":\\\"SmrtObject\\\",\\\"exportName\\\":\\\"VideoWorkflow\\\",\\\"collectionExportName\\\":\\\"VideoWorkflowCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"video_workflows\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"video_workflows\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"workflow_type\\\\\\\" TEXT DEFAULT 'custom',\\\\n \\\\\\\"workflow_json\\\\\\\" TEXT,\\\\n \\\\\\\"node_mapping\\\\\\\" JSON,\\\\n \\\\\\\"estimated_time\\\\\\\" INTEGER DEFAULT 300,\\\\n \\\\\\\"is_active\\\\\\\" BOOLEAN DEFAULT TRUE,\\\\n \\\\\\\"required_models\\\\\\\" JSON DEFAULT '[]'\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"workflow_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"custom\\\"},\\\"workflow_json\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"node_mapping\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"estimated_time\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":300},\\\"is_active\\\":{\\\"type\\\":\\\"BOOLEAN\\\",\\\"notNull\\\":false,\\\"default\\\":true},\\\"required_models\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":[]}},\\\"indexes\\\":[{\\\"name\\\":\\\"video_workflows_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"video_workflows_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"video_workflows_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]}],\\\"version\\\":\\\"e836b1f6\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-video\\\"}},\\\"moduleType\\\":\\\"smrt\\\",\\\"smrtDependencies\\\":[\\\"@happyvertical/smrt-assets\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-core\\\",\\\"@happyvertical/smrt-profiles\\\",\\\"@happyvertical/smrt-tenancy\\\",\\\"@happyvertical/smrt-voice\\\"],\\\"browser\\\":{\\\"status\\\":\\\"server-only\\\",\\\"issues\\\":[\\\"#3615\\\",\\\"#3617\\\",\\\"#3624\\\",\\\"#3625\\\",\\\"#3626\\\",\\\"#3627\\\",\\\"#3628\\\"],\\\"reason\\\":\\\"documents/spider SDK graph; CJS parse error\\\",\\\"via\\\":[\\\"@happyvertical/smrt-agents\\\",\\\"@happyvertical/smrt-chat\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-images\\\",\\\"@happyvertical/smrt-jobs\\\",\\\"@happyvertical/smrt-profiles\\\",\\\"@happyvertical/smrt-reports\\\",\\\"@happyvertical/smrt-secrets\\\",\\\"@happyvertical/smrt-tenancy\\\",\\\"@happyvertical/smrt-users\\\",\\\"@happyvertical/smrt-voice\\\"]},\\\"stampsConstructors\\\":true}\"));\n","/**\n * Character Model\n *\n * Manages virtual characters for AI-powered video production.\n * Each character combines a visual identity with a voice profile.\n *\n * Renamed from PersonalityProfile. A Character is the role being played\n * (outfit, voice, branding). A Performer is the physical likeness/face DNA.\n * \"A Performer plays Characters.\"\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport type { CharacterAssetRole } from './character-asset.js';\nimport {\n assertValidVideoAssetRole,\n assertValidVideoAssetSortOrder,\n legacyVideoAssetMetaTypes,\n listCanonicalOwnedAssetIds,\n listLegacyOwnedAssetIds,\n mergeOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport { Performer } from './performer.js';\nimport { Scene } from './scene.js';\n\n/**\n * Character status\n */\nexport type CharacterStatus = 'pending' | 'ready';\n\n/**\n * Scene-specific configuration for a character\n */\nexport interface CharacterSceneConfig {\n /** Scene ID */\n sceneId: string;\n\n /** Preferred viewpoint ID (for 360° scenes) */\n viewpointId?: string;\n\n /** Anchor point ID for placement */\n anchorPointId?: string;\n\n /** Character scale in this scene */\n scale: number;\n\n /** Character position in this scene (normalized 0-1) */\n position: { x: number; y: number };\n}\n\n/**\n * Branding configuration for video overlays\n */\nexport interface BrandingConfig {\n /** Asset ID for logo overlay */\n logoAssetId?: string | null;\n\n /** Primary brand color (hex) */\n primaryColor?: string | null;\n\n /** Background color (hex) */\n backgroundColor?: string | null;\n\n /** Lower-third template name */\n lowerThirdTemplate?: string | null;\n\n /** Font family for text overlays */\n fontFamily?: string | null;\n\n /** Whether to show news ticker */\n tickerEnabled?: boolean;\n}\n\n/**\n * Character creation options\n */\nexport interface CharacterOptions extends SmrtObjectOptions {\n /** Human-readable name for the character */\n name?: string;\n\n /** Description of the character persona */\n description?: string | null;\n\n /** Asset ID of the seed image for image-to-video generation */\n imageAssetId?: string | null;\n\n /** Asset ID of pre-baked base motion video */\n baseMotionAssetId?: string | null;\n\n /** Voice profile ID for speech synthesis */\n voiceProfileId?: string | null;\n\n /** Branding configuration for video overlays */\n brandingKit?: BrandingConfig;\n\n /** Character status */\n status?: CharacterStatus;\n\n /** Linked performer for IP-Adapter face consistency */\n performerId?: string | null;\n\n /** Default scene for this character */\n defaultSceneId?: string | null;\n\n /** Scene-specific configurations */\n sceneConfigs?: CharacterSceneConfig[];\n\n /** 1-1 profile record for this character */\n profileId?: string | null;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Virtual character for AI-powered video production\n *\n * Character represents a virtual persona combining:\n * - Visual identity: Seed image for I2V (image-to-video) generation\n * - Voice identity: Link to a VoiceProfile for TTS\n * - Branding: Logo overlays, lower-thirds, colors\n *\n * @example\n * ```typescript\n * import { Character } from '@happyvertical/smrt-video';\n *\n * const character = new Character({\n * name: 'Bentley News Anchor',\n * description: 'Professional news anchor for local broadcasts',\n * imageAssetId: 'asset-123',\n * voiceProfileId: 'voice-456',\n * brandingKit: {\n * logoAssetId: 'asset-789',\n * primaryColor: '#1a73e8',\n * lowerThirdTemplate: 'news-standard',\n * tickerEnabled: true,\n * },\n * });\n * await character.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: { skipApiCheck: true },\n})\nexport class Character extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Tenant ID for multi-tenant isolation */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Human-readable name for the character */\n name: string = '';\n\n /** Description of the character persona */\n description: string | null = null;\n\n /** Asset ID of the seed image for I2V generation */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n imageAssetId: string | null = null;\n\n /** Asset ID of pre-baked base motion video */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n baseMotionAssetId: string | null = null;\n\n /** Voice profile ID for speech synthesis */\n @crossPackageRef('@happyvertical/smrt-voice:VoiceProfile')\n voiceProfileId: string | null = null;\n\n /** Branding configuration for video overlays */\n brandingKit: BrandingConfig = {};\n\n /** Character status */\n status: CharacterStatus = 'pending';\n\n /** Linked performer for IP-Adapter face consistency */\n @foreignKey(() => Performer)\n performerId: string | null = null;\n\n /** Default scene for this character */\n @foreignKey(() => Scene)\n defaultSceneId: string | null = null;\n\n /** Scene-specific configurations */\n sceneConfigs: CharacterSceneConfig[] = [];\n\n /** 1-1 profile record for this character */\n @crossPackageRef('@happyvertical/smrt-profiles:Profile')\n profileId: string | null = null;\n\n constructor(options: CharacterOptions = {}) {\n super(options);\n\n if (options.name !== undefined) this.name = options.name;\n if (options.description !== undefined)\n this.description = options.description;\n if (options.imageAssetId !== undefined)\n this.imageAssetId = options.imageAssetId;\n if (options.baseMotionAssetId !== undefined)\n this.baseMotionAssetId = options.baseMotionAssetId;\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.brandingKit !== undefined)\n this.brandingKit = options.brandingKit;\n if (options.status !== undefined) this.status = options.status;\n if (options.performerId !== undefined)\n this.performerId = options.performerId;\n if (options.defaultSceneId !== undefined)\n this.defaultSceneId = options.defaultSceneId;\n if (options.sceneConfigs !== undefined)\n this.sceneConfigs = options.sceneConfigs;\n if (options.profileId !== undefined) this.profileId = options.profileId;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n private async getCharacterAssetCollection() {\n const { CharacterOwnedAssetCollection } = await import(\n './character-assets.js'\n );\n return CharacterOwnedAssetCollection.create({ db: this.db });\n }\n\n private getLegacyFieldAssetIds(role?: CharacterAssetRole): string[] {\n if (role === 'seed-image') {\n return this.imageAssetId ? [this.imageAssetId] : [];\n }\n\n if (role === 'base-motion') {\n return this.baseMotionAssetId ? [this.baseMotionAssetId] : [];\n }\n\n if (role === 'logo') {\n return this.brandingKit.logoAssetId ? [this.brandingKit.logoAssetId] : [];\n }\n\n return [\n this.imageAssetId,\n this.baseMotionAssetId,\n this.brandingKit.logoAssetId || null,\n ].filter((assetId): assetId is string => Boolean(assetId));\n }\n\n private setLegacyFieldAssetId(\n role: CharacterAssetRole,\n assetId: string | null,\n ): boolean {\n if (role === 'seed-image') {\n if (this.imageAssetId === assetId) {\n return false;\n }\n\n this.imageAssetId = assetId;\n return true;\n }\n\n if (role === 'base-motion') {\n if (this.baseMotionAssetId === assetId) {\n return false;\n }\n\n this.baseMotionAssetId = assetId;\n return true;\n }\n\n if ((this.brandingKit.logoAssetId || null) === assetId) {\n return false;\n }\n\n this.brandingKit = {\n ...this.brandingKit,\n logoAssetId: assetId,\n };\n return true;\n }\n\n private clearLegacyFieldAssetId(\n assetId: string,\n role?: CharacterAssetRole,\n ): boolean {\n let changed = false;\n\n if ((!role || role === 'seed-image') && this.imageAssetId === assetId) {\n this.imageAssetId = null;\n changed = true;\n }\n\n if (\n (!role || role === 'base-motion') &&\n this.baseMotionAssetId === assetId\n ) {\n this.baseMotionAssetId = null;\n changed = true;\n }\n\n if (\n (!role || role === 'logo') &&\n this.brandingKit.logoAssetId === assetId\n ) {\n this.brandingKit = {\n ...this.brandingKit,\n logoAssetId: null,\n };\n changed = true;\n }\n\n return changed;\n }\n\n async getAssets(role?: CharacterAssetRole): Promise<Asset[]> {\n const canonicalAssetIds = this.id\n ? await listCanonicalOwnedAssetIds({\n tableName: 'character_assets',\n loadLinks: async () =>\n (await this.getCharacterAssetCollection()).byLeft(\n this.id as string,\n role ? { role } : {},\n ),\n })\n : [];\n const legacyFieldAssetIds = this.getLegacyFieldAssetIds(role);\n const legacyOwnedAssetIds = this.id\n ? await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'character_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('CharacterAsset'),\n })\n : [];\n\n return resolveOwnedAssets(\n this.db,\n this.tenantId,\n mergeOwnedAssetIds(\n canonicalAssetIds,\n legacyFieldAssetIds,\n legacyOwnedAssetIds,\n ),\n );\n }\n\n async getAssetByRole(role: CharacterAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n\n async addAsset(\n asset: Asset,\n role: CharacterAssetRole = 'seed-image',\n sortOrder = 0,\n ): Promise<void> {\n if (!this.id || !asset.id) {\n throw new Error('Cannot associate unsaved character or asset');\n }\n\n assertValidVideoAssetRole(role);\n assertValidVideoAssetSortOrder(sortOrder);\n\n const characterAssets = await this.getCharacterAssetCollection();\n await characterAssets.attach(this.id, asset.id, {\n role,\n sortOrder,\n tenantId: this.tenantId,\n });\n\n if (this.setLegacyFieldAssetId(role, asset.id)) {\n await this.save();\n }\n }\n\n async removeAsset(assetId: string, role?: CharacterAssetRole): Promise<void> {\n if (!this.id) {\n return;\n }\n\n const characterAssets = await this.getCharacterAssetCollection();\n await characterAssets.detach(this.id, assetId, role ? { role } : {});\n\n if (this.clearLegacyFieldAssetId(assetId, role)) {\n await this.save();\n }\n }\n\n /**\n * Check if the character has a pre-baked base motion video\n * @deprecated Use getAssetByRole('base-motion') instead\n */\n get hasBaseMotion(): boolean {\n return this.baseMotionAssetId !== null;\n }\n\n /** Check if the character is complete and ready for video generation */\n get isComplete(): boolean {\n return (\n this.imageAssetId !== null &&\n this.voiceProfileId !== null &&\n this.status === 'ready'\n );\n }\n}\n","/**\n * CharacterCollection - Collection manager for Character instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { queryGlobal } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\n\nexport class CharacterCollection extends SmrtCollection<Character> {\n static readonly _itemClass = Character;\n\n /** Find all characters belonging to a specific tenant */\n async findByTenant(tenantId: string): Promise<Character[]> {\n return (await this.list({ where: { tenantId } })) as Character[];\n }\n\n /**\n * Find all global characters (no tenant association).\n *\n * Routes through the shared tenant-global helper so it does not throw under\n * an active tenant context (an explicit `tenant_id IS NULL` filter would be\n * flagged as an isolation violation). (#1600)\n */\n async findGlobal(): Promise<Character[]> {\n return queryGlobal<Character>(this);\n }\n\n /** Find characters by performer */\n async findByPerformer(performerId: string): Promise<Character[]> {\n return (await this.list({ where: { performerId } })) as Character[];\n }\n\n /** Find characters that are ready for video generation */\n async findReady(): Promise<Character[]> {\n return (await this.list({ where: { status: 'ready' } })) as Character[];\n }\n}\n","/**\n * CompositeJob Model\n *\n * Tracks the progress of compositing a character video onto a scene background.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Scene } from './scene.js';\n\n/**\n * Composite job status\n */\nexport type CompositeJobStatus =\n | 'pending'\n | 'removing_bg'\n | 'analyzing_light'\n | 'compositing'\n | 'complete'\n | 'failed';\n\n/**\n * Composite job creation options\n */\nexport interface CompositeJobOptions extends SmrtObjectOptions {\n /** Character video asset ID (after lip-sync) */\n characterVideoAssetId?: string | null;\n\n /** Scene ID to composite onto */\n sceneId?: string | null;\n\n /** Viewpoint ID (for 360° scenes) */\n viewpointId?: string | null;\n\n /** Anchor point ID for placement */\n anchorPointId?: string | null;\n\n /** Character scale */\n scale?: number;\n\n /** Character position (normalized 0-1) */\n position?: { x: number; y: number };\n\n /** Job status */\n status?: CompositeJobStatus;\n\n /** Progress percentage (0-100) */\n progress?: number;\n\n /** Output video asset ID */\n outputAssetId?: string | null;\n\n /** Error message if failed */\n errorMessage?: string | null;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Composite job for tracking virtual production compositing\n *\n * @example\n * ```typescript\n * import { CompositeJob } from '@happyvertical/smrt-video';\n *\n * const job = new CompositeJob({\n * characterVideoAssetId: 'asset-video-123',\n * sceneId: 'scene-townhall',\n * scale: 0.8,\n * position: { x: 0.5, y: 0.7 },\n * });\n * await job.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class CompositeJob extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Character video asset ID (after lip-sync) */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n characterVideoAssetId: string | null = null;\n\n /** Scene ID to composite onto */\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Viewpoint ID (for 360° scenes) */\n viewpointId: string | null = null;\n\n /** Anchor point ID for placement */\n anchorPointId: string | null = null;\n\n /** Character scale */\n scale: number = 1.0;\n\n /** Character position (normalized 0-1) */\n position: { x: number; y: number } = { x: 0.5, y: 0.5 };\n\n /** Job status */\n status: CompositeJobStatus = 'pending';\n\n /** Progress percentage (0-100) */\n progress: number = 0;\n\n /** Output video asset ID */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n outputAssetId: string | null = null;\n\n /** Error message if failed */\n errorMessage: string | null = null;\n\n constructor(options: CompositeJobOptions = {}) {\n super(options);\n\n if (options.characterVideoAssetId !== undefined)\n this.characterVideoAssetId = options.characterVideoAssetId;\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.viewpointId !== undefined)\n this.viewpointId = options.viewpointId;\n if (options.anchorPointId !== undefined)\n this.anchorPointId = options.anchorPointId;\n if (options.scale !== undefined) this.scale = options.scale;\n if (options.position !== undefined) this.position = options.position;\n if (options.status !== undefined) this.status = options.status;\n if (options.progress !== undefined) this.progress = options.progress;\n if (options.outputAssetId !== undefined)\n this.outputAssetId = options.outputAssetId;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /** Check if the job is complete */\n get isComplete(): boolean {\n return this.status === 'complete' && this.outputAssetId !== null;\n }\n\n /** Check if the job is in progress */\n get isProcessing(): boolean {\n return (\n this.status !== 'pending' &&\n this.status !== 'complete' &&\n this.status !== 'failed'\n );\n }\n}\n","/**\n * VideoComposition Model\n *\n * The publishable output. Defines render spec (fps, width, height).\n * Contains ordered sequences with optional transitions between them.\n * Maps to Remotion <Composition /> + <TransitionSeries>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport type { VideoCompositionAssetRole } from './video-composition-asset.js';\n\n/**\n * Render status for the composition\n */\nexport type RenderStatus = 'draft' | 'rendering' | 'ready' | 'failed';\n\n/**\n * VideoComposition creation options\n */\nexport interface VideoCompositionOptions extends ContentOptions {\n /** Frames per second (e.g., 30) — everything downstream is in frames */\n fps?: number;\n\n /** Render width in pixels */\n width?: number;\n\n /** Render height in pixels */\n height?: number;\n\n /** Computed total: sum of sequences minus transition overlaps */\n durationInFrames?: number;\n\n /** Render status */\n renderStatus?: RenderStatus;\n\n /** Render progress (0-100) */\n renderProgress?: number;\n}\n\n/**\n * Publishable video composition\n *\n * VideoComposition is the top-level container for a rendered video.\n * It defines the render spec and contains ordered VideoSequences.\n *\n * @example\n * ```typescript\n * import { VideoComposition } from '@happyvertical/smrt-video';\n *\n * const composition = new VideoComposition({\n * title: 'Evening News - January 25, 2026',\n * fps: 30,\n * width: 1920,\n * height: 1080,\n * });\n * await composition.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoComposition extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Frames per second — everything downstream is in frames */\n fps: number = 30;\n\n /** Render width in pixels */\n width: number = 1920;\n\n /** Render height in pixels */\n height: number = 1080;\n\n /** Computed total: sum of sequences minus transition overlaps */\n durationInFrames: number = 0;\n\n /** Render status */\n renderStatus: RenderStatus = 'draft';\n\n /** Render progress (0-100) */\n renderProgress: number = 0;\n\n constructor(options: VideoCompositionOptions = {}) {\n super({\n ...options,\n type: 'video-composition',\n });\n\n if (options.fps !== undefined) this.fps = options.fps;\n if (options.width !== undefined) this.width = options.width;\n if (options.height !== undefined) this.height = options.height;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.renderStatus !== undefined)\n this.renderStatus = options.renderStatus;\n if (options.renderProgress !== undefined)\n this.renderProgress = options.renderProgress;\n }\n\n /** Duration in seconds */\n get durationInSeconds(): number {\n if (this.fps === 0) return 0;\n return this.durationInFrames / this.fps;\n }\n\n /** Check if the composition is ready for publishing */\n get isReady(): boolean {\n return this.renderStatus === 'ready';\n }\n\n /** Check if the composition is currently rendering */\n get isRendering(): boolean {\n return this.renderStatus === 'rendering';\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoCompositionAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoCompositionAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_composition_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoCompositionAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoCompositionAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n}\n","/**\n * VideoCompositionCollection - Collection manager for VideoComposition instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { type RenderStatus, VideoComposition } from './video-composition.js';\n\nexport class VideoCompositionCollection extends SmrtCollection<VideoComposition> {\n static readonly _itemClass = VideoComposition;\n\n /** Find compositions by render status */\n async findByRenderStatus(\n renderStatus: RenderStatus,\n ): Promise<VideoComposition[]> {\n return (await this.list({\n where: { renderStatus },\n })) as VideoComposition[];\n }\n\n /** Find compositions that are ready for publishing */\n async findReady(): Promise<VideoComposition[]> {\n return (await this.list({\n where: { renderStatus: 'ready' },\n })) as VideoComposition[];\n }\n}\n","/**\n * VideoSequence Model\n *\n * A thematic section of a video: \"top story\", \"weather\", \"interview\".\n * Groups VideoShots. Maps to Remotion <TransitionSeries.Sequence>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport type { VideoSequenceAssetRole } from './video-sequence-asset.js';\n\n/**\n * Transition type to the next sequence\n */\nexport type TransitionType = 'none' | 'fade' | 'slide' | 'wipe';\n\n/**\n * VideoSequence creation options\n */\nexport interface VideoSequenceOptions extends ContentOptions {\n /** Composition this sequence belongs to (nullable — can exist standalone) */\n compositionId?: string | null;\n\n /** Order within composition */\n position?: number;\n\n /** Computed duration: sum of shot frames */\n durationInFrames?: number;\n\n /** Transition type to the next sequence */\n transitionType?: TransitionType;\n\n /** Overlap frames with next sequence for transition */\n transitionDurationFrames?: number;\n}\n\n/**\n * Thematic section of a video composition\n *\n * VideoSequence groups VideoShots into a logical section. It can belong\n * to a VideoComposition or exist standalone (e.g., during long-video generation).\n *\n * @example\n * ```typescript\n * import { VideoSequence } from '@happyvertical/smrt-video';\n *\n * const sequence = new VideoSequence({\n * title: 'Top Story',\n * position: 0,\n * transitionType: 'fade',\n * transitionDurationFrames: 15,\n * });\n * await sequence.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoSequence extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Composition this sequence belongs to */\n @foreignKey('VideoComposition')\n compositionId: string | null = null;\n\n /** Order within composition */\n position: number = 0;\n\n /** Computed duration: sum of shot frames */\n durationInFrames: number = 0;\n\n /** Transition type to the next sequence */\n transitionType: TransitionType = 'none';\n\n /** Overlap frames with next sequence for transition */\n transitionDurationFrames: number = 0;\n\n constructor(options: VideoSequenceOptions = {}) {\n super({\n ...options,\n type: 'video-sequence',\n });\n\n if (options.compositionId !== undefined)\n this.compositionId = options.compositionId;\n if (options.position !== undefined) this.position = options.position;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.transitionType !== undefined)\n this.transitionType = options.transitionType;\n if (options.transitionDurationFrames !== undefined)\n this.transitionDurationFrames = options.transitionDurationFrames;\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoSequenceAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoSequenceAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_sequence_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoSequenceAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoSequenceAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n}\n","/**\n * VideoSequenceCollection - Collection manager for VideoSequence instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoSequence } from './video-sequence.js';\n\nexport class VideoSequenceCollection extends SmrtCollection<VideoSequence> {\n static readonly _itemClass = VideoSequence;\n\n /** Find sequences belonging to a composition, ordered by position */\n async findByComposition(compositionId: string): Promise<VideoSequence[]> {\n return (await this.list({\n where: { compositionId },\n orderBy: 'position ASC',\n })) as VideoSequence[];\n }\n\n /** Find standalone sequences (not in any composition) */\n async findStandalone(): Promise<VideoSequence[]> {\n return (await this.list({\n where: { compositionId: null },\n })) as VideoSequence[];\n }\n}\n","/**\n * VideoShot Model\n *\n * The atomic video generation unit. One or more characters + one scene + one pipeline run.\n * This is what ComfyUI produces. Maps to Remotion <Sequence><Video /></Sequence>.\n *\n * Design principle: store frames, compute seconds. seconds = frames / fps.\n */\n\nimport type { Asset } from '@happyvertical/smrt-assets';\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport type { WordTiming } from '@happyvertical/smrt-voice';\nimport {\n legacyVideoAssetMetaTypes,\n listLegacyOwnedAssetIds,\n resolveOwnedAssets,\n} from './owned-asset-utils.js';\nimport { Scene } from './scene.js';\nimport { VideoSequence } from './video-sequence.js';\nimport type { VideoShotAssetRole } from './video-shot-asset.js';\n\n/**\n * Video shot status\n */\nexport type VideoShotStatus =\n | 'draft'\n | 'queued'\n | 'processing'\n | 'ready'\n | 'failed'\n | 'published';\n\n/**\n * Video metadata\n */\nexport interface VideoMetadata {\n /** Actual duration in seconds */\n duration?: number;\n\n /** Video resolution (e.g., \"1920x1080\") */\n resolution?: string;\n\n /** Aspect ratio (e.g., \"16:9\", \"9:16\") */\n aspectRatio?: string;\n\n /** Video codec (e.g., \"h264\", \"h265\") */\n codec?: string;\n\n /** Frames per second */\n fps?: number;\n\n /** File size in bytes */\n fileSize?: number;\n\n /** Word timing data from TTS for lip-sync */\n wordTimings?: WordTiming[];\n\n /** ComfyUI prompt ID for tracking */\n comfyPromptId?: string;\n}\n\n/**\n * Video shot creation options\n */\nexport interface VideoShotOptions extends ContentOptions {\n /** Sequence this shot belongs to (nullable — shots can exist standalone) */\n sequenceId?: string | null;\n\n /** Scene for this shot (nullable) */\n sceneId?: string | null;\n\n /** Order within sequence */\n position?: number;\n\n /** Actual frame count of generated clip */\n durationInFrames?: number;\n\n /** Frames to skip at start (overlap handling) */\n trimBeforeFrames?: number;\n\n /** Frames to skip at end */\n trimAfterFrames?: number;\n\n /** Script text to be spoken */\n scriptText?: string;\n\n /** Word count in the script */\n scriptWordCount?: number;\n\n /** Target duration in seconds */\n targetDuration?: number;\n\n /** Video generation status */\n shotStatus?: VideoShotStatus;\n\n /** Generation progress (0-100) */\n progress?: number;\n\n /** Error message if status is 'failed' */\n errorMessage?: string | null;\n\n /** Detailed status message for progress tracking */\n statusMessage?: string | null;\n\n /** Video metadata */\n videoMetadata?: VideoMetadata;\n}\n\n/**\n * Atomic video generation unit\n *\n * VideoShot represents a single pipeline run producing one video clip.\n * It can belong to a VideoSequence (for multi-segment long videos) or\n * exist standalone. Characters are linked via the VideoShotCharacter join model.\n *\n * @example\n * ```typescript\n * import { VideoShot } from '@happyvertical/smrt-video';\n *\n * const shot = new VideoShot({\n * scriptText: 'Welcome to the evening news.',\n * targetDuration: 30,\n * title: 'Evening News - Opening',\n * });\n * await shot.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoShot extends Content { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /** Sequence this shot belongs to */\n @foreignKey(() => VideoSequence)\n sequenceId: string | null = null;\n\n /** Scene for this shot */\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Order within sequence */\n position: number = 0;\n\n /** Actual frame count of generated clip */\n durationInFrames: number = 0;\n\n /** Frames to skip at start (overlap handling) */\n trimBeforeFrames: number = 0;\n\n /** Frames to skip at end */\n trimAfterFrames: number = 0;\n\n /** Script text to be spoken */\n scriptText: string = '';\n\n /** Word count in the script */\n scriptWordCount: number = 0;\n\n /** Target duration in seconds */\n targetDuration: number = 30;\n\n /** Video generation status */\n shotStatus: VideoShotStatus = 'draft';\n\n /** Generation progress (0-100) */\n progress: number = 0;\n\n /** Error message if status is 'failed' */\n errorMessage: string | null = null;\n\n /** Detailed status message for progress tracking */\n statusMessage: string | null = null;\n\n /** Video metadata (duration, resolution, etc.) */\n videoMetadata: VideoMetadata = {};\n\n constructor(options: VideoShotOptions = {}) {\n super({\n ...options,\n type: 'video-shot',\n });\n\n if (options.sequenceId !== undefined) this.sequenceId = options.sequenceId;\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.position !== undefined) this.position = options.position;\n if (options.durationInFrames !== undefined)\n this.durationInFrames = options.durationInFrames;\n if (options.trimBeforeFrames !== undefined)\n this.trimBeforeFrames = options.trimBeforeFrames;\n if (options.trimAfterFrames !== undefined)\n this.trimAfterFrames = options.trimAfterFrames;\n if (options.scriptText !== undefined) {\n this.scriptText = options.scriptText;\n this.scriptWordCount = this.scriptText\n .split(/\\s+/)\n .filter(Boolean).length;\n }\n if (options.scriptWordCount !== undefined)\n this.scriptWordCount = options.scriptWordCount;\n if (options.targetDuration !== undefined)\n this.targetDuration = options.targetDuration;\n if (options.shotStatus !== undefined) this.shotStatus = options.shotStatus;\n if (options.progress !== undefined) this.progress = options.progress;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.statusMessage !== undefined)\n this.statusMessage = options.statusMessage;\n if (options.videoMetadata !== undefined)\n this.videoMetadata = options.videoMetadata;\n }\n\n /** Estimate speech duration based on word count (2.7 words/sec) */\n get estimatedDuration(): number {\n return this.scriptWordCount / 2.7;\n }\n\n /** Check if the script length matches target duration (+/- 15%) */\n get isScriptLengthValid(): boolean {\n const estimated = this.estimatedDuration;\n const tolerance = this.targetDuration * 0.15;\n return (\n estimated >= this.targetDuration - tolerance &&\n estimated <= this.targetDuration + tolerance\n );\n }\n\n /** Get the recommended word count for target duration */\n get recommendedWordCount(): { min: number; max: number; target: number } {\n const wordsPerSecond = 2.7;\n const target = Math.round(this.targetDuration * wordsPerSecond);\n const tolerance = Math.round(target * 0.15);\n return {\n min: target - tolerance,\n max: target + tolerance,\n target,\n };\n }\n\n /** Effective frame count after trimming */\n get effectiveFrames(): number {\n return Math.max(\n 0,\n this.durationInFrames - this.trimBeforeFrames - this.trimAfterFrames,\n );\n }\n\n /** Check if video generation is in progress */\n get isGenerating(): boolean {\n return this.shotStatus === 'queued' || this.shotStatus === 'processing';\n }\n\n /** Check if video is ready for publishing */\n get isReady(): boolean {\n return this.shotStatus === 'ready';\n }\n\n async getAssets(relationship?: string): Promise<Asset[]>;\n async getAssets(role?: VideoShotAssetRole): Promise<Asset[]>;\n async getAssets(relationship?: string): Promise<Asset[]> {\n const canonicalAssets = await super.getAssets(relationship);\n if (!this.id) {\n return canonicalAssets;\n }\n\n const role = relationship as VideoShotAssetRole | undefined;\n const legacyAssets = await resolveOwnedAssets(\n this.db,\n this.tenantId,\n await listLegacyOwnedAssetIds({\n db: this.db,\n ownerColumn: 'video_shot_id',\n ownerId: this.id,\n role,\n metaTypes: legacyVideoAssetMetaTypes('VideoShotAsset'),\n }),\n );\n\n return [\n ...canonicalAssets,\n ...legacyAssets.filter(\n (asset) =>\n asset.id &&\n !canonicalAssets.some(\n (canonicalAsset) => canonicalAsset.id === asset.id,\n ),\n ),\n ];\n }\n\n async getAssetByRole(role: VideoShotAssetRole): Promise<Asset | null> {\n const assets = await this.getAssets(role);\n return assets[0] || null;\n }\n\n /** Update script text and recalculate word count */\n setScript(text: string): void {\n this.scriptText = text;\n this.scriptWordCount = text.split(/\\s+/).filter(Boolean).length;\n }\n}\n","/**\n * VideoShotCharacter - Join model linking VideoShots to Characters\n *\n * Replaces the old single personalityProfileId FK on VideoContent.\n * Supports multiple characters per shot with role and ordering.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { foreignKey, SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\nimport { VideoShot } from './video-shot.js';\n\n/**\n * Character role within a shot\n */\nexport type VideoShotCharacterRole = 'primary' | 'secondary' | 'background';\n\n/**\n * VideoShotCharacter creation options\n */\nexport interface VideoShotCharacterOptions extends SmrtObjectOptions {\n /** Video shot ID */\n videoShotId: string;\n\n /** Character ID */\n characterId: string;\n\n /** Role of the character in this shot */\n role?: VideoShotCharacterRole;\n\n /** Order/layer position within the shot */\n position?: number;\n\n /** Tenant ID for multi-tenant isolation */\n tenantId?: string | null;\n}\n\n/**\n * Join model linking a VideoShot to a Character\n *\n * @example\n * ```typescript\n * import { VideoShotCharacter } from '@happyvertical/smrt-video';\n *\n * const link = new VideoShotCharacter({\n * videoShotId: 'shot-123',\n * characterId: 'char-456',\n * role: 'primary',\n * position: 0,\n * });\n * await link.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'delete'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: true,\n})\nexport class VideoShotCharacter extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /** Video shot ID */\n @foreignKey(() => VideoShot, { required: true })\n videoShotId: string = '';\n\n /** Character ID */\n @foreignKey(() => Character, { required: true })\n characterId: string = '';\n\n /** Role of the character in this shot */\n role: VideoShotCharacterRole = 'primary';\n\n /** Order/layer position within the shot */\n position: number = 0;\n\n constructor(options: VideoShotCharacterOptions) {\n super(options);\n\n this.videoShotId = options.videoShotId;\n this.characterId = options.characterId;\n if (options.role !== undefined) this.role = options.role;\n if (options.position !== undefined) this.position = options.position;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","/**\n * VideoShotCharacterCollection - Collection manager for VideoShotCharacter instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoShotCharacter } from './video-shot-character.js';\n\nexport class VideoShotCharacterCollection extends SmrtCollection<VideoShotCharacter> {\n static readonly _itemClass = VideoShotCharacter;\n\n /** Find all character links for a shot, ordered by position */\n async findByShot(videoShotId: string): Promise<VideoShotCharacter[]> {\n return (await this.list({\n where: { videoShotId },\n orderBy: 'position ASC',\n })) as VideoShotCharacter[];\n }\n\n /** Find all shot links for a character */\n async findByCharacter(characterId: string): Promise<VideoShotCharacter[]> {\n return (await this.list({\n where: { characterId },\n })) as VideoShotCharacter[];\n }\n}\n","/**\n * VideoShotCollection - Collection manager for VideoShot instances\n */\n\nimport { SmrtCollection } from '@happyvertical/smrt-core';\nimport { VideoShot, type VideoShotStatus } from './video-shot.js';\n\nexport class VideoShotCollection extends SmrtCollection<VideoShot> {\n static readonly _itemClass = VideoShot;\n\n /** Find shots belonging to a specific sequence, ordered by position */\n async findBySequence(sequenceId: string): Promise<VideoShot[]> {\n return (await this.list({\n where: { sequenceId },\n orderBy: 'position ASC',\n })) as VideoShot[];\n }\n\n /** Find shots by status */\n async findByStatus(shotStatus: VideoShotStatus): Promise<VideoShot[]> {\n return (await this.list({ where: { shotStatus } })) as VideoShot[];\n }\n\n /** Find standalone shots (not in any sequence) */\n async findStandalone(): Promise<VideoShot[]> {\n return (await this.list({ where: { sequenceId: null } })) as VideoShot[];\n }\n}\n","/**\n * Video Workflow Model\n *\n * Manages ComfyUI workflow templates for video generation.\n */\n\nimport { createLogger } from '@happyvertical/logger';\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\n\nconst logger = createLogger({ level: 'info' });\n\n/**\n * Node mapping for dynamic parameter injection\n */\nexport interface NodeMapping {\n /**\n * Node ID for anchor seed image input\n */\n seedImage?: string;\n\n /**\n * Node ID for TTS audio input\n */\n audioFile?: string;\n\n /**\n * Node ID for base motion video input\n */\n baseVideo?: string;\n\n /**\n * Node ID for final video output\n */\n outputVideo?: string;\n\n /**\n * Node ID for text prompt input\n */\n prompt?: string;\n\n /**\n * Node ID for negative prompt input\n */\n negativePrompt?: string;\n\n /**\n * Node ID for sampler/scheduler settings\n */\n sampler?: string;\n\n /**\n * Node ID for video duration control\n */\n duration?: string;\n\n /**\n * Additional custom node mappings\n */\n [key: string]: string | undefined;\n}\n\n/**\n * Workflow type classification\n */\nexport type WorkflowType =\n | 'prebake'\n | 'broadcast'\n | 'lipsync'\n | 'postprod'\n | 'custom';\n\n/**\n * Video workflow creation options\n */\nexport interface VideoWorkflowOptions extends SmrtObjectOptions {\n /**\n * Human-readable name for the workflow\n */\n name?: string;\n\n /**\n * Description of what this workflow does\n */\n description?: string | null;\n\n /**\n * Workflow type classification\n * @default 'custom'\n */\n workflowType?: WorkflowType;\n\n /**\n * ComfyUI API format JSON\n */\n workflowJson?: object | null;\n\n /**\n * Node ID mappings for dynamic parameter injection\n */\n nodeMapping?: NodeMapping;\n\n /**\n * Estimated processing time in seconds\n */\n estimatedTime?: number;\n\n /**\n * Whether this workflow is active/usable\n * @default true\n */\n isActive?: boolean;\n\n /**\n * ComfyUI models required by this workflow\n */\n requiredModels?: string[];\n\n /**\n * Tenant ID for multi-tenant isolation\n */\n tenantId?: string | null;\n}\n\n/**\n * ComfyUI workflow template for video generation\n *\n * VideoWorkflow stores ComfyUI workflow definitions with node mappings\n * for dynamic parameter injection. This allows the Histrio agent to\n * inject anchor images, audio, and other inputs at runtime.\n *\n * @example\n * ```typescript\n * import { VideoWorkflow } from '@happyvertical/smrt-video';\n *\n * const workflow = new VideoWorkflow({\n * name: 'Wan 2.6 + EchoMimic',\n * description: 'Full broadcast generation with lip-sync',\n * workflowType: 'broadcast',\n * workflowJson: comfyuiWorkflowJson,\n * nodeMapping: {\n * seedImage: '1',\n * audioFile: '5',\n * outputVideo: '12',\n * },\n * estimatedTime: 600, // 10 minutes\n * requiredModels: ['wan_2.6_t2v_14b_fp8', 'echomimic_v2'],\n * });\n * await workflow.save();\n * ```\n */\n@TenantScoped({ mode: 'optional' })\n@smrt({\n tableStrategy: 'sti',\n api: {\n include: ['list', 'get', 'create', 'update'],\n },\n mcp: {\n include: ['list', 'get'],\n },\n cli: { skipApiCheck: true },\n})\nexport class VideoWorkflow extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n /**\n * Tenant ID for multi-tenant isolation\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Human-readable name for the workflow\n */\n name: string = '';\n\n /**\n * Description of what this workflow does\n */\n description: string | null = null;\n\n /**\n * Workflow type classification\n * - prebake: Pre-generate base motion from seed image\n * - broadcast: Full video generation pipeline\n * - lipsync: Lip-sync only (requires base video + audio)\n * - postprod: Post-production overlays and effects\n * - custom: User-defined workflow\n */\n workflowType: WorkflowType = 'custom';\n\n /**\n * ComfyUI API format JSON\n * This is the workflow definition that will be sent to ComfyUI\n */\n workflowJson: object | null = null;\n\n /**\n * Node ID mappings for dynamic parameter injection\n * Maps semantic names to ComfyUI node IDs\n */\n nodeMapping: NodeMapping = {};\n\n /**\n * Estimated processing time in seconds\n * Used for progress estimation\n */\n estimatedTime: number = 300;\n\n /**\n * Whether this workflow is active/usable\n */\n isActive: boolean = true;\n\n /**\n * ComfyUI models required by this workflow\n * Used for validation before queuing\n */\n requiredModels: string[] = [];\n\n constructor(options: VideoWorkflowOptions = {}) {\n super(options);\n\n if (options.name !== undefined) this.name = options.name;\n if (options.description !== undefined)\n this.description = options.description;\n if (options.workflowType !== undefined)\n this.workflowType = options.workflowType;\n if (options.workflowJson !== undefined)\n this.workflowJson = options.workflowJson;\n if (options.nodeMapping !== undefined)\n this.nodeMapping = options.nodeMapping;\n if (options.estimatedTime !== undefined)\n this.estimatedTime = options.estimatedTime;\n if (options.isActive !== undefined) this.isActive = options.isActive;\n if (options.requiredModels !== undefined)\n this.requiredModels = options.requiredModels;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if the workflow has all required node mappings\n */\n get hasRequiredMappings(): boolean {\n const required = ['outputVideo'];\n return required.every((key) => this.nodeMapping[key] !== undefined);\n }\n\n /**\n * Get a copy of the workflow JSON with injected parameters\n *\n * Parameter injection follows ComfyUI node structure conventions:\n * - seedImage, audioFile, baseVideo → node.inputs.image (file path)\n * - prompt → node.inputs.text (string)\n * - Other parameters → node.inputs[paramKey]\n *\n * @param params - Key-value pairs of parameters to inject\n * @returns Modified workflow JSON or null if no workflowJson set\n */\n injectParameters(params: Record<string, unknown>): object | null {\n if (!this.workflowJson) return null;\n\n const workflow = JSON.parse(JSON.stringify(this.workflowJson));\n const warnings: string[] = [];\n\n for (const [paramKey, nodeId] of Object.entries(this.nodeMapping)) {\n if (nodeId && params[paramKey] !== undefined) {\n // Validate nodeId exists in workflow\n if (!workflow[nodeId]) {\n warnings.push(\n `Node mapping '${paramKey}' references node '${nodeId}' which does not exist in workflow`,\n );\n continue;\n }\n\n // Inject parameter into the node\n workflow[nodeId].inputs = workflow[nodeId].inputs || {};\n\n // Map parameters to ComfyUI node input field names\n if (\n paramKey === 'seedImage' ||\n paramKey === 'audioFile' ||\n paramKey === 'baseVideo'\n ) {\n workflow[nodeId].inputs.image = params[paramKey];\n } else if (paramKey === 'prompt') {\n workflow[nodeId].inputs.text = params[paramKey];\n } else {\n workflow[nodeId].inputs[paramKey] = params[paramKey];\n }\n }\n }\n\n // Log warnings if any (in development)\n if (warnings.length > 0 && process.env.NODE_ENV !== 'production') {\n logger.warn(\n `[VideoWorkflow] Parameter injection warnings:\\n${warnings.join('\\n')}`,\n );\n }\n\n return workflow;\n }\n}\n","/**\n * CharacterAsset - legacy STI asset subclass for Character-owned assets\n *\n * @deprecated Character owned assets are now modeled canonically through\n * `CharacterOwnedAsset` join rows in `character_assets`. This legacy subtype\n * remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Character } from './character.js';\n\n/** Roles a character asset can play */\nexport type CharacterAssetRole = 'seed-image' | 'base-motion' | 'logo';\n\nexport interface CharacterAssetOptions extends AssetOptions {\n /** Character this asset belongs to */\n characterId?: string | null;\n /** Role of this asset for the character */\n role?: CharacterAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class CharacterAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Character)\n characterId: string | null = null;\n\n role: CharacterAssetRole = 'seed-image';\n\n constructor(options: CharacterAssetOptions = {}) {\n super(options);\n if (options.characterId !== undefined)\n this.characterId = options.characterId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Character } from './character.js';\nimport type { CharacterAssetRole } from './character-asset.js';\n\nexport interface CharacterOwnedAssetOptions extends SmrtObjectOptions {\n characterId?: string;\n assetId?: string;\n role?: CharacterAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'CharacterOwnedAsset',\n tableName: 'character_assets',\n conflictColumns: ['character_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class CharacterOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Character, { required: true })\n characterId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: CharacterAssetRole = 'seed-image';\n\n @field()\n sortOrder = 0;\n\n constructor(options: CharacterOwnedAssetOptions = {}) {\n super(options);\n if (options.characterId) this.characterId = options.characterId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { CharacterOwnedAsset } from './character-owned-asset.js';\n\nexport interface CharacterOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class CharacterOwnedAssetCollection extends SmrtJunction<CharacterOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = CharacterOwnedAsset;\n protected leftField = 'characterId';\n protected rightField = 'assetId';\n}\n","/**\n * PerformerAsset - legacy STI asset subclass for Performer-owned assets\n *\n * @deprecated Performer owned assets are now modeled canonically through\n * `PerformerOwnedAsset` join rows in `performer_assets`. This legacy subtype\n * remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Performer } from './performer.js';\n\n/** Roles a performer asset can play */\nexport type PerformerAssetRole = 'reference' | 'seed';\n\nexport interface PerformerAssetOptions extends AssetOptions {\n /** Performer this asset belongs to */\n performerId?: string | null;\n /** Role of this asset for the performer */\n role?: PerformerAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class PerformerAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Performer)\n performerId: string | null = null;\n\n role: PerformerAssetRole = 'reference';\n\n constructor(options: PerformerAssetOptions = {}) {\n super(options);\n if (options.performerId !== undefined)\n this.performerId = options.performerId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Performer } from './performer.js';\nimport type { PerformerAssetRole } from './performer-asset.js';\n\nexport interface PerformerOwnedAssetOptions extends SmrtObjectOptions {\n performerId?: string;\n assetId?: string;\n role?: PerformerAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'PerformerOwnedAsset',\n tableName: 'performer_assets',\n conflictColumns: ['performer_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class PerformerOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Performer, { required: true })\n performerId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: PerformerAssetRole = 'reference';\n\n @field()\n sortOrder = 0;\n\n constructor(options: PerformerOwnedAssetOptions = {}) {\n super(options);\n if (options.performerId) this.performerId = options.performerId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { PerformerOwnedAsset } from './performer-owned-asset.js';\n\nexport interface PerformerOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class PerformerOwnedAssetCollection extends SmrtJunction<PerformerOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = PerformerOwnedAsset;\n protected leftField = 'performerId';\n protected rightField = 'assetId';\n}\n","/**\n * SceneAsset - legacy STI asset subclass for Scene-owned assets\n *\n * @deprecated Scene owned assets are now modeled canonically through\n * `SceneOwnedAsset` join rows in `scene_assets`. This legacy subtype remains\n * readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { Scene } from './scene.js';\n\n/** Roles a scene asset can play */\nexport type SceneAssetRole = 'source' | 'viewpoint-extract' | 'env-map';\n\nexport interface SceneAssetOptions extends AssetOptions {\n /** Scene this asset belongs to */\n sceneId?: string | null;\n /** Role of this asset for the scene */\n role?: SceneAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class SceneAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n role: SceneAssetRole = 'source';\n\n constructor(options: SceneAssetOptions = {}) {\n super(options);\n if (options.sceneId !== undefined) this.sceneId = options.sceneId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","import type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport {\n crossPackageRef,\n field,\n foreignKey,\n SmrtObject,\n smrt,\n} from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport { Scene } from './scene.js';\nimport type { SceneAssetRole } from './scene-asset.js';\n\nexport interface SceneOwnedAssetOptions extends SmrtObjectOptions {\n sceneId?: string;\n assetId?: string;\n role?: SceneAssetRole;\n sortOrder?: number;\n tenantId?: string | null;\n}\n\n@TenantScoped({ mode: 'optional' })\n@smrt({\n name: 'SceneOwnedAsset',\n tableName: 'scene_assets',\n conflictColumns: ['scene_id', 'asset_id', 'role'],\n api: false,\n mcp: false,\n cli: false,\n})\nexport class SceneOwnedAsset extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n @foreignKey(() => Scene, { required: true })\n sceneId = '';\n\n @crossPackageRef('@happyvertical/smrt-assets:Asset', { required: true })\n assetId = '';\n\n @field({ required: true })\n role: SceneAssetRole = 'source';\n\n @field()\n sortOrder = 0;\n\n constructor(options: SceneOwnedAssetOptions = {}) {\n super(options);\n if (options.sceneId) this.sceneId = options.sceneId;\n if (options.assetId) this.assetId = options.assetId;\n if (options.role !== undefined) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n}\n","import type { SmrtCollectionOptions } from '@happyvertical/smrt-core';\nimport { SmrtJunction, smrt } from '@happyvertical/smrt-core';\nimport { SceneOwnedAsset } from './scene-owned-asset.js';\n\nexport interface SceneOwnedAssetCollectionOptions\n extends SmrtCollectionOptions {}\n\n@smrt({\n api: false,\n mcp: false,\n cli: false,\n})\nexport class SceneOwnedAssetCollection extends SmrtJunction<SceneOwnedAsset> { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n static readonly _itemClass = SceneOwnedAsset;\n protected leftField = 'sceneId';\n protected rightField = 'assetId';\n}\n","/**\n * VideoCompositionAsset - legacy STI asset subclass for VideoComposition-owned assets\n *\n * @deprecated VideoComposition now uses inherited Content asset helpers backed\n * by `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoComposition } from './video-composition.js';\n\n/** Roles a video composition asset can play */\nexport type VideoCompositionAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoCompositionAssetOptions extends AssetOptions {\n /** VideoComposition this asset belongs to */\n videoCompositionId?: string | null;\n /** Role of this asset for the composition */\n role?: VideoCompositionAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoCompositionAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoComposition)\n videoCompositionId: string | null = null;\n\n role: VideoCompositionAssetRole = 'video';\n\n constructor(options: VideoCompositionAssetOptions = {}) {\n super(options);\n if (options.videoCompositionId !== undefined)\n this.videoCompositionId = options.videoCompositionId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","/**\n * VideoSequenceAsset - legacy STI asset subclass for VideoSequence-owned assets\n *\n * @deprecated VideoSequence now uses inherited Content asset helpers backed by\n * `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoSequence } from './video-sequence.js';\n\n/** Roles a video sequence asset can play */\nexport type VideoSequenceAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoSequenceAssetOptions extends AssetOptions {\n /** VideoSequence this asset belongs to */\n videoSequenceId?: string | null;\n /** Role of this asset for the sequence */\n role?: VideoSequenceAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoSequenceAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoSequence)\n videoSequenceId: string | null = null;\n\n role: VideoSequenceAssetRole = 'video';\n\n constructor(options: VideoSequenceAssetOptions = {}) {\n super(options);\n if (options.videoSequenceId !== undefined)\n this.videoSequenceId = options.videoSequenceId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n","/**\n * VideoShotAsset - legacy STI asset subclass for VideoShot-owned assets\n *\n * @deprecated VideoShot now uses inherited Content asset helpers backed by\n * `content_assets`. This legacy subtype remains readable during migration.\n */\n\nimport { Asset, type AssetOptions } from '@happyvertical/smrt-assets';\nimport { foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { VideoShot } from './video-shot.js';\n\n/** Roles a video shot asset can play */\nexport type VideoShotAssetRole = 'video' | 'audio' | 'thumbnail';\n\nexport interface VideoShotAssetOptions extends AssetOptions {\n /** VideoShot this asset belongs to */\n videoShotId?: string | null;\n /** Role of this asset for the shot */\n role?: VideoShotAssetRole;\n}\n\n@smrt({\n api: { include: ['list', 'get', 'create', 'update', 'delete'] },\n mcp: { include: ['list', 'get'] },\n cli: { skipApiCheck: true },\n})\nexport class VideoShotAsset extends Asset { static __smrtPackage__ = \"@happyvertical/smrt-video\";\n @foreignKey(() => VideoShot)\n videoShotId: string | null = null;\n\n role: VideoShotAssetRole = 'video';\n\n constructor(options: VideoShotAssetOptions = {}) {\n super(options);\n if (options.videoShotId !== undefined)\n this.videoShotId = options.videoShotId;\n if (options.role !== undefined) this.role = options.role;\n }\n}\n"],"mappings":"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"}