@happyvertical/smrt-voice 0.57.10 → 0.57.12
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/package.json +11 -11
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { ObjectRegistry, SmrtObject, crossPackageRef, foreignKey, smrt } from "@
|
|
|
2
2
|
import { Content } from "@happyvertical/smrt-content";
|
|
3
3
|
import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
|
|
4
4
|
//#region src/__smrt-register__.ts
|
|
5
|
-
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-voice","packageVersion":"0.57.10","objects":{"@happyvertical/smrt-voice:VoiceOutput":{"name":"voiceoutput","className":"VoiceOutput","qualifiedName":"@happyvertical/smrt-voice:VoiceOutput","collection":"contents","description":"Generated audio output from text-to-speech synthesis","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-output.ts","packageName":"@happyvertical/smrt-voice","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"generated":true,"source":"tenantScoped_decorator","sqlType":"UUID","__tenancy":{"isTenantIdField":true,"mode":"optional","field":"tenantId","autoFilter":true,"autoPopulate":true,"allowSuperAdminBypass":false}}},"type":{"type":"text","required":false},"variant":{"type":"text","required":false},"fileKey":{"type":"text","required":false},"author":{"type":"text","required":false},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"title":{"type":"text","required":false},"description":{"type":"text","required":false},"body":{"type":"text","required":false},"bodyFormat":{"type":"text","required":false,"enum":["markdown","html"]},"publish_date":{"type":"datetime","required":false},"url":{"type":"text","required":false},"source":{"type":"text","required":false},"original_url":{"type":"text","required":false},"language":{"type":"text","required":false},"tags":{"type":"json","required":false,"default":[]},"category":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"draft","enum":["published","draft","review","archived","deleted"]},"state":{"type":"text","required":false,"default":"active","enum":["deprecated","active","highlighted"]},"metadata":{"type":"json","required":false,"default":{}},"thumbnailAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"voiceProfileId":{"type":"foreignKey","required":false,"related":"VoiceProfile"},"sourceText":{"type":"text","required":false,"default":""},"audioAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"duration":{"type":"integer","required":false,"default":0},"wordTimings":{"type":"json","required":false,"default":[]},"audioMetadata":{"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},{"name":"options","type":"object","optional":true,"typeUnresolved":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},"getWordAtTime":{"name":"getWordAtTime","async":false,"parameters":[{"name":"seconds","type":"number","optional":false}],"returnType":"WordTiming | null","isStatic":false,"isPublic":true},"fromSynthesizedSpeech":{"name":"fromSynthesizedSpeech","async":false,"parameters":[{"name":"options","type":"VoiceOutputFromSynthesizedSpeechOptions","optional":false}],"returnType":"VoiceOutput","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get"]},"cli":true,"tenantScoped":{"mode":"optional"},"tableName":"contents"},"extends":"Content","extendsQualified":"@happyvertical/smrt-content:Content","exportName":"VoiceOutput","collectionExportName":"VoiceOutputCollection","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 \\"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 \\"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);","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},"voice_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"voice_profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"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},"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}},"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_voice_profile_id_idx","columns":["voice_profile_id"]},{"name":"contents_audio_asset_id_idx","columns":["audio_asset_id"]},{"name":"contents_feed_source_id_idx","columns":["feed_source_id"]}],"version":"ee1272af"},"importPath":"@happyvertical/smrt-voice"},"@happyvertical/smrt-voice:VoiceProfile":{"name":"voiceprofile","className":"VoiceProfile","qualifiedName":"@happyvertical/smrt-voice:VoiceProfile","collection":"voiceprofiles","description":"Voice profile for AI-powered speech synthesis","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-profile.ts","packageName":"@happyvertical/smrt-voice","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},"language":{"type":"text","required":false,"default":"en-US"},"gender":{"type":"text","required":false,"default":"neutral","enum":["male","female","neutral"]},"designPrompt":{"type":"text","required":false},"sampleAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"voiceData":{"type":"json","required":false,"default":{}},"defaultSpeed":{"type":"decimal","required":false,"default":1},"defaultPitch":{"type":"integer","required":false,"default":0},"status":{"type":"text","required":false,"default":"pending","enum":["pending","processing","ready","failed"]},"provider":{"type":"text","required":false,"default":"qwen3-tts"},"errorMessage":{"type":"text","required":false}},"methods":{"toSpeechVoice":{"name":"toSpeechVoice","async":false,"parameters":[],"returnType":"SpeechVoice","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":"VoiceProfile","collectionExportName":"VoiceProfileCollection","displayLabelField":"name","schema":{"tableName":"voice_profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"voice_profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"language\\" TEXT DEFAULT 'en-US',\\n \\"gender\\" TEXT DEFAULT 'neutral',\\n \\"design_prompt\\" TEXT,\\n \\"sample_asset_id\\" UUID,\\n \\"voice_data\\" JSON DEFAULT '{}',\\n \\"default_speed\\" REAL DEFAULT 1,\\n \\"default_pitch\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"provider\\" TEXT DEFAULT 'qwen3-tts',\\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},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"language":{"type":"TEXT","notNull":false,"default":"en-US"},"gender":{"type":"TEXT","notNull":false,"default":"neutral"},"design_prompt":{"type":"TEXT","notNull":false},"sample_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"voice_data":{"type":"JSON","notNull":false,"default":{}},"default_speed":{"type":"REAL","notNull":false,"default":1},"default_pitch":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false,"default":"pending"},"provider":{"type":"TEXT","notNull":false,"default":"qwen3-tts"},"error_message":{"type":"TEXT","notNull":false}},"indexes":[{"name":"voice_profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"voice_profiles_meta_type_idx","columns":["_meta_type"]},{"name":"voice_profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"voice_profiles_sample_asset_id_idx","columns":["sample_asset_id"]}],"version":"b3717c47"},"importPath":"@happyvertical/smrt-voice"},"@happyvertical/smrt-voice:VoiceSample":{"name":"voicesample","className":"VoiceSample","qualifiedName":"@happyvertical/smrt-voice:VoiceSample","collection":"voicesamples","description":"Audio sample for voice cloning","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-sample.ts","packageName":"@happyvertical/smrt-voice","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}}},"voiceProfileId":{"type":"foreignKey","required":false,"related":"VoiceProfile"},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"duration":{"type":"integer","required":false,"default":0},"transcription":{"type":"text","required":false},"quality":{"type":"text","required":false,"default":"medium","enum":["low","medium","high"]},"sampleRate":{"type":"integer","required":false},"channels":{"type":"integer","required":false},"format":{"type":"text","required":false},"isPrimary":{"type":"boolean","required":false,"default":false}},"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":"VoiceSample","collectionExportName":"VoiceSampleCollection","schema":{"tableName":"voice_samples","ddl":"CREATE TABLE IF NOT EXISTS \\"voice_samples\\" (\\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 \\"voice_profile_id\\" UUID,\\n \\"asset_id\\" UUID,\\n \\"duration\\" INTEGER DEFAULT 0,\\n \\"transcription\\" TEXT,\\n \\"quality\\" TEXT DEFAULT 'medium',\\n \\"sample_rate\\" INTEGER,\\n \\"channels\\" INTEGER,\\n \\"format\\" TEXT,\\n \\"is_primary\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"voice_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"voice_profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"duration":{"type":"INTEGER","notNull":false,"default":0},"transcription":{"type":"TEXT","notNull":false},"quality":{"type":"TEXT","notNull":false,"default":"medium"},"sample_rate":{"type":"INTEGER","notNull":false},"channels":{"type":"INTEGER","notNull":false},"format":{"type":"TEXT","notNull":false},"is_primary":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"voice_samples_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"voice_samples_meta_type_idx","columns":["_meta_type"]},{"name":"voice_samples_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"voice_samples_voice_profile_id_idx","columns":["voice_profile_id"]},{"name":"voice_samples_asset_id_idx","columns":["asset_id"]}],"version":"cbb4acc4"},"importPath":"@happyvertical/smrt-voice"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-content","@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"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"]},"stampsConstructors":true}`));
|
|
5
|
+
ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-voice","packageVersion":"0.57.12","objects":{"@happyvertical/smrt-voice:VoiceOutput":{"name":"voiceoutput","className":"VoiceOutput","qualifiedName":"@happyvertical/smrt-voice:VoiceOutput","collection":"contents","description":"Generated audio output from text-to-speech synthesis","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-output.ts","packageName":"@happyvertical/smrt-voice","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"generated":true,"source":"tenantScoped_decorator","sqlType":"UUID","__tenancy":{"isTenantIdField":true,"mode":"optional","field":"tenantId","autoFilter":true,"autoPopulate":true,"allowSuperAdminBypass":false}}},"type":{"type":"text","required":false},"variant":{"type":"text","required":false},"fileKey":{"type":"text","required":false},"author":{"type":"text","required":false},"name":{"type":"text","required":true,"default":"","_meta":{"required":true}},"title":{"type":"text","required":false},"description":{"type":"text","required":false},"body":{"type":"text","required":false},"bodyFormat":{"type":"text","required":false,"enum":["markdown","html"]},"publish_date":{"type":"datetime","required":false},"url":{"type":"text","required":false},"source":{"type":"text","required":false},"original_url":{"type":"text","required":false},"language":{"type":"text","required":false},"tags":{"type":"json","required":false,"default":[]},"category":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"draft","enum":["published","draft","review","archived","deleted"]},"state":{"type":"text","required":false,"default":"active","enum":["deprecated","active","highlighted"]},"metadata":{"type":"json","required":false,"default":{}},"thumbnailAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"voiceProfileId":{"type":"foreignKey","required":false,"related":"VoiceProfile"},"sourceText":{"type":"text","required":false,"default":""},"audioAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"duration":{"type":"integer","required":false,"default":0},"wordTimings":{"type":"json","required":false,"default":[]},"audioMetadata":{"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},{"name":"options","type":"object","optional":true,"typeUnresolved":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},"getWordAtTime":{"name":"getWordAtTime","async":false,"parameters":[{"name":"seconds","type":"number","optional":false}],"returnType":"WordTiming | null","isStatic":false,"isPublic":true},"fromSynthesizedSpeech":{"name":"fromSynthesizedSpeech","async":false,"parameters":[{"name":"options","type":"VoiceOutputFromSynthesizedSpeechOptions","optional":false}],"returnType":"VoiceOutput","isStatic":true,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":{"include":["list","get","create","delete"]},"mcp":{"include":["list","get"]},"cli":true,"tenantScoped":{"mode":"optional"},"tableName":"contents"},"extends":"Content","extendsQualified":"@happyvertical/smrt-content:Content","exportName":"VoiceOutput","collectionExportName":"VoiceOutputCollection","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 \\"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 \\"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);","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},"voice_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"voice_profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"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},"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}},"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_voice_profile_id_idx","columns":["voice_profile_id"]},{"name":"contents_audio_asset_id_idx","columns":["audio_asset_id"]},{"name":"contents_feed_source_id_idx","columns":["feed_source_id"]}],"version":"ee1272af"},"importPath":"@happyvertical/smrt-voice"},"@happyvertical/smrt-voice:VoiceProfile":{"name":"voiceprofile","className":"VoiceProfile","qualifiedName":"@happyvertical/smrt-voice:VoiceProfile","collection":"voiceprofiles","description":"Voice profile for AI-powered speech synthesis","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-profile.ts","packageName":"@happyvertical/smrt-voice","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},"language":{"type":"text","required":false,"default":"en-US"},"gender":{"type":"text","required":false,"default":"neutral","enum":["male","female","neutral"]},"designPrompt":{"type":"text","required":false},"sampleAssetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"voiceData":{"type":"json","required":false,"default":{}},"defaultSpeed":{"type":"decimal","required":false,"default":1},"defaultPitch":{"type":"integer","required":false,"default":0},"status":{"type":"text","required":false,"default":"pending","enum":["pending","processing","ready","failed"]},"provider":{"type":"text","required":false,"default":"qwen3-tts"},"errorMessage":{"type":"text","required":false}},"methods":{"toSpeechVoice":{"name":"toSpeechVoice","async":false,"parameters":[],"returnType":"SpeechVoice","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":"VoiceProfile","collectionExportName":"VoiceProfileCollection","displayLabelField":"name","schema":{"tableName":"voice_profiles","ddl":"CREATE TABLE IF NOT EXISTS \\"voice_profiles\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"name\\" TEXT DEFAULT '',\\n \\"description\\" TEXT,\\n \\"language\\" TEXT DEFAULT 'en-US',\\n \\"gender\\" TEXT DEFAULT 'neutral',\\n \\"design_prompt\\" TEXT,\\n \\"sample_asset_id\\" UUID,\\n \\"voice_data\\" JSON DEFAULT '{}',\\n \\"default_speed\\" REAL DEFAULT 1,\\n \\"default_pitch\\" INTEGER DEFAULT 0,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"provider\\" TEXT DEFAULT 'qwen3-tts',\\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},"name":{"type":"TEXT","notNull":false,"default":""},"description":{"type":"TEXT","notNull":false},"language":{"type":"TEXT","notNull":false,"default":"en-US"},"gender":{"type":"TEXT","notNull":false,"default":"neutral"},"design_prompt":{"type":"TEXT","notNull":false},"sample_asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"voice_data":{"type":"JSON","notNull":false,"default":{}},"default_speed":{"type":"REAL","notNull":false,"default":1},"default_pitch":{"type":"INTEGER","notNull":false,"default":0},"status":{"type":"TEXT","notNull":false,"default":"pending"},"provider":{"type":"TEXT","notNull":false,"default":"qwen3-tts"},"error_message":{"type":"TEXT","notNull":false}},"indexes":[{"name":"voice_profiles_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"voice_profiles_meta_type_idx","columns":["_meta_type"]},{"name":"voice_profiles_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"voice_profiles_sample_asset_id_idx","columns":["sample_asset_id"]}],"version":"b3717c47"},"importPath":"@happyvertical/smrt-voice"},"@happyvertical/smrt-voice:VoiceSample":{"name":"voicesample","className":"VoiceSample","qualifiedName":"@happyvertical/smrt-voice:VoiceSample","collection":"voicesamples","description":"Audio sample for voice cloning","filePath":"/home/runner/work/smrt/smrt/packages/voice/src/voice-sample.ts","packageName":"@happyvertical/smrt-voice","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}}},"voiceProfileId":{"type":"foreignKey","required":false,"related":"VoiceProfile"},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"duration":{"type":"integer","required":false,"default":0},"transcription":{"type":"text","required":false},"quality":{"type":"text","required":false,"default":"medium","enum":["low","medium","high"]},"sampleRate":{"type":"integer","required":false},"channels":{"type":"integer","required":false},"format":{"type":"text","required":false},"isPrimary":{"type":"boolean","required":false,"default":false}},"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":"VoiceSample","collectionExportName":"VoiceSampleCollection","schema":{"tableName":"voice_samples","ddl":"CREATE TABLE IF NOT EXISTS \\"voice_samples\\" (\\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 \\"voice_profile_id\\" UUID,\\n \\"asset_id\\" UUID,\\n \\"duration\\" INTEGER DEFAULT 0,\\n \\"transcription\\" TEXT,\\n \\"quality\\" TEXT DEFAULT 'medium',\\n \\"sample_rate\\" INTEGER,\\n \\"channels\\" INTEGER,\\n \\"format\\" TEXT,\\n \\"is_primary\\" BOOLEAN DEFAULT FALSE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"voice_profile_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"voice_profiles","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false},"duration":{"type":"INTEGER","notNull":false,"default":0},"transcription":{"type":"TEXT","notNull":false},"quality":{"type":"TEXT","notNull":false,"default":"medium"},"sample_rate":{"type":"INTEGER","notNull":false},"channels":{"type":"INTEGER","notNull":false},"format":{"type":"TEXT","notNull":false},"is_primary":{"type":"BOOLEAN","notNull":false,"default":false}},"indexes":[{"name":"voice_samples_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"voice_samples_meta_type_idx","columns":["_meta_type"]},{"name":"voice_samples_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"voice_samples_voice_profile_id_idx","columns":["voice_profile_id"]},{"name":"voice_samples_asset_id_idx","columns":["asset_id"]}],"version":"cbb4acc4"},"importPath":"@happyvertical/smrt-voice"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-content","@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"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"]},"stampsConstructors":true}`));
|
|
6
6
|
//#endregion
|
|
7
7
|
//#region src/voice-profile.ts
|
|
8
8
|
var __defProp$2 = Object.defineProperty;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/__smrt-register__.ts","../src/voice-profile.ts","../src/voice-output.ts","../src/voice-sample.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-voice\\\",\\\"packageVersion\\\":\\\"0.57.10\\\",\\\"objects\\\":{\\\"@happyvertical/smrt-voice:VoiceOutput\\\":{\\\"name\\\":\\\"voiceoutput\\\",\\\"className\\\":\\\"VoiceOutput\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceOutput\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Generated audio output from text-to-speech synthesis\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-output.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VoiceProfile\\\"},\\\"sourceText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"audioAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"duration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"wordTimings\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"audioMetadata\\\":{\\\"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},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":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},\\\"getWordAtTime\\\":{\\\"name\\\":\\\"getWordAtTime\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"seconds\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"WordTiming | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"fromSynthesizedSpeech\\\":{\\\"name\\\":\\\"fromSynthesizedSpeech\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"VoiceOutputFromSynthesizedSpeechOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"VoiceOutput\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VoiceOutput\\\",\\\"collectionExportName\\\":\\\"VoiceOutputCollection\\\",\\\"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 \\\\\\\"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 \\\\\\\"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);\\\",\\\"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},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"voice_profiles\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"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},\\\"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}},\\\"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_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]}],\\\"version\\\":\\\"ee1272af\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"},\\\"@happyvertical/smrt-voice:VoiceProfile\\\":{\\\"name\\\":\\\"voiceprofile\\\",\\\"className\\\":\\\"VoiceProfile\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\",\\\"collection\\\":\\\"voiceprofiles\\\",\\\"description\\\":\\\"Voice profile for AI-powered speech synthesis\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-profile.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"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},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"en-US\\\"},\\\"gender\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"neutral\\\",\\\"enum\\\":[\\\"male\\\",\\\"female\\\",\\\"neutral\\\"]},\\\"designPrompt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sampleAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceData\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"defaultSpeed\\\":{\\\"type\\\":\\\"decimal\\\",\\\"required\\\":false,\\\"default\\\":1},\\\"defaultPitch\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"provider\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"qwen3-tts\\\"},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false}},\\\"methods\\\":{\\\"toSpeechVoice\\\":{\\\"name\\\":\\\"toSpeechVoice\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"SpeechVoice\\\",\\\"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\\\":\\\"VoiceProfile\\\",\\\"collectionExportName\\\":\\\"VoiceProfileCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"voice_profiles\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"voice_profiles\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT DEFAULT 'en-US',\\\\n \\\\\\\"gender\\\\\\\" TEXT DEFAULT 'neutral',\\\\n \\\\\\\"design_prompt\\\\\\\" TEXT,\\\\n \\\\\\\"sample_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_data\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"default_speed\\\\\\\" REAL DEFAULT 1,\\\\n \\\\\\\"default_pitch\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"provider\\\\\\\" TEXT DEFAULT 'qwen3-tts',\\\\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},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"en-US\\\"},\\\"gender\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"neutral\\\"},\\\"design_prompt\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"sample_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"default_speed\\\":{\\\"type\\\":\\\"REAL\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"default_pitch\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"provider\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"qwen3-tts\\\"},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"voice_profiles_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"voice_profiles_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"voice_profiles_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"voice_profiles_sample_asset_id_idx\\\",\\\"columns\\\":[\\\"sample_asset_id\\\"]}],\\\"version\\\":\\\"b3717c47\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"},\\\"@happyvertical/smrt-voice:VoiceSample\\\":{\\\"name\\\":\\\"voicesample\\\",\\\"className\\\":\\\"VoiceSample\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceSample\\\",\\\"collection\\\":\\\"voicesamples\\\",\\\"description\\\":\\\"Audio sample for voice cloning\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-sample.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"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}}},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VoiceProfile\\\"},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"duration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"transcription\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"quality\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"medium\\\",\\\"enum\\\":[\\\"low\\\",\\\"medium\\\",\\\"high\\\"]},\\\"sampleRate\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false},\\\"channels\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false},\\\"format\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"isPrimary\\\":{\\\"type\\\":\\\"boolean\\\",\\\"required\\\":false,\\\"default\\\":false}},\\\"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\\\":\\\"VoiceSample\\\",\\\"collectionExportName\\\":\\\"VoiceSampleCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"voice_samples\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"voice_samples\\\\\\\" (\\\\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 \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transcription\\\\\\\" TEXT,\\\\n \\\\\\\"quality\\\\\\\" TEXT DEFAULT 'medium',\\\\n \\\\\\\"sample_rate\\\\\\\" INTEGER,\\\\n \\\\\\\"channels\\\\\\\" INTEGER,\\\\n \\\\\\\"format\\\\\\\" TEXT,\\\\n \\\\\\\"is_primary\\\\\\\" BOOLEAN DEFAULT FALSE\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"voice_profiles\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transcription\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"quality\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"medium\\\"},\\\"sample_rate\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false},\\\"channels\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false},\\\"format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"is_primary\\\":{\\\"type\\\":\\\"BOOLEAN\\\",\\\"notNull\\\":false,\\\"default\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"voice_samples_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"voice_samples_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"voice_samples_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"voice_samples_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"voice_samples_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"cbb4acc4\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"}},\\\"moduleType\\\":\\\"smrt\\\",\\\"smrtDependencies\\\":[\\\"@happyvertical/smrt-assets\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-core\\\",\\\"@happyvertical/smrt-tenancy\\\"],\\\"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\\\"]},\\\"stampsConstructors\\\":true}\"));\n","/**\n * Voice Profile Model\n *\n * Manages voice profiles for AI-powered voice synthesis and cloning.\n * Supports voice design via natural language descriptions and voice\n * cloning from audio samples.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { crossPackageRef, SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport type { SpeechVoice } from '@happyvertical/speech';\n\n/**\n * Voice profile status\n */\nexport type VoiceProfileStatus = 'pending' | 'processing' | 'ready' | 'failed';\n\n/**\n * Voice gender classification\n */\nexport type VoiceGender = 'male' | 'female' | 'neutral';\n\n/**\n * Voice profile creation options\n */\nexport interface VoiceProfileOptions extends SmrtObjectOptions {\n /**\n * Human-readable name for the voice profile\n */\n name?: string;\n\n /**\n * Description of the voice characteristics\n */\n description?: string | null;\n\n /**\n * ISO language code (e.g., 'en-US', 'zh-CN')\n */\n language?: string;\n\n /**\n * Voice gender classification\n * @default 'neutral'\n */\n gender?: VoiceGender;\n\n /**\n * Natural language description for voice design\n * Used when creating a voice from scratch\n */\n designPrompt?: string | null;\n\n /**\n * Asset ID of the audio sample for voice cloning\n * Should be at least 3 seconds of clear speech\n */\n sampleAssetId?: string | null;\n\n /**\n * Provider-specific voice data (ID, embedding, etc.)\n * Stored after voice creation/cloning\n */\n voiceData?: Record<string, unknown> | null;\n\n /**\n * Default speech speed multiplier\n * @default 1.0\n */\n defaultSpeed?: number;\n\n /**\n * Default pitch adjustment in semitones\n * @default 0\n */\n defaultPitch?: number;\n\n /**\n * Voice profile status\n * @default 'pending'\n */\n status?: VoiceProfileStatus;\n\n /**\n * TTS provider that created this voice\n * @default 'qwen3-tts'\n */\n provider?: string;\n\n /**\n * Error message if status is 'failed'\n */\n errorMessage?: string | null;\n\n /**\n * Tenant ID for multi-tenant isolation\n * Null for global/default voices\n */\n tenantId?: string | null;\n}\n\n/**\n * Voice profile for AI-powered speech synthesis\n *\n * VoiceProfile represents a configured voice identity that can be used\n * for text-to-speech synthesis. Voices can be created through:\n * - Voice design: Natural language description of desired voice characteristics\n * - Voice cloning: 3+ second audio sample for voice replication\n *\n * @example\n * ```typescript\n * import { VoiceProfile } from '@happyvertical/smrt-voice';\n *\n * // Create a designed voice\n * const anchorVoice = new VoiceProfile({\n * name: 'News Anchor',\n * description: 'Professional news anchor voice with clear enunciation',\n * language: 'en-US',\n * gender: 'male',\n * designPrompt: 'Warm, authoritative male voice with slight gravitas, suitable for news broadcasts',\n * provider: 'qwen3-tts',\n * });\n *\n * // Create a cloned voice\n * const clonedVoice = new VoiceProfile({\n * name: 'Custom Voice',\n * description: 'Cloned from user sample',\n * language: 'en-US',\n * sampleAssetId: 'asset-123',\n * provider: 'qwen3-tts',\n * });\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 VoiceProfile extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Tenant ID for multi-tenant isolation\n * Nullable to support global/default voices\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Human-readable name for the voice profile\n */\n name: string = '';\n\n /**\n * Description of the voice characteristics\n */\n description: string | null = null;\n\n /**\n * ISO language code (e.g., 'en-US', 'zh-CN')\n */\n language: string = 'en-US';\n\n /**\n * Voice gender classification\n */\n gender: VoiceGender = 'neutral';\n\n /**\n * Natural language description for voice design\n * Used when creating a voice from scratch via AI\n */\n designPrompt: string | null = null;\n\n /**\n * Asset ID of the audio sample for voice cloning\n * Should be at least 3 seconds of clear speech\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n sampleAssetId: string | null = null;\n\n /**\n * Provider-specific voice data (ID, embedding, etc.)\n * Stored after voice creation/cloning is complete\n */\n voiceData: Record<string, unknown> | null = null;\n\n /**\n * Default speech speed multiplier (0.5 - 2.0)\n * 1.0 = normal speed\n */\n defaultSpeed: number = 1.0;\n\n /**\n * Default pitch adjustment in semitones (-20 to 20)\n * 0 = no adjustment\n */\n defaultPitch: number = 0;\n\n /**\n * Voice profile status\n * - pending: Profile created but voice not yet generated\n * - processing: Voice generation/cloning in progress\n * - ready: Voice is ready for use\n * - failed: Voice generation failed\n */\n status: VoiceProfileStatus = 'pending';\n\n /**\n * TTS provider that created/manages this voice\n */\n provider: string = 'qwen3-tts';\n\n /**\n * Error message if status is 'failed'\n */\n errorMessage: string | null = null;\n\n constructor(options: VoiceProfileOptions = {}) {\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.language !== undefined) this.language = options.language;\n if (options.gender !== undefined) this.gender = options.gender;\n if (options.designPrompt !== undefined)\n this.designPrompt = options.designPrompt;\n if (options.sampleAssetId !== undefined)\n this.sampleAssetId = options.sampleAssetId;\n if (options.voiceData !== undefined) this.voiceData = options.voiceData;\n if (options.defaultSpeed !== undefined)\n this.defaultSpeed = options.defaultSpeed;\n if (options.defaultPitch !== undefined)\n this.defaultPitch = options.defaultPitch;\n if (options.status !== undefined) this.status = options.status;\n if (options.provider !== undefined) this.provider = options.provider;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if this voice profile uses voice cloning\n */\n get isCloned(): boolean {\n return this.sampleAssetId !== null;\n }\n\n /**\n * Check if this voice profile uses voice design\n */\n get isDesigned(): boolean {\n return this.designPrompt !== null && !this.isCloned;\n }\n\n /**\n * Check if the voice is ready for use\n */\n get isReady(): boolean {\n return this.status === 'ready';\n }\n\n /**\n * Check if this is a global (default) voice\n */\n get isGlobal(): boolean {\n return this.tenantId === null;\n }\n\n /**\n * Convert this persisted profile into the runtime voice shape consumed by\n * @happyvertical/speech adapters.\n */\n toSpeechVoice(): SpeechVoice {\n const voiceData = isRecord(this.voiceData) ? this.voiceData : {};\n const prompt =\n stringValue(voiceData.prompt) ?? stringValue(voiceData.voicePrompt);\n const speakerId =\n stringValue(voiceData.speakerId) ??\n stringValue(voiceData.speaker) ??\n stringValue(voiceData.providerVoiceId);\n\n return {\n id:\n stringValue(voiceData.id) ??\n stringValue(voiceData.voiceId) ??\n stringValue(this.id),\n name: this.name || undefined,\n language: this.language || undefined,\n speakerId,\n prompt,\n metadata: {\n ...voiceData,\n provider: this.provider,\n defaultSpeed: this.defaultSpeed,\n defaultPitch: this.defaultPitch,\n },\n };\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n","/**\n * Voice Output Model\n *\n * Represents generated audio output from text-to-speech synthesis.\n * Extends Content to leverage content management features.\n */\n\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { crossPackageRef, foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport type {\n WordTiming as SpeechWordTiming,\n SynthesizedSpeech,\n} from '@happyvertical/speech';\nimport { VoiceProfile } from './voice-profile.js';\n\n/**\n * Word timing information for lip-sync alignment\n */\nexport interface WordTiming {\n /**\n * The word\n */\n word: string;\n\n /**\n * Start time in seconds\n */\n start: number;\n\n /**\n * End time in seconds\n */\n end: number;\n\n /**\n * Provider confidence score, when available\n */\n confidence?: number;\n\n /**\n * Speaker identifier, when diarization is available\n */\n speakerId?: string;\n}\n\n/**\n * Voice output metadata\n */\nexport interface VoiceOutputMetadata {\n /**\n * Sample rate in Hz\n */\n sampleRate?: number;\n\n /**\n * Audio format (e.g., 'wav', 'mp3', 'ogg')\n */\n format?: string;\n\n /**\n * MIME type returned by the speech provider\n */\n contentType?: string;\n\n /**\n * Number of audio channels\n */\n channels?: number;\n\n /**\n * Bit depth (e.g., 16, 24, 32)\n */\n bitDepth?: number;\n\n /**\n * File size in bytes\n */\n fileSize?: number;\n\n /**\n * TTS provider used\n */\n provider?: string;\n\n /**\n * Model used for synthesis\n */\n model?: string;\n\n /**\n * Speech speed used (1.0 = normal)\n */\n speed?: number;\n\n /**\n * Pitch adjustment used (semitones)\n */\n pitch?: number;\n}\n\n/**\n * Voice output creation options\n */\nexport interface VoiceOutputOptions extends ContentOptions {\n /**\n * Voice profile used for synthesis\n */\n voiceProfileId?: string | null;\n\n /**\n * Original text that was synthesized\n */\n sourceText?: string;\n\n /**\n * Asset ID of the generated audio file\n */\n audioAssetId?: string | null;\n\n /**\n * Duration of the generated audio in seconds\n */\n duration?: number;\n\n /**\n * Word-level timing information for lip-sync\n */\n wordTimings?: WordTiming[] | null;\n\n /**\n * Audio metadata\n */\n audioMetadata?: VoiceOutputMetadata;\n}\n\n/**\n * Create a VoiceOutput from a runtime @happyvertical/speech synthesis result.\n */\nexport interface VoiceOutputFromSynthesizedSpeechOptions\n extends VoiceOutputOptions {\n /**\n * Runtime synthesis result from @happyvertical/speech.\n */\n speech: SynthesizedSpeech;\n}\n\n/**\n * Generated audio output from text-to-speech synthesis\n *\n * VoiceOutput extends Content to represent audio generated from\n * text using a VoiceProfile. It includes word-level timing information\n * for lip-sync alignment in video production.\n *\n * @example\n * ```typescript\n * import { VoiceOutput } from '@happyvertical/smrt-voice';\n *\n * const output = new VoiceOutput({\n * voiceProfileId: 'voice-123',\n * sourceText: 'Welcome to the evening news broadcast.',\n * audioAssetId: 'asset-789',\n * duration: 3.5,\n * wordTimings: [\n * { word: 'Welcome', start: 0.0, end: 0.4 },\n * { word: 'to', start: 0.4, end: 0.5 },\n * { word: 'the', start: 0.5, end: 0.6 },\n * { word: 'evening', start: 0.6, end: 1.0 },\n * { word: 'news', start: 1.0, end: 1.3 },\n * { word: 'broadcast', start: 1.3, end: 1.9 },\n * ],\n * audioMetadata: {\n * sampleRate: 48000,\n * format: 'wav',\n * channels: 1,\n * provider: 'qwen3-tts',\n * },\n * });\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 VoiceOutput extends Content { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Voice profile used for synthesis\n */\n @foreignKey(() => VoiceProfile)\n voiceProfileId: string | null = null;\n\n /**\n * Original text that was synthesized\n */\n sourceText: string = '';\n\n /**\n * Asset ID of the generated audio file\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n audioAssetId: string | null = null;\n\n /**\n * Duration of the generated audio in seconds\n */\n duration: number = 0;\n\n /**\n * Word-level timing information for lip-sync alignment\n */\n wordTimings: WordTiming[] | null = null;\n\n /**\n * Audio metadata (sample rate, format, etc.)\n */\n audioMetadata: VoiceOutputMetadata = {};\n\n constructor(options: VoiceOutputOptions = {}) {\n super({\n ...options,\n type: 'voice-output',\n });\n\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.sourceText !== undefined) this.sourceText = options.sourceText;\n if (options.audioAssetId !== undefined)\n this.audioAssetId = options.audioAssetId;\n if (options.duration !== undefined) this.duration = options.duration;\n if (options.wordTimings !== undefined)\n this.wordTimings = options.wordTimings;\n if (options.audioMetadata !== undefined)\n this.audioMetadata = options.audioMetadata;\n }\n\n /**\n * Get the word count of the source text\n */\n get wordCount(): number {\n return this.sourceText.split(/\\s+/).filter(Boolean).length;\n }\n\n /**\n * Get the average words per second rate\n */\n get wordsPerSecond(): number {\n if (this.duration === 0) return 0;\n return this.wordCount / this.duration;\n }\n\n /**\n * Check if word timing data is available for lip-sync\n */\n get hasWordTimings(): boolean {\n return this.wordTimings !== null && this.wordTimings.length > 0;\n }\n\n /**\n * Get the word at a specific timestamp\n */\n getWordAtTime(seconds: number): WordTiming | null {\n if (!this.wordTimings) return null;\n return (\n this.wordTimings.find((wt) => seconds >= wt.start && seconds < wt.end) ??\n null\n );\n }\n\n /**\n * Build a persisted output model from a provider-neutral speech result.\n *\n * The binary audio remains in the caller-owned asset pipeline; this helper\n * only normalizes metadata and timing fields onto the SMRT model.\n */\n static fromSynthesizedSpeech(\n options: VoiceOutputFromSynthesizedSpeechOptions,\n ): VoiceOutput {\n const { speech, audioMetadata, duration, wordTimings, ...rest } = options;\n return new VoiceOutput({\n ...rest,\n duration: duration ?? speech.durationSeconds ?? 0,\n wordTimings: wordTimings ?? wordTimingsFromSpeech(speech.words),\n audioMetadata: {\n ...metadataFromSynthesizedSpeech(speech),\n ...audioMetadata,\n },\n });\n }\n}\n\nexport function wordTimingsFromSpeech(\n words: readonly SpeechWordTiming[] | null | undefined,\n): WordTiming[] | null {\n if (!words || words.length === 0) {\n return null;\n }\n return words.map((word) => ({\n word: word.word,\n start: word.startSeconds,\n end: word.endSeconds,\n confidence: word.confidence,\n speakerId: word.speakerId,\n }));\n}\n\nexport function metadataFromSynthesizedSpeech(\n speech: SynthesizedSpeech,\n): VoiceOutputMetadata {\n return {\n sampleRate: speech.sampleRate,\n format: speech.format ?? formatFromContentType(speech.contentType),\n contentType: speech.contentType,\n channels: speech.channels,\n fileSize: speech.audio.byteLength,\n provider: speech.provider,\n model: speech.model,\n };\n}\n\nfunction formatFromContentType(contentType: string): string | undefined {\n const normalized = contentType.split(';', 1)[0]?.trim().toLowerCase();\n if (!normalized?.startsWith('audio/')) {\n return undefined;\n }\n return normalized.slice('audio/'.length);\n}\n","/**\n * Voice Sample Model\n *\n * Manages audio samples used for voice cloning.\n * Samples should be at least 3 seconds of clear speech.\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 { VoiceProfile } from './voice-profile.js';\n\n/**\n * Audio sample quality rating\n */\nexport type SampleQuality = 'low' | 'medium' | 'high';\n\n/**\n * Voice sample creation options\n */\nexport interface VoiceSampleOptions extends SmrtObjectOptions {\n /**\n * Voice profile this sample belongs to\n */\n voiceProfileId?: string | null;\n\n /**\n * Asset ID of the audio file\n */\n assetId?: string | null;\n\n /**\n * Sample duration in seconds\n */\n duration?: number;\n\n /**\n * Transcription of what was said in the sample\n */\n transcription?: string | null;\n\n /**\n * Quality rating based on audio analysis\n * @default 'medium'\n */\n quality?: SampleQuality;\n\n /**\n * Sample rate in Hz (e.g., 44100, 48000)\n */\n sampleRate?: number | null;\n\n /**\n * Number of audio channels (1 = mono, 2 = stereo)\n */\n channels?: number | null;\n\n /**\n * Audio format (e.g., 'wav', 'mp3', 'ogg')\n */\n format?: string | null;\n\n /**\n * Whether this is the primary sample for the voice profile\n * @default false\n */\n isPrimary?: boolean;\n\n /**\n * Tenant ID for multi-tenant isolation\n */\n tenantId?: string | null;\n}\n\n/**\n * Audio sample for voice cloning\n *\n * VoiceSample represents an audio recording used as source material\n * for voice cloning. For best results, samples should be:\n * - At least 3 seconds long\n * - Clear speech without background noise\n * - Single speaker only\n * - High quality (44.1kHz or higher)\n *\n * Multiple samples can be associated with a single VoiceProfile\n * to improve voice cloning quality.\n *\n * @example\n * ```typescript\n * import { VoiceSample } from '@happyvertical/smrt-voice';\n *\n * const sample = new VoiceSample({\n * voiceProfileId: 'voice-123',\n * assetId: 'asset-456',\n * duration: 5.2,\n * transcription: 'Hello, this is a test recording for voice cloning.',\n * quality: 'high',\n * sampleRate: 48000,\n * channels: 1,\n * format: 'wav',\n * isPrimary: true,\n * });\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 VoiceSample extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Tenant ID for multi-tenant isolation\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Voice profile this sample belongs to\n */\n @foreignKey(() => VoiceProfile)\n voiceProfileId: string | null = null;\n\n /**\n * Asset ID of the audio file\n * References an Asset in smrt-assets\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n assetId: string | null = null;\n\n /**\n * Sample duration in seconds\n */\n duration: number = 0;\n\n /**\n * Transcription of what was said in the sample\n * Used for alignment and quality verification\n */\n transcription: string | null = null;\n\n /**\n * Quality rating based on audio analysis\n * - low: Noisy or short samples\n * - medium: Acceptable quality\n * - high: Clear audio, good length\n */\n quality: SampleQuality = 'medium';\n\n /**\n * Sample rate in Hz\n */\n sampleRate: number | null = null;\n\n /**\n * Number of audio channels\n */\n channels: number | null = null;\n\n /**\n * Audio format\n */\n format: string | null = null;\n\n /**\n * Whether this is the primary sample for the voice profile\n */\n isPrimary: boolean = false;\n\n constructor(options: VoiceSampleOptions = {}) {\n super(options);\n\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.assetId !== undefined) this.assetId = options.assetId;\n if (options.duration !== undefined) this.duration = options.duration;\n if (options.transcription !== undefined)\n this.transcription = options.transcription;\n if (options.quality !== undefined) this.quality = options.quality;\n if (options.sampleRate !== undefined) this.sampleRate = options.sampleRate;\n if (options.channels !== undefined) this.channels = options.channels;\n if (options.format !== undefined) this.format = options.format;\n if (options.isPrimary !== undefined) this.isPrimary = options.isPrimary;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if sample meets minimum duration requirement (3 seconds)\n */\n get meetsMinDuration(): boolean {\n return this.duration >= 3;\n }\n\n /**\n * Check if sample is high quality and suitable for cloning\n */\n get isSuitableForCloning(): boolean {\n return this.meetsMinDuration && this.quality !== 'low';\n }\n}\n"],"mappings":";;;;AAOA,eAAe,wBAAwB,KAAK,MAAM,u+6BAAymjC,CAAC;;;;;;;;;;;;;;;;;;AC0IrpjC,IAAM,eAAN,cAA2B,WAAW;CAM3C,WAA0B;;;;CAK1B,OAAe;;;;CAKf,cAA6B;;;;CAK7B,WAAmB;;;;CAKnB,SAAsB;;;;;CAMtB,eAA8B;CAO9B,gBAA+B;;;;;CAM/B,YAA4C;;;;;CAM5C,eAAuB;;;;;CAMvB,eAAuB;;;;;;;;CASvB,SAA6B;;;;CAK7B,WAAmB;;;;CAKnB,eAA8B;CAE9B,YAAY,UAA+B,CAAC,GAAG;EAC7C,MAAM,OAAO;EAEb,IAAI,QAAQ,SAAS,KAAA,GAAW,KAAK,OAAO,QAAQ;EACpD,IAAI,QAAQ,gBAAgB,KAAA,GAC1B,KAAK,cAAc,QAAQ;EAC7B,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;EAC5D,IAAI,QAAQ,WAAW,KAAA,GAAW,KAAK,SAAS,QAAQ;EACxD,IAAI,QAAQ,iBAAiB,KAAA,GAC3B,KAAK,eAAe,QAAQ;EAC9B,IAAI,QAAQ,kBAAkB,KAAA,GAC5B,KAAK,gBAAgB,QAAQ;EAC/B,IAAI,QAAQ,cAAc,KAAA,GAAW,KAAK,YAAY,QAAQ;EAC9D,IAAI,QAAQ,iBAAiB,KAAA,GAC3B,KAAK,eAAe,QAAQ;EAC9B,IAAI,QAAQ,iBAAiB,KAAA,GAC3B,KAAK,eAAe,QAAQ;EAC9B,IAAI,QAAQ,WAAW,KAAA,GAAW,KAAK,SAAS,QAAQ;EACxD,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;EAC5D,IAAI,QAAQ,iBAAiB,KAAA,GAC3B,KAAK,eAAe,QAAQ;EAC9B,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;CAC9D;;;;CAKA,IAAI,WAAoB;EACtB,OAAO,KAAK,kBAAkB;CAChC;;;;CAKA,IAAI,aAAsB;EACxB,OAAO,KAAK,iBAAiB,QAAQ,CAAC,KAAK;CAC7C;;;;CAKA,IAAI,UAAmB;EACrB,OAAO,KAAK,WAAW;CACzB;;;;CAKA,IAAI,WAAoB;EACtB,OAAO,KAAK,aAAa;CAC3B;;;;;CAMA,gBAA6B;EAC3B,MAAM,YAAY,SAAS,KAAK,SAAS,IAAI,KAAK,YAAY,CAAC;EAC/D,MAAM,SACJ,YAAY,UAAU,MAAM,KAAK,YAAY,UAAU,WAAW;EACpE,MAAM,YACJ,YAAY,UAAU,SAAS,KAC/B,YAAY,UAAU,OAAO,KAC7B,YAAY,UAAU,eAAe;EAEvC,OAAO;GACL,IACE,YAAY,UAAU,EAAE,KACxB,YAAY,UAAU,OAAO,KAC7B,YAAY,KAAK,EAAE;GACrB,MAAM,KAAK,QAAQ,KAAA;GACnB,UAAU,KAAK,YAAY,KAAA;GAC3B;GACA;GACA,UAAU;IACR,GAAG;IACH,UAAU,KAAK;IACf,cAAc,KAAK;IACnB,cAAc,KAAK;GACrB;EACF;CACF;AACF;AAhK+C,gBAAlC,cAAyC,mBAAkB,2BAAA;AAMtE,kBAAA,CADC,SAAS,EAAE,UAAU,KAAK,CAAC,CAAA,GALjB,aAMX,WAAA,YAAA,CAAA;AAiCA,kBAAA,CADC,gBAAgB,kCAAkC,CAAA,GAtCxC,aAuCX,WAAA,iBAAA,CAAA;AAvCW,eAAN,kBAAA,CAXN,aAAa,EAAE,MAAM,WAAW,CAAC,GACjC,KAAK;CACJ,eAAe;CACf,KAAK,EACH,SAAS;EAAC;EAAQ;EAAO;EAAU;EAAU;CAAQ,EACvD;CACA,KAAK,EACH,SAAS,CAAC,QAAQ,KAAK,EACzB;CACA,KAAK,EAAE,cAAc,KAAK;AAC5B,CAAC,CAAA,GACY,YAAA;AAkKb,SAAS,SAAS,OAAkD;CAClE,OAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,YAAY,OAAoC;CACvD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ,KAAA;AACjE;;;;;;;;;;;;;;;;;;AC1HO,IAAM,cAAN,cAA0B,QAAQ;CAKvC,iBAAgC;;;;CAKhC,aAAqB;CAMrB,eAA8B;;;;CAK9B,WAAmB;;;;CAKnB,cAAmC;;;;CAKnC,gBAAqC,CAAC;CAEtC,YAAY,UAA8B,CAAC,GAAG;EAC5C,MAAM;GACJ,GAAG;GACH,MAAM;EACR,CAAC;EAED,IAAI,QAAQ,mBAAmB,KAAA,GAC7B,KAAK,iBAAiB,QAAQ;EAChC,IAAI,QAAQ,eAAe,KAAA,GAAW,KAAK,aAAa,QAAQ;EAChE,IAAI,QAAQ,iBAAiB,KAAA,GAC3B,KAAK,eAAe,QAAQ;EAC9B,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;EAC5D,IAAI,QAAQ,gBAAgB,KAAA,GAC1B,KAAK,cAAc,QAAQ;EAC7B,IAAI,QAAQ,kBAAkB,KAAA,GAC5B,KAAK,gBAAgB,QAAQ;CACjC;;;;CAKA,IAAI,YAAoB;EACtB,OAAO,KAAK,WAAW,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE;CACtD;;;;CAKA,IAAI,iBAAyB;EAC3B,IAAI,KAAK,aAAa,GAAG,OAAO;EAChC,OAAO,KAAK,YAAY,KAAK;CAC/B;;;;CAKA,IAAI,iBAA0B;EAC5B,OAAO,KAAK,gBAAgB,QAAQ,KAAK,YAAY,SAAS;CAChE;;;;CAKA,cAAc,SAAoC;EAChD,IAAI,CAAC,KAAK,aAAa,OAAO;EAC9B,OACE,KAAK,YAAY,MAAM,OAAO,WAAW,GAAG,SAAS,UAAU,GAAG,GAAG,KACrE;CAEJ;;;;;;;CAQA,OAAO,sBACL,SACa;EACb,MAAM,EAAE,QAAQ,eAAe,UAAU,aAAa,GAAG,SAAS;EAClE,OAAO,IAAI,YAAY;GACrB,GAAG;GACH,UAAU,YAAY,OAAO,mBAAmB;GAChD,aAAa,eAAe,sBAAsB,OAAO,KAAK;GAC9D,eAAe;IACb,GAAG,8BAA8B,MAAM;IACvC,GAAG;GACL;EACF,CAAC;CACH;AACF;AAxG2C,gBAA9B,aAAqC,mBAAkB,2BAAA;AAKlE,kBAAA,CADC,iBAAiB,YAAY,CAAA,GAJnB,YAKX,WAAA,kBAAA,CAAA;AAWA,kBAAA,CADC,gBAAgB,kCAAkC,CAAA,GAfxC,YAgBX,WAAA,gBAAA,CAAA;AAhBW,cAAN,kBAAA,CAXN,aAAa,EAAE,MAAM,WAAW,CAAC,GACjC,KAAK;CACJ,eAAe;CACf,KAAK,EACH,SAAS;EAAC;EAAQ;EAAO;EAAU;CAAQ,EAC7C;CACA,KAAK,EACH,SAAS,CAAC,QAAQ,KAAK,EACzB;CACA,KAAK;AACP,CAAC,CAAA,GACY,WAAA;AA0GN,SAAS,sBACd,OACqB;CACrB,IAAI,CAAC,SAAS,MAAM,WAAW,GAC7B,OAAO;CAET,OAAO,MAAM,KAAK,UAAU;EAC1B,MAAM,KAAK;EACX,OAAO,KAAK;EACZ,KAAK,KAAK;EACV,YAAY,KAAK;EACjB,WAAW,KAAK;CAClB,EAAE;AACJ;AAEO,SAAS,8BACd,QACqB;CACrB,OAAO;EACL,YAAY,OAAO;EACnB,QAAQ,OAAO,UAAU,sBAAsB,OAAO,WAAW;EACjE,aAAa,OAAO;EACpB,UAAU,OAAO;EACjB,UAAU,OAAO,MAAM;EACvB,UAAU,OAAO;EACjB,OAAO,OAAO;CAChB;AACF;AAEA,SAAS,sBAAsB,aAAyC;CACtE,MAAM,aAAa,YAAY,MAAM,KAAK,CAAC,CAAA,CAAE,EAAC,EAAG,KAAK,CAAA,CAAE,YAAY;CACpE,IAAI,CAAC,YAAY,WAAW,QAAQ,GAClC;CAEF,OAAO,WAAW,MAAM,CAAe;AACzC;;;;;;;;;;;;;;;;;;ACpNO,IAAM,cAAN,cAA0B,WAAW;CAK1C,WAA0B;CAM1B,iBAAgC;CAOhC,UAAyB;;;;CAKzB,WAAmB;;;;;CAMnB,gBAA+B;;;;;;;CAQ/B,UAAyB;;;;CAKzB,aAA4B;;;;CAK5B,WAA0B;;;;CAK1B,SAAwB;;;;CAKxB,YAAqB;CAErB,YAAY,UAA8B,CAAC,GAAG;EAC5C,MAAM,OAAO;EAEb,IAAI,QAAQ,mBAAmB,KAAA,GAC7B,KAAK,iBAAiB,QAAQ;EAChC,IAAI,QAAQ,YAAY,KAAA,GAAW,KAAK,UAAU,QAAQ;EAC1D,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;EAC5D,IAAI,QAAQ,kBAAkB,KAAA,GAC5B,KAAK,gBAAgB,QAAQ;EAC/B,IAAI,QAAQ,YAAY,KAAA,GAAW,KAAK,UAAU,QAAQ;EAC1D,IAAI,QAAQ,eAAe,KAAA,GAAW,KAAK,aAAa,QAAQ;EAChE,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;EAC5D,IAAI,QAAQ,WAAW,KAAA,GAAW,KAAK,SAAS,QAAQ;EACxD,IAAI,QAAQ,cAAc,KAAA,GAAW,KAAK,YAAY,QAAQ;EAC9D,IAAI,QAAQ,aAAa,KAAA,GAAW,KAAK,WAAW,QAAQ;CAC9D;;;;CAKA,IAAI,mBAA4B;EAC9B,OAAO,KAAK,YAAY;CAC1B;;;;CAKA,IAAI,uBAAgC;EAClC,OAAO,KAAK,oBAAoB,KAAK,YAAY;CACnD;AACF;AAzF8C,cAAjC,aAAwC,mBAAkB,2BAAA;AAKrE,gBAAA,CADC,SAAS,EAAE,UAAU,KAAK,CAAC,CAAA,GAJjB,YAKX,WAAA,YAAA,CAAA;AAMA,gBAAA,CADC,iBAAiB,YAAY,CAAA,GAVnB,YAWX,WAAA,kBAAA,CAAA;AAOA,gBAAA,CADC,gBAAgB,kCAAkC,CAAA,GAjBxC,YAkBX,WAAA,WAAA,CAAA;AAlBW,cAAN,gBAAA,CAXN,aAAa,EAAE,MAAM,WAAW,CAAC,GACjC,KAAK;CACJ,eAAe;CACf,KAAK,EACH,SAAS;EAAC;EAAQ;EAAO;EAAU;CAAQ,EAC7C;CACA,KAAK,EACH,SAAS,CAAC,QAAQ,KAAK,EACzB;CACA,KAAK;AACP,CAAC,CAAA,GACY,WAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/__smrt-register__.ts","../src/voice-profile.ts","../src/voice-output.ts","../src/voice-sample.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-voice\\\",\\\"packageVersion\\\":\\\"0.57.12\\\",\\\"objects\\\":{\\\"@happyvertical/smrt-voice:VoiceOutput\\\":{\\\"name\\\":\\\"voiceoutput\\\",\\\"className\\\":\\\"VoiceOutput\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceOutput\\\",\\\"collection\\\":\\\"contents\\\",\\\"description\\\":\\\"Generated audio output from text-to-speech synthesis\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-output.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"fields\\\":{\\\"created_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"updated_at\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"tenantId\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"_meta\\\":{\\\"generated\\\":true,\\\"source\\\":\\\"tenantScoped_decorator\\\",\\\"sqlType\\\":\\\"UUID\\\",\\\"__tenancy\\\":{\\\"isTenantIdField\\\":true,\\\"mode\\\":\\\"optional\\\",\\\"field\\\":\\\"tenantId\\\",\\\"autoFilter\\\":true,\\\"autoPopulate\\\":true,\\\"allowSuperAdminBypass\\\":false}}},\\\"type\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"variant\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"fileKey\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"author\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"name\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":true,\\\"default\\\":\\\"\\\",\\\"_meta\\\":{\\\"required\\\":true}},\\\"title\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"description\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"body\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"bodyFormat\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"enum\\\":[\\\"markdown\\\",\\\"html\\\"]},\\\"publish_date\\\":{\\\"type\\\":\\\"datetime\\\",\\\"required\\\":false},\\\"url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"source\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"original_url\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"tags\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"category\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"draft\\\",\\\"enum\\\":[\\\"published\\\",\\\"draft\\\",\\\"review\\\",\\\"archived\\\",\\\"deleted\\\"]},\\\"state\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"active\\\",\\\"enum\\\":[\\\"deprecated\\\",\\\"active\\\",\\\"highlighted\\\"]},\\\"metadata\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"thumbnailAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VoiceProfile\\\"},\\\"sourceText\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"\\\"},\\\"audioAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"duration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"wordTimings\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":[]},\\\"audioMetadata\\\":{\\\"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},{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"object\\\",\\\"optional\\\":true,\\\"typeUnresolved\\\":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},\\\"getWordAtTime\\\":{\\\"name\\\":\\\"getWordAtTime\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"seconds\\\",\\\"type\\\":\\\"number\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"WordTiming | null\\\",\\\"isStatic\\\":false,\\\"isPublic\\\":true},\\\"fromSynthesizedSpeech\\\":{\\\"name\\\":\\\"fromSynthesizedSpeech\\\",\\\"async\\\":false,\\\"parameters\\\":[{\\\"name\\\":\\\"options\\\",\\\"type\\\":\\\"VoiceOutputFromSynthesizedSpeechOptions\\\",\\\"optional\\\":false}],\\\"returnType\\\":\\\"VoiceOutput\\\",\\\"isStatic\\\":true,\\\"isPublic\\\":true}},\\\"decoratorConfig\\\":{\\\"tableStrategy\\\":\\\"sti\\\",\\\"api\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\",\\\"create\\\",\\\"delete\\\"]},\\\"mcp\\\":{\\\"include\\\":[\\\"list\\\",\\\"get\\\"]},\\\"cli\\\":true,\\\"tenantScoped\\\":{\\\"mode\\\":\\\"optional\\\"},\\\"tableName\\\":\\\"contents\\\"},\\\"extends\\\":\\\"Content\\\",\\\"extendsQualified\\\":\\\"@happyvertical/smrt-content:Content\\\",\\\"exportName\\\":\\\"VoiceOutput\\\",\\\"collectionExportName\\\":\\\"VoiceOutputCollection\\\",\\\"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 \\\\\\\"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 \\\\\\\"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);\\\",\\\"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},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"voice_profiles\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"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},\\\"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}},\\\"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_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"contents_audio_asset_id_idx\\\",\\\"columns\\\":[\\\"audio_asset_id\\\"]},{\\\"name\\\":\\\"contents_feed_source_id_idx\\\",\\\"columns\\\":[\\\"feed_source_id\\\"]}],\\\"version\\\":\\\"ee1272af\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"},\\\"@happyvertical/smrt-voice:VoiceProfile\\\":{\\\"name\\\":\\\"voiceprofile\\\",\\\"className\\\":\\\"VoiceProfile\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceProfile\\\",\\\"collection\\\":\\\"voiceprofiles\\\",\\\"description\\\":\\\"Voice profile for AI-powered speech synthesis\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-profile.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"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},\\\"language\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"en-US\\\"},\\\"gender\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"neutral\\\",\\\"enum\\\":[\\\"male\\\",\\\"female\\\",\\\"neutral\\\"]},\\\"designPrompt\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"sampleAssetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"voiceData\\\":{\\\"type\\\":\\\"json\\\",\\\"required\\\":false,\\\"default\\\":{}},\\\"defaultSpeed\\\":{\\\"type\\\":\\\"decimal\\\",\\\"required\\\":false,\\\"default\\\":1},\\\"defaultPitch\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"status\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"pending\\\",\\\"enum\\\":[\\\"pending\\\",\\\"processing\\\",\\\"ready\\\",\\\"failed\\\"]},\\\"provider\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"qwen3-tts\\\"},\\\"errorMessage\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false}},\\\"methods\\\":{\\\"toSpeechVoice\\\":{\\\"name\\\":\\\"toSpeechVoice\\\",\\\"async\\\":false,\\\"parameters\\\":[],\\\"returnType\\\":\\\"SpeechVoice\\\",\\\"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\\\":\\\"VoiceProfile\\\",\\\"collectionExportName\\\":\\\"VoiceProfileCollection\\\",\\\"displayLabelField\\\":\\\"name\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"voice_profiles\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"voice_profiles\\\\\\\" (\\\\n \\\\\\\"id\\\\\\\" UUID PRIMARY KEY NOT NULL,\\\\n \\\\\\\"slug\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"context\\\\\\\" TEXT NOT NULL DEFAULT '',\\\\n \\\\\\\"_meta_type\\\\\\\" TEXT NOT NULL,\\\\n \\\\\\\"_meta_data\\\\\\\" JSON,\\\\n \\\\\\\"created_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"updated_at\\\\\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\\\n \\\\\\\"tenant_id\\\\\\\" UUID,\\\\n \\\\\\\"name\\\\\\\" TEXT DEFAULT '',\\\\n \\\\\\\"description\\\\\\\" TEXT,\\\\n \\\\\\\"language\\\\\\\" TEXT DEFAULT 'en-US',\\\\n \\\\\\\"gender\\\\\\\" TEXT DEFAULT 'neutral',\\\\n \\\\\\\"design_prompt\\\\\\\" TEXT,\\\\n \\\\\\\"sample_asset_id\\\\\\\" UUID,\\\\n \\\\\\\"voice_data\\\\\\\" JSON DEFAULT '{}',\\\\n \\\\\\\"default_speed\\\\\\\" REAL DEFAULT 1,\\\\n \\\\\\\"default_pitch\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"status\\\\\\\" TEXT DEFAULT 'pending',\\\\n \\\\\\\"provider\\\\\\\" TEXT DEFAULT 'qwen3-tts',\\\\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},\\\"name\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"\\\"},\\\"description\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"language\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"en-US\\\"},\\\"gender\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"neutral\\\"},\\\"design_prompt\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"sample_asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"voice_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false,\\\"default\\\":{}},\\\"default_speed\\\":{\\\"type\\\":\\\"REAL\\\",\\\"notNull\\\":false,\\\"default\\\":1},\\\"default_pitch\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"status\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"pending\\\"},\\\"provider\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"qwen3-tts\\\"},\\\"error_message\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"voice_profiles_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"voice_profiles_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"voice_profiles_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"voice_profiles_sample_asset_id_idx\\\",\\\"columns\\\":[\\\"sample_asset_id\\\"]}],\\\"version\\\":\\\"b3717c47\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"},\\\"@happyvertical/smrt-voice:VoiceSample\\\":{\\\"name\\\":\\\"voicesample\\\",\\\"className\\\":\\\"VoiceSample\\\",\\\"qualifiedName\\\":\\\"@happyvertical/smrt-voice:VoiceSample\\\",\\\"collection\\\":\\\"voicesamples\\\",\\\"description\\\":\\\"Audio sample for voice cloning\\\",\\\"filePath\\\":\\\"/home/runner/work/smrt/smrt/packages/voice/src/voice-sample.ts\\\",\\\"packageName\\\":\\\"@happyvertical/smrt-voice\\\",\\\"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}}},\\\"voiceProfileId\\\":{\\\"type\\\":\\\"foreignKey\\\",\\\"required\\\":false,\\\"related\\\":\\\"VoiceProfile\\\"},\\\"assetId\\\":{\\\"type\\\":\\\"crossPackageRef\\\",\\\"required\\\":false,\\\"related\\\":\\\"@happyvertical/smrt-assets:Asset\\\"},\\\"duration\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false,\\\"default\\\":0},\\\"transcription\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"quality\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false,\\\"default\\\":\\\"medium\\\",\\\"enum\\\":[\\\"low\\\",\\\"medium\\\",\\\"high\\\"]},\\\"sampleRate\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false},\\\"channels\\\":{\\\"type\\\":\\\"integer\\\",\\\"required\\\":false},\\\"format\\\":{\\\"type\\\":\\\"text\\\",\\\"required\\\":false},\\\"isPrimary\\\":{\\\"type\\\":\\\"boolean\\\",\\\"required\\\":false,\\\"default\\\":false}},\\\"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\\\":\\\"VoiceSample\\\",\\\"collectionExportName\\\":\\\"VoiceSampleCollection\\\",\\\"schema\\\":{\\\"tableName\\\":\\\"voice_samples\\\",\\\"ddl\\\":\\\"CREATE TABLE IF NOT EXISTS \\\\\\\"voice_samples\\\\\\\" (\\\\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 \\\\\\\"voice_profile_id\\\\\\\" UUID,\\\\n \\\\\\\"asset_id\\\\\\\" UUID,\\\\n \\\\\\\"duration\\\\\\\" INTEGER DEFAULT 0,\\\\n \\\\\\\"transcription\\\\\\\" TEXT,\\\\n \\\\\\\"quality\\\\\\\" TEXT DEFAULT 'medium',\\\\n \\\\\\\"sample_rate\\\\\\\" INTEGER,\\\\n \\\\\\\"channels\\\\\\\" INTEGER,\\\\n \\\\\\\"format\\\\\\\" TEXT,\\\\n \\\\\\\"is_primary\\\\\\\" BOOLEAN DEFAULT FALSE\\\\n);\\\",\\\"columns\\\":{\\\"id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"primaryKey\\\":true,\\\"referenceKind\\\":\\\"id\\\",\\\"notNull\\\":true},\\\"slug\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"context\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"\\\"},\\\"_meta_type\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":true},\\\"_meta_data\\\":{\\\"type\\\":\\\"JSON\\\",\\\"notNull\\\":false},\\\"created_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"updated_at\\\":{\\\"type\\\":\\\"TIMESTAMP\\\",\\\"notNull\\\":true,\\\"default\\\":\\\"current_timestamp\\\"},\\\"tenant_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"tenantId\\\",\\\"notNull\\\":false},\\\"voice_profile_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"foreignKey\\\",\\\"notNull\\\":false,\\\"foreignKey\\\":{\\\"table\\\":\\\"voice_profiles\\\",\\\"column\\\":\\\"id\\\",\\\"onDelete\\\":\\\"NO ACTION\\\",\\\"onUpdate\\\":\\\"CASCADE\\\"}},\\\"asset_id\\\":{\\\"type\\\":\\\"UUID\\\",\\\"referenceKind\\\":\\\"crossPackageRef\\\",\\\"notNull\\\":false},\\\"duration\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false,\\\"default\\\":0},\\\"transcription\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"quality\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false,\\\"default\\\":\\\"medium\\\"},\\\"sample_rate\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false},\\\"channels\\\":{\\\"type\\\":\\\"INTEGER\\\",\\\"notNull\\\":false},\\\"format\\\":{\\\"type\\\":\\\"TEXT\\\",\\\"notNull\\\":false},\\\"is_primary\\\":{\\\"type\\\":\\\"BOOLEAN\\\",\\\"notNull\\\":false,\\\"default\\\":false}},\\\"indexes\\\":[{\\\"name\\\":\\\"voice_samples_slug_context_meta_type_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"slug\\\",\\\"context\\\",\\\"_meta_type\\\"],\\\"unique\\\":true,\\\"nullsNotDistinct\\\":true},{\\\"name\\\":\\\"voice_samples_meta_type_idx\\\",\\\"columns\\\":[\\\"_meta_type\\\"]},{\\\"name\\\":\\\"voice_samples_tenant_id_created_at_idx\\\",\\\"columns\\\":[\\\"tenant_id\\\",\\\"created_at\\\"]},{\\\"name\\\":\\\"voice_samples_voice_profile_id_idx\\\",\\\"columns\\\":[\\\"voice_profile_id\\\"]},{\\\"name\\\":\\\"voice_samples_asset_id_idx\\\",\\\"columns\\\":[\\\"asset_id\\\"]}],\\\"version\\\":\\\"cbb4acc4\\\"},\\\"importPath\\\":\\\"@happyvertical/smrt-voice\\\"}},\\\"moduleType\\\":\\\"smrt\\\",\\\"smrtDependencies\\\":[\\\"@happyvertical/smrt-assets\\\",\\\"@happyvertical/smrt-content\\\",\\\"@happyvertical/smrt-core\\\",\\\"@happyvertical/smrt-tenancy\\\"],\\\"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\\\"]},\\\"stampsConstructors\\\":true}\"));\n","/**\n * Voice Profile Model\n *\n * Manages voice profiles for AI-powered voice synthesis and cloning.\n * Supports voice design via natural language descriptions and voice\n * cloning from audio samples.\n */\n\nimport type { SmrtObjectOptions } from '@happyvertical/smrt-core';\nimport { crossPackageRef, SmrtObject, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped, tenantId } from '@happyvertical/smrt-tenancy';\nimport type { SpeechVoice } from '@happyvertical/speech';\n\n/**\n * Voice profile status\n */\nexport type VoiceProfileStatus = 'pending' | 'processing' | 'ready' | 'failed';\n\n/**\n * Voice gender classification\n */\nexport type VoiceGender = 'male' | 'female' | 'neutral';\n\n/**\n * Voice profile creation options\n */\nexport interface VoiceProfileOptions extends SmrtObjectOptions {\n /**\n * Human-readable name for the voice profile\n */\n name?: string;\n\n /**\n * Description of the voice characteristics\n */\n description?: string | null;\n\n /**\n * ISO language code (e.g., 'en-US', 'zh-CN')\n */\n language?: string;\n\n /**\n * Voice gender classification\n * @default 'neutral'\n */\n gender?: VoiceGender;\n\n /**\n * Natural language description for voice design\n * Used when creating a voice from scratch\n */\n designPrompt?: string | null;\n\n /**\n * Asset ID of the audio sample for voice cloning\n * Should be at least 3 seconds of clear speech\n */\n sampleAssetId?: string | null;\n\n /**\n * Provider-specific voice data (ID, embedding, etc.)\n * Stored after voice creation/cloning\n */\n voiceData?: Record<string, unknown> | null;\n\n /**\n * Default speech speed multiplier\n * @default 1.0\n */\n defaultSpeed?: number;\n\n /**\n * Default pitch adjustment in semitones\n * @default 0\n */\n defaultPitch?: number;\n\n /**\n * Voice profile status\n * @default 'pending'\n */\n status?: VoiceProfileStatus;\n\n /**\n * TTS provider that created this voice\n * @default 'qwen3-tts'\n */\n provider?: string;\n\n /**\n * Error message if status is 'failed'\n */\n errorMessage?: string | null;\n\n /**\n * Tenant ID for multi-tenant isolation\n * Null for global/default voices\n */\n tenantId?: string | null;\n}\n\n/**\n * Voice profile for AI-powered speech synthesis\n *\n * VoiceProfile represents a configured voice identity that can be used\n * for text-to-speech synthesis. Voices can be created through:\n * - Voice design: Natural language description of desired voice characteristics\n * - Voice cloning: 3+ second audio sample for voice replication\n *\n * @example\n * ```typescript\n * import { VoiceProfile } from '@happyvertical/smrt-voice';\n *\n * // Create a designed voice\n * const anchorVoice = new VoiceProfile({\n * name: 'News Anchor',\n * description: 'Professional news anchor voice with clear enunciation',\n * language: 'en-US',\n * gender: 'male',\n * designPrompt: 'Warm, authoritative male voice with slight gravitas, suitable for news broadcasts',\n * provider: 'qwen3-tts',\n * });\n *\n * // Create a cloned voice\n * const clonedVoice = new VoiceProfile({\n * name: 'Custom Voice',\n * description: 'Cloned from user sample',\n * language: 'en-US',\n * sampleAssetId: 'asset-123',\n * provider: 'qwen3-tts',\n * });\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 VoiceProfile extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Tenant ID for multi-tenant isolation\n * Nullable to support global/default voices\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Human-readable name for the voice profile\n */\n name: string = '';\n\n /**\n * Description of the voice characteristics\n */\n description: string | null = null;\n\n /**\n * ISO language code (e.g., 'en-US', 'zh-CN')\n */\n language: string = 'en-US';\n\n /**\n * Voice gender classification\n */\n gender: VoiceGender = 'neutral';\n\n /**\n * Natural language description for voice design\n * Used when creating a voice from scratch via AI\n */\n designPrompt: string | null = null;\n\n /**\n * Asset ID of the audio sample for voice cloning\n * Should be at least 3 seconds of clear speech\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n sampleAssetId: string | null = null;\n\n /**\n * Provider-specific voice data (ID, embedding, etc.)\n * Stored after voice creation/cloning is complete\n */\n voiceData: Record<string, unknown> | null = null;\n\n /**\n * Default speech speed multiplier (0.5 - 2.0)\n * 1.0 = normal speed\n */\n defaultSpeed: number = 1.0;\n\n /**\n * Default pitch adjustment in semitones (-20 to 20)\n * 0 = no adjustment\n */\n defaultPitch: number = 0;\n\n /**\n * Voice profile status\n * - pending: Profile created but voice not yet generated\n * - processing: Voice generation/cloning in progress\n * - ready: Voice is ready for use\n * - failed: Voice generation failed\n */\n status: VoiceProfileStatus = 'pending';\n\n /**\n * TTS provider that created/manages this voice\n */\n provider: string = 'qwen3-tts';\n\n /**\n * Error message if status is 'failed'\n */\n errorMessage: string | null = null;\n\n constructor(options: VoiceProfileOptions = {}) {\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.language !== undefined) this.language = options.language;\n if (options.gender !== undefined) this.gender = options.gender;\n if (options.designPrompt !== undefined)\n this.designPrompt = options.designPrompt;\n if (options.sampleAssetId !== undefined)\n this.sampleAssetId = options.sampleAssetId;\n if (options.voiceData !== undefined) this.voiceData = options.voiceData;\n if (options.defaultSpeed !== undefined)\n this.defaultSpeed = options.defaultSpeed;\n if (options.defaultPitch !== undefined)\n this.defaultPitch = options.defaultPitch;\n if (options.status !== undefined) this.status = options.status;\n if (options.provider !== undefined) this.provider = options.provider;\n if (options.errorMessage !== undefined)\n this.errorMessage = options.errorMessage;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if this voice profile uses voice cloning\n */\n get isCloned(): boolean {\n return this.sampleAssetId !== null;\n }\n\n /**\n * Check if this voice profile uses voice design\n */\n get isDesigned(): boolean {\n return this.designPrompt !== null && !this.isCloned;\n }\n\n /**\n * Check if the voice is ready for use\n */\n get isReady(): boolean {\n return this.status === 'ready';\n }\n\n /**\n * Check if this is a global (default) voice\n */\n get isGlobal(): boolean {\n return this.tenantId === null;\n }\n\n /**\n * Convert this persisted profile into the runtime voice shape consumed by\n * @happyvertical/speech adapters.\n */\n toSpeechVoice(): SpeechVoice {\n const voiceData = isRecord(this.voiceData) ? this.voiceData : {};\n const prompt =\n stringValue(voiceData.prompt) ?? stringValue(voiceData.voicePrompt);\n const speakerId =\n stringValue(voiceData.speakerId) ??\n stringValue(voiceData.speaker) ??\n stringValue(voiceData.providerVoiceId);\n\n return {\n id:\n stringValue(voiceData.id) ??\n stringValue(voiceData.voiceId) ??\n stringValue(this.id),\n name: this.name || undefined,\n language: this.language || undefined,\n speakerId,\n prompt,\n metadata: {\n ...voiceData,\n provider: this.provider,\n defaultSpeed: this.defaultSpeed,\n defaultPitch: this.defaultPitch,\n },\n };\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n","/**\n * Voice Output Model\n *\n * Represents generated audio output from text-to-speech synthesis.\n * Extends Content to leverage content management features.\n */\n\nimport { Content, type ContentOptions } from '@happyvertical/smrt-content';\nimport { crossPackageRef, foreignKey, smrt } from '@happyvertical/smrt-core';\nimport { TenantScoped } from '@happyvertical/smrt-tenancy';\nimport type {\n WordTiming as SpeechWordTiming,\n SynthesizedSpeech,\n} from '@happyvertical/speech';\nimport { VoiceProfile } from './voice-profile.js';\n\n/**\n * Word timing information for lip-sync alignment\n */\nexport interface WordTiming {\n /**\n * The word\n */\n word: string;\n\n /**\n * Start time in seconds\n */\n start: number;\n\n /**\n * End time in seconds\n */\n end: number;\n\n /**\n * Provider confidence score, when available\n */\n confidence?: number;\n\n /**\n * Speaker identifier, when diarization is available\n */\n speakerId?: string;\n}\n\n/**\n * Voice output metadata\n */\nexport interface VoiceOutputMetadata {\n /**\n * Sample rate in Hz\n */\n sampleRate?: number;\n\n /**\n * Audio format (e.g., 'wav', 'mp3', 'ogg')\n */\n format?: string;\n\n /**\n * MIME type returned by the speech provider\n */\n contentType?: string;\n\n /**\n * Number of audio channels\n */\n channels?: number;\n\n /**\n * Bit depth (e.g., 16, 24, 32)\n */\n bitDepth?: number;\n\n /**\n * File size in bytes\n */\n fileSize?: number;\n\n /**\n * TTS provider used\n */\n provider?: string;\n\n /**\n * Model used for synthesis\n */\n model?: string;\n\n /**\n * Speech speed used (1.0 = normal)\n */\n speed?: number;\n\n /**\n * Pitch adjustment used (semitones)\n */\n pitch?: number;\n}\n\n/**\n * Voice output creation options\n */\nexport interface VoiceOutputOptions extends ContentOptions {\n /**\n * Voice profile used for synthesis\n */\n voiceProfileId?: string | null;\n\n /**\n * Original text that was synthesized\n */\n sourceText?: string;\n\n /**\n * Asset ID of the generated audio file\n */\n audioAssetId?: string | null;\n\n /**\n * Duration of the generated audio in seconds\n */\n duration?: number;\n\n /**\n * Word-level timing information for lip-sync\n */\n wordTimings?: WordTiming[] | null;\n\n /**\n * Audio metadata\n */\n audioMetadata?: VoiceOutputMetadata;\n}\n\n/**\n * Create a VoiceOutput from a runtime @happyvertical/speech synthesis result.\n */\nexport interface VoiceOutputFromSynthesizedSpeechOptions\n extends VoiceOutputOptions {\n /**\n * Runtime synthesis result from @happyvertical/speech.\n */\n speech: SynthesizedSpeech;\n}\n\n/**\n * Generated audio output from text-to-speech synthesis\n *\n * VoiceOutput extends Content to represent audio generated from\n * text using a VoiceProfile. It includes word-level timing information\n * for lip-sync alignment in video production.\n *\n * @example\n * ```typescript\n * import { VoiceOutput } from '@happyvertical/smrt-voice';\n *\n * const output = new VoiceOutput({\n * voiceProfileId: 'voice-123',\n * sourceText: 'Welcome to the evening news broadcast.',\n * audioAssetId: 'asset-789',\n * duration: 3.5,\n * wordTimings: [\n * { word: 'Welcome', start: 0.0, end: 0.4 },\n * { word: 'to', start: 0.4, end: 0.5 },\n * { word: 'the', start: 0.5, end: 0.6 },\n * { word: 'evening', start: 0.6, end: 1.0 },\n * { word: 'news', start: 1.0, end: 1.3 },\n * { word: 'broadcast', start: 1.3, end: 1.9 },\n * ],\n * audioMetadata: {\n * sampleRate: 48000,\n * format: 'wav',\n * channels: 1,\n * provider: 'qwen3-tts',\n * },\n * });\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 VoiceOutput extends Content { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Voice profile used for synthesis\n */\n @foreignKey(() => VoiceProfile)\n voiceProfileId: string | null = null;\n\n /**\n * Original text that was synthesized\n */\n sourceText: string = '';\n\n /**\n * Asset ID of the generated audio file\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n audioAssetId: string | null = null;\n\n /**\n * Duration of the generated audio in seconds\n */\n duration: number = 0;\n\n /**\n * Word-level timing information for lip-sync alignment\n */\n wordTimings: WordTiming[] | null = null;\n\n /**\n * Audio metadata (sample rate, format, etc.)\n */\n audioMetadata: VoiceOutputMetadata = {};\n\n constructor(options: VoiceOutputOptions = {}) {\n super({\n ...options,\n type: 'voice-output',\n });\n\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.sourceText !== undefined) this.sourceText = options.sourceText;\n if (options.audioAssetId !== undefined)\n this.audioAssetId = options.audioAssetId;\n if (options.duration !== undefined) this.duration = options.duration;\n if (options.wordTimings !== undefined)\n this.wordTimings = options.wordTimings;\n if (options.audioMetadata !== undefined)\n this.audioMetadata = options.audioMetadata;\n }\n\n /**\n * Get the word count of the source text\n */\n get wordCount(): number {\n return this.sourceText.split(/\\s+/).filter(Boolean).length;\n }\n\n /**\n * Get the average words per second rate\n */\n get wordsPerSecond(): number {\n if (this.duration === 0) return 0;\n return this.wordCount / this.duration;\n }\n\n /**\n * Check if word timing data is available for lip-sync\n */\n get hasWordTimings(): boolean {\n return this.wordTimings !== null && this.wordTimings.length > 0;\n }\n\n /**\n * Get the word at a specific timestamp\n */\n getWordAtTime(seconds: number): WordTiming | null {\n if (!this.wordTimings) return null;\n return (\n this.wordTimings.find((wt) => seconds >= wt.start && seconds < wt.end) ??\n null\n );\n }\n\n /**\n * Build a persisted output model from a provider-neutral speech result.\n *\n * The binary audio remains in the caller-owned asset pipeline; this helper\n * only normalizes metadata and timing fields onto the SMRT model.\n */\n static fromSynthesizedSpeech(\n options: VoiceOutputFromSynthesizedSpeechOptions,\n ): VoiceOutput {\n const { speech, audioMetadata, duration, wordTimings, ...rest } = options;\n return new VoiceOutput({\n ...rest,\n duration: duration ?? speech.durationSeconds ?? 0,\n wordTimings: wordTimings ?? wordTimingsFromSpeech(speech.words),\n audioMetadata: {\n ...metadataFromSynthesizedSpeech(speech),\n ...audioMetadata,\n },\n });\n }\n}\n\nexport function wordTimingsFromSpeech(\n words: readonly SpeechWordTiming[] | null | undefined,\n): WordTiming[] | null {\n if (!words || words.length === 0) {\n return null;\n }\n return words.map((word) => ({\n word: word.word,\n start: word.startSeconds,\n end: word.endSeconds,\n confidence: word.confidence,\n speakerId: word.speakerId,\n }));\n}\n\nexport function metadataFromSynthesizedSpeech(\n speech: SynthesizedSpeech,\n): VoiceOutputMetadata {\n return {\n sampleRate: speech.sampleRate,\n format: speech.format ?? formatFromContentType(speech.contentType),\n contentType: speech.contentType,\n channels: speech.channels,\n fileSize: speech.audio.byteLength,\n provider: speech.provider,\n model: speech.model,\n };\n}\n\nfunction formatFromContentType(contentType: string): string | undefined {\n const normalized = contentType.split(';', 1)[0]?.trim().toLowerCase();\n if (!normalized?.startsWith('audio/')) {\n return undefined;\n }\n return normalized.slice('audio/'.length);\n}\n","/**\n * Voice Sample Model\n *\n * Manages audio samples used for voice cloning.\n * Samples should be at least 3 seconds of clear speech.\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 { VoiceProfile } from './voice-profile.js';\n\n/**\n * Audio sample quality rating\n */\nexport type SampleQuality = 'low' | 'medium' | 'high';\n\n/**\n * Voice sample creation options\n */\nexport interface VoiceSampleOptions extends SmrtObjectOptions {\n /**\n * Voice profile this sample belongs to\n */\n voiceProfileId?: string | null;\n\n /**\n * Asset ID of the audio file\n */\n assetId?: string | null;\n\n /**\n * Sample duration in seconds\n */\n duration?: number;\n\n /**\n * Transcription of what was said in the sample\n */\n transcription?: string | null;\n\n /**\n * Quality rating based on audio analysis\n * @default 'medium'\n */\n quality?: SampleQuality;\n\n /**\n * Sample rate in Hz (e.g., 44100, 48000)\n */\n sampleRate?: number | null;\n\n /**\n * Number of audio channels (1 = mono, 2 = stereo)\n */\n channels?: number | null;\n\n /**\n * Audio format (e.g., 'wav', 'mp3', 'ogg')\n */\n format?: string | null;\n\n /**\n * Whether this is the primary sample for the voice profile\n * @default false\n */\n isPrimary?: boolean;\n\n /**\n * Tenant ID for multi-tenant isolation\n */\n tenantId?: string | null;\n}\n\n/**\n * Audio sample for voice cloning\n *\n * VoiceSample represents an audio recording used as source material\n * for voice cloning. For best results, samples should be:\n * - At least 3 seconds long\n * - Clear speech without background noise\n * - Single speaker only\n * - High quality (44.1kHz or higher)\n *\n * Multiple samples can be associated with a single VoiceProfile\n * to improve voice cloning quality.\n *\n * @example\n * ```typescript\n * import { VoiceSample } from '@happyvertical/smrt-voice';\n *\n * const sample = new VoiceSample({\n * voiceProfileId: 'voice-123',\n * assetId: 'asset-456',\n * duration: 5.2,\n * transcription: 'Hello, this is a test recording for voice cloning.',\n * quality: 'high',\n * sampleRate: 48000,\n * channels: 1,\n * format: 'wav',\n * isPrimary: true,\n * });\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 VoiceSample extends SmrtObject { static __smrtPackage__ = \"@happyvertical/smrt-voice\";\n /**\n * Tenant ID for multi-tenant isolation\n */\n @tenantId({ nullable: true })\n tenantId: string | null = null;\n\n /**\n * Voice profile this sample belongs to\n */\n @foreignKey(() => VoiceProfile)\n voiceProfileId: string | null = null;\n\n /**\n * Asset ID of the audio file\n * References an Asset in smrt-assets\n */\n @crossPackageRef('@happyvertical/smrt-assets:Asset')\n assetId: string | null = null;\n\n /**\n * Sample duration in seconds\n */\n duration: number = 0;\n\n /**\n * Transcription of what was said in the sample\n * Used for alignment and quality verification\n */\n transcription: string | null = null;\n\n /**\n * Quality rating based on audio analysis\n * - low: Noisy or short samples\n * - medium: Acceptable quality\n * - high: Clear audio, good length\n */\n quality: SampleQuality = 'medium';\n\n /**\n * Sample rate in Hz\n */\n sampleRate: number | null = null;\n\n /**\n * Number of audio channels\n */\n channels: number | null = null;\n\n /**\n * Audio format\n */\n format: string | null = null;\n\n /**\n * Whether this is the primary sample for the voice profile\n */\n isPrimary: boolean = false;\n\n constructor(options: VoiceSampleOptions = {}) {\n super(options);\n\n if (options.voiceProfileId !== undefined)\n this.voiceProfileId = options.voiceProfileId;\n if (options.assetId !== undefined) this.assetId = options.assetId;\n if (options.duration !== undefined) this.duration = options.duration;\n if (options.transcription !== undefined)\n this.transcription = options.transcription;\n if (options.quality !== undefined) this.quality = options.quality;\n if (options.sampleRate !== undefined) this.sampleRate = options.sampleRate;\n if (options.channels !== undefined) this.channels = options.channels;\n if (options.format !== undefined) this.format = options.format;\n if (options.isPrimary !== undefined) this.isPrimary = options.isPrimary;\n if (options.tenantId !== undefined) this.tenantId = options.tenantId;\n }\n\n /**\n * Check if sample meets minimum duration requirement (3 seconds)\n */\n get meetsMinDuration(): boolean {\n return this.duration >= 3;\n }\n\n /**\n * Check if sample is high quality and suitable for cloning\n */\n get isSuitableForCloning(): boolean {\n return this.meetsMinDuration && this.quality !== 'low';\n }\n}\n"],"mappings":"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"}
|
package/dist/manifest.json
CHANGED
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-voice",
|
|
6
|
-
"packageVersion": "0.57.
|
|
6
|
+
"packageVersion": "0.57.12",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
10
|
+
"manifest": "2ab0aef7ee48ec92db216fc68585e79aeb7ca8330a738426df36ac67fdcc6ef0",
|
|
11
|
+
"packageJson": "e4a43baf612a367229418f566eab66ef3fb59b0f4f0c2a8889e72f0ca3cf0647",
|
|
12
12
|
"agents": "e7726fd0cee96291548c1bc951b0048bb11a4d5eee3c19632f419779c36be550"
|
|
13
13
|
},
|
|
14
14
|
"exports": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-voice",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.12",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Voice profile management for AI-powered voice synthesis and cloning in the SMRT ecosystem",
|
|
6
6
|
"author": "HappyVertical",
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"AGENTS.md"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@happyvertical/smrt-assets": "0.57.
|
|
33
|
-
"@happyvertical/smrt-config": "0.57.
|
|
34
|
-
"@happyvertical/smrt-content": "0.57.
|
|
35
|
-
"@happyvertical/smrt-core": "0.57.
|
|
36
|
-
"@happyvertical/smrt-tenancy": "0.57.
|
|
37
|
-
"@happyvertical/speech": "^0.105.
|
|
38
|
-
"@happyvertical/utils": "^0.105.
|
|
32
|
+
"@happyvertical/smrt-assets": "0.57.12",
|
|
33
|
+
"@happyvertical/smrt-config": "0.57.12",
|
|
34
|
+
"@happyvertical/smrt-content": "0.57.12",
|
|
35
|
+
"@happyvertical/smrt-core": "0.57.12",
|
|
36
|
+
"@happyvertical/smrt-tenancy": "0.57.12",
|
|
37
|
+
"@happyvertical/speech": "^0.105.5",
|
|
38
|
+
"@happyvertical/utils": "^0.105.5"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@happyvertical/logger": "^0.105.
|
|
42
|
-
"@happyvertical/smrt-vitest": "0.57.
|
|
43
|
-
"@happyvertical/sql": "^0.105.
|
|
41
|
+
"@happyvertical/logger": "^0.105.5",
|
|
42
|
+
"@happyvertical/smrt-vitest": "0.57.12",
|
|
43
|
+
"@happyvertical/sql": "^0.105.5",
|
|
44
44
|
"@types/node": "24.13.6",
|
|
45
45
|
"typescript": "6.0.3",
|
|
46
46
|
"vite": "8.1.4",
|