@mux/ai 0.35.0 → 0.36.0
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-fU3hmKZu.d.ts → index-C2FORyvQ.d.ts} +1 -1
- package/dist/{index-SjpXUdXl.d.ts → index-C2Pk7bbF.d.ts} +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +16 -13
- package/dist/index.js.map +1 -1
- package/dist/primitives/index.d.ts +2 -2
- package/dist/primitives/index.js.map +1 -1
- package/dist/{shots-BMbViFbZ.d.ts → shots-CUI09Ohe.d.ts} +6 -0
- package/dist/workflows/index.d.ts +2 -2
- package/dist/workflows/index.js +15 -12
- package/dist/workflows/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -89,6 +89,12 @@ interface WorkflowMuxClient {
|
|
|
89
89
|
interface MuxAIOptions {
|
|
90
90
|
/** Optional timeout (ms) for helper utilities that support request limits. */
|
|
91
91
|
timeout?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Optional asset snapshot to reuse instead of retrieving the asset from Mux.
|
|
94
|
+
* The snapshot must belong to `assetId`; callers should capture it immediately
|
|
95
|
+
* before starting the workflow.
|
|
96
|
+
*/
|
|
97
|
+
assetSnapshot?: MuxAsset;
|
|
92
98
|
/**
|
|
93
99
|
* Optional credentials for workflow execution.
|
|
94
100
|
* Use encryptForWorkflow when running in Workflow Dev Kit environments.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { A as ASK_QUESTIONS_DEFAULT_MAX_ANSWER_OPTION_LENGTH, j as ASK_QUESTIONS_DEFAULT_MAX_FREE_FORM_ANSWER_LENGTH, k as ASK_QUESTIONS_MAX_QUESTION_LENGTH, l as AskQuestionsOptions, m as AskQuestionsResult, n as AskQuestionsType, o as AudioTranslationOptions, p as AudioTranslationResult, q as AutoCensorProfanityOptions, B as BurnedInCaptionsAnalysis, r as BurnedInCaptionsOptions, s as BurnedInCaptionsPromptOverrides, u as BurnedInCaptionsPromptSections, v as BurnedInCaptionsResult, C as CaptionReplacement, w as CensorMode, x as Chapter, y as ChapterSystemPromptSections, z as ChaptersOptions, D as ChaptersPromptOverrides, E as ChaptersPromptSections, F as ChaptersResult, G as ChaptersType, H as DEFAULT_DESCRIPTION_LENGTH, J as DEFAULT_SUMMARY_KEYWORD_LIMIT, K as DEFAULT_TITLE_LENGTH, M as EditCaptionsOptions, N as EditCaptionsResult, O as EmbeddingsOptions, P as EmbeddingsResult, Q as EngagementInsightsOptions, R as EngagementInsightsResult, T as GOOGLE_VISION_LIKELIHOOD_TO_SCORE, U as HIVE_SEXUAL_CATEGORIES, V as HIVE_VIOLENCE_CATEGORIES, W as HiveModerationOutput, X as HiveModerationSource, Y as ModerationOptions, Z as ModerationProvider, _ as ModerationResult, $ as MomentInsight, a0 as OverallInsight, a1 as ProfanityDetectionPayload, a2 as Question, a3 as QuestionAnswer, a4 as QuestionAnswerType, a5 as ReplacementRecord, a6 as StaticRenditionCleanupOutcome, a7 as SummarizationOptions, a8 as SummarizationPromptOverrides, a9 as SummarizationPromptSections, aa as SummaryAndTagsResult, ab as SummaryType, ac as ThumbnailModerationScore, ad as TranslationChunkingOptions, ae as TranslationOptions, af as TranslationPayload, ag as TranslationResult, ah as aggregateTokenUsage, ai as applyOverrideLists, aj as applyReplacements, ak as askQuestions, al as buildReplacementRegex, am as burnedInCaptionsSchema, an as censorVttContent, ao as chapterSchema, ap as chaptersSchema, aq as createReplacer, ar as editCaptions, as as extractTranscriptSegmentsForHotspots, at as generateChapters, au as generateEmbeddings, av as generateEngagementInsights, aw as generateVideoEmbeddings, ax as getModerationScores, ay as getSummaryAndTags, az as hasBurnedInCaptions, aA as mapShotsToHotspots, aB as normalizeTranslatedVtt, aC as profanityDetectionSchema, aD as questionAnswerSchema, aE as shouldSplitChunkTranslationError, aF as summarySchema, aG as transformCueText, aH as translateAudio, aI as translateCaptions, aJ as translationSchema, aK as validateNeverTranslateTerms, aL as verifyNeverTranslateTerms } from '../index-
|
|
1
|
+
export { A as ASK_QUESTIONS_DEFAULT_MAX_ANSWER_OPTION_LENGTH, j as ASK_QUESTIONS_DEFAULT_MAX_FREE_FORM_ANSWER_LENGTH, k as ASK_QUESTIONS_MAX_QUESTION_LENGTH, l as AskQuestionsOptions, m as AskQuestionsResult, n as AskQuestionsType, o as AudioTranslationOptions, p as AudioTranslationResult, q as AutoCensorProfanityOptions, B as BurnedInCaptionsAnalysis, r as BurnedInCaptionsOptions, s as BurnedInCaptionsPromptOverrides, u as BurnedInCaptionsPromptSections, v as BurnedInCaptionsResult, C as CaptionReplacement, w as CensorMode, x as Chapter, y as ChapterSystemPromptSections, z as ChaptersOptions, D as ChaptersPromptOverrides, E as ChaptersPromptSections, F as ChaptersResult, G as ChaptersType, H as DEFAULT_DESCRIPTION_LENGTH, J as DEFAULT_SUMMARY_KEYWORD_LIMIT, K as DEFAULT_TITLE_LENGTH, M as EditCaptionsOptions, N as EditCaptionsResult, O as EmbeddingsOptions, P as EmbeddingsResult, Q as EngagementInsightsOptions, R as EngagementInsightsResult, T as GOOGLE_VISION_LIKELIHOOD_TO_SCORE, U as HIVE_SEXUAL_CATEGORIES, V as HIVE_VIOLENCE_CATEGORIES, W as HiveModerationOutput, X as HiveModerationSource, Y as ModerationOptions, Z as ModerationProvider, _ as ModerationResult, $ as MomentInsight, a0 as OverallInsight, a1 as ProfanityDetectionPayload, a2 as Question, a3 as QuestionAnswer, a4 as QuestionAnswerType, a5 as ReplacementRecord, a6 as StaticRenditionCleanupOutcome, a7 as SummarizationOptions, a8 as SummarizationPromptOverrides, a9 as SummarizationPromptSections, aa as SummaryAndTagsResult, ab as SummaryType, ac as ThumbnailModerationScore, ad as TranslationChunkingOptions, ae as TranslationOptions, af as TranslationPayload, ag as TranslationResult, ah as aggregateTokenUsage, ai as applyOverrideLists, aj as applyReplacements, ak as askQuestions, al as buildReplacementRegex, am as burnedInCaptionsSchema, an as censorVttContent, ao as chapterSchema, ap as chaptersSchema, aq as createReplacer, ar as editCaptions, as as extractTranscriptSegmentsForHotspots, at as generateChapters, au as generateEmbeddings, av as generateEngagementInsights, aw as generateVideoEmbeddings, ax as getModerationScores, ay as getSummaryAndTags, az as hasBurnedInCaptions, aA as mapShotsToHotspots, aB as normalizeTranslatedVtt, aC as profanityDetectionSchema, aD as questionAnswerSchema, aE as shouldSplitChunkTranslationError, aF as summarySchema, aG as transformCueText, aH as translateAudio, aI as translateCaptions, aJ as translationSchema, aK as validateNeverTranslateTerms, aL as verifyNeverTranslateTerms } from '../index-C2FORyvQ.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
import '@ai-sdk/anthropic';
|
|
4
4
|
import '@ai-sdk/google';
|
|
5
5
|
import '@ai-sdk/openai';
|
|
6
|
-
import '../shots-
|
|
6
|
+
import '../shots-CUI09Ohe.js';
|
|
7
7
|
import '@mux/mux-node';
|
package/dist/workflows/index.js
CHANGED
|
@@ -1635,9 +1635,12 @@ function toPlaybackAsset(asset) {
|
|
|
1635
1635
|
const { id: playbackId, policy } = getPlaybackId(asset);
|
|
1636
1636
|
return { asset, playbackId, policy };
|
|
1637
1637
|
}
|
|
1638
|
-
async function getPlaybackIdForAsset(assetId, credentials) {
|
|
1638
|
+
async function getPlaybackIdForAsset(assetId, credentials, assetSnapshot) {
|
|
1639
1639
|
"use step";
|
|
1640
|
-
const asset = await getMuxAsset(assetId, credentials);
|
|
1640
|
+
const asset = assetSnapshot ?? await getMuxAsset(assetId, credentials);
|
|
1641
|
+
if (asset.id !== assetId) {
|
|
1642
|
+
throw new MuxAiError("Asset snapshot does not match the requested asset ID.", { type: "validation_error" });
|
|
1643
|
+
}
|
|
1641
1644
|
return toPlaybackAsset(asset);
|
|
1642
1645
|
}
|
|
1643
1646
|
async function getMuxAsset(assetId, credentials) {
|
|
@@ -3023,7 +3026,7 @@ async function askQuestionsInternal(assetId, questions, options, collectedUsage)
|
|
|
3023
3026
|
model,
|
|
3024
3027
|
provider
|
|
3025
3028
|
});
|
|
3026
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
3029
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options?.assetSnapshot);
|
|
3027
3030
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
3028
3031
|
const isAudioOnly = isAudioOnlyAsset(assetData);
|
|
3029
3032
|
const effectiveScope = hasWorkflowScopeBoundaries(scope) ? scope : void 0;
|
|
@@ -3377,7 +3380,7 @@ async function hasBurnedInCaptionsInternal(assetId, options, collectedUsage) {
|
|
|
3377
3380
|
model,
|
|
3378
3381
|
provider
|
|
3379
3382
|
});
|
|
3380
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
3383
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
3381
3384
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
3382
3385
|
const storyboardScope = resolveRenderableVideoScope(
|
|
3383
3386
|
scope,
|
|
@@ -3642,7 +3645,7 @@ async function generateChaptersInternal(assetId, options, collectedUsage) {
|
|
|
3642
3645
|
model,
|
|
3643
3646
|
provider
|
|
3644
3647
|
});
|
|
3645
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
3648
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
3646
3649
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
3647
3650
|
const effectiveScope = hasWorkflowScopeBoundaries(scope) ? scope : void 0;
|
|
3648
3651
|
const resolvedScope = effectiveScope ? resolveWorkflowScope(effectiveScope, assetDurationSeconds) : void 0;
|
|
@@ -4338,7 +4341,7 @@ async function editCaptionsInternal(assetId, trackId, options, collectedUsage) {
|
|
|
4338
4341
|
{ type: "validation_error" }
|
|
4339
4342
|
);
|
|
4340
4343
|
}
|
|
4341
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
4344
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
4342
4345
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
4343
4346
|
const signingContext = await resolveMuxSigningContext(credentials);
|
|
4344
4347
|
if (policy === "signed" && !signingContext) {
|
|
@@ -4774,7 +4777,7 @@ async function generateEmbeddingsInternal(assetId, options, collectedUsage) {
|
|
|
4774
4777
|
scope
|
|
4775
4778
|
} = options;
|
|
4776
4779
|
const embeddingModel = resolveEmbeddingModelConfig({ ...options, provider, model });
|
|
4777
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
4780
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
4778
4781
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
4779
4782
|
const effectiveScope = hasWorkflowScopeBoundaries(scope) ? scope : void 0;
|
|
4780
4783
|
if (effectiveScope) {
|
|
@@ -5394,7 +5397,7 @@ async function generateEngagementInsightsInternal(assetId, options, collectedUsa
|
|
|
5394
5397
|
model,
|
|
5395
5398
|
provider
|
|
5396
5399
|
});
|
|
5397
|
-
const { asset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
5400
|
+
const { asset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
5398
5401
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(asset);
|
|
5399
5402
|
if (!assetDurationSeconds) {
|
|
5400
5403
|
throw new MuxAiError(`Asset ${assetId} has no valid duration.`, { type: "validation_error" });
|
|
@@ -6152,7 +6155,7 @@ async function getModerationScores(assetId, options = {}) {
|
|
|
6152
6155
|
scope
|
|
6153
6156
|
} = options;
|
|
6154
6157
|
const credentials = providedCredentials;
|
|
6155
|
-
const { asset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
6158
|
+
const { asset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
6156
6159
|
const videoTrackDurationSeconds = getVideoTrackDurationSecondsFromAsset(asset);
|
|
6157
6160
|
const videoTrackFps = getVideoTrackMaxFrameRateFromAsset(asset);
|
|
6158
6161
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(asset);
|
|
@@ -6766,7 +6769,7 @@ async function getSummaryAndTagsInternal(assetId, options, collectedUsage) {
|
|
|
6766
6769
|
provider
|
|
6767
6770
|
});
|
|
6768
6771
|
const workflowCredentials = credentials;
|
|
6769
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, workflowCredentials);
|
|
6772
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, workflowCredentials, options?.assetSnapshot);
|
|
6770
6773
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
6771
6774
|
const isAudioOnly = isAudioOnlyAsset(assetData);
|
|
6772
6775
|
const effectiveScope = hasWorkflowScopeBoundaries(scope) ? scope : void 0;
|
|
@@ -7213,7 +7216,7 @@ async function translateAudio(assetId, toLanguageCode, options = {}) {
|
|
|
7213
7216
|
if (uploadToS3 && (!s3Endpoint || !s3Bucket || !effectiveStorageAdapter && (!s3AccessKeyId || !s3SecretAccessKey))) {
|
|
7214
7217
|
throw new MuxAiError("Storage configuration is required for uploading. Provide s3Endpoint and s3Bucket. If no storageAdapter is supplied, also provide s3AccessKeyId and s3SecretAccessKey in options or set S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, and S3_SECRET_ACCESS_KEY environment variables.", { type: "validation_error" });
|
|
7215
7218
|
}
|
|
7216
|
-
const { asset: initialAsset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
7219
|
+
const { asset: initialAsset, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
7217
7220
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(initialAsset);
|
|
7218
7221
|
let currentAsset = initialAsset;
|
|
7219
7222
|
let createdStaticRenditionId;
|
|
@@ -8083,7 +8086,7 @@ async function translateCaptionsInternal(assetId, trackId, toLanguageCode, optio
|
|
|
8083
8086
|
if (uploadToS3 && (!s3Endpoint || !s3Bucket || !effectiveStorageAdapter && (!s3AccessKeyId || !s3SecretAccessKey))) {
|
|
8084
8087
|
throw new MuxAiError("Storage configuration is required for uploading. Provide s3Endpoint and s3Bucket. If no storageAdapter is supplied, also provide s3AccessKeyId and s3SecretAccessKey in options or set S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, and S3_SECRET_ACCESS_KEY environment variables.", { type: "validation_error" });
|
|
8085
8088
|
}
|
|
8086
|
-
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials);
|
|
8089
|
+
const { asset: assetData, playbackId, policy } = await getPlaybackIdForAsset(assetId, credentials, options.assetSnapshot);
|
|
8087
8090
|
const assetDurationSeconds = getAssetDurationSecondsFromAsset(assetData);
|
|
8088
8091
|
const signingContext = await resolveMuxSigningContext(credentials);
|
|
8089
8092
|
if (policy === "signed" && !signingContext) {
|