@happyvertical/smrt-video 0.57.38 → 0.57.40

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-sequence.ts","../src/video-shot.ts","../src/recipes.ts","../src/video-compositions.ts","../src/video-sequences.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.38\\\",\\\"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\\\":\\\"What the character is called.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the character is called.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who this character is and how they come across on screen.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who this character is and how they come across on screen.\\\"}},\\\"imageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"description\\\":\\\"The picture the character is built from.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The picture the character is built from.\\\"}},\\\"baseMotionAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\",\\\"description\\\":\\\"The voice the character speaks with.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The voice the character speaks with.\\\"}},\\\"brandingKit\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"description\\\":\\\"Whether the character is ready to appear in shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether the character is ready to appear in shots.\\\"},\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"defaultSceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\",\\\"description\\\":\\\"The scene the character usually appears in.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The scene the character usually appears in.\\\"}},\\\"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\\\":\\\"What the scene is called.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the scene is called.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"What the scene shows.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the scene shows.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"description\\\":\\\"The picture or video the scene is made from.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The picture or video the scene is made from.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"image\\\",\\\"description\\\":\\\"What kind of file the scene is made from: a picture, a video or a wrap-around panorama.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of file the scene is made from: a picture, a video or a wrap-around panorama.\\\"},\\\"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\\\",\\\"description\\\":\\\"Whether the scene is ready to be used in shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether the scene is ready to be used in shots.\\\"},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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,\\\"description\\\":\\\"How many frames of video play each second, usually 30.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How many frames of video play each second, usually 30.\\\"}},\\\"width\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1920,\\\"description\\\":\\\"The width of the finished video in pixels, such as 1920.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The width of the finished video in pixels, such as 1920.\\\"}},\\\"height\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1080,\\\"description\\\":\\\"The height of the finished video in pixels, such as 1080.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The height of the finished video in pixels, such as 1080.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the whole video runs, counted in frames. It adds up from the sequences.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the whole video runs, counted in frames. It adds up from the sequences.\\\"}},\\\"renderStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the finished video stands: draft, rendering, ready or failed.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the finished video stands: draft, rendering, ready or failed.\\\"},\\\"enum\\\":[\\\"draft\\\",\\\"rendering\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"renderProgress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How far along the render is, from 0 to 100.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How far along the render is, from 0 to 100.\\\"}}},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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\\\",\\\"description\\\":\\\"The video this sequence is part of.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The video this sequence is part of.\\\"}},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"The order of this sequence within its video, counting from the start.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The order of this sequence within its video, counting from the start.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the sequence runs in frames. It adds up from its shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the sequence runs in frames. It adds up from its shots.\\\"}},\\\"transitionType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"none\\\",\\\"description\\\":\\\"How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.\\\"},\\\"enum\\\":[\\\"none\\\",\\\"fade\\\",\\\"slide\\\",\\\"wipe\\\"]},\\\"transitionDurationFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How many frames the hand-over to the next sequence overlaps.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How many frames the hand-over to the next sequence overlaps.\\\"}}},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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\\\",\\\"description\\\":\\\"The sequence this shot belongs to.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The sequence this shot belongs to.\\\"}},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\",\\\"description\\\":\\\"The background scene this shot is filmed in.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The background scene this shot is filmed in.\\\"}},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"The order of this shot within its sequence, counting from the start.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The order of this shot within its sequence, counting from the start.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the finished clip runs in frames.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the finished clip runs in frames.\\\"}},\\\"trimBeforeFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimAfterFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"scriptText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"The words spoken in this shot.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The words spoken in this shot.\\\"}},\\\"scriptWordCount\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"targetDuration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30,\\\"description\\\":\\\"How long you want the shot to be, in seconds.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long you want the shot to be, in seconds.\\\"}},\\\"shotStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the shot stands: draft, queued, processing, ready, failed or published.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the shot stands: draft, queued, processing, ready, failed or published.\\\"},\\\"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\\\",\\\"recipes\\\":[{\\\"id\\\":\\\"video.library\\\",\\\"className\\\":\\\"VideoLibraryRecipe\\\",\\\"label\\\":\\\"Video\\\",\\\"summary\\\":\\\"Plan each video as sequences and shots, with the characters and scenes that appear in it.\\\",\\\"synonyms\\\":[\\\"videos\\\",\\\"video production\\\",\\\"video scripts\\\",\\\"shots\\\",\\\"storyboard\\\",\\\"characters and scenes\\\"],\\\"models\\\":[\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"@happyvertical/smrt-video:Character\\\",\\\"@happyvertical/smrt-video:Scene\\\"],\\\"nav\\\":[{\\\"label\\\":\\\"Videos\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"icon\\\":\\\"layers\\\",\\\"description\\\":\\\"Each finished video you are putting together.\\\",\\\"noun\\\":\\\"video\\\"},{\\\"label\\\":\\\"Sequences\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"icon\\\":\\\"folder\\\",\\\"description\\\":\\\"The parts of a video, in the order they play.\\\",\\\"noun\\\":\\\"sequence\\\"},{\\\"label\\\":\\\"Shots\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"icon\\\":\\\"fileText\\\",\\\"description\\\":\\\"Each clip in a sequence, with the words spoken in it.\\\",\\\"noun\\\":\\\"shot\\\"},{\\\"label\\\":\\\"Characters\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:Character\\\",\\\"icon\\\":\\\"users\\\",\\\"description\\\":\\\"The on-screen presenters, with their look and voice.\\\",\\\"noun\\\":\\\"character\\\"},{\\\"label\\\":\\\"Scenes\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:Scene\\\",\\\"icon\\\":\\\"home\\\",\\\"description\\\":\\\"The backgrounds your characters appear in front of.\\\",\\\"noun\\\":\\\"scene\\\"}],\\\"requires\\\":[],\\\"section\\\":{\\\"id\\\":\\\"publish\\\",\\\"label\\\":\\\"Publish\\\",\\\"icon\\\":\\\"fileText\\\",\\\"description\\\":\\\"What you write, record and put out.\\\"},\\\"options\\\":{\\\"@happyvertical/smrt-video:VideoComposition\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"fps\\\":{\\\"label\\\":\\\"Frames per second\\\",\\\"order\\\":3},\\\"width\\\":{\\\"order\\\":4},\\\"height\\\":{\\\"order\\\":5},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":6},\\\"renderStatus\\\":{\\\"label\\\":\\\"Render status\\\",\\\"order\\\":7},\\\"renderProgress\\\":{\\\"label\\\":\\\"Render progress\\\",\\\"order\\\":8},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:VideoSequence\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"compositionId\\\":{\\\"label\\\":\\\"Video\\\",\\\"order\\\":2},\\\"position\\\":{\\\"label\\\":\\\"Order\\\",\\\"order\\\":3},\\\"description\\\":{\\\"order\\\":4},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":5},\\\"transitionType\\\":{\\\"label\\\":\\\"Transition to next\\\",\\\"order\\\":6},\\\"transitionDurationFrames\\\":{\\\"label\\\":\\\"Transition length in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:VideoShot\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"sequenceId\\\":{\\\"label\\\":\\\"Sequence\\\",\\\"order\\\":2},\\\"position\\\":{\\\"label\\\":\\\"Order\\\",\\\"order\\\":3},\\\"scriptText\\\":{\\\"label\\\":\\\"Script\\\",\\\"order\\\":4},\\\"sceneId\\\":{\\\"label\\\":\\\"Scene\\\",\\\"order\\\":5},\\\"targetDuration\\\":{\\\"label\\\":\\\"Target length in seconds\\\",\\\"order\\\":6},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":7},\\\"shotStatus\\\":{\\\"label\\\":\\\"Status\\\",\\\"order\\\":8},\\\"description\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"progress\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"statusMessage\\\":{\\\"label\\\":\\\"Status message\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"errorMessage\\\":{\\\"label\\\":\\\"Error message\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"scriptWordCount\\\":{\\\"label\\\":\\\"Words in script\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"trimBeforeFrames\\\":{\\\"label\\\":\\\"Trim from start in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"trimAfterFrames\\\":{\\\"label\\\":\\\"Trim from end in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"videoMetadata\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:Character\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"imageAssetId\\\":{\\\"label\\\":\\\"Picture\\\",\\\"order\\\":3},\\\"voiceProfileId\\\":{\\\"label\\\":\\\"Voice\\\",\\\"order\\\":4},\\\"defaultSceneId\\\":{\\\"label\\\":\\\"Usual scene\\\",\\\"order\\\":5},\\\"status\\\":{\\\"order\\\":6},\\\"performerId\\\":{\\\"label\\\":\\\"Performer\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"baseMotionAssetId\\\":{\\\"label\\\":\\\"Base motion video\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"profileId\\\":{\\\"label\\\":\\\"Profile\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"brandingKit\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"sceneConfigs\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:Scene\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"sourceType\\\":{\\\"label\\\":\\\"Kind of background\\\",\\\"order\\\":3},\\\"sourceAssetId\\\":{\\\"label\\\":\\\"Background picture or video\\\",\\\"order\\\":4},\\\"status\\\":{\\\"order\\\":5},\\\"projection\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"location\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"viewpoints\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"lightingProfile\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"anchorPoints\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"}}}},\\\"help\\\":{\\\"markdown\\\":\\\"## Overview\\\\n\\\\nVideo is where you plan a video before it is made. A video is built from\\\\nsequences, the parts that play one after another, and each sequence is built\\\\nfrom shots, the single clips with the words spoken in them. Characters are the\\\\npresenters who appear on screen, each with a picture and a voice, and scenes\\\\nare the backgrounds they stand in front of.\\\\n\\\\nYou write and arrange everything here. Making the clips and putting the\\\\nfinished video together is done by a rendering service, so the screens show\\\\nwhere each shot and video stands rather than letting you set that by hand.\\\\n\\\\n## Tasks\\\\n\\\\n### Start a new video\\\\n\\\\n1. Open the list of videos and choose **New**.\\\\n2. Give it a **{field:VideoComposition.name}** and a short **{field:VideoComposition.description}**.\\\\n3. Set the **{field:VideoComposition.fps}** and the picture size with **{field:VideoComposition.width}** and **{field:VideoComposition.height}**.\\\\n4. Save. The **{field:VideoComposition.durationInFrames}** fills in as you add sequences, and **{field:VideoComposition.renderStatus}** shows whether the finished video is still a draft, being rendered, ready or failed.\\\\n\\\\n### Break a video into sequences\\\\n\\\\n1. Open the list of sequences and choose **New**.\\\\n2. Give the sequence a **{field:VideoSequence.name}** and pick the **{field:VideoSequence.compositionId}** it belongs to.\\\\n3. Set the **{field:VideoSequence.position}** so the sequences play in the order you want.\\\\n4. Choose a **{field:VideoSequence.transitionType}** if you want a fade, slide or wipe into the next sequence instead of a straight cut.\\\\n5. Save. The **{field:VideoSequence.durationInFrames}** adds up from the shots you put in it.\\\\n\\\\n### Write a shot\\\\n\\\\n1. Open the list of shots and choose **New**.\\\\n2. Give the shot a **{field:VideoShot.name}**, then pick the **{field:VideoShot.sequenceId}** it belongs to and its **{field:VideoShot.position}** within it.\\\\n3. Type the words to be spoken in **{field:VideoShot.scriptText}**.\\\\n4. Pick the **{field:VideoShot.sceneId}** the shot is filmed in.\\\\n5. Set the **{field:VideoShot.targetDuration}** you are aiming for. Roughly two to three words fill a second.\\\\n6. Save. Once the clip is made, **{field:VideoShot.durationInFrames}** shows its real length and **{field:VideoShot.shotStatus}** shows where it stands.\\\\n\\\\n### Change or remove a shot\\\\n\\\\n1. Open the shot from the list of shots.\\\\n2. Edit the **{field:VideoShot.scriptText}** or any other detail and save. Edit a sequence or a video the same way.\\\\n3. To take a shot out, remove it. Removing a sequence or a video is done from its own list.\\\\n\\\\n### Add a character\\\\n\\\\n1. Open the list of characters and choose **New**.\\\\n2. Give the character a **{field:Character.name}** and describe them in **{field:Character.description}**.\\\\n3. Choose the **{field:Character.imageAssetId}** they are built from and the **{field:Character.voiceProfileId}** they speak with.\\\\n4. Pick the **{field:Character.defaultSceneId}** they usually appear in.\\\\n5. Save. **{field:Character.status}** shows when the character is ready to use in shots.\\\\n\\\\n### Add a scene\\\\n\\\\n1. Open the list of scenes and choose **New**.\\\\n2. Give the scene a **{field:Scene.name}** and say what it shows in **{field:Scene.description}**.\\\\n3. Choose the **{field:Scene.sourceType}** and pick the **{field:Scene.sourceAssetId}** it is made from.\\\\n4. Save. **{field:Scene.status}** shows when the scene is ready to be used in shots.\\\\n\\\",\\\"fieldRefs\\\":[\\\"Character.defaultSceneId\\\",\\\"Character.description\\\",\\\"Character.imageAssetId\\\",\\\"Character.name\\\",\\\"Character.status\\\",\\\"Character.voiceProfileId\\\",\\\"Scene.description\\\",\\\"Scene.name\\\",\\\"Scene.sourceAssetId\\\",\\\"Scene.sourceType\\\",\\\"Scene.status\\\",\\\"VideoComposition.description\\\",\\\"VideoComposition.durationInFrames\\\",\\\"VideoComposition.fps\\\",\\\"VideoComposition.height\\\",\\\"VideoComposition.name\\\",\\\"VideoComposition.renderStatus\\\",\\\"VideoComposition.width\\\",\\\"VideoSequence.compositionId\\\",\\\"VideoSequence.durationInFrames\\\",\\\"VideoSequence.name\\\",\\\"VideoSequence.position\\\",\\\"VideoSequence.transitionType\\\",\\\"VideoShot.durationInFrames\\\",\\\"VideoShot.name\\\",\\\"VideoShot.position\\\",\\\"VideoShot.sceneId\\\",\\\"VideoShot.scriptText\\\",\\\"VideoShot.sequenceId\\\",\\\"VideoShot.shotStatus\\\",\\\"VideoShot.targetDuration\\\"]},\\\"demo\\\":{\\\"mode\\\":\\\"server\\\",\\\"reasons\\\":[\\\"Needs a server because its package does not build for a browser: documents/spider SDK graph; CJS parse error; and its package depends on @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, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627, #3628).\\\"]}}],\\\"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 field,\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 @field({ description: 'What the character is called.' })\n name: string = '';\n\n /** Description of the character persona */\n @field({\n description: 'Who this character is and how they come across on screen.',\n })\n description: string | null = null;\n\n /** Asset ID of the seed image for I2V generation */\n @field({ description: 'The picture the character is built from.' })\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 @field({ description: 'The voice the character speaks with.' })\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 @field({\n description: 'Whether the character is ready to appear in shots.',\n })\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 @field({ description: 'The scene the character usually appears in.' })\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 { field, 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 @field({\n description: 'How many frames of video play each second, usually 30.',\n })\n fps: number = 30;\n\n /** Render width in pixels */\n @field({\n description: 'The width of the finished video in pixels, such as 1920.',\n })\n width: number = 1920;\n\n /** Render height in pixels */\n @field({\n description: 'The height of the finished video in pixels, such as 1080.',\n })\n height: number = 1080;\n\n /** Computed total: sum of sequences minus transition overlaps */\n @field({\n description:\n 'How long the whole video runs, counted in frames. It adds up from the sequences.',\n })\n durationInFrames: number = 0;\n\n /** Render status */\n @field({\n description:\n 'Where the finished video stands: draft, rendering, ready or failed.',\n })\n renderStatus: RenderStatus = 'draft';\n\n /** Render progress (0-100) */\n @field({ description: 'How far along the render is, from 0 to 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 * 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 { field, 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 @field({ description: 'The video this sequence is part of.' })\n @foreignKey('VideoComposition')\n compositionId: string | null = null;\n\n /** Order within composition */\n @field({\n description:\n 'The order of this sequence within its video, counting from the start.',\n })\n position: number = 0;\n\n /** Computed duration: sum of shot frames */\n @field({\n description:\n 'How long the sequence runs in frames. It adds up from its shots.',\n })\n durationInFrames: number = 0;\n\n /** Transition type to the next sequence */\n @field({\n description:\n 'How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.',\n })\n transitionType: TransitionType = 'none';\n\n /** Overlap frames with next sequence for transition */\n @field({\n description: 'How many frames the hand-over to the next sequence overlaps.',\n })\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 * 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 { field, 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 @field({ description: 'The sequence this shot belongs to.' })\n @foreignKey(() => VideoSequence)\n sequenceId: string | null = null;\n\n /** Scene for this shot */\n @field({ description: 'The background scene this shot is filmed in.' })\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Order within sequence */\n @field({\n description:\n 'The order of this shot within its sequence, counting from the start.',\n })\n position: number = 0;\n\n /** Actual frame count of generated clip */\n @field({ description: 'How long the finished clip runs in frames.' })\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 @field({ description: 'The words spoken in this shot.' })\n scriptText: string = '';\n\n /** Word count in the script */\n scriptWordCount: number = 0;\n\n /** Target duration in seconds */\n @field({ description: 'How long you want the shot to be, in seconds.' })\n targetDuration: number = 30;\n\n /** Video generation status */\n @field({\n description:\n 'Where the shot stands: draft, queued, processing, ready, failed or published.',\n })\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 * Declared recipes for smrt-video (#4409, #4437): user-facing units of\n * functionality an app or agent can pick instead of the whole package.\n * The scanner reads these statics into the `recipes` array of `manifest.json`\n * and `smrt-knowledge.json`; nothing here runs at that point.\n *\n * @packageDocumentation\n */\n\nimport { SmrtRecipe } from '@happyvertical/smrt-core';\nimport { Character } from './character.js';\nimport { Scene } from './scene.js';\nimport { VideoComposition } from './video-composition.js';\nimport { VideoSequence } from './video-sequence.js';\nimport { VideoShot } from './video-shot.js';\n\n/**\n * Video: plan a video from the whole piece down to each shot, with the\n * characters and scenes that appear in it.\n *\n * Left out on purpose: Performer (a face-likeness record behind a character;\n * technical, and Character already carries what a person needs), VideoWorkflow\n * (a render template), CompositeJob (a render job) and the owned-asset joins\n * (closed to the generated surface).\n */\nexport class VideoLibraryRecipe extends SmrtRecipe {\n static id = 'video.library';\n static help = './library.recipe.md';\n static label = 'Video';\n static summary =\n 'Plan each video as sequences and shots, with the characters and scenes that appear in it.';\n static synonyms = [\n 'videos',\n 'video production',\n 'video scripts',\n 'shots',\n 'storyboard',\n 'characters and scenes',\n ];\n static section = {\n id: 'publish',\n label: 'Publish',\n icon: 'fileText',\n description: 'What you write, record and put out.',\n };\n static models = [\n VideoComposition,\n VideoSequence,\n VideoShot,\n Character,\n Scene,\n ];\n static nav = [\n {\n label: 'Videos',\n model: VideoComposition,\n icon: 'layers',\n description: 'Each finished video you are putting together.',\n noun: 'video',\n },\n {\n label: 'Sequences',\n model: VideoSequence,\n icon: 'folder',\n description: 'The parts of a video, in the order they play.',\n noun: 'sequence',\n },\n {\n label: 'Shots',\n model: VideoShot,\n icon: 'fileText',\n description: 'Each clip in a sequence, with the words spoken in it.',\n noun: 'shot',\n },\n {\n label: 'Characters',\n model: Character,\n icon: 'users',\n description: 'The on-screen presenters, with their look and voice.',\n noun: 'character',\n },\n {\n label: 'Scenes',\n model: Scene,\n icon: 'home',\n description: 'The backgrounds your characters appear in front of.',\n noun: 'scene',\n },\n ];\n static options = {\n VideoComposition: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n fps: { label: 'Frames per second', order: 3 },\n width: { order: 4 },\n height: { order: 5 },\n durationInFrames: { label: 'Length in frames', order: 6 },\n renderStatus: { label: 'Render status', order: 7 },\n renderProgress: { label: 'Render progress', order: 8 },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n VideoSequence: {\n fields: {\n name: { order: 1 },\n compositionId: { label: 'Video', order: 2 },\n position: { label: 'Order', order: 3 },\n description: { order: 4 },\n durationInFrames: { label: 'Length in frames', order: 5 },\n transitionType: { label: 'Transition to next', order: 6 },\n transitionDurationFrames: {\n label: 'Transition length in frames',\n visibility: 'advanced',\n },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n VideoShot: {\n fields: {\n name: { order: 1 },\n sequenceId: { label: 'Sequence', order: 2 },\n position: { label: 'Order', order: 3 },\n scriptText: { label: 'Script', order: 4 },\n sceneId: { label: 'Scene', order: 5 },\n targetDuration: { label: 'Target length in seconds', order: 6 },\n durationInFrames: { label: 'Length in frames', order: 7 },\n shotStatus: { label: 'Status', order: 8 },\n description: { visibility: 'advanced' },\n progress: { visibility: 'advanced' },\n statusMessage: { label: 'Status message', visibility: 'advanced' },\n errorMessage: { label: 'Error message', visibility: 'advanced' },\n scriptWordCount: { label: 'Words in script', visibility: 'advanced' },\n trimBeforeFrames: {\n label: 'Trim from start in frames',\n visibility: 'advanced',\n },\n trimAfterFrames: {\n label: 'Trim from end in frames',\n visibility: 'advanced',\n },\n videoMetadata: { visibility: 'hidden' },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n Character: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n imageAssetId: { label: 'Picture', order: 3 },\n voiceProfileId: { label: 'Voice', order: 4 },\n defaultSceneId: { label: 'Usual scene', order: 5 },\n status: { order: 6 },\n performerId: { label: 'Performer', visibility: 'advanced' },\n baseMotionAssetId: {\n label: 'Base motion video',\n visibility: 'advanced',\n },\n profileId: { label: 'Profile', visibility: 'advanced' },\n brandingKit: { visibility: 'hidden' },\n sceneConfigs: { visibility: 'hidden' },\n tenantId: { visibility: 'hidden' },\n },\n },\n Scene: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n sourceType: { label: 'Kind of background', order: 3 },\n sourceAssetId: { label: 'Background picture or video', order: 4 },\n status: { order: 5 },\n projection: { visibility: 'advanced' },\n location: { visibility: 'hidden' },\n viewpoints: { visibility: 'hidden' },\n lightingProfile: { visibility: 'hidden' },\n anchorPoints: { visibility: 'hidden' },\n tenantId: { visibility: 'hidden' },\n },\n },\n } as const;\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 * 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 * 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-sequence.ts","../src/video-shot.ts","../src/recipes.ts","../src/video-compositions.ts","../src/video-sequences.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.40\\\",\\\"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\\\":\\\"What the character is called.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the character is called.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who this character is and how they come across on screen.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who this character is and how they come across on screen.\\\"}},\\\"imageAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"description\\\":\\\"The picture the character is built from.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The picture the character is built from.\\\"}},\\\"baseMotionAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\",\\\"description\\\":\\\"The voice the character speaks with.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The voice the character speaks with.\\\"}},\\\"brandingKit\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"description\\\":\\\"Whether the character is ready to appear in shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether the character is ready to appear in shots.\\\"},\\\"enum\\\":[\\\"pending\\\",\\\"ready\\\"]},\\\"performerId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Performer\\\"},\\\"defaultSceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\",\\\"description\\\":\\\"The scene the character usually appears in.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The scene the character usually appears in.\\\"}},\\\"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\\\":\\\"What the scene is called.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the scene is called.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"What the scene shows.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What the scene shows.\\\"}},\\\"sourceAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\",\\\"description\\\":\\\"The picture or video the scene is made from.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The picture or video the scene is made from.\\\"}},\\\"sourceType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"image\\\",\\\"description\\\":\\\"What kind of file the scene is made from: a picture, a video or a wrap-around panorama.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of file the scene is made from: a picture, a video or a wrap-around panorama.\\\"},\\\"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\\\",\\\"description\\\":\\\"Whether the scene is ready to be used in shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Whether the scene is ready to be used in shots.\\\"},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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,\\\"description\\\":\\\"How many frames of video play each second, usually 30.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How many frames of video play each second, usually 30.\\\"}},\\\"width\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1920,\\\"description\\\":\\\"The width of the finished video in pixels, such as 1920.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The width of the finished video in pixels, such as 1920.\\\"}},\\\"height\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":1080,\\\"description\\\":\\\"The height of the finished video in pixels, such as 1080.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The height of the finished video in pixels, such as 1080.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the whole video runs, counted in frames. It adds up from the sequences.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the whole video runs, counted in frames. It adds up from the sequences.\\\"}},\\\"renderStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the finished video stands: draft, rendering, ready or failed.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the finished video stands: draft, rendering, ready or failed.\\\"},\\\"enum\\\":[\\\"draft\\\",\\\"rendering\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"renderProgress\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How far along the render is, from 0 to 100.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How far along the render is, from 0 to 100.\\\"}}},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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\\\",\\\"description\\\":\\\"The video this sequence is part of.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The video this sequence is part of.\\\"}},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"The order of this sequence within its video, counting from the start.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The order of this sequence within its video, counting from the start.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the sequence runs in frames. It adds up from its shots.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the sequence runs in frames. It adds up from its shots.\\\"}},\\\"transitionType\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"none\\\",\\\"description\\\":\\\"How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.\\\"},\\\"enum\\\":[\\\"none\\\",\\\"fade\\\",\\\"slide\\\",\\\"wipe\\\"]},\\\"transitionDurationFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How many frames the hand-over to the next sequence overlaps.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How many frames the hand-over to the next sequence overlaps.\\\"}}},\\\"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,\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"What kind of piece this is, such as an article or a document.\\\"}},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"Who wrote this piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Who wrote this piece.\\\"}},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"A short name used to find this piece in lists.\\\",\\\"_meta\\\":{\\\"required\\\":true,\\\"description\\\":\\\"A short name used to find this piece in lists.\\\"}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The headline readers see.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The headline readers see.\\\"}},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"A one or two sentence summary of the piece.\\\"}},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The full text of the piece.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The full text of the piece.\\\"}},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false,\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The date the piece went out, or is due to go out.\\\"}},\\\"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\\\":[],\\\"description\\\":\\\"Words that group pieces by subject.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Words that group pieces by subject.\\\"}},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The one section the piece belongs to, such as news or local.\\\"}},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the piece stands: draft, in review, published or archived.\\\"},\\\"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\\\",\\\"description\\\":\\\"The sequence this shot belongs to.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The sequence this shot belongs to.\\\"}},\\\"sceneId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"Scene\\\",\\\"description\\\":\\\"The background scene this shot is filmed in.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The background scene this shot is filmed in.\\\"}},\\\"position\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"The order of this shot within its sequence, counting from the start.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The order of this shot within its sequence, counting from the start.\\\"}},\\\"durationInFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0,\\\"description\\\":\\\"How long the finished clip runs in frames.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long the finished clip runs in frames.\\\"}},\\\"trimBeforeFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"trimAfterFrames\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"scriptText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\",\\\"description\\\":\\\"The words spoken in this shot.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"The words spoken in this shot.\\\"}},\\\"scriptWordCount\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"targetDuration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":30,\\\"description\\\":\\\"How long you want the shot to be, in seconds.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"How long you want the shot to be, in seconds.\\\"}},\\\"shotStatus\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"description\\\":\\\"Where the shot stands: draft, queued, processing, ready, failed or published.\\\",\\\"_meta\\\":{\\\"description\\\":\\\"Where the shot stands: draft, queued, processing, ready, failed or published.\\\"},\\\"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\\\",\\\"recipes\\\":[{\\\"id\\\":\\\"video.library\\\",\\\"className\\\":\\\"VideoLibraryRecipe\\\",\\\"label\\\":\\\"Video\\\",\\\"summary\\\":\\\"Plan each video as sequences and shots, with the characters and scenes that appear in it.\\\",\\\"synonyms\\\":[\\\"videos\\\",\\\"video production\\\",\\\"video scripts\\\",\\\"shots\\\",\\\"storyboard\\\",\\\"characters and scenes\\\"],\\\"models\\\":[\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"@happyvertical/smrt-video:Character\\\",\\\"@happyvertical/smrt-video:Scene\\\"],\\\"nav\\\":[{\\\"label\\\":\\\"Videos\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoComposition\\\",\\\"icon\\\":\\\"layers\\\",\\\"description\\\":\\\"Each finished video you are putting together.\\\",\\\"noun\\\":\\\"video\\\"},{\\\"label\\\":\\\"Sequences\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoSequence\\\",\\\"icon\\\":\\\"folder\\\",\\\"description\\\":\\\"The parts of a video, in the order they play.\\\",\\\"noun\\\":\\\"sequence\\\"},{\\\"label\\\":\\\"Shots\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:VideoShot\\\",\\\"icon\\\":\\\"fileText\\\",\\\"description\\\":\\\"Each clip in a sequence, with the words spoken in it.\\\",\\\"noun\\\":\\\"shot\\\"},{\\\"label\\\":\\\"Characters\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:Character\\\",\\\"icon\\\":\\\"users\\\",\\\"description\\\":\\\"The on-screen presenters, with their look and voice.\\\",\\\"noun\\\":\\\"character\\\"},{\\\"label\\\":\\\"Scenes\\\",\\\"model\\\":\\\"@happyvertical/smrt-video:Scene\\\",\\\"icon\\\":\\\"home\\\",\\\"description\\\":\\\"The backgrounds your characters appear in front of.\\\",\\\"noun\\\":\\\"scene\\\"}],\\\"requires\\\":[],\\\"section\\\":{\\\"id\\\":\\\"publish\\\",\\\"label\\\":\\\"Publish\\\",\\\"icon\\\":\\\"fileText\\\",\\\"description\\\":\\\"What you write, record and put out.\\\"},\\\"options\\\":{\\\"@happyvertical/smrt-video:VideoComposition\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"fps\\\":{\\\"label\\\":\\\"Frames per second\\\",\\\"order\\\":3},\\\"width\\\":{\\\"order\\\":4},\\\"height\\\":{\\\"order\\\":5},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":6},\\\"renderStatus\\\":{\\\"label\\\":\\\"Render status\\\",\\\"order\\\":7},\\\"renderProgress\\\":{\\\"label\\\":\\\"Render progress\\\",\\\"order\\\":8},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:VideoSequence\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"compositionId\\\":{\\\"label\\\":\\\"Video\\\",\\\"order\\\":2},\\\"position\\\":{\\\"label\\\":\\\"Order\\\",\\\"order\\\":3},\\\"description\\\":{\\\"order\\\":4},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":5},\\\"transitionType\\\":{\\\"label\\\":\\\"Transition to next\\\",\\\"order\\\":6},\\\"transitionDurationFrames\\\":{\\\"label\\\":\\\"Transition length in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:VideoShot\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"sequenceId\\\":{\\\"label\\\":\\\"Sequence\\\",\\\"order\\\":2},\\\"position\\\":{\\\"label\\\":\\\"Order\\\",\\\"order\\\":3},\\\"scriptText\\\":{\\\"label\\\":\\\"Script\\\",\\\"order\\\":4},\\\"sceneId\\\":{\\\"label\\\":\\\"Scene\\\",\\\"order\\\":5},\\\"targetDuration\\\":{\\\"label\\\":\\\"Target length in seconds\\\",\\\"order\\\":6},\\\"durationInFrames\\\":{\\\"label\\\":\\\"Length in frames\\\",\\\"order\\\":7},\\\"shotStatus\\\":{\\\"label\\\":\\\"Status\\\",\\\"order\\\":8},\\\"description\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"progress\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"statusMessage\\\":{\\\"label\\\":\\\"Status message\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"errorMessage\\\":{\\\"label\\\":\\\"Error message\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"scriptWordCount\\\":{\\\"label\\\":\\\"Words in script\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"trimBeforeFrames\\\":{\\\"label\\\":\\\"Trim from start in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"trimAfterFrames\\\":{\\\"label\\\":\\\"Trim from end in frames\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"videoMetadata\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"title\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"body\\\":{\\\"label\\\":\\\"Notes\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"author\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"publish_date\\\":{\\\"label\\\":\\\"Publish date\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"url\\\":{\\\"label\\\":\\\"Web address\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"language\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"tags\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"category\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"status\\\":{\\\"label\\\":\\\"Publishing status\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"thumbnailAssetId\\\":{\\\"label\\\":\\\"Thumbnail\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"type\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"variant\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"fileKey\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"bodyFormat\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"source\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"original_url\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"state\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"metadata\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:Character\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"imageAssetId\\\":{\\\"label\\\":\\\"Picture\\\",\\\"order\\\":3},\\\"voiceProfileId\\\":{\\\"label\\\":\\\"Voice\\\",\\\"order\\\":4},\\\"defaultSceneId\\\":{\\\"label\\\":\\\"Usual scene\\\",\\\"order\\\":5},\\\"status\\\":{\\\"order\\\":6},\\\"performerId\\\":{\\\"label\\\":\\\"Performer\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"baseMotionAssetId\\\":{\\\"label\\\":\\\"Base motion video\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"profileId\\\":{\\\"label\\\":\\\"Profile\\\",\\\"visibility\\\":\\\"advanced\\\"},\\\"brandingKit\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"sceneConfigs\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"}}},\\\"@happyvertical/smrt-video:Scene\\\":{\\\"fields\\\":{\\\"name\\\":{\\\"order\\\":1},\\\"description\\\":{\\\"order\\\":2},\\\"sourceType\\\":{\\\"label\\\":\\\"Kind of background\\\",\\\"order\\\":3},\\\"sourceAssetId\\\":{\\\"label\\\":\\\"Background picture or video\\\",\\\"order\\\":4},\\\"status\\\":{\\\"order\\\":5},\\\"projection\\\":{\\\"visibility\\\":\\\"advanced\\\"},\\\"location\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"viewpoints\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"lightingProfile\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"anchorPoints\\\":{\\\"visibility\\\":\\\"hidden\\\"},\\\"tenantId\\\":{\\\"visibility\\\":\\\"hidden\\\"}}}},\\\"help\\\":{\\\"markdown\\\":\\\"## Overview\\\\n\\\\nVideo is where you plan a video before it is made. A video is built from\\\\nsequences, the parts that play one after another, and each sequence is built\\\\nfrom shots, the single clips with the words spoken in them. Characters are the\\\\npresenters who appear on screen, each with a picture and a voice, and scenes\\\\nare the backgrounds they stand in front of.\\\\n\\\\nYou write and arrange everything here. Making the clips and putting the\\\\nfinished video together is done by a rendering service, so the screens show\\\\nwhere each shot and video stands rather than letting you set that by hand.\\\\n\\\\n## Tasks\\\\n\\\\n### Start a new video\\\\n\\\\n1. Open the list of videos and choose **New**.\\\\n2. Give it a **{field:VideoComposition.name}** and a short **{field:VideoComposition.description}**.\\\\n3. Set the **{field:VideoComposition.fps}** and the picture size with **{field:VideoComposition.width}** and **{field:VideoComposition.height}**.\\\\n4. Save. The **{field:VideoComposition.durationInFrames}** fills in as you add sequences, and **{field:VideoComposition.renderStatus}** shows whether the finished video is still a draft, being rendered, ready or failed.\\\\n\\\\n### Break a video into sequences\\\\n\\\\n1. Open the list of sequences and choose **New**.\\\\n2. Give the sequence a **{field:VideoSequence.name}** and pick the **{field:VideoSequence.compositionId}** it belongs to.\\\\n3. Set the **{field:VideoSequence.position}** so the sequences play in the order you want.\\\\n4. Choose a **{field:VideoSequence.transitionType}** if you want a fade, slide or wipe into the next sequence instead of a straight cut.\\\\n5. Save. The **{field:VideoSequence.durationInFrames}** adds up from the shots you put in it.\\\\n\\\\n### Write a shot\\\\n\\\\n1. Open the list of shots and choose **New**.\\\\n2. Give the shot a **{field:VideoShot.name}**, then pick the **{field:VideoShot.sequenceId}** it belongs to and its **{field:VideoShot.position}** within it.\\\\n3. Type the words to be spoken in **{field:VideoShot.scriptText}**.\\\\n4. Pick the **{field:VideoShot.sceneId}** the shot is filmed in.\\\\n5. Set the **{field:VideoShot.targetDuration}** you are aiming for. Roughly two to three words fill a second.\\\\n6. Save. Once the clip is made, **{field:VideoShot.durationInFrames}** shows its real length and **{field:VideoShot.shotStatus}** shows where it stands.\\\\n\\\\n### Change or remove a shot\\\\n\\\\n1. Open the shot from the list of shots.\\\\n2. Edit the **{field:VideoShot.scriptText}** or any other detail and save. Edit a sequence or a video the same way.\\\\n3. To take a shot out, remove it. Removing a sequence or a video is done from its own list.\\\\n\\\\n### Add a character\\\\n\\\\n1. Open the list of characters and choose **New**.\\\\n2. Give the character a **{field:Character.name}** and describe them in **{field:Character.description}**.\\\\n3. Choose the **{field:Character.imageAssetId}** they are built from and the **{field:Character.voiceProfileId}** they speak with.\\\\n4. Pick the **{field:Character.defaultSceneId}** they usually appear in.\\\\n5. Save. **{field:Character.status}** shows when the character is ready to use in shots.\\\\n\\\\n### Add a scene\\\\n\\\\n1. Open the list of scenes and choose **New**.\\\\n2. Give the scene a **{field:Scene.name}** and say what it shows in **{field:Scene.description}**.\\\\n3. Choose the **{field:Scene.sourceType}** and pick the **{field:Scene.sourceAssetId}** it is made from.\\\\n4. Save. **{field:Scene.status}** shows when the scene is ready to be used in shots.\\\\n\\\",\\\"fieldRefs\\\":[\\\"Character.defaultSceneId\\\",\\\"Character.description\\\",\\\"Character.imageAssetId\\\",\\\"Character.name\\\",\\\"Character.status\\\",\\\"Character.voiceProfileId\\\",\\\"Scene.description\\\",\\\"Scene.name\\\",\\\"Scene.sourceAssetId\\\",\\\"Scene.sourceType\\\",\\\"Scene.status\\\",\\\"VideoComposition.description\\\",\\\"VideoComposition.durationInFrames\\\",\\\"VideoComposition.fps\\\",\\\"VideoComposition.height\\\",\\\"VideoComposition.name\\\",\\\"VideoComposition.renderStatus\\\",\\\"VideoComposition.width\\\",\\\"VideoSequence.compositionId\\\",\\\"VideoSequence.durationInFrames\\\",\\\"VideoSequence.name\\\",\\\"VideoSequence.position\\\",\\\"VideoSequence.transitionType\\\",\\\"VideoShot.durationInFrames\\\",\\\"VideoShot.name\\\",\\\"VideoShot.position\\\",\\\"VideoShot.sceneId\\\",\\\"VideoShot.scriptText\\\",\\\"VideoShot.sequenceId\\\",\\\"VideoShot.shotStatus\\\",\\\"VideoShot.targetDuration\\\"]},\\\"demo\\\":{\\\"mode\\\":\\\"server\\\",\\\"reasons\\\":[\\\"Needs a server because its package does not build for a browser: documents/spider SDK graph; CJS parse error; and its package depends on @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, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627, #3628).\\\"]}}],\\\"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 field,\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 @field({ description: 'What the character is called.' })\n name: string = '';\n\n /** Description of the character persona */\n @field({\n description: 'Who this character is and how they come across on screen.',\n })\n description: string | null = null;\n\n /** Asset ID of the seed image for I2V generation */\n @field({ description: 'The picture the character is built from.' })\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 @field({ description: 'The voice the character speaks with.' })\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 @field({\n description: 'Whether the character is ready to appear in shots.',\n })\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 @field({ description: 'The scene the character usually appears in.' })\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 { field, 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 @field({\n description: 'How many frames of video play each second, usually 30.',\n })\n fps: number = 30;\n\n /** Render width in pixels */\n @field({\n description: 'The width of the finished video in pixels, such as 1920.',\n })\n width: number = 1920;\n\n /** Render height in pixels */\n @field({\n description: 'The height of the finished video in pixels, such as 1080.',\n })\n height: number = 1080;\n\n /** Computed total: sum of sequences minus transition overlaps */\n @field({\n description:\n 'How long the whole video runs, counted in frames. It adds up from the sequences.',\n })\n durationInFrames: number = 0;\n\n /** Render status */\n @field({\n description:\n 'Where the finished video stands: draft, rendering, ready or failed.',\n })\n renderStatus: RenderStatus = 'draft';\n\n /** Render progress (0-100) */\n @field({ description: 'How far along the render is, from 0 to 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 * 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 { field, 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 @field({ description: 'The video this sequence is part of.' })\n @foreignKey('VideoComposition')\n compositionId: string | null = null;\n\n /** Order within composition */\n @field({\n description:\n 'The order of this sequence within its video, counting from the start.',\n })\n position: number = 0;\n\n /** Computed duration: sum of shot frames */\n @field({\n description:\n 'How long the sequence runs in frames. It adds up from its shots.',\n })\n durationInFrames: number = 0;\n\n /** Transition type to the next sequence */\n @field({\n description:\n 'How this sequence hands over to the next one: a straight cut, a fade, a slide or a wipe.',\n })\n transitionType: TransitionType = 'none';\n\n /** Overlap frames with next sequence for transition */\n @field({\n description: 'How many frames the hand-over to the next sequence overlaps.',\n })\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 * 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 { field, 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 @field({ description: 'The sequence this shot belongs to.' })\n @foreignKey(() => VideoSequence)\n sequenceId: string | null = null;\n\n /** Scene for this shot */\n @field({ description: 'The background scene this shot is filmed in.' })\n @foreignKey(() => Scene)\n sceneId: string | null = null;\n\n /** Order within sequence */\n @field({\n description:\n 'The order of this shot within its sequence, counting from the start.',\n })\n position: number = 0;\n\n /** Actual frame count of generated clip */\n @field({ description: 'How long the finished clip runs in frames.' })\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 @field({ description: 'The words spoken in this shot.' })\n scriptText: string = '';\n\n /** Word count in the script */\n scriptWordCount: number = 0;\n\n /** Target duration in seconds */\n @field({ description: 'How long you want the shot to be, in seconds.' })\n targetDuration: number = 30;\n\n /** Video generation status */\n @field({\n description:\n 'Where the shot stands: draft, queued, processing, ready, failed or published.',\n })\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 * Declared recipes for smrt-video (#4409, #4437): user-facing units of\n * functionality an app or agent can pick instead of the whole package.\n * The scanner reads these statics into the `recipes` array of `manifest.json`\n * and `smrt-knowledge.json`; nothing here runs at that point.\n *\n * @packageDocumentation\n */\n\nimport { SmrtRecipe } from '@happyvertical/smrt-core';\nimport { Character } from './character.js';\nimport { Scene } from './scene.js';\nimport { VideoComposition } from './video-composition.js';\nimport { VideoSequence } from './video-sequence.js';\nimport { VideoShot } from './video-shot.js';\n\n/**\n * Video: plan a video from the whole piece down to each shot, with the\n * characters and scenes that appear in it.\n *\n * Left out on purpose: Performer (a face-likeness record behind a character;\n * technical, and Character already carries what a person needs), VideoWorkflow\n * (a render template), CompositeJob (a render job) and the owned-asset joins\n * (closed to the generated surface).\n */\nexport class VideoLibraryRecipe extends SmrtRecipe {\n static id = 'video.library';\n static help = './library.recipe.md';\n static label = 'Video';\n static summary =\n 'Plan each video as sequences and shots, with the characters and scenes that appear in it.';\n static synonyms = [\n 'videos',\n 'video production',\n 'video scripts',\n 'shots',\n 'storyboard',\n 'characters and scenes',\n ];\n static section = {\n id: 'publish',\n label: 'Publish',\n icon: 'fileText',\n description: 'What you write, record and put out.',\n };\n static models = [\n VideoComposition,\n VideoSequence,\n VideoShot,\n Character,\n Scene,\n ];\n static nav = [\n {\n label: 'Videos',\n model: VideoComposition,\n icon: 'layers',\n description: 'Each finished video you are putting together.',\n noun: 'video',\n },\n {\n label: 'Sequences',\n model: VideoSequence,\n icon: 'folder',\n description: 'The parts of a video, in the order they play.',\n noun: 'sequence',\n },\n {\n label: 'Shots',\n model: VideoShot,\n icon: 'fileText',\n description: 'Each clip in a sequence, with the words spoken in it.',\n noun: 'shot',\n },\n {\n label: 'Characters',\n model: Character,\n icon: 'users',\n description: 'The on-screen presenters, with their look and voice.',\n noun: 'character',\n },\n {\n label: 'Scenes',\n model: Scene,\n icon: 'home',\n description: 'The backgrounds your characters appear in front of.',\n noun: 'scene',\n },\n ];\n static options = {\n VideoComposition: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n fps: { label: 'Frames per second', order: 3 },\n width: { order: 4 },\n height: { order: 5 },\n durationInFrames: { label: 'Length in frames', order: 6 },\n renderStatus: { label: 'Render status', order: 7 },\n renderProgress: { label: 'Render progress', order: 8 },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n VideoSequence: {\n fields: {\n name: { order: 1 },\n compositionId: { label: 'Video', order: 2 },\n position: { label: 'Order', order: 3 },\n description: { order: 4 },\n durationInFrames: { label: 'Length in frames', order: 5 },\n transitionType: { label: 'Transition to next', order: 6 },\n transitionDurationFrames: {\n label: 'Transition length in frames',\n visibility: 'advanced',\n },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n VideoShot: {\n fields: {\n name: { order: 1 },\n sequenceId: { label: 'Sequence', order: 2 },\n position: { label: 'Order', order: 3 },\n scriptText: { label: 'Script', order: 4 },\n sceneId: { label: 'Scene', order: 5 },\n targetDuration: { label: 'Target length in seconds', order: 6 },\n durationInFrames: { label: 'Length in frames', order: 7 },\n shotStatus: { label: 'Status', order: 8 },\n description: { visibility: 'advanced' },\n progress: { visibility: 'advanced' },\n statusMessage: { label: 'Status message', visibility: 'advanced' },\n errorMessage: { label: 'Error message', visibility: 'advanced' },\n scriptWordCount: { label: 'Words in script', visibility: 'advanced' },\n trimBeforeFrames: {\n label: 'Trim from start in frames',\n visibility: 'advanced',\n },\n trimAfterFrames: {\n label: 'Trim from end in frames',\n visibility: 'advanced',\n },\n videoMetadata: { visibility: 'hidden' },\n title: { visibility: 'advanced' },\n body: { label: 'Notes', visibility: 'advanced' },\n author: { visibility: 'advanced' },\n publish_date: { label: 'Publish date', visibility: 'advanced' },\n url: { label: 'Web address', visibility: 'advanced' },\n language: { visibility: 'advanced' },\n tags: { visibility: 'advanced' },\n category: { visibility: 'advanced' },\n status: { label: 'Publishing status', visibility: 'advanced' },\n thumbnailAssetId: { label: 'Thumbnail', visibility: 'advanced' },\n tenantId: { visibility: 'hidden' },\n type: { visibility: 'hidden' },\n variant: { visibility: 'hidden' },\n fileKey: { visibility: 'hidden' },\n bodyFormat: { visibility: 'hidden' },\n source: { visibility: 'hidden' },\n original_url: { visibility: 'hidden' },\n state: { visibility: 'hidden' },\n metadata: { visibility: 'hidden' },\n },\n },\n Character: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n imageAssetId: { label: 'Picture', order: 3 },\n voiceProfileId: { label: 'Voice', order: 4 },\n defaultSceneId: { label: 'Usual scene', order: 5 },\n status: { order: 6 },\n performerId: { label: 'Performer', visibility: 'advanced' },\n baseMotionAssetId: {\n label: 'Base motion video',\n visibility: 'advanced',\n },\n profileId: { label: 'Profile', visibility: 'advanced' },\n brandingKit: { visibility: 'hidden' },\n sceneConfigs: { visibility: 'hidden' },\n tenantId: { visibility: 'hidden' },\n },\n },\n Scene: {\n fields: {\n name: { order: 1 },\n description: { order: 2 },\n sourceType: { label: 'Kind of background', order: 3 },\n sourceAssetId: { label: 'Background picture or video', order: 4 },\n status: { order: 5 },\n projection: { visibility: 'advanced' },\n location: { visibility: 'hidden' },\n viewpoints: { visibility: 'hidden' },\n lightingProfile: { visibility: 'hidden' },\n anchorPoints: { visibility: 'hidden' },\n tenantId: { visibility: 'hidden' },\n },\n },\n } as const;\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 * 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 * 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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"}