@cueframe/kernel 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_members/authoring/agent/errors.d.ts +8 -0
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +4 -0
- package/dist/_members/authoring/types.d.ts +1 -1
- package/dist/_members/cloud-import/CloudImportService.d.ts +3 -4
- package/dist/_members/cloud-import/ImportProvider.d.ts +3 -7
- package/dist/_members/cloud-import/cloudConfig.d.ts +0 -6
- package/dist/_members/cloud-import/index.d.ts +2 -4
- package/dist/_members/composition/graphics-plan/schemas.d.ts +20 -20
- package/dist/_members/composition/primitive-catalog/projection.d.ts +2 -1
- package/dist/_members/composition/projection/behind-readiness.d.ts +4 -2
- package/dist/_members/composition/validators/brandKit.d.ts +54 -94
- package/dist/_members/composition/validators/composePlan.d.ts +52 -52
- package/dist/_members/composition/validators/composition.d.ts +213 -253
- package/dist/_members/composition/validators/font.d.ts +2 -2
- package/dist/_members/composition/validators/index.d.ts +1 -0
- package/dist/_members/composition/validators/opaqueId.d.ts +13 -0
- package/dist/_members/composition/validators/project.d.ts +11 -15
- package/dist/_members/composition/validators/render.d.ts +372 -534
- package/dist/_members/composition/validators/session.d.ts +19 -39
- package/dist/_members/composition/validators/webhook.d.ts +8 -16
- package/dist/_members/composition-ops/index.d.ts +192 -228
- package/dist/_members/director/ai-sdk/messages.d.ts +2 -2
- package/dist/_members/director/domain/chat.d.ts +4 -4
- package/dist/_members/director/testing/contract.d.ts +1 -1
- package/dist/_members/errors/registry.d.ts +12 -0
- package/dist/_members/mcp/adapter.d.ts +19 -0
- package/dist/_members/mcp/curation.d.ts +4 -0
- package/dist/_members/mcp/generated/operations.d.ts +2 -2
- package/dist/_members/media-model/api.d.ts +53 -109
- package/dist/_members/media-model/generation.d.ts +2 -2
- package/dist/_members/media-model/index.d.ts +1 -0
- package/dist/_members/media-model/opaqueId.d.ts +10 -0
- package/dist/_members/render-harness/localRender.d.ts +3 -0
- package/dist/_members/render-harness/localRender.d.ts.map +1 -1
- package/dist/authoring/build-tools.js +6 -6
- package/dist/authoring/context.js +4 -4
- package/dist/authoring/tools.js +5 -5
- package/dist/authoring.js +39 -22
- package/dist/chunk-2SNY75AR.js +498 -0
- package/dist/{chunk-ZPRBGW4Y.js → chunk-7TQCR7AB.js} +1 -1
- package/dist/{chunk-SDCEJAO2.js → chunk-7V3F5HO4.js} +1 -1
- package/dist/{chunk-BZZTVOGG.js → chunk-D2EGO543.js} +5 -5
- package/dist/{chunk-TO4BFNLJ.js → chunk-D6S3ZKIY.js} +1 -1
- package/dist/{chunk-ICSZF37W.js → chunk-JRIPQ7DN.js} +1 -1
- package/dist/{chunk-TFGKUWHY.js → chunk-JTVFIN6H.js} +15 -19
- package/dist/{chunk-DCVJWGIA.js → chunk-JY26PIRP.js} +2 -2
- package/dist/{chunk-DWLNPNC4.js → chunk-LSP4HN5N.js} +1 -1
- package/dist/{chunk-DJW3UGBH.js → chunk-PJ4R4N4Q.js} +83 -9
- package/dist/{chunk-TXSFYUZH.js → chunk-QSDFTYKV.js} +1 -1
- package/dist/{chunk-AW57IWNW.js → chunk-R5BMJ2NX.js} +20 -1
- package/dist/{chunk-DL7WYISQ.js → chunk-RQ2G4DXI.js} +201 -223
- package/dist/{chunk-NQSMEUJ6.js → chunk-RXCEPCAQ.js} +102 -41
- package/dist/{chunk-TMB5AY6Q.js → chunk-TLVPDT4R.js} +1 -1
- package/dist/{chunk-GIA2SVVB.js → chunk-WTT3GGCA.js} +9 -4
- package/dist/{chunk-HBVAZXYO.js → chunk-YE3F4LNJ.js} +17 -17
- package/dist/{chunk-KFECIHED.js → chunk-YXEZ75MB.js} +5 -5
- package/dist/{chunk-TPA6PYN2.js → chunk-ZBRPF6GV.js} +25 -10
- package/dist/cloud-import.js +20 -116
- package/dist/compose/renderer.js +17 -17
- package/dist/compose.js +18 -18
- package/dist/composition/graphics-plan.js +1 -1
- package/dist/composition/ops.js +3 -3
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +2 -2
- package/dist/composition/validators.js +4 -2
- package/dist/composition-ops.js +6 -6
- package/dist/composition.js +6 -4
- package/dist/{context-JLLU3MYD.js → context-XWNT6QZH.js} +4 -4
- package/dist/core/render.js +3 -3
- package/dist/core/select.js +2 -2
- package/dist/core.js +3 -3
- package/dist/director/ai-sdk.js +3 -3
- package/dist/director/domain.js +2 -2
- package/dist/director.js +3 -3
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +18 -11
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/curation.js +5 -1
- package/dist/mcp/server.js +4 -4
- package/dist/mcp.js +4 -4
- package/dist/media-model/media-kind.js +98 -9
- package/dist/media-model.js +83 -77
- package/dist/nle-export.js +18 -18
- package/dist/primitives/backgrounds.js +2 -2
- package/dist/primitives/captions.js +3 -3
- package/dist/primitives/effects.js +2 -2
- package/dist/primitives/hero-text.js +2 -2
- package/dist/primitives/layouts.js +2 -2
- package/dist/primitives/lib/index.js +12 -12
- package/dist/primitives/lib.js +12 -12
- package/dist/primitives/scenes.js +2 -2
- package/dist/primitives/text.js +2 -2
- package/dist/primitives/ui-blocks.js +2 -2
- package/dist/primitives.js +19 -19
- package/dist/render-harness.js +4 -2
- package/package.json +9 -34
- package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -2
- package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -18
- package/dist/_members/cloud-import/multipartUpload.d.ts +0 -12
- package/dist/_members/convex-api/api.d.ts +0 -5
- package/dist/_members/convex-api/api.generated.d.ts +0 -1444
- package/dist/_members/convex-api/dataModel.d.ts +0 -6
- package/dist/chunk-6IU2UQI5.js +0 -107
- package/dist/chunk-EP2Y6M2J.js +0 -64
- package/dist/chunk-WZH57M53.js +0 -494
- package/dist/cloud-import/multipart.d.ts +0 -1
- package/dist/cloud-import/multipart.js +0 -8
- package/dist/convex-api/dataModel.d.ts +0 -1
- package/dist/convex-api/dataModel.js +0 -0
- package/dist/convex-api.d.ts +0 -1
- package/dist/convex-api.js +0 -8
- package/dist/{chunk-RP4SXXLJ.js → chunk-3PM6VICZ.js} +3 -3
- package/dist/{chunk-UQSOS726.js → chunk-6ABIXGLO.js} +4 -4
- package/dist/{chunk-SAMQUUO5.js → chunk-BIBYZJL3.js} +3 -3
- package/dist/{chunk-GMD33ZD7.js → chunk-O7GNE4BQ.js} +3 -3
- package/dist/{chunk-BKHGL4MB.js → chunk-THJAY7QS.js} +4 -4
- package/dist/{chunk-DYZE7JZA.js → chunk-TMIBBD5E.js} +3 -3
- package/dist/{chunk-G5BFI32U.js → chunk-XATRRDVG.js} +3 -3
|
@@ -399,10 +399,6 @@ __export(zod_exports, {
|
|
|
399
399
|
cancelComposeParams: () => cancelComposeParams,
|
|
400
400
|
cancelComposeResponse: () => cancelComposeResponse,
|
|
401
401
|
cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin: () => cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin,
|
|
402
|
-
cancelComposeResponseCostLlmUsdMin: () => cancelComposeResponseCostLlmUsdMin,
|
|
403
|
-
cancelComposeResponseCostModalUsdMin: () => cancelComposeResponseCostModalUsdMin,
|
|
404
|
-
cancelComposeResponseCostTotalUsdMin: () => cancelComposeResponseCostTotalUsdMin,
|
|
405
|
-
cancelComposeResponseCostVisionUsdMin: () => cancelComposeResponseCostVisionUsdMin,
|
|
406
402
|
cancelComposeResponseWinnerCandidateIndexMin: () => cancelComposeResponseWinnerCandidateIndexMin,
|
|
407
403
|
cancelExportParams: () => cancelExportParams,
|
|
408
404
|
cancelExportResponse: () => cancelExportResponse,
|
|
@@ -687,10 +683,6 @@ __export(zod_exports, {
|
|
|
687
683
|
getComposeJobParams: () => getComposeJobParams,
|
|
688
684
|
getComposeJobResponse: () => getComposeJobResponse,
|
|
689
685
|
getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin: () => getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin,
|
|
690
|
-
getComposeJobResponseCostLlmUsdMin: () => getComposeJobResponseCostLlmUsdMin,
|
|
691
|
-
getComposeJobResponseCostModalUsdMin: () => getComposeJobResponseCostModalUsdMin,
|
|
692
|
-
getComposeJobResponseCostTotalUsdMin: () => getComposeJobResponseCostTotalUsdMin,
|
|
693
|
-
getComposeJobResponseCostVisionUsdMin: () => getComposeJobResponseCostVisionUsdMin,
|
|
694
686
|
getComposeJobResponseWinnerCandidateIndexMin: () => getComposeJobResponseWinnerCandidateIndexMin,
|
|
695
687
|
getComposeSessionCompositionParams: () => getComposeSessionCompositionParams,
|
|
696
688
|
getComposeSessionCompositionResponse: () => getComposeSessionCompositionResponse,
|
|
@@ -776,10 +768,13 @@ __export(zod_exports, {
|
|
|
776
768
|
getMediaContextParams: () => getMediaContextParams,
|
|
777
769
|
getMediaContextResponse: () => getMediaContextResponse,
|
|
778
770
|
getMediaParams: () => getMediaParams,
|
|
779
|
-
getMediaPerformanceParams: () => getMediaPerformanceParams,
|
|
780
|
-
getMediaPerformanceResponse: () => getMediaPerformanceResponse,
|
|
781
771
|
getMediaResponse: () => getMediaResponse,
|
|
782
772
|
getMediaTranscriptParams: () => getMediaTranscriptParams,
|
|
773
|
+
getMediaTranscriptQueryAfterMin: () => getMediaTranscriptQueryAfterMin,
|
|
774
|
+
getMediaTranscriptQueryBeforeMin: () => getMediaTranscriptQueryBeforeMin,
|
|
775
|
+
getMediaTranscriptQueryLimitDefault: () => getMediaTranscriptQueryLimitDefault,
|
|
776
|
+
getMediaTranscriptQueryLimitMax: () => getMediaTranscriptQueryLimitMax,
|
|
777
|
+
getMediaTranscriptQueryParams: () => getMediaTranscriptQueryParams,
|
|
783
778
|
getMediaTranscriptResponse: () => getMediaTranscriptResponse,
|
|
784
779
|
getMuxJobParams: () => getMuxJobParams,
|
|
785
780
|
getMuxJobResponse: () => getMuxJobResponse,
|
|
@@ -1054,17 +1049,14 @@ __export(zod_exports, {
|
|
|
1054
1049
|
previewClipBodyFromSecMin: () => previewClipBodyFromSecMin,
|
|
1055
1050
|
previewClipParams: () => previewClipParams,
|
|
1056
1051
|
previewComponentBody: () => previewComponentBody,
|
|
1052
|
+
previewComponentBodyDurationInFramesMax: () => previewComponentBodyDurationInFramesMax,
|
|
1053
|
+
previewComponentBodyPreviewFrameMin: () => previewComponentBodyPreviewFrameMin,
|
|
1057
1054
|
previewComponentParams: () => previewComponentParams,
|
|
1058
|
-
previewFrameBody: () => previewFrameBody,
|
|
1059
|
-
previewFrameBodyJpegQualityMax: () => previewFrameBodyJpegQualityMax,
|
|
1060
|
-
previewFrameBodyScaleMax: () => previewFrameBodyScaleMax,
|
|
1061
|
-
previewFrameBodyScaleMin: () => previewFrameBodyScaleMin,
|
|
1062
1055
|
previewFrameJobBody: () => previewFrameJobBody,
|
|
1063
1056
|
previewFrameJobBodyJpegQualityMax: () => previewFrameJobBodyJpegQualityMax,
|
|
1064
1057
|
previewFrameJobBodyScaleMax: () => previewFrameJobBodyScaleMax,
|
|
1065
1058
|
previewFrameJobBodyScaleMin: () => previewFrameJobBodyScaleMin,
|
|
1066
1059
|
previewFrameJobParams: () => previewFrameJobParams,
|
|
1067
|
-
previewFrameParams: () => previewFrameParams,
|
|
1068
1060
|
previewSelectorBody: () => previewSelectorBody,
|
|
1069
1061
|
previewSelectorBodyCooldownSecMin: () => previewSelectorBodyCooldownSecMin,
|
|
1070
1062
|
previewSelectorBodyEnterSecMin: () => previewSelectorBodyEnterSecMin,
|
|
@@ -1418,7 +1410,7 @@ var getAccountResponse = zod.object({
|
|
|
1418
1410
|
"name": zod.string().nullable().describe("Plan display name.")
|
|
1419
1411
|
}).nullable().describe("The customer's current base plan/tier. null = unknown (billing not configured, or no active plan resolvable yet)."),
|
|
1420
1412
|
"entitlements": zod.record(zod.string(), zod.object({
|
|
1421
|
-
"featureId": zod.string().describe("
|
|
1413
|
+
"featureId": zod.string().describe("Stable billing feature id."),
|
|
1422
1414
|
"name": zod.string().describe("Human-readable feature name."),
|
|
1423
1415
|
"type": zod.enum(["metered", "boolean", "credit_system"]).describe("metered = a depleting/gauge quota (has balances); boolean = an on/off plan grant; credit_system = a spendable wallet the metered lines draw from."),
|
|
1424
1416
|
"unit": zod.union([zod.literal("cents"), zod.literal("count"), zod.literal("minutes"), zod.literal("gb"), zod.literal(null)]).nullable().describe("What `balance`/`includedUsage`/`usage` are COUNTED IN \u2014 do not assume. `exports` is output-MINUTES (not a number of renders), `compose`/`ai_tokens`/`compose_verify`/`generate` are CENTS of spend (not a number of calls), `compose_capture` is a count of stills, `storage` is GB, a credit system is cents (1 credit = $0.01). null = boolean feature, nothing to count."),
|
|
@@ -1431,14 +1423,10 @@ var getAccountResponse = zod.object({
|
|
|
1431
1423
|
"fundedBy": zod.string().nullable().describe("The credit system that actually pays for this feature (always `credits` \u2014 there is one wallet). Non-null means the feature has NO separate allowance: its `balance` restates that shared wallet, and every other feature with the same `fundedBy` competes for the same money. null = the plan grants this feature directly."),
|
|
1432
1424
|
"creditCost": zod.number().nullable().describe("Credits consumed per ONE unit of this feature (exports 50 = $0.50 per 1080p output-minute; compose_capture 2 = $0.02 per still). null = not credit-funded.")
|
|
1433
1425
|
}).describe("A single feature's entitlement: whether the plan includes it, plus remaining/limit when metered.")).describe("Per-feature entitlements keyed by featureId. Covers the billing-gated capabilities: `exports` gates create_render AND generate_media output; `compose` gates compose; `brand_kits` gates create_brand_kit; plus ai_tokens/storage/compose_verify/compose_capture/etc. Most capabilities are CREDIT-FUNDED \u2014 `included` is true and the real limit is `balance`, drawn from the shared wallet named in `fundedBy` (`credits` \u2014 generation included; a free org is additionally bounded by a generation cap). So read `balance`, not `included`, to decide whether you can afford a call; `included:false` means the plan genuinely lacks the feature. Check BEFORE a metered call to avoid a mid-workflow 402 billing_required (whose error `details.featureId` names the gating feature)."),
|
|
1434
|
-
"gateway": zod.object({
|
|
1435
|
-
"url": zod.string().describe("Base URL of the CueFrame LLM gateway (OpenAI-compatible)."),
|
|
1436
|
-
"apiKey": zod.string().describe("This org's own gateway key. Scoped to the `director` model and budgeted; spend is attributed to the org server-side regardless of what the caller claims.")
|
|
1437
|
-
}).nullable().describe("The org's LLM gateway credential, for first-party clients that run their own model loop (the desktop app). Returned ONLY to session-class credentials \u2014 an apiKey-class (`cf_\u2026`) or x402 caller always gets null, because those already spend through this API where metering lives. null also means the gateway is unconfigured or provisioning failed; treat it as 'keep the provider you have', never as an error."),
|
|
1438
1426
|
"costCeilings": zod.object({
|
|
1439
1427
|
"generateMediaUsdPerCall": zod.number().nullable().describe("Per-call USD ceiling for generate_media: a generation whose ESTIMATE exceeds this 402s (generation_budget_exceeded) before any spend. Right-size the prompt/duration under this. null = unknown.")
|
|
1440
1428
|
}).describe("Discoverable per-call cost ceilings so an agent can price/right-size a request before a guaranteed 402."),
|
|
1441
|
-
"billingConfigured": zod.boolean().describe("false =
|
|
1429
|
+
"billingConfigured": zod.boolean().describe("false = billing is not configured in this environment, so plan/entitlement values are best-effort and may be null (unknown), not authoritative.")
|
|
1442
1430
|
}).describe("Account discovery for the authenticated key: identity + plan + entitlements + cost ceilings. Read this to see what your plan/credits allow before a metered call (create_render / compose / generate_media / create_brand_kit).");
|
|
1443
1431
|
var getProfileResponseBrandKitsItemAudioMusicMoodMax = 300;
|
|
1444
1432
|
var getProfileResponseBrandKitsItemAudioSonicLogoOffsetMsMin = 0;
|
|
@@ -1483,7 +1471,6 @@ var getProfileResponse = zod.object({
|
|
|
1483
1471
|
"criticId": zod.string(),
|
|
1484
1472
|
"label": zod.string(),
|
|
1485
1473
|
"tier": zod.enum(["rules", "rubric", "evaluator"]),
|
|
1486
|
-
"phase": zod.enum(["static", "temporal"]),
|
|
1487
1474
|
"floor": zod.number(),
|
|
1488
1475
|
"referenceMediaIds": zod.array(zod.string()).optional()
|
|
1489
1476
|
}).describe("One registered critic (rubric/rules/url stay write-only \u2014 never echoed).")).describe("Registered critics \u2014 run in the Director's gates AND score_composition."),
|
|
@@ -1537,7 +1524,7 @@ var getUsageResponse = zod3.object({
|
|
|
1537
1524
|
});
|
|
1538
1525
|
var getBillingPlansResponse = zod3.object({
|
|
1539
1526
|
"plans": zod3.array(zod3.object({
|
|
1540
|
-
"id": zod3.string().describe("
|
|
1527
|
+
"id": zod3.string().describe("Billing catalog product id (e.g. pro, pro_yearly)."),
|
|
1541
1528
|
"tier": zod3.string().describe("Plan tier: pro | business | studio."),
|
|
1542
1529
|
"name": zod3.string(),
|
|
1543
1530
|
"interval": zod3.string().describe("month | year."),
|
|
@@ -1554,7 +1541,7 @@ var createCheckoutResponse = zod3.object({
|
|
|
1554
1541
|
"url": zod3.string().describe("Hosted Stripe checkout URL to open in a browser to complete payment. Always present on success \u2014 an existing saved card is never charged without confirming here."),
|
|
1555
1542
|
"plan": zod3.string(),
|
|
1556
1543
|
"interval": zod3.string(),
|
|
1557
|
-
"productId": zod3.string().describe("Resolved
|
|
1544
|
+
"productId": zod3.string().describe("Resolved billing catalog product id.")
|
|
1558
1545
|
});
|
|
1559
1546
|
|
|
1560
1547
|
// ../sdk/src/generated/zod/brand-kits/brand-kits.ts
|
|
@@ -2237,7 +2224,7 @@ var createBriefBody = zod5.object({
|
|
|
2237
2224
|
"platform": zod5.string().max(createBriefBodyPlatformMax).optional(),
|
|
2238
2225
|
"format": zod5.object({
|
|
2239
2226
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2240
|
-
"fps": zod5.union([zod5.
|
|
2227
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2241
2228
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2242
2229
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
2243
2230
|
"durationSec": zod5.number().max(createBriefBodyDurationSecMax).optional().describe("Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor."),
|
|
@@ -2501,7 +2488,7 @@ var listBriefsResponse = zod5.object({
|
|
|
2501
2488
|
"platform": zod5.string().max(listBriefsResponseDataItemPlatformMax).optional(),
|
|
2502
2489
|
"format": zod5.object({
|
|
2503
2490
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2504
|
-
"fps": zod5.union([zod5.
|
|
2491
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2505
2492
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2506
2493
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
2507
2494
|
"durationSec": zod5.number().max(listBriefsResponseDataItemDurationSecMax).optional().describe("Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor."),
|
|
@@ -2781,7 +2768,7 @@ var getBriefResponse = zod5.object({
|
|
|
2781
2768
|
"platform": zod5.string().max(getBriefResponsePlatformMax).optional(),
|
|
2782
2769
|
"format": zod5.object({
|
|
2783
2770
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2784
|
-
"fps": zod5.union([zod5.
|
|
2771
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2785
2772
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2786
2773
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
2787
2774
|
"durationSec": zod5.number().max(getBriefResponseDurationSecMax).optional().describe("Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor."),
|
|
@@ -3051,7 +3038,7 @@ var updateBriefBody = zod5.object({
|
|
|
3051
3038
|
"platform": zod5.string().max(updateBriefBodyPlatformMax).optional(),
|
|
3052
3039
|
"format": zod5.object({
|
|
3053
3040
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3054
|
-
"fps": zod5.union([zod5.
|
|
3041
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
3055
3042
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
3056
3043
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
3057
3044
|
"durationSec": zod5.number().max(updateBriefBodyDurationSecMax).optional().describe("Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor."),
|
|
@@ -3314,7 +3301,7 @@ var updateBriefResponse = zod5.object({
|
|
|
3314
3301
|
"platform": zod5.string().max(updateBriefResponsePlatformMax).optional(),
|
|
3315
3302
|
"format": zod5.object({
|
|
3316
3303
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3317
|
-
"fps": zod5.union([zod5.
|
|
3304
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
3318
3305
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
3319
3306
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
3320
3307
|
"durationSec": zod5.number().max(updateBriefResponseDurationSecMax).optional().describe("Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor."),
|
|
@@ -3556,7 +3543,7 @@ var recordReviewDecisionParams = zod6.object({
|
|
|
3556
3543
|
"id": zod6.string()
|
|
3557
3544
|
});
|
|
3558
3545
|
var recordReviewDecisionResponse = zod6.object({
|
|
3559
|
-
"ok": zod6.
|
|
3546
|
+
"ok": zod6.literal(true),
|
|
3560
3547
|
"stage": zod6.enum(["content", "layout", "motion"]).optional(),
|
|
3561
3548
|
"version": zod6.number().optional(),
|
|
3562
3549
|
"composeJobId": zod6.string().optional()
|
|
@@ -3641,7 +3628,7 @@ var resumeCheckpointBody = zod6.object({
|
|
|
3641
3628
|
"globalNote": zod6.string().max(resumeCheckpointBodyGlobalNoteMax).optional()
|
|
3642
3629
|
}).strict().describe("POST /checkpoints/:id/resume body \u2014 the A1 review grammar.");
|
|
3643
3630
|
var resumeCheckpointResponse = zod6.object({
|
|
3644
|
-
"ok": zod6.
|
|
3631
|
+
"ok": zod6.literal(true)
|
|
3645
3632
|
}).describe("POST /checkpoints/:id/resume response.");
|
|
3646
3633
|
|
|
3647
3634
|
// ../sdk/src/generated/zod/clips/clips.ts
|
|
@@ -3653,7 +3640,7 @@ var composeFromSuggestionBody = zod7.object({
|
|
|
3653
3640
|
"suggestionId": zod7.string().min(1),
|
|
3654
3641
|
"format": zod7.object({
|
|
3655
3642
|
"aspectRatio": zod7.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3656
|
-
"fps": zod7.union([zod7.
|
|
3643
|
+
"fps": zod7.union([zod7.literal(24), zod7.literal(25), zod7.literal(30), zod7.literal(60)]).optional(),
|
|
3657
3644
|
"resolution": zod7.enum(["hd", "fhd", "4k"]).optional(),
|
|
3658
3645
|
"platform": zod7.string().optional()
|
|
3659
3646
|
}).strict().optional()
|
|
@@ -3745,10 +3732,11 @@ var listCatalogResponse = zod8.object({
|
|
|
3745
3732
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3746
3733
|
"format": zod8.object({
|
|
3747
3734
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3748
|
-
"fps": zod8.union([zod8.
|
|
3735
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3749
3736
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3750
3737
|
}).optional(),
|
|
3751
3738
|
"durationInFrames": zod8.number().optional(),
|
|
3739
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3752
3740
|
"intent": zod8.string().optional().describe("Selection signal: a verb naming what this primitive accomplishes (e.g. 'product-trailer'). Match it to the beat you are authoring."),
|
|
3753
3741
|
"useWhen": zod8.string().optional().describe("When to use this \u2014 AND when not to. The negative guidance is load-bearing; read it before picking."),
|
|
3754
3742
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3781,7 +3769,7 @@ var listCatalogResponse = zod8.object({
|
|
|
3781
3769
|
}).describe("Cursor pagination metadata."),
|
|
3782
3770
|
"brandTokens": zod8.array(zod8.string()).optional().describe("Catalog-level reference: the valid `$brand:` token refs a param value may carry (e.g. accentColor: \"$brand:colors.accent\"). Colors + fonts are the common bindings; the full design-token vocabulary is listed. Derived from the brand kit resolver so it can't drift. See each entry's `brandBindings` for which params are brand-bound by default."),
|
|
3783
3771
|
"sfx": zod8.array(zod8.object({
|
|
3784
|
-
"soundId": zod8.string().describe("Stable pack id
|
|
3772
|
+
"soundId": zod8.string().describe("Stable sound-pack item id."),
|
|
3785
3773
|
"family": zod8.enum(["tick", "pop", "impact", "confirm", "error", "whoosh", "riser"]).describe("Editorial family the compose sfx pass binds by."),
|
|
3786
3774
|
"envelopeClass": zod8.enum(["transient", "sweep", "ambient"]).describe("Coarse envelope shape \u2014 the browse grouping."),
|
|
3787
3775
|
"intensity": zod8.enum(["subtle", "standard", "strong"]),
|
|
@@ -3825,6 +3813,7 @@ var createComponentBody = zod8.object({
|
|
|
3825
3813
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3826
3814
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3827
3815
|
"durationInFrames": zod8.number().optional(),
|
|
3816
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional().describe("Baked compositing contract. Choose allows-opaque for intentional full-frame plates; defaults to requires-transparency."),
|
|
3828
3817
|
"executionMode": zod8.enum(["live", "baked"]).optional()
|
|
3829
3818
|
}).strict().describe("POST /components body. Org/user are server-resolved; never accepted from the body.");
|
|
3830
3819
|
var updateComponentParams = zod8.object({
|
|
@@ -3844,6 +3833,7 @@ var updateComponentBody = zod8.object({
|
|
|
3844
3833
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3845
3834
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3846
3835
|
"durationInFrames": zod8.number().optional(),
|
|
3836
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3847
3837
|
"executionMode": zod8.enum(["live", "baked"]).optional()
|
|
3848
3838
|
}).strict().describe("PUT /components/:id body. Org/user are server-resolved; never accepted from the body.");
|
|
3849
3839
|
var updateComponentResponse = zod8.object({
|
|
@@ -3860,10 +3850,11 @@ var updateComponentResponse = zod8.object({
|
|
|
3860
3850
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3861
3851
|
"format": zod8.object({
|
|
3862
3852
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3863
|
-
"fps": zod8.union([zod8.
|
|
3853
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3864
3854
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3865
3855
|
}).optional(),
|
|
3866
3856
|
"durationInFrames": zod8.number().optional(),
|
|
3857
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3867
3858
|
"intent": zod8.string().optional().describe("Selection signal: a verb naming what this primitive accomplishes (e.g. 'product-trailer'). Match it to the beat you are authoring."),
|
|
3868
3859
|
"useWhen": zod8.string().optional().describe("When to use this \u2014 AND when not to. The negative guidance is load-bearing; read it before picking."),
|
|
3869
3860
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3906,10 +3897,11 @@ var getComponentResponse = zod8.object({
|
|
|
3906
3897
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3907
3898
|
"format": zod8.object({
|
|
3908
3899
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3909
|
-
"fps": zod8.union([zod8.
|
|
3900
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3910
3901
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3911
3902
|
}).optional(),
|
|
3912
3903
|
"durationInFrames": zod8.number().optional(),
|
|
3904
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3913
3905
|
"intent": zod8.string().optional().describe("Selection signal: a verb naming what this primitive accomplishes (e.g. 'product-trailer'). Match it to the beat you are authoring."),
|
|
3914
3906
|
"useWhen": zod8.string().optional().describe("When to use this \u2014 AND when not to. The negative guidance is load-bearing; read it before picking."),
|
|
3915
3907
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3949,7 +3941,8 @@ var getComponentSourceResponse = zod8.object({
|
|
|
3949
3941
|
"ejectedFrom": zod8.string().optional(),
|
|
3950
3942
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3951
3943
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3952
|
-
"durationInFrames": zod8.number().optional()
|
|
3944
|
+
"durationInFrames": zod8.number().optional(),
|
|
3945
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional()
|
|
3953
3946
|
}).describe("Installed component SOURCE (TSX) + ownership provenance per \xA7Components.");
|
|
3954
3947
|
|
|
3955
3948
|
// ../sdk/src/generated/zod/compose/compose.ts
|
|
@@ -3969,17 +3962,17 @@ var composeBody = zod9.object({
|
|
|
3969
3962
|
"briefId": zod9.string().min(1).optional().describe("Compose from a persisted Brief (create_brief) \u2014 the intent-first door: every Brief field is HONORED or the request is refused loudly naming the field (window from beat moment-pinning; seeded graphics carried VERBATIM as locked clips; exclusions enforced; locale + caption emphasis threaded to the Director). Exactly ONE of suggestionId | fromComposition | briefId."),
|
|
3970
3963
|
"format": zod9.object({
|
|
3971
3964
|
"aspectRatio": zod9.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3972
|
-
"fps": zod9.union([zod9.
|
|
3965
|
+
"fps": zod9.union([zod9.literal(24), zod9.literal(25), zod9.literal(30), zod9.literal(60)]).optional(),
|
|
3973
3966
|
"resolution": zod9.enum(["hd", "fhd", "4k"]).optional()
|
|
3974
3967
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
3975
3968
|
"scope": zod9.unknown().optional().describe("RequestScope discriminated union (per compose-api-contract.md). Editor-only scopes (captions/overlay-track/broll/overlay-instance/segment) require an editor-session token; API tokens get 403 on those."),
|
|
3976
3969
|
"critique": zod9.string().max(composeBodyCritiqueMax).optional().describe("Structured critique block (per compose-api-contract.md decision #11). Capped at 2KB total; per-criterion blocks capped at 500 chars."),
|
|
3977
|
-
"parentJobId": zod9.string().optional().describe("Pointer to the prior compose job this run iterates on. Surfaced on the resulting
|
|
3970
|
+
"parentJobId": zod9.string().optional().describe("Pointer to the prior compose job this run iterates on. Surfaced on the resulting compose job as baselineComposeJobId."),
|
|
3978
3971
|
"maxCandidates": zod9.number().min(1).max(composeBodyMaxCandidatesMax).optional().describe("Ensemble size. Currently pinned to 1 \u2014 the multi-candidate ensemble is disabled pending a capacity bound, so any value >1 is ignored and every compose runs a single candidate. Still accepted for forward-compat; will honor [1, 5] again once re-enabled."),
|
|
3979
3972
|
"budgetUsd": zod9.number().optional().describe("Per-job budget cap (USD). Clamped at the route against the org's composeMaxBudgetUsdPerJob setting."),
|
|
3980
3973
|
"qualityThreshold": zod9.number().min(composeBodyQualityThresholdMin).max(composeBodyQualityThresholdMax).optional().describe("Composite-score accept threshold. Server default per contract."),
|
|
3981
|
-
"seed": zod9.number().optional().describe("Deterministic seed for replay.
|
|
3982
|
-
"clientNonce": zod9.string().max(composeBodyClientNonceMax).optional().describe("Opaque caller token that disambiguates intentional same-critique retries. Without it, identical (project, sug, seed, critique) tuples deduplicate
|
|
3974
|
+
"seed": zod9.number().optional().describe("Deterministic seed for replay."),
|
|
3975
|
+
"clientNonce": zod9.string().max(composeBodyClientNonceMax).optional().describe("Opaque caller token that disambiguates intentional same-critique retries. Without it, identical (project, sug, seed, critique) tuples deduplicate; with it, retries create a fresh execution."),
|
|
3983
3976
|
"holdAt": zod9.array(zod9.enum(["content", "layout", "motion"])).max(composeBodyHoldAtMax).optional().describe("Opt-in checkpoint gates. Each named stage pauses the compose at its boundary (status \u2192 awaiting_input) for client review via resume. Absent/empty \u21D2 fully autonomous. Non-empty \u21D2 the run is a single spine.")
|
|
3984
3977
|
}).strict().describe("POST /projects/:id/compose body.");
|
|
3985
3978
|
var streamComposeParams = zod9.object({
|
|
@@ -4014,10 +4007,6 @@ var cancelComposeParams = zod9.object({
|
|
|
4014
4007
|
"composeJobId": zod9.string()
|
|
4015
4008
|
});
|
|
4016
4009
|
var cancelComposeResponseWinnerCandidateIndexMin = 0;
|
|
4017
|
-
var cancelComposeResponseCostLlmUsdMin = 0;
|
|
4018
|
-
var cancelComposeResponseCostVisionUsdMin = 0;
|
|
4019
|
-
var cancelComposeResponseCostModalUsdMin = 0;
|
|
4020
|
-
var cancelComposeResponseCostTotalUsdMin = 0;
|
|
4021
4010
|
var cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin = 0;
|
|
4022
4011
|
var cancelComposeResponse = zod9.object({
|
|
4023
4012
|
"composeJobId": zod9.string(),
|
|
@@ -4039,12 +4028,6 @@ var cancelComposeResponse = zod9.object({
|
|
|
4039
4028
|
"candidateIndex": zod9.number().min(cancelComposeResponseWinnerCandidateIndexMin),
|
|
4040
4029
|
"compositionRunId": zod9.string()
|
|
4041
4030
|
}).nullable(),
|
|
4042
|
-
"cost": zod9.object({
|
|
4043
|
-
"llmUsd": zod9.number().min(cancelComposeResponseCostLlmUsdMin),
|
|
4044
|
-
"visionUsd": zod9.number().min(cancelComposeResponseCostVisionUsdMin),
|
|
4045
|
-
"modalUsd": zod9.number().min(cancelComposeResponseCostModalUsdMin),
|
|
4046
|
-
"totalUsd": zod9.number().min(cancelComposeResponseCostTotalUsdMin)
|
|
4047
|
-
}).nullable(),
|
|
4048
4031
|
"listUsd": zod9.number().optional(),
|
|
4049
4032
|
"startedAt": zod9.number(),
|
|
4050
4033
|
"completedAt": zod9.number().nullable(),
|
|
@@ -4111,10 +4094,6 @@ var getComposeJobParams = zod9.object({
|
|
|
4111
4094
|
"composeJobId": zod9.string()
|
|
4112
4095
|
});
|
|
4113
4096
|
var getComposeJobResponseWinnerCandidateIndexMin = 0;
|
|
4114
|
-
var getComposeJobResponseCostLlmUsdMin = 0;
|
|
4115
|
-
var getComposeJobResponseCostVisionUsdMin = 0;
|
|
4116
|
-
var getComposeJobResponseCostModalUsdMin = 0;
|
|
4117
|
-
var getComposeJobResponseCostTotalUsdMin = 0;
|
|
4118
4097
|
var getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin = 0;
|
|
4119
4098
|
var getComposeJobResponse = zod9.object({
|
|
4120
4099
|
"composeJobId": zod9.string(),
|
|
@@ -4136,12 +4115,6 @@ var getComposeJobResponse = zod9.object({
|
|
|
4136
4115
|
"candidateIndex": zod9.number().min(getComposeJobResponseWinnerCandidateIndexMin),
|
|
4137
4116
|
"compositionRunId": zod9.string()
|
|
4138
4117
|
}).nullable(),
|
|
4139
|
-
"cost": zod9.object({
|
|
4140
|
-
"llmUsd": zod9.number().min(getComposeJobResponseCostLlmUsdMin),
|
|
4141
|
-
"visionUsd": zod9.number().min(getComposeJobResponseCostVisionUsdMin),
|
|
4142
|
-
"modalUsd": zod9.number().min(getComposeJobResponseCostModalUsdMin),
|
|
4143
|
-
"totalUsd": zod9.number().min(getComposeJobResponseCostTotalUsdMin)
|
|
4144
|
-
}).nullable(),
|
|
4145
4118
|
"listUsd": zod9.number().optional(),
|
|
4146
4119
|
"startedAt": zod9.number(),
|
|
4147
4120
|
"completedAt": zod9.number().nullable(),
|
|
@@ -4302,10 +4275,10 @@ var getCompositionResponseCaptionsStyleExitMsMinOne = 0;
|
|
|
4302
4275
|
var getCompositionResponseCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
4303
4276
|
var getCompositionResponseCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
4304
4277
|
var getCompositionResponse = zod11.object({
|
|
4305
|
-
"v": zod11.
|
|
4278
|
+
"v": zod11.literal(1),
|
|
4306
4279
|
"format": zod11.object({
|
|
4307
4280
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4308
|
-
"fps": zod11.union([zod11.
|
|
4281
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4309
4282
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
4310
4283
|
"platform": zod11.string().optional()
|
|
4311
4284
|
}),
|
|
@@ -4646,10 +4619,10 @@ var putCompositionBodyCaptionsStyleExitMsMinOne = 0;
|
|
|
4646
4619
|
var putCompositionBodyCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
4647
4620
|
var putCompositionBodyCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
4648
4621
|
var putCompositionBody = zod11.object({
|
|
4649
|
-
"v": zod11.
|
|
4622
|
+
"v": zod11.literal(1),
|
|
4650
4623
|
"format": zod11.object({
|
|
4651
4624
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4652
|
-
"fps": zod11.union([zod11.
|
|
4625
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4653
4626
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
4654
4627
|
"platform": zod11.string().optional()
|
|
4655
4628
|
}).strict(),
|
|
@@ -4924,7 +4897,7 @@ var newCompositionBody = zod11.object({
|
|
|
4924
4897
|
"name": zod11.string().min(1).max(newCompositionBodyNameMax).optional(),
|
|
4925
4898
|
"format": zod11.object({
|
|
4926
4899
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4927
|
-
"fps": zod11.union([zod11.
|
|
4900
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4928
4901
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
4929
4902
|
}).strict().optional().describe("Output-format spec per \xA7Format.")
|
|
4930
4903
|
}).strict().describe("POST /projects/:id/compositions body \u2014 create a new video (composition) in the project. `format` defaults to the project's compositionFormat when omitted.");
|
|
@@ -4937,7 +4910,7 @@ var listCompositionsResponse = zod11.object({
|
|
|
4937
4910
|
"compositionId": zod11.string(),
|
|
4938
4911
|
"format": zod11.object({
|
|
4939
4912
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4940
|
-
"fps": zod11.union([zod11.
|
|
4913
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4941
4914
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
4942
4915
|
}).describe("Output-format spec per \xA7Format."),
|
|
4943
4916
|
"etag": zod11.string(),
|
|
@@ -5713,7 +5686,7 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5713
5686
|
"type": zod11.literal("setFormat"),
|
|
5714
5687
|
"format": zod11.object({
|
|
5715
5688
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
5716
|
-
"fps": zod11.union([zod11.
|
|
5689
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
5717
5690
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
5718
5691
|
}).strict()
|
|
5719
5692
|
}).strict().describe("Set the output format \u2014 `aspectRatio` (16:9|9:16|1:1|4:5) plus optional `fps` and `resolution`. Merges: an omitted field keeps the current value."), zod11.object({
|
|
@@ -6531,7 +6504,7 @@ var applyCompositionBody = zod11.object({
|
|
|
6531
6504
|
"type": zod11.literal("setFormat"),
|
|
6532
6505
|
"format": zod11.object({
|
|
6533
6506
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6534
|
-
"fps": zod11.union([zod11.
|
|
6507
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6535
6508
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
6536
6509
|
}).strict()
|
|
6537
6510
|
}).strict().describe("Set the output format \u2014 `aspectRatio` (16:9|9:16|1:1|4:5) plus optional `fps` and `resolution`. Merges: an omitted field keeps the current value."), zod11.object({
|
|
@@ -6592,7 +6565,7 @@ var deriveCompositionBody = zod11.object({
|
|
|
6592
6565
|
"fromCompositionId": zod11.string().min(1).describe("Source composition to reframe a sibling from."),
|
|
6593
6566
|
"targetFormat": zod11.object({
|
|
6594
6567
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6595
|
-
"fps": zod11.union([zod11.
|
|
6568
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6596
6569
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
6597
6570
|
}).strict().describe("Output-format spec per \xA7Format.")
|
|
6598
6571
|
}).strict().describe("Derive a reframed sibling composition for a new aspect (Auto-Reframe / Magic-Resize, agent-native).");
|
|
@@ -6670,10 +6643,10 @@ var validateCompositionBodyCaptionsStyleExitMsMinOne = 0;
|
|
|
6670
6643
|
var validateCompositionBodyCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
6671
6644
|
var validateCompositionBodyCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
6672
6645
|
var validateCompositionBody = zod11.object({
|
|
6673
|
-
"v": zod11.
|
|
6646
|
+
"v": zod11.literal(1),
|
|
6674
6647
|
"format": zod11.object({
|
|
6675
6648
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6676
|
-
"fps": zod11.union([zod11.
|
|
6649
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6677
6650
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
6678
6651
|
"platform": zod11.string().optional()
|
|
6679
6652
|
}).strict(),
|
|
@@ -6957,6 +6930,7 @@ var validateCompositionResponse = zod11.object({
|
|
|
6957
6930
|
"detail": zod11.string(),
|
|
6958
6931
|
"fix": zod11.string()
|
|
6959
6932
|
})).describe("Deterministic, render-free QUALITY floors (the SAME named defects the Director's in-loop verify and score_composition surface: static-hold, caption-spine, sfx-density, sfx-speech-collision, bed-coverage, audio-role). NON-blocking \u2014 they never flip `valid` (an editorially-weak composition still renders); fix them for quality, not to save. Empty when the composition is clean or the wire shape failed (they need a parsed composition)."),
|
|
6933
|
+
"warnings": zod11.array(zod11.string()).optional().describe("Non-blocking render-fidelity warnings detected before enqueue, including unavailable font families."),
|
|
6960
6934
|
"quote": zod11.object({
|
|
6961
6935
|
"thisStepUsd": zod11.number(),
|
|
6962
6936
|
"jobSpendSoFarUsd": zod11.number(),
|
|
@@ -6990,7 +6964,6 @@ var createCriticBody = zod13.object({
|
|
|
6990
6964
|
"criticId": zod13.string().min(1).describe("Stable client id; re-registering the same id UPSERTS."),
|
|
6991
6965
|
"label": zod13.string().min(1),
|
|
6992
6966
|
"tier": zod13.enum(["rules", "rubric", "evaluator"]),
|
|
6993
|
-
"phase": zod13.enum(["static", "temporal"]).optional().describe("static (default) \u2192 runs each in-loop attempt AND in score_composition. temporal (final-render evaluation) is accepted but NOT yet wired \u2014 a temporal critic produces no verdicts today; use static."),
|
|
6994
6967
|
"floor": zod13.number().min(createCriticBodyFloorMin).max(createCriticBodyFloorMax).optional().describe("Score below this routes a refine like a built-in criterion. Defaults to 6."),
|
|
6995
6968
|
"rules": zod13.array(zod13.record(zod13.string(), zod13.unknown())).optional().describe('tier "rules": declarative ClientRule[] (data).'),
|
|
6996
6969
|
"rubric": zod13.string().optional().describe('tier "rubric": your criterion + description; scored as an extra column.'),
|
|
@@ -7002,7 +6975,6 @@ var listCriticsResponse = zod13.object({
|
|
|
7002
6975
|
"criticId": zod13.string(),
|
|
7003
6976
|
"label": zod13.string(),
|
|
7004
6977
|
"tier": zod13.enum(["rules", "rubric", "evaluator"]),
|
|
7005
|
-
"phase": zod13.enum(["static", "temporal"]),
|
|
7006
6978
|
"floor": zod13.number(),
|
|
7007
6979
|
"referenceMediaIds": zod13.array(zod13.string()).optional()
|
|
7008
6980
|
}).describe("One registered critic (rubric/rules/url stay write-only \u2014 never echoed)."))
|
|
@@ -7023,21 +6995,6 @@ var scoreCompositionBody = zod14.object({
|
|
|
7023
6995
|
"editorialIntent": zod14.string().optional(),
|
|
7024
6996
|
"brandContext": zod14.string().optional()
|
|
7025
6997
|
}).strict();
|
|
7026
|
-
var previewFrameParams = zod14.object({
|
|
7027
|
-
"id": zod14.string()
|
|
7028
|
-
});
|
|
7029
|
-
var previewFrameBodyScaleMin = 0.1;
|
|
7030
|
-
var previewFrameBodyScaleMax = 1;
|
|
7031
|
-
var previewFrameBodyJpegQualityMax = 100;
|
|
7032
|
-
var previewFrameBody = zod14.object({
|
|
7033
|
-
"composition": zod14.unknown().optional().describe("The composition to render. Absent \u21D2 the project's ACTIVE composition \u2014 what create_render will encode. The response's `previewed.source` names what was rendered."),
|
|
7034
|
-
"compositionId": zod14.string().optional().describe("Preview a SPECIFIC persisted composition of this project (create_render parity). Absent \u21D2 the active one. A stale/foreign id is a 404 \u2014 never a silent fall-through."),
|
|
7035
|
-
"session_id": zod14.string().optional().describe("Compose-session id: render that session's SCRATCH composition (what the session has been editing) instead of the active row. Ignored when `composition` is passed."),
|
|
7036
|
-
"timestamps": zod14.array(zod14.number()).min(1),
|
|
7037
|
-
"imageFormat": zod14.enum(["png", "jpeg"]).optional().describe("Still format. Default jpeg \u2014 these pixels go to a vision model, where jpeg is equivalent and png costs multiples in bytes to store and move. Pass png only when you need full fidelity."),
|
|
7038
|
-
"scale": zod14.number().min(previewFrameBodyScaleMin).max(previewFrameBodyScaleMax).optional().describe("Render scale 0.1\u20131. Default 0.5, which is what this schema has always recommended for vision-bound looks. Pass 1 when judging fine detail \u2014 it costs ~4x the vision tokens."),
|
|
7039
|
-
"jpegQuality": zod14.number().min(1).max(previewFrameBodyJpegQualityMax).optional().describe("JPEG quality (jpeg only). Default 70 \u2014 the quality the eval panel grades at.")
|
|
7040
|
-
}).strict();
|
|
7041
6998
|
var previewFrameJobParams = zod14.object({
|
|
7042
6999
|
"id": zod14.string()
|
|
7043
7000
|
});
|
|
@@ -7056,11 +7013,15 @@ var previewFrameJobBody = zod14.object({
|
|
|
7056
7013
|
var previewComponentParams = zod14.object({
|
|
7057
7014
|
"id": zod14.string()
|
|
7058
7015
|
});
|
|
7016
|
+
var previewComponentBodyDurationInFramesMax = 3600;
|
|
7017
|
+
var previewComponentBodyPreviewFrameMin = 0;
|
|
7059
7018
|
var previewComponentBody = zod14.object({
|
|
7060
7019
|
"componentId": zod14.string().min(1),
|
|
7061
7020
|
"params": zod14.record(zod14.string(), zod14.unknown()).optional(),
|
|
7062
7021
|
"width": zod14.number().optional(),
|
|
7063
|
-
"height": zod14.number().optional()
|
|
7022
|
+
"height": zod14.number().optional(),
|
|
7023
|
+
"durationInFrames": zod14.number().min(1).max(previewComponentBodyDurationInFramesMax).optional().describe("Full preview duration at 30fps. Defaults to 90 frames (3 seconds)."),
|
|
7024
|
+
"previewFrame": zod14.number().min(previewComponentBodyPreviewFrameMin).optional().describe("Frame sampled for a live-component still. Defaults to the midpoint and must be less than durationInFrames.")
|
|
7064
7025
|
}).strict();
|
|
7065
7026
|
|
|
7066
7027
|
// ../sdk/src/generated/zod/exports/exports.ts
|
|
@@ -7183,19 +7144,6 @@ var getJobResponse = zod18.object({
|
|
|
7183
7144
|
"message": zod18.string().optional()
|
|
7184
7145
|
}).nullable().describe("Executor heartbeat while running; null when none reported."),
|
|
7185
7146
|
"result": zod18.union([zod18.object({
|
|
7186
|
-
"artifacts": zod18.array(zod18.object({
|
|
7187
|
-
"id": zod18.string(),
|
|
7188
|
-
"beatSec": zod18.number(),
|
|
7189
|
-
"r2Key": zod18.string().describe("Durable private artifact identity; use the materialized url to fetch."),
|
|
7190
|
-
"bytes": zod18.number(),
|
|
7191
|
-
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7192
|
-
"layers": zod18.object({
|
|
7193
|
-
"video": zod18.string().nullable(),
|
|
7194
|
-
"overlays": zod18.number().min(getJobResponseResultArtifactsItemLayersOverlaysMin)
|
|
7195
|
-
}),
|
|
7196
|
-
"url": zod18.string().optional(),
|
|
7197
|
-
"urlExpiresAt": zod18.string().optional()
|
|
7198
|
-
})),
|
|
7199
7147
|
"geometry": zod18.object({
|
|
7200
7148
|
"scale": zod18.number(),
|
|
7201
7149
|
"compositionWidth": zod18.number().optional(),
|
|
@@ -7209,32 +7157,47 @@ var getJobResponse = zod18.object({
|
|
|
7209
7157
|
"compositionId": zod18.string().optional(),
|
|
7210
7158
|
"etag": zod18.string().optional()
|
|
7211
7159
|
}),
|
|
7212
|
-
"listUsd": zod18.number().optional().describe("List price charged for this delivered capture.")
|
|
7160
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered capture."),
|
|
7161
|
+
"artifacts": zod18.array(zod18.object({
|
|
7162
|
+
"id": zod18.string(),
|
|
7163
|
+
"beatSec": zod18.number(),
|
|
7164
|
+
"bytes": zod18.number(),
|
|
7165
|
+
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7166
|
+
"layers": zod18.object({
|
|
7167
|
+
"video": zod18.string().nullable(),
|
|
7168
|
+
"overlays": zod18.number().min(getJobResponseResultArtifactsItemLayersOverlaysMin)
|
|
7169
|
+
}),
|
|
7170
|
+
"url": zod18.string().url(),
|
|
7171
|
+
"urlExpiresAt": zod18.string()
|
|
7172
|
+
}))
|
|
7213
7173
|
}), zod18.union([zod18.object({
|
|
7214
7174
|
"artifactKind": zod18.literal("image"),
|
|
7215
7175
|
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7216
|
-
"outputR2Key": zod18.string(),
|
|
7217
7176
|
"cached": zod18.boolean(),
|
|
7218
|
-
"
|
|
7219
|
-
"
|
|
7220
|
-
"
|
|
7177
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7178
|
+
"url": zod18.string().url(),
|
|
7179
|
+
"urlExpiresAt": zod18.string()
|
|
7221
7180
|
}), zod18.object({
|
|
7222
7181
|
"artifactKind": zod18.literal("motion"),
|
|
7223
7182
|
"contentType": zod18.literal("video/webm"),
|
|
7224
|
-
"outputR2Key": zod18.string(),
|
|
7225
7183
|
"cached": zod18.boolean(),
|
|
7226
|
-
"
|
|
7227
|
-
"
|
|
7228
|
-
"
|
|
7184
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7185
|
+
"url": zod18.string().url(),
|
|
7186
|
+
"urlExpiresAt": zod18.string()
|
|
7229
7187
|
})]), zod18.object({
|
|
7230
7188
|
"perCriterion": zod18.unknown().optional(),
|
|
7231
7189
|
"composite": zod18.number(),
|
|
7232
7190
|
"critique": zod18.string(),
|
|
7233
7191
|
"checkpointId": zod18.string(),
|
|
7234
|
-
"
|
|
7192
|
+
"beats": zod18.unknown().optional(),
|
|
7235
7193
|
"clientScores": zod18.array(zod18.unknown()).optional(),
|
|
7236
|
-
"
|
|
7237
|
-
}), zod18.
|
|
7194
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered evaluation.")
|
|
7195
|
+
}), zod18.object({
|
|
7196
|
+
"colors": zod18.array(zod18.string()),
|
|
7197
|
+
"fonts": zod18.array(zod18.string()),
|
|
7198
|
+
"title": zod18.string().optional(),
|
|
7199
|
+
"description": zod18.string().optional()
|
|
7200
|
+
}).describe("POST /brand-kits/extract response \u2014 extracted brand tokens (not persisted)."), zod18.null()]).describe("Kind-specific payload when status is `succeeded`; null otherwise."),
|
|
7238
7201
|
"error": zod18.object({
|
|
7239
7202
|
"code": zod18.string(),
|
|
7240
7203
|
"message": zod18.string()
|
|
@@ -7258,19 +7221,6 @@ var cancelJobResponse = zod18.object({
|
|
|
7258
7221
|
"message": zod18.string().optional()
|
|
7259
7222
|
}).nullable().describe("Executor heartbeat while running; null when none reported."),
|
|
7260
7223
|
"result": zod18.union([zod18.object({
|
|
7261
|
-
"artifacts": zod18.array(zod18.object({
|
|
7262
|
-
"id": zod18.string(),
|
|
7263
|
-
"beatSec": zod18.number(),
|
|
7264
|
-
"r2Key": zod18.string().describe("Durable private artifact identity; use the materialized url to fetch."),
|
|
7265
|
-
"bytes": zod18.number(),
|
|
7266
|
-
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7267
|
-
"layers": zod18.object({
|
|
7268
|
-
"video": zod18.string().nullable(),
|
|
7269
|
-
"overlays": zod18.number().min(cancelJobResponseResultArtifactsItemLayersOverlaysMin)
|
|
7270
|
-
}),
|
|
7271
|
-
"url": zod18.string().optional(),
|
|
7272
|
-
"urlExpiresAt": zod18.string().optional()
|
|
7273
|
-
})),
|
|
7274
7224
|
"geometry": zod18.object({
|
|
7275
7225
|
"scale": zod18.number(),
|
|
7276
7226
|
"compositionWidth": zod18.number().optional(),
|
|
@@ -7284,32 +7234,47 @@ var cancelJobResponse = zod18.object({
|
|
|
7284
7234
|
"compositionId": zod18.string().optional(),
|
|
7285
7235
|
"etag": zod18.string().optional()
|
|
7286
7236
|
}),
|
|
7287
|
-
"listUsd": zod18.number().optional().describe("List price charged for this delivered capture.")
|
|
7237
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered capture."),
|
|
7238
|
+
"artifacts": zod18.array(zod18.object({
|
|
7239
|
+
"id": zod18.string(),
|
|
7240
|
+
"beatSec": zod18.number(),
|
|
7241
|
+
"bytes": zod18.number(),
|
|
7242
|
+
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7243
|
+
"layers": zod18.object({
|
|
7244
|
+
"video": zod18.string().nullable(),
|
|
7245
|
+
"overlays": zod18.number().min(cancelJobResponseResultArtifactsItemLayersOverlaysMin)
|
|
7246
|
+
}),
|
|
7247
|
+
"url": zod18.string().url(),
|
|
7248
|
+
"urlExpiresAt": zod18.string()
|
|
7249
|
+
}))
|
|
7288
7250
|
}), zod18.union([zod18.object({
|
|
7289
7251
|
"artifactKind": zod18.literal("image"),
|
|
7290
7252
|
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7291
|
-
"outputR2Key": zod18.string(),
|
|
7292
7253
|
"cached": zod18.boolean(),
|
|
7293
|
-
"
|
|
7294
|
-
"
|
|
7295
|
-
"
|
|
7254
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7255
|
+
"url": zod18.string().url(),
|
|
7256
|
+
"urlExpiresAt": zod18.string()
|
|
7296
7257
|
}), zod18.object({
|
|
7297
7258
|
"artifactKind": zod18.literal("motion"),
|
|
7298
7259
|
"contentType": zod18.literal("video/webm"),
|
|
7299
|
-
"outputR2Key": zod18.string(),
|
|
7300
7260
|
"cached": zod18.boolean(),
|
|
7301
|
-
"
|
|
7302
|
-
"
|
|
7303
|
-
"
|
|
7261
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7262
|
+
"url": zod18.string().url(),
|
|
7263
|
+
"urlExpiresAt": zod18.string()
|
|
7304
7264
|
})]), zod18.object({
|
|
7305
7265
|
"perCriterion": zod18.unknown().optional(),
|
|
7306
7266
|
"composite": zod18.number(),
|
|
7307
7267
|
"critique": zod18.string(),
|
|
7308
7268
|
"checkpointId": zod18.string(),
|
|
7309
|
-
"
|
|
7269
|
+
"beats": zod18.unknown().optional(),
|
|
7310
7270
|
"clientScores": zod18.array(zod18.unknown()).optional(),
|
|
7311
|
-
"
|
|
7312
|
-
}), zod18.
|
|
7271
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered evaluation.")
|
|
7272
|
+
}), zod18.object({
|
|
7273
|
+
"colors": zod18.array(zod18.string()),
|
|
7274
|
+
"fonts": zod18.array(zod18.string()),
|
|
7275
|
+
"title": zod18.string().optional(),
|
|
7276
|
+
"description": zod18.string().optional()
|
|
7277
|
+
}).describe("POST /brand-kits/extract response \u2014 extracted brand tokens (not persisted)."), zod18.null()]).describe("Kind-specific payload when status is `succeeded`; null otherwise."),
|
|
7313
7278
|
"error": zod18.object({
|
|
7314
7279
|
"code": zod18.string(),
|
|
7315
7280
|
"message": zod18.string()
|
|
@@ -7407,7 +7372,7 @@ var generateMediaBodyPromptMax = 1e4;
|
|
|
7407
7372
|
var generateMediaBody = zod19.object({
|
|
7408
7373
|
"generator": zod19.enum(["text-to-video", "text-to-image", "image-to-video", "text-to-music", "text-to-speech", "text-to-sfx", "auto"]),
|
|
7409
7374
|
"prompt": zod19.string().min(1).max(generateMediaBodyPromptMax),
|
|
7410
|
-
"style": zod19.record(zod19.string(), zod19.unknown()).optional().describe(
|
|
7375
|
+
"style": zod19.record(zod19.string(), zod19.unknown()).optional().describe("Free-form generation parameters, read per generator. All generators honor `aspect` (string) + `durationSec` (number) where applicable. text-to-speech honors `voice` (string; default voice when omitted), `speed` (number 0.7-1.2), `stability` (number 0-1), and `styleExaggeration` (number 0-1 \u2192 the endpoint's style exaggeration). Provider and model selection are server-owned and cannot be overridden."),
|
|
7411
7376
|
"refs": zod19.object({
|
|
7412
7377
|
"firstFrameMediaId": zod19.string().optional(),
|
|
7413
7378
|
"lastFrameMediaId": zod19.string().optional(),
|
|
@@ -7469,13 +7434,43 @@ var getMediaResponse = zod19.object({
|
|
|
7469
7434
|
var getMediaTranscriptParams = zod19.object({
|
|
7470
7435
|
"id": zod19.string()
|
|
7471
7436
|
});
|
|
7437
|
+
var getMediaTranscriptQueryAfterMin = 0;
|
|
7438
|
+
var getMediaTranscriptQueryBeforeMin = 0;
|
|
7439
|
+
var getMediaTranscriptQueryLimitDefault = 20;
|
|
7440
|
+
var getMediaTranscriptQueryLimitMax = 100;
|
|
7441
|
+
var getMediaTranscriptQueryParams = zod19.object({
|
|
7442
|
+
"after": zod19.number().min(getMediaTranscriptQueryAfterMin).optional().describe("Zero-based utterance cursor returned as pagination.nextCursor."),
|
|
7443
|
+
"before": zod19.number().min(getMediaTranscriptQueryBeforeMin).optional().describe("Zero-based utterance cursor for a backward page. Do not combine with after."),
|
|
7444
|
+
"limit": zod19.number().min(1).max(getMediaTranscriptQueryLimitMax).default(getMediaTranscriptQueryLimitDefault).describe("Utterances per page.")
|
|
7445
|
+
});
|
|
7472
7446
|
var getMediaTranscriptResponse = zod19.object({
|
|
7473
7447
|
"mediaItemId": zod19.string(),
|
|
7474
7448
|
"language": zod19.string().nullable(),
|
|
7475
|
-
"model": zod19.string().nullable(),
|
|
7476
7449
|
"fullText": zod19.string(),
|
|
7477
|
-
"utterances": zod19.array(zod19.
|
|
7478
|
-
|
|
7450
|
+
"utterances": zod19.array(zod19.object({
|
|
7451
|
+
"speaker": zod19.string().nullable(),
|
|
7452
|
+
"text": zod19.string(),
|
|
7453
|
+
"start": zod19.number().describe("Utterance onset in seconds from the start of the source media."),
|
|
7454
|
+
"end": zod19.number().describe("Utterance end in seconds from the start of the source media."),
|
|
7455
|
+
"words": zod19.array(zod19.object({
|
|
7456
|
+
"text": zod19.string(),
|
|
7457
|
+
"start": zod19.number().describe("Word onset in seconds from the start of the source media."),
|
|
7458
|
+
"end": zod19.number().describe("Word end in seconds from the start of the source media."),
|
|
7459
|
+
"confidence": zod19.number().nullable()
|
|
7460
|
+
}))
|
|
7461
|
+
})),
|
|
7462
|
+
"data": zod19.array(zod19.object({
|
|
7463
|
+
"speaker": zod19.string().nullable(),
|
|
7464
|
+
"text": zod19.string(),
|
|
7465
|
+
"start": zod19.number().describe("Utterance onset in seconds from the start of the source media."),
|
|
7466
|
+
"end": zod19.number().describe("Utterance end in seconds from the start of the source media."),
|
|
7467
|
+
"words": zod19.array(zod19.object({
|
|
7468
|
+
"text": zod19.string(),
|
|
7469
|
+
"start": zod19.number().describe("Word onset in seconds from the start of the source media."),
|
|
7470
|
+
"end": zod19.number().describe("Word end in seconds from the start of the source media."),
|
|
7471
|
+
"confidence": zod19.number().nullable()
|
|
7472
|
+
}))
|
|
7473
|
+
})).optional(),
|
|
7479
7474
|
"pagination": zod19.object({
|
|
7480
7475
|
"hasMore": zod19.boolean(),
|
|
7481
7476
|
"nextCursor": zod19.string().nullable(),
|
|
@@ -7495,7 +7490,10 @@ var getMediaContextResponse = zod19.object({
|
|
|
7495
7490
|
}).nullable().describe("Presigned processing thumbnail (~1 week) \u2014 the footage at a glance. For stills at chosen timestamps, use preview_frame with a one-clip composition over this media."),
|
|
7496
7491
|
"faces": zod19.object({
|
|
7497
7492
|
"status": zod19.enum(["ready", "not_detected"]),
|
|
7493
|
+
"state": zod19.enum(["not_requested", "pending", "ready", "no_usable_subject", "failed"]).describe("Canonical perception state. no_usable_subject means detection completed but produced no track suitable for reframing; it is distinct from not_requested."),
|
|
7494
|
+
"reason": zod19.string().optional().describe("Safe detector outcome code when state is failed or no_usable_subject."),
|
|
7498
7495
|
"windows": zod19.array(zod19.object({
|
|
7496
|
+
"detectorVersion": zod19.string().describe("Version of the face detector that produced this source-window roster."),
|
|
7499
7497
|
"window": zod19.object({
|
|
7500
7498
|
"startSec": zod19.number(),
|
|
7501
7499
|
"endSec": zod19.number()
|
|
@@ -7517,10 +7515,31 @@ var getMediaContextResponse = zod19.object({
|
|
|
7517
7515
|
"data": zod19.union([zod19.object({
|
|
7518
7516
|
"mediaItemId": zod19.string(),
|
|
7519
7517
|
"language": zod19.string().nullable(),
|
|
7520
|
-
"model": zod19.string().nullable(),
|
|
7521
7518
|
"fullText": zod19.string(),
|
|
7522
|
-
"utterances": zod19.array(zod19.
|
|
7523
|
-
|
|
7519
|
+
"utterances": zod19.array(zod19.object({
|
|
7520
|
+
"speaker": zod19.string().nullable(),
|
|
7521
|
+
"text": zod19.string(),
|
|
7522
|
+
"start": zod19.number().describe("Utterance onset in seconds from the start of the source media."),
|
|
7523
|
+
"end": zod19.number().describe("Utterance end in seconds from the start of the source media."),
|
|
7524
|
+
"words": zod19.array(zod19.object({
|
|
7525
|
+
"text": zod19.string(),
|
|
7526
|
+
"start": zod19.number().describe("Word onset in seconds from the start of the source media."),
|
|
7527
|
+
"end": zod19.number().describe("Word end in seconds from the start of the source media."),
|
|
7528
|
+
"confidence": zod19.number().nullable()
|
|
7529
|
+
}))
|
|
7530
|
+
})),
|
|
7531
|
+
"data": zod19.array(zod19.object({
|
|
7532
|
+
"speaker": zod19.string().nullable(),
|
|
7533
|
+
"text": zod19.string(),
|
|
7534
|
+
"start": zod19.number().describe("Utterance onset in seconds from the start of the source media."),
|
|
7535
|
+
"end": zod19.number().describe("Utterance end in seconds from the start of the source media."),
|
|
7536
|
+
"words": zod19.array(zod19.object({
|
|
7537
|
+
"text": zod19.string(),
|
|
7538
|
+
"start": zod19.number().describe("Word onset in seconds from the start of the source media."),
|
|
7539
|
+
"end": zod19.number().describe("Word end in seconds from the start of the source media."),
|
|
7540
|
+
"confidence": zod19.number().nullable()
|
|
7541
|
+
}))
|
|
7542
|
+
})).optional(),
|
|
7524
7543
|
"pagination": zod19.object({
|
|
7525
7544
|
"hasMore": zod19.boolean(),
|
|
7526
7545
|
"nextCursor": zod19.string().nullable(),
|
|
@@ -7549,13 +7568,11 @@ var getMediaContextResponse = zod19.object({
|
|
|
7549
7568
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7550
7569
|
"intent": zod19.object({
|
|
7551
7570
|
"kind": zod19.enum(["whole", "window"]),
|
|
7552
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7553
7571
|
"window": zod19.object({
|
|
7554
7572
|
"startSec": zod19.number(),
|
|
7555
7573
|
"endSec": zod19.number()
|
|
7556
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7574
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7557
7575
|
}),
|
|
7558
|
-
"producerId": zod19.string().describe("Stable producer identity \u2014 'deepgram-nova3' | 'yunet-face' | 'yolo-person' | 'rvm-matte'. NOT the version: two producers of one kind coexist by construction."),
|
|
7559
7576
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7560
7577
|
"summary": zod19.object({
|
|
7561
7578
|
"presenceFraction": zod19.number().optional().describe("Matte only: fraction of frames carrying a detected subject (0\u20131). Below 0.6 there is no reliable silhouette \u2014 the matte is delivered but cannot carry a behind-subject graphic, and is NOT charged."),
|
|
@@ -7604,13 +7621,11 @@ var listMediaFactsResponse = zod19.object({
|
|
|
7604
7621
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7605
7622
|
"intent": zod19.object({
|
|
7606
7623
|
"kind": zod19.enum(["whole", "window"]),
|
|
7607
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7608
7624
|
"window": zod19.object({
|
|
7609
7625
|
"startSec": zod19.number(),
|
|
7610
7626
|
"endSec": zod19.number()
|
|
7611
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7627
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7612
7628
|
}),
|
|
7613
|
-
"producerId": zod19.string().describe("Stable producer identity \u2014 'deepgram-nova3' | 'yunet-face' | 'yolo-person' | 'rvm-matte'. NOT the version: two producers of one kind coexist by construction."),
|
|
7614
7629
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7615
7630
|
"summary": zod19.object({
|
|
7616
7631
|
"presenceFraction": zod19.number().optional().describe("Matte only: fraction of frames carrying a detected subject (0\u20131). Below 0.6 there is no reliable silhouette \u2014 the matte is delivered but cannot carry a behind-subject graphic, and is NOT charged."),
|
|
@@ -7645,13 +7660,11 @@ var listMediaFactsResponse = zod19.object({
|
|
|
7645
7660
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7646
7661
|
"intent": zod19.object({
|
|
7647
7662
|
"kind": zod19.enum(["whole", "window"]),
|
|
7648
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7649
7663
|
"window": zod19.object({
|
|
7650
7664
|
"startSec": zod19.number(),
|
|
7651
7665
|
"endSec": zod19.number()
|
|
7652
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7666
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7653
7667
|
}),
|
|
7654
|
-
"producerId": zod19.string().describe("Stable producer identity \u2014 'deepgram-nova3' | 'yunet-face' | 'yolo-person' | 'rvm-matte'. NOT the version: two producers of one kind coexist by construction."),
|
|
7655
7668
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7656
7669
|
"summary": zod19.object({
|
|
7657
7670
|
"presenceFraction": zod19.number().optional().describe("Matte only: fraction of frames carrying a detected subject (0\u20131). Below 0.6 there is no reliable silhouette \u2014 the matte is delivered but cannot carry a behind-subject graphic, and is NOT charged."),
|
|
@@ -7695,35 +7708,6 @@ var purchaseMediaFactBody = zod19.object({
|
|
|
7695
7708
|
"endSec": zod19.number()
|
|
7696
7709
|
}).strict().optional().describe("The SOURCE window. REQUIRED for `matte` (its cost scales with duration). OPTIONAL for `subjectTrack`: give a clip's source window to buy the track the render looks up for THAT clip, and pay only for its duration; omit it to detect the whole source.")
|
|
7697
7710
|
}).strict().describe("POST /media/:id/facts body.");
|
|
7698
|
-
var getMediaPerformanceParams = zod19.object({
|
|
7699
|
-
"id": zod19.string()
|
|
7700
|
-
});
|
|
7701
|
-
var getMediaPerformanceResponse = zod19.object({
|
|
7702
|
-
"media": zod19.object({
|
|
7703
|
-
"id": zod19.string(),
|
|
7704
|
-
"name": zod19.string(),
|
|
7705
|
-
"createdAt": zod19.string(),
|
|
7706
|
-
"fileSize": zod19.number(),
|
|
7707
|
-
"duration": zod19.number().nullable(),
|
|
7708
|
-
"status": zod19.string()
|
|
7709
|
-
}),
|
|
7710
|
-
"window": zod19.object({
|
|
7711
|
-
"startIso": zod19.string(),
|
|
7712
|
-
"endIso": zod19.string()
|
|
7713
|
-
}),
|
|
7714
|
-
"workflowCount": zod19.number(),
|
|
7715
|
-
"workflows": zod19.array(zod19.object({
|
|
7716
|
-
"name": zod19.string(),
|
|
7717
|
-
"startedAt": zod19.string(),
|
|
7718
|
-
"durationMs": zod19.number(),
|
|
7719
|
-
"activities": zod19.array(zod19.object({
|
|
7720
|
-
"name": zod19.string(),
|
|
7721
|
-
"startedAt": zod19.string(),
|
|
7722
|
-
"durationMs": zod19.number(),
|
|
7723
|
-
"service": zod19.string()
|
|
7724
|
-
}))
|
|
7725
|
-
}))
|
|
7726
|
-
}).describe("Per-media performance breakdown: every Temporal workflow + activity span (plus Modal sub-spans) that ran for the requested media item, grouped under its owning workflow by time-range containment. Backed by Axiom proxy \u2014 see the `cueframe stats` CLI subcommand.");
|
|
7727
7711
|
var analyzeTranscriptParams = zod19.object({
|
|
7728
7712
|
"id": zod19.string()
|
|
7729
7713
|
});
|
|
@@ -7738,8 +7722,7 @@ var analyzeTranscriptBody = zod19.object({
|
|
|
7738
7722
|
}).strict().describe("One editorial question about a media item's transcript.");
|
|
7739
7723
|
var analyzeTranscriptResponse = zod19.object({
|
|
7740
7724
|
"task": zod19.enum(["summary", "chapters", "highlights"]).describe("Echo of the requested task \u2014 so a batched caller can pair answers to asks."),
|
|
7741
|
-
"result": zod19.string().describe("The answer, as text. `summary` is prose; `chapters` and `highlights` are one record per LINE in the shape documented on the request's `task` field \u2014 split on newlines to parse them. Timestamps are absolute seconds from the start of the media and every one is CHECKED against the transcript before the response is returned (a fabricated timestamp fails the call rather than shipping), but they are line-start markers about 15s apart \u2014 a boundary can sit up to 15s BEFORE the moment you want. Use them to locate, not to cut: refine against the word timings in GET /v1/media/{id}/context.")
|
|
7742
|
-
"model": zod19.string().describe("The model that produced this answer (e.g. `claude-sonnet-4-6`). Recorded on the response because the same task on the same transcript is not stable across models \u2014 if you cache or compare answers, key on this.")
|
|
7725
|
+
"result": zod19.string().describe("The answer, as text. `summary` is prose; `chapters` and `highlights` are one record per LINE in the shape documented on the request's `task` field \u2014 split on newlines to parse them. Timestamps are absolute seconds from the start of the media and every one is CHECKED against the transcript before the response is returned (a fabricated timestamp fails the call rather than shipping), but they are line-start markers about 15s apart \u2014 a boundary can sit up to 15s BEFORE the moment you want. Use them to locate, not to cut: refine against the word timings in GET /v1/media/{id}/context.")
|
|
7743
7726
|
}).describe("The analysis of one media item's transcript. Metered: this is a real LLM call, billed on measured token spend, so it is not a read to poll.");
|
|
7744
7727
|
var analyzeTimelineBodyWordsItemTextMax = 1e3;
|
|
7745
7728
|
var analyzeTimelineBodyWordsItemTimelineStartMin = 0;
|
|
@@ -7768,8 +7751,7 @@ var analyzeTimelineResponseEmphasisItemMin = 0;
|
|
|
7768
7751
|
var analyzeTimelineResponse = zod19.object({
|
|
7769
7752
|
"fillers": zod19.array(zod19.number().min(analyzeTimelineResponseFillersItemMin)),
|
|
7770
7753
|
"silenceGaps": zod19.array(zod19.number().min(analyzeTimelineResponseSilenceGapsItemMin)),
|
|
7771
|
-
"emphasis": zod19.array(zod19.number().min(analyzeTimelineResponseEmphasisItemMin))
|
|
7772
|
-
"model": zod19.string()
|
|
7754
|
+
"emphasis": zod19.array(zod19.number().min(analyzeTimelineResponseEmphasisItemMin))
|
|
7773
7755
|
}).describe("CueFrame-model analysis of timeline word indices. Every returned index refers to the request's words array.");
|
|
7774
7756
|
|
|
7775
7757
|
// ../sdk/src/generated/zod/projects/projects.ts
|
|
@@ -7782,7 +7764,7 @@ var listProjectsResponse = zod20.object({
|
|
|
7782
7764
|
"description": zod20.string().nullable(),
|
|
7783
7765
|
"format": zod20.union([zod20.object({
|
|
7784
7766
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7785
|
-
"fps": zod20.union([zod20.
|
|
7767
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7786
7768
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7787
7769
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7788
7770
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7814,7 +7796,7 @@ var createProjectBody = zod20.object({
|
|
|
7814
7796
|
"description": zod20.string().optional(),
|
|
7815
7797
|
"format": zod20.object({
|
|
7816
7798
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7817
|
-
"fps": zod20.union([zod20.
|
|
7799
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7818
7800
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7819
7801
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
7820
7802
|
"brandKitId": zod20.string().min(1).optional(),
|
|
@@ -7831,7 +7813,7 @@ var getProjectResponse = zod20.object({
|
|
|
7831
7813
|
"description": zod20.string().nullable(),
|
|
7832
7814
|
"format": zod20.union([zod20.object({
|
|
7833
7815
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7834
|
-
"fps": zod20.union([zod20.
|
|
7816
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7835
7817
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7836
7818
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7837
7819
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7860,7 +7842,7 @@ var patchProjectBody = zod20.object({
|
|
|
7860
7842
|
"description": zod20.string().optional(),
|
|
7861
7843
|
"format": zod20.object({
|
|
7862
7844
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7863
|
-
"fps": zod20.union([zod20.
|
|
7845
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7864
7846
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7865
7847
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
7866
7848
|
"brandKitId": zod20.string().min(1).optional()
|
|
@@ -7872,7 +7854,7 @@ var patchProjectResponse = zod20.object({
|
|
|
7872
7854
|
"description": zod20.string().nullable(),
|
|
7873
7855
|
"format": zod20.union([zod20.object({
|
|
7874
7856
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7875
|
-
"fps": zod20.union([zod20.
|
|
7857
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7876
7858
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7877
7859
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7878
7860
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7997,10 +7979,10 @@ var getProjectContextResponseMarkersItemStartTimeMin = 0;
|
|
|
7997
7979
|
var getProjectContextResponseMarkersItemEndTimeMin = 0;
|
|
7998
7980
|
var getProjectContextResponse = zod20.object({
|
|
7999
7981
|
"composition": zod20.union([zod20.object({
|
|
8000
|
-
"v": zod20.
|
|
7982
|
+
"v": zod20.literal(1),
|
|
8001
7983
|
"format": zod20.object({
|
|
8002
7984
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8003
|
-
"fps": zod20.union([zod20.
|
|
7985
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
8004
7986
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional(),
|
|
8005
7987
|
"platform": zod20.string().optional()
|
|
8006
7988
|
}),
|
|
@@ -8269,7 +8251,7 @@ var getProjectContextResponse = zod20.object({
|
|
|
8269
8251
|
}).describe("Canonical composition wire shape (multi-track; carries reframe, captions, markers)."), zod20.null()]).describe("The project's ACTIVE composition wire shape \u2014 identical to GET /v1/projects/{id}/composition. NULL when the project has no composition yet (a freshly created project): mint one with new_composition, or let the first apply_composition create it."),
|
|
8270
8252
|
"format": zod20.object({
|
|
8271
8253
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8272
|
-
"fps": zod20.union([zod20.
|
|
8254
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
8273
8255
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional(),
|
|
8274
8256
|
"platform": zod20.string().optional()
|
|
8275
8257
|
}).nullable().describe("The composition's format, hoisted \u2014 the pixel frame every card/graphic must be authored against. Null whenever `composition` is null."),
|
|
@@ -8277,7 +8259,7 @@ var getProjectContextResponse = zod20.object({
|
|
|
8277
8259
|
"id": zod20.string(),
|
|
8278
8260
|
"name": zod20.string(),
|
|
8279
8261
|
"kind": zod20.string().nullable(),
|
|
8280
|
-
"durationSec": zod20.number().nullable().describe("Seconds.
|
|
8262
|
+
"durationSec": zod20.number().nullable().describe("Seconds. Uses the media duration when known; audio without one falls back to its transcript's measured duration (same rule as get_media_context)."),
|
|
8281
8263
|
"hasTranscript": zod20.boolean().describe("A cached transcript EXISTS for this item. The bodies are never inlined here \u2014 fetch one with GET /v1/media/{id}/transcript (or get_media_context for faces + grids too).")
|
|
8282
8264
|
}).describe("One media item as the project context lists it: identity + duration + whether a transcript exists.")).describe("The org's media library (most recent first, capped) \u2014 the pool this project can draw clips from."),
|
|
8283
8265
|
"transcript": zod20.union([zod20.union([zod20.object({
|
|
@@ -8466,7 +8448,7 @@ var createRenderBody = zod21.object({
|
|
|
8466
8448
|
"compositionId": zod21.string().min(1).optional().describe("Target a specific composition in the project; defaults to the project's active composition."),
|
|
8467
8449
|
"format": zod21.object({
|
|
8468
8450
|
"aspectRatio": zod21.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8469
|
-
"fps": zod21.union([zod21.
|
|
8451
|
+
"fps": zod21.union([zod21.literal(24), zod21.literal(25), zod21.literal(30), zod21.literal(60)]).optional(),
|
|
8470
8452
|
"resolution": zod21.enum(["hd", "fhd", "4k"]).optional()
|
|
8471
8453
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
8472
8454
|
"priority": zod21.enum(["interactive", "standard", "background"]).optional(),
|
|
@@ -8491,12 +8473,12 @@ var listProjectRendersResponse = zod21.object({
|
|
|
8491
8473
|
"outputUrl": zod21.string().nullable(),
|
|
8492
8474
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8493
8475
|
"error": zod21.string().nullable().describe("Human-readable failure message. Pair with `errorCode` for a stable, machine-readable code an agent runner can branch on."),
|
|
8494
|
-
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error
|
|
8476
|
+
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error` or unavailable for an older render."),
|
|
8495
8477
|
"errorDetails": zod21.record(zod21.string(), zod21.unknown()).nullable().describe("Structured failure context \u2014 `{ targetUrl?, upstreamStatus?, upstreamCode?, attemptedAt? }`. Surfaced so agent runners can distinguish operator-config issues from upstream-down vs route-missing without parsing `error`."),
|
|
8496
8478
|
"category": zod21.union([zod21.literal("authoring"), zod21.literal("transient"), zod21.literal("internal"), zod21.literal(null)]).nullable().describe("Failure taxonomy when status is `error`; null otherwise. `authoring` = deterministic defect in YOUR composition/request \u2014 fix it, retrying is futile; `transient` = temporary pipeline/infra failure \u2014 safe to retry_render; `internal` = unexpected server fault \u2014 retry once then escalate. Mirrors the render.failed webhook's `category`."),
|
|
8497
8479
|
"retryable": zod21.boolean().nullable().describe("Whether re-attempting the SAME render can succeed (status `error`); null otherwise. true \u2192 call retry_render. false \u2192 deterministic (category authoring/internal); fix the composition first \u2014 retry_render alone reproduces it. Mirrors the render.failed webhook's `retryable`."),
|
|
8498
8480
|
"createdAt": zod21.string(),
|
|
8499
|
-
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the most recent
|
|
8481
|
+
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the render's most recent progress update. Compute staleness = now \u2212 updatedAt to distinguish a wedged render from a slow one and decide whether to wait, cancel, or retry."),
|
|
8500
8482
|
"listUsd": zod21.number().optional().describe("A2 money stamp: the metered event's LIST price (USD), stamped at the success terminal (exports for deliverable renders, compose_capture for A8 previews). A plan allowance may zero the actual invoice line \u2014 this is the list price, never a Stripe charge. Absent while running, on failure, and for x402 orgs (on-chain receipts). Mirrors the get_usage ledger."),
|
|
8501
8483
|
"warnings": zod21.array(zod21.string()).optional().describe("Non-fatal advisories surfaced at render-CREATE (omitted when none, and on GET \u2014 create-time only).")
|
|
8502
8484
|
}).describe("Render job response per \xA7Renders.")),
|
|
@@ -8533,12 +8515,12 @@ var getRenderResponse = zod21.object({
|
|
|
8533
8515
|
"outputUrl": zod21.string().nullable(),
|
|
8534
8516
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8535
8517
|
"error": zod21.string().nullable().describe("Human-readable failure message. Pair with `errorCode` for a stable, machine-readable code an agent runner can branch on."),
|
|
8536
|
-
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error
|
|
8518
|
+
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error` or unavailable for an older render."),
|
|
8537
8519
|
"errorDetails": zod21.record(zod21.string(), zod21.unknown()).nullable().describe("Structured failure context \u2014 `{ targetUrl?, upstreamStatus?, upstreamCode?, attemptedAt? }`. Surfaced so agent runners can distinguish operator-config issues from upstream-down vs route-missing without parsing `error`."),
|
|
8538
8520
|
"category": zod21.union([zod21.literal("authoring"), zod21.literal("transient"), zod21.literal("internal"), zod21.literal(null)]).nullable().describe("Failure taxonomy when status is `error`; null otherwise. `authoring` = deterministic defect in YOUR composition/request \u2014 fix it, retrying is futile; `transient` = temporary pipeline/infra failure \u2014 safe to retry_render; `internal` = unexpected server fault \u2014 retry once then escalate. Mirrors the render.failed webhook's `category`."),
|
|
8539
8521
|
"retryable": zod21.boolean().nullable().describe("Whether re-attempting the SAME render can succeed (status `error`); null otherwise. true \u2192 call retry_render. false \u2192 deterministic (category authoring/internal); fix the composition first \u2014 retry_render alone reproduces it. Mirrors the render.failed webhook's `retryable`."),
|
|
8540
8522
|
"createdAt": zod21.string(),
|
|
8541
|
-
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the most recent
|
|
8523
|
+
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the render's most recent progress update. Compute staleness = now \u2212 updatedAt to distinguish a wedged render from a slow one and decide whether to wait, cancel, or retry."),
|
|
8542
8524
|
"listUsd": zod21.number().optional().describe("A2 money stamp: the metered event's LIST price (USD), stamped at the success terminal (exports for deliverable renders, compose_capture for A8 previews). A plan allowance may zero the actual invoice line \u2014 this is the list price, never a Stripe charge. Absent while running, on failure, and for x402 orgs (on-chain receipts). Mirrors the get_usage ledger."),
|
|
8543
8525
|
"warnings": zod21.array(zod21.string()).optional().describe("Non-fatal advisories surfaced at render-CREATE (omitted when none, and on GET \u2014 create-time only).")
|
|
8544
8526
|
}).describe("Render job response per \xA7Renders.");
|
|
@@ -8560,12 +8542,12 @@ var cancelRenderResponse = zod21.object({
|
|
|
8560
8542
|
"outputUrl": zod21.string().nullable(),
|
|
8561
8543
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8562
8544
|
"error": zod21.string().nullable().describe("Human-readable failure message. Pair with `errorCode` for a stable, machine-readable code an agent runner can branch on."),
|
|
8563
|
-
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error
|
|
8545
|
+
"errorCode": zod21.string().nullable().describe("Stable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error` or unavailable for an older render."),
|
|
8564
8546
|
"errorDetails": zod21.record(zod21.string(), zod21.unknown()).nullable().describe("Structured failure context \u2014 `{ targetUrl?, upstreamStatus?, upstreamCode?, attemptedAt? }`. Surfaced so agent runners can distinguish operator-config issues from upstream-down vs route-missing without parsing `error`."),
|
|
8565
8547
|
"category": zod21.union([zod21.literal("authoring"), zod21.literal("transient"), zod21.literal("internal"), zod21.literal(null)]).nullable().describe("Failure taxonomy when status is `error`; null otherwise. `authoring` = deterministic defect in YOUR composition/request \u2014 fix it, retrying is futile; `transient` = temporary pipeline/infra failure \u2014 safe to retry_render; `internal` = unexpected server fault \u2014 retry once then escalate. Mirrors the render.failed webhook's `category`."),
|
|
8566
8548
|
"retryable": zod21.boolean().nullable().describe("Whether re-attempting the SAME render can succeed (status `error`); null otherwise. true \u2192 call retry_render. false \u2192 deterministic (category authoring/internal); fix the composition first \u2014 retry_render alone reproduces it. Mirrors the render.failed webhook's `retryable`."),
|
|
8567
8549
|
"createdAt": zod21.string(),
|
|
8568
|
-
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the most recent
|
|
8550
|
+
"updatedAt": zod21.string().describe("ISO-8601 timestamp of the render's most recent progress update. Compute staleness = now \u2212 updatedAt to distinguish a wedged render from a slow one and decide whether to wait, cancel, or retry."),
|
|
8569
8551
|
"listUsd": zod21.number().optional().describe("A2 money stamp: the metered event's LIST price (USD), stamped at the success terminal (exports for deliverable renders, compose_capture for A8 previews). A plan allowance may zero the actual invoice line \u2014 this is the list price, never a Stripe charge. Absent while running, on failure, and for x402 orgs (on-chain receipts). Mirrors the get_usage ledger."),
|
|
8570
8552
|
"warnings": zod21.array(zod21.string()).optional().describe("Non-fatal advisories surfaced at render-CREATE (omitted when none, and on GET \u2014 create-time only).")
|
|
8571
8553
|
}).describe("Render job response per \xA7Renders.");
|
|
@@ -8824,7 +8806,6 @@ var getMuxJobParams = zod24.object({
|
|
|
8824
8806
|
var getMuxJobResponse = zod24.object({
|
|
8825
8807
|
"jobId": zod24.string(),
|
|
8826
8808
|
"status": zod24.string(),
|
|
8827
|
-
"workflowId": zod24.string().optional(),
|
|
8828
8809
|
"muxedItems": zod24.record(zod24.string(), zod24.string()).nullish(),
|
|
8829
8810
|
"error": zod24.string().nullish(),
|
|
8830
8811
|
"startedAt": zod24.string().nullish(),
|
|
@@ -8971,24 +8952,24 @@ var createWorkspaceBody = zod28.object({
|
|
|
8971
8952
|
"videoUrl": zod28.string().url().max(createWorkspaceBodyVideoUrlMax),
|
|
8972
8953
|
"format": zod28.object({
|
|
8973
8954
|
"aspectRatio": zod28.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8974
|
-
"fps": zod28.union([zod28.
|
|
8955
|
+
"fps": zod28.union([zod28.literal(24), zod28.literal(25), zod28.literal(30), zod28.literal(60)]).optional(),
|
|
8975
8956
|
"resolution": zod28.enum(["hd", "fhd", "4k"]).optional()
|
|
8976
8957
|
}).strict().optional().describe("Output-format spec per \xA7Format.")
|
|
8977
8958
|
}).strict();
|
|
8978
8959
|
|
|
8979
8960
|
// ../mcp/src/generated/operations.ts
|
|
8980
8961
|
var GENERATED_OPERATIONS = [
|
|
8981
|
-
{ operationId: "analyzeTimeline", toolName: "cueframe_api_analyzeTimeline", title: "Analyze Timeline", method: "POST", pathTemplate: "/v1/timeline-analysis", pathParams: [], bodyKey: "analyzeTimelineBody", description: "Analyze a timeline transcript for edit decisions \u2014 Returns filler, silence-gap, and emphasis word indices for an editor timeline.
|
|
8962
|
+
{ operationId: "analyzeTimeline", toolName: "cueframe_api_analyzeTimeline", title: "Analyze Timeline", method: "POST", pathTemplate: "/v1/timeline-analysis", pathParams: [], bodyKey: "analyzeTimelineBody", description: "Analyze a timeline transcript for edit decisions \u2014 Returns filler, silence-gap, and emphasis word indices for an editor timeline. Analysis settings are selected server-side and cannot be overridden. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8982
8963
|
{ operationId: "analyzeTranscript", toolName: "cueframe_api_analyzeTranscript", title: "Analyze Transcript", method: "POST", pathTemplate: "/v1/media/{id}/transcript/analyze", pathParams: ["id"], bodyKey: "analyzeTranscriptBody", description: "Analyse a media item's transcript \u2014 Ask ONE editorial question of a transcript and get the answer as text: `summary` (what is actually said, plus the takeaways), `chapters` (where the subject changes), or `highlights` (the moments that stand alone as a short). PRECISION: timestamps are ABSOLUTE seconds from the start of the media and every one is verified against the transcript before you see it (a fabricated timestamp fails the call rather than shipping) \u2014 but they are LINE-START markers roughly 15s apart, so a boundary can sit up to 15s BEFORE the moment you asked for. Treat every span as APPROXIMATE: use it to LOCATE the moment, then refine the in/out against the word timings from GET /v1/media/{id}/context before you cut. Feeding a raw span straight into a clip trim will start it mid-sentence. Pass `window` to analyse one slice; omit it for the whole thing. This is a METERED LLM call, not a read: it bills on measured token spend, and a recording too long to analyse in one pass is rejected with 422 `transcript_too_long` (over ~100k characters, roughly two hours of speech) rather than silently summarising only its first half \u2014 narrow it with `window`. 422 `media_no_transcript` means the item has no speech on file (or none inside your window); GET /v1/media/{id}/context shows transcript state, and GET /v1/media/{id}/transcript returns the raw words. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8983
8964
|
{ operationId: "applyComposition", toolName: "cueframe_api_applyComposition", title: "Apply Composition", method: "POST", pathTemplate: "/v1/projects/{id}/composition/apply", pathParams: ["id"], bodyKey: "applyCompositionBody", description: "Apply a batch of operations to a project's composition (or dry-run validate) \u2014 Atomically applies an array of CompositionOps. All ops succeed or none do (transactional). Pass `if_match` for optimistic-concurrency control (409 stale_etag on mismatch). Pass `dry_run: true` to validate the batch \u2014 runs the same apply + projection accept/reject guards WITHOUT persisting, returning `{ valid, errors }` with `locator.op_index` on the first failing op. Both modes may carry `warnings[]` \u2014 non-fatal authoring advisories (e.g. a card whose html reads a CSS custom property no token defines). Warnings never block. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8984
8965
|
{ operationId: "applyCompositionOp", toolName: "cueframe_api_applyCompositionOp", title: "Apply Composition Op", method: "POST", pathTemplate: "/v1/projects/{id}/composition/ops", pathParams: ["id"], bodyKey: "applyCompositionOpBody", description: "Apply one operation to a project's composition \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8985
|
-
{ operationId: "cancelCompose", toolName: "cueframe_api_cancelCompose", title: "Cancel Compose", method: "POST", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/cancel", pathParams: ["id", "composeJobId"], bodyKey: null, description: "Cancel an in-flight compose job \u2014 Cancel a running compose so an agent (or a cost guard) can abort a mis-priced or runaway ensemble without waiting out its budget or TTL.
|
|
8966
|
+
{ operationId: "cancelCompose", toolName: "cueframe_api_cancelCompose", title: "Cancel Compose", method: "POST", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/cancel", pathParams: ["id", "composeJobId"], bodyKey: null, description: "Cancel an in-flight compose job \u2014 Cancel a running compose so an agent (or a cost guard) can abort a mis-priced or runaway ensemble without waiting out its budget or TTL. Cancellation is confirmed before the job becomes terminal; the compose.cancelled event is then emitted and any linked charge is released. Already-terminal jobs are rejected (422 compose_not_cancellable). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8986
8967
|
{ operationId: "cancelExport", toolName: "cueframe_api_cancelExport", title: "Cancel Export", method: "POST", pathTemplate: "/v1/projects/{id}/exports/{exportId}/cancel", pathParams: ["id", "exportId"], bodyKey: null, description: "Cancel an in-flight export \u2014 Required permission: renders:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8987
|
-
{ operationId: "cancelJob", toolName: "cueframe_api_cancelJob", title: "Cancel Job", method: "POST", pathTemplate: "/v1/jobs/{jobId}/cancel", pathParams: ["jobId"], bodyKey: null, description: "Cancel an async job \u2014 Cancel a running async job so an agent can abort a mis-priced/runaway operation without waiting out its TTL.
|
|
8968
|
+
{ operationId: "cancelJob", toolName: "cueframe_api_cancelJob", title: "Cancel Job", method: "POST", pathTemplate: "/v1/jobs/{jobId}/cancel", pathParams: ["jobId"], bodyKey: null, description: "Cancel an async job \u2014 Cancel a running async job so an agent can abort a mis-priced/runaway operation without waiting out its TTL. Cancellation is durable and never meters. Already-terminal jobs are rejected (422 job_not_cancellable). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8988
8969
|
{ operationId: "cancelRender", toolName: "cueframe_api_cancelRender", title: "Cancel Render", method: "POST", pathTemplate: "/v1/projects/{id}/renders/{renderId}/cancel", pathParams: ["id", "renderId"], bodyKey: null, description: "Cancel a render \u2014 Required permission: renders:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8989
8970
|
{ operationId: "closeComposeSession", toolName: "cueframe_api_closeComposeSession", title: "Close Compose Session", method: "DELETE", pathTemplate: "/v1/projects/{id}/compose-session/{sessionId}", pathParams: ["id", "sessionId"], bodyKey: null, description: "Close a compose session \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
8990
8971
|
{ operationId: "commitComposeSession", toolName: "cueframe_api_commitComposeSession", title: "Commit Compose Session", method: "POST", pathTemplate: "/v1/projects/{id}/compose-session/{sessionId}/commit", pathParams: ["id", "sessionId"], bodyKey: null, description: "Commit the session scratch onto the project's active composition \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8991
|
-
{ operationId: "compose", toolName: "cueframe_api_compose", title: "Compose", method: "POST", pathTemplate: "/v1/projects/{id}/compose", pathParams: ["id"], bodyKey: "composeBody", description: "Start an async Director compose workflow \u2014 Async sibling of `composeFromSuggestion`. The Director
|
|
8972
|
+
{ operationId: "compose", toolName: "cueframe_api_compose", title: "Compose", method: "POST", pathTemplate: "/v1/projects/{id}/compose", pathParams: ["id"], bodyKey: "composeBody", description: "Start an async Director compose workflow \u2014 Async sibling of `composeFromSuggestion`. The Director execution authors a canonical wire-shape Composition and saves it as the project's active composition. Watch progress via the SSE stream at `/v1/projects/:id/compose/:composeJobId/stream`. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8992
8973
|
{ operationId: "composeFromSuggestion", toolName: "cueframe_api_composeFromSuggestion", title: "Compose From Suggestion", method: "POST", pathTemplate: "/v1/projects/{id}/composition/from-suggestion", pathParams: ["id"], bodyKey: "composeFromSuggestionBody", description: "Build and persist a composition from a clip suggestion \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8993
8974
|
{ operationId: "consult", toolName: "cueframe_api_consult", title: "Consult", method: "POST", pathTemplate: "/v1/projects/{id}/consult", pathParams: ["id"], bodyKey: "consultBody", description: "Ask the multi-agent Director for editing advice (never writes) \u2014 Ask the Director for editing advice on the project's current composition \u2014 it NEVER saves; you stay the decider. Async: poll the returned job for the advisory envelope. Modes: 'advise' = the planner agent (fast, ~30s-2min) returns a PLAN (framing/cuts/captions/graphics intents) as guidance you re-author from \u2014 no grounded scores; 'amend' = the full author\u2192judge\u2192refine loop (minutes) returns a GRADED assessment + an adoptable fix candidate (adopt via POST /compose/jobs/:jobId/select with its candidateIndex). ('explore' \u2014 a ranked slate of directions \u2014 is coming soon.) \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
8994
8975
|
{ operationId: "createApiKey", toolName: "cueframe_api_createApiKey", title: "Create Api Key", method: "POST", pathTemplate: "/v1/api-keys", pathParams: [], bodyKey: "createApiKeyBody", description: "Create a scoped API key (session credential only) \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
@@ -9006,7 +8987,7 @@ var GENERATED_OPERATIONS = [
|
|
|
9006
8987
|
{ operationId: "createSession", toolName: "cueframe_api_createSession", title: "Create Session", method: "POST", pathTemplate: "/v1/sessions", pathParams: [], bodyKey: "createSessionBody", description: "Create a session \u2014 Required permission: sessions:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9007
8988
|
{ operationId: "createUploadToken", toolName: "cueframe_api_createUploadToken", title: "Create Upload Token", method: "POST", pathTemplate: "/v1/uploads/token", pathParams: [], bodyKey: "createUploadTokenBody", description: "Mint a short-lived token for the signed upload lane \u2014 Required permission: media:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9008
8989
|
{ operationId: "createWebhook", toolName: "cueframe_api_createWebhook", title: "Create Webhook", method: "POST", pathTemplate: "/v1/webhooks", pathParams: [], bodyKey: "createWebhookBody", description: 'Register a webhook endpoint \u2014 Register a webhook so long-running jobs (render/compose/media) notify you instead of blocking on wait_job. Body: `url` (https, must pass SSRF checks) + `events` (see the WebhookEvent enum). DELIVERY: each event is a POST with body `{ event, timestamp, projectId?, data }` and Standard-Webhooks headers `webhook-id`, `webhook-timestamp`, `webhook-signature: v1,<base64>` (+ `x-cueframe-event`). The `secret` (`whsec_<base64>`) is returned ONCE here \u2014 verify the raw body with `new Webhook(secret).verify(rawBody, headers)`. ACTIVATION (synchronous, no separate step): on create, CueFrame POSTs a signed `webhook.verify` challenge; your endpoint must reply 2xx echoing `data.token` (raw body === token, or JSON `{token}`/`{challenge}`). On success the response is `status:"active"`; otherwise `status:"pending"` with `verification.reason` and the webhook receives NO events until it verifies (recover with POST /webhooks/:id/verify \u2014 no delete/recreate). Full contract + per-event `data` shapes: GET /webhooks/events. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.', annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9009
|
-
{ operationId: "createWorkspace", toolName: "cueframe_api_createWorkspace", title: "Create Workspace", method: "POST", pathTemplate: "/v1/workspace", pathParams: [], bodyKey: "createWorkspaceBody", description: "Mint a workspace (project + imported source) in one call \u2014 The one-call editing handle: create a project and import the source video URL into it. Returns { projectId, mediaId
|
|
8990
|
+
{ operationId: "createWorkspace", toolName: "cueframe_api_createWorkspace", title: "Create Workspace", method: "POST", pathTemplate: "/v1/workspace", pathParams: [], bodyKey: "createWorkspaceBody", description: "Mint a workspace (project + imported source) in one call \u2014 The one-call editing handle: create a project and import the source video URL into it. Returns { projectId, mediaId } \u2014 the handle a (paying or keyed) agent threads through the compose/render loop. The import is async; poll GET /v1/media/:mediaId for readiness. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9010
8991
|
{ operationId: "deleteBrief", toolName: "cueframe_api_deleteBrief", title: "Delete Brief", method: "DELETE", pathTemplate: "/v1/briefs/{id}", pathParams: ["id"], bodyKey: null, description: "Delete a brief \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
9011
8992
|
{ operationId: "deleteComposition", toolName: "cueframe_api_deleteComposition", title: "Delete Composition", method: "DELETE", pathTemplate: "/v1/projects/{id}/compositions/{compositionId}", pathParams: ["id", "compositionId"], bodyKey: null, description: "Delete a composition \u2014 Delete a composition and its version history. REFUSES the project's ACTIVE composition (409 composition_active) \u2014 make another one active first, or delete the project. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
9012
8993
|
{ operationId: "deleteCritic", toolName: "cueframe_api_deleteCritic", title: "Delete Critic", method: "DELETE", pathTemplate: "/v1/critics/{criticId}", pathParams: ["criticId"], bodyKey: null, description: "Delete a registered critic \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
@@ -9015,11 +8996,11 @@ var GENERATED_OPERATIONS = [
|
|
|
9015
8996
|
{ operationId: "deleteSession", toolName: "cueframe_api_deleteSession", title: "Delete Session", method: "DELETE", pathTemplate: "/v1/sessions/{id}", pathParams: ["id"], bodyKey: null, description: "Delete a session \u2014 Required permission: sessions:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
9016
8997
|
{ operationId: "deleteWebhook", toolName: "cueframe_api_deleteWebhook", title: "Delete Webhook", method: "DELETE", pathTemplate: "/v1/webhooks/{id}", pathParams: ["id"], bodyKey: null, description: "Delete a webhook endpoint \u2014 Required permission: webhooks:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false } },
|
|
9017
8998
|
{ operationId: "deriveComposition", toolName: "cueframe_api_deriveComposition", title: "Derive Composition", method: "POST", pathTemplate: "/v1/projects/{id}/compositions/derive", pathParams: ["id"], bodyKey: "deriveCompositionBody", description: "Derive a reframed sibling composition for a new aspect (multi-format) \u2014 Required permission: projects:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9018
|
-
{ operationId: "extractBrandKit", toolName: "cueframe_api_extractBrandKit", title: "Extract Brand Kit", method: "POST", pathTemplate: "/v1/brand-kits/extract", pathParams: [], bodyKey: "extractBrandKitBody", description: "Extract brand tokens from a website URL \u2014 Queue brand-token extraction from a website URL \u2014 ASYNC: returns a 202 job receipt; poll GET /v1/jobs/{jobId} (or MCP wait_job kind=brand_kit_extract) for the tokens (colors, fonts, title, description) on the succeeded result. The
|
|
8999
|
+
{ operationId: "extractBrandKit", toolName: "cueframe_api_extractBrandKit", title: "Extract Brand Kit", method: "POST", pathTemplate: "/v1/brand-kits/extract", pathParams: [], bodyKey: "extractBrandKitBody", description: "Extract brand tokens from a website URL \u2014 Queue brand-token extraction from a website URL \u2014 ASYNC: returns a 202 job receipt; poll GET /v1/jobs/{jobId} (or MCP wait_job kind=brand_kit_extract) for the tokens (colors, fonts, title, description) on the succeeded result. The service inspects the site under a 20-second limit and does NOT persist a kit (pass the result to POST /brand-kits). A blocked (private-network), non-2xx, non-HTML, or slow URL degrades to EMPTY token arrays on a SUCCEEDED terminal rather than erroring; succeeded extractions are reused for 5 minutes per URL. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9019
9000
|
{ operationId: "finalizeMedia", toolName: "cueframe_api_finalizeMedia", title: "Finalize Media", method: "POST", pathTemplate: "/v1/media/{id}/finalize", pathParams: ["id"], bodyKey: "finalizeMediaBody", description: "Finalize a direct upload (trigger processing after the bytes are PUT) \u2014 Required permission: media:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9020
9001
|
{ operationId: "generateMedia", toolName: "cueframe_api_generateMedia", title: "Generate Media", method: "POST", pathTemplate: "/v1/media/generate", pathParams: [], bodyKey: "generateMediaBody", description: "Generate media with AI (video, image, or Manim animation) \u2014 Generate a new media item from a text prompt: text-to-video, text-to-image, image-to-video, or a programmatic Manim animation (generator 'auto' picks the best one for the prompt). Async \u2014 returns a media id that flips to ready when generation finishes; poll GET /media/:id or register a media.completed webhook. Priced on what the model actually costs; refused with 402 if your balance cannot cover the quote (see GET /me). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9021
9002
|
{ operationId: "getAccount", toolName: "cueframe_api_getAccount", title: "Get Account", method: "GET", pathTemplate: "/v1/me", pathParams: [], bodyKey: null, description: "Return the caller's account: identity, plan, entitlements, cost ceilings \u2014 Returns the org this key is bound to (server-resolved from auth, never the body), the current plan, a per-feature `entitlements` map, and `costCeilings` (e.g. the generate_media per-call USD ceiling). Read it BEFORE a metered call (create_render / compose / generate_media / create_brand_kit) to budget without burning a round-trip on a 402. READ `balance`, NOT `included`: most capabilities are credit-funded \u2014 rendering, generation, previews, the judge and the Director carry no separate per-plan allowance and instead spend the shared wallet named in `fundedBy`, so each `balance` is that one wallet restated in the feature's own `unit`. A positive balance means the call will go through; `included:false` means the plan genuinely lacks the feature. Plan/entitlement values come from the billing backend best-effort; unknown values are `null` and `billingConfigured:false` flags an environment where billing isn't configured. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9022
|
-
{ operationId: "getBillingPlans", toolName: "cueframe_api_getBillingPlans", title: "Get Billing Plans", method: "GET", pathTemplate: "/v1/billing/plans", pathParams: [], bodyKey: null, description: "List the plan catalog: tiers, intervals, product ids, prices \u2014 Returns every purchasable {tier, interval} and its
|
|
9003
|
+
{ operationId: "getBillingPlans", toolName: "cueframe_api_getBillingPlans", title: "Get Billing Plans", method: "GET", pathTemplate: "/v1/billing/plans", pathParams: [], bodyKey: null, description: "List the plan catalog: tiers, intervals, product ids, prices \u2014 Returns every purchasable {tier, interval} and its billing catalog product id \u2014 discovery to read BEFORE POST /v1/billing/checkout so an agent requests a real plan/interval instead of guessing. `priceUsd` is best-effort (null if unavailable); `billingConfigured:false` flags an env without billing. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9023
9004
|
{ operationId: "getBrandKit", toolName: "cueframe_api_getBrandKit", title: "Get Brand Kit", method: "GET", pathTemplate: "/v1/brand-kits/{id}", pathParams: ["id"], bodyKey: null, description: "Get a brand kit by id \u2014 Required permission: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9024
9005
|
{ operationId: "getBrandKitExemplars", toolName: "cueframe_api_getBrandKitExemplars", title: "Get Brand Kit Exemplars", method: "POST", pathTemplate: "/v1/brand-kits/{id}/exemplars", pathParams: ["id"], bodyKey: "getBrandKitExemplarsBody", description: "Presign a brand kit's inspiration exemplar frames \u2014 Returns short-lived URLs for the kit's exemplar frames (the pixels the maker and judge condition on). Filter to one motif's evidence frames with `motifId`. Vision-budget-bounded consumers should keep `limit` small (default 6). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9025
9006
|
{ operationId: "getBrief", toolName: "cueframe_api_getBrief", title: "Get Brief", method: "GET", pathTemplate: "/v1/briefs/{id}", pathParams: ["id"], bodyKey: null, description: "Get a brief by id \u2014 Required permission: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
@@ -9033,7 +9014,6 @@ var GENERATED_OPERATIONS = [
|
|
|
9033
9014
|
{ operationId: "getJob", toolName: "cueframe_api_getJob", title: "Get Job", method: "GET", pathTemplate: "/v1/jobs/{jobId}", pathParams: ["jobId"], bodyKey: null, description: "Get an async job's status and result \u2014 Read one async job \u2014 the uniform status/result resource behind every long-running operation. Poll until `status` is terminal (`succeeded` | `failed` | `cancelled`), then read `result` (kind-specific payload) or `error` (stable code + message). `job_timeout` means the executor died mid-run and the stall sweep reaped the job \u2014 re-enqueue the operation to retry. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9034
9015
|
{ operationId: "getMedia", toolName: "cueframe_api_getMedia", title: "Get Media", method: "GET", pathTemplate: "/v1/media/{id}", pathParams: ["id"], bodyKey: null, description: "Get a media item by id \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9035
9016
|
{ operationId: "getMediaContext", toolName: "cueframe_api_getMediaContext", title: "Get Media Context", method: "GET", pathTemplate: "/v1/media/{id}/context", pathParams: ["id"], bodyKey: null, description: "Get authoring context for a media item (faces + transcript + beat/word grids) \u2014 The read-only context an agent needs to author a composition over this source: the detected face/subject roster (face-0 = primary speaker, with normalized bbox + active-speaker share), the transcript, the temporal grids \u2014 `beatGrid` (a MUSIC bed's rhythm: bpm, beatTimesMs in milliseconds, confidence, method) and `wordGrid` (VO word-onset timings in milliseconds, from the transcript) \u2014 and a presigned `thumbnail` (~the footage at a glance). For stills at CHOSEN timestamps, call preview_frame with a one-clip composition over this media. Call this before authoring crop intents (reframe) and overlay/caption timing. Faces are lazily detected \u2014 `faces.status` is `not_detected` until a compose/detect pass has run over the source, never a faked empty roster. `beatGrid` is null until beat analysis has run: generated music beds are analyzed automatically at delivery; an uploaded/imported bed may not carry a grid yet (on-demand analysis is not client-triggerable today). `audioRole` is the DECLARED role of an audio asset (vo | music | sfx | ambience) \u2014 author the clip source's `audioRole` from it; `envelope` carries the coarse `envelopeClass` (transient | sweep | ambient) plus any probed attack/centroid/volume stats. Both are null for footage/images or an undeclared audio asset. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9036
|
-
{ operationId: "getMediaPerformance", toolName: "cueframe_api_getMediaPerformance", title: "Get Media Performance", method: "GET", pathTemplate: "/v1/media/{id}/performance", pathParams: ["id"], bodyKey: null, description: "Per-media performance breakdown (Axiom workflow + activity spans) \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9037
9017
|
{ operationId: "getMediaTranscript", toolName: "cueframe_api_getMediaTranscript", title: "Get Media Transcript", method: "GET", pathTemplate: "/v1/media/{id}/transcript", pathParams: ["id"], bodyKey: null, description: "Get a media transcript (paginated) \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9038
9018
|
{ operationId: "getMuxJob", toolName: "cueframe_api_getMuxJob", title: "Get Mux Job", method: "GET", pathTemplate: "/v1/sessions/{id}/mux-job", pathParams: ["id"], bodyKey: null, description: "Poll mux job status \u2014 Required permission: sessions:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9039
9019
|
{ operationId: "getOpenAPISpec", toolName: "cueframe_api_getOpenAPISpec", title: "Get Open API Spec", method: "GET", pathTemplate: "/openapi.json", pathParams: [], bodyKey: null, description: "OpenAPI 3.1 document for the v1 API \u2014 Returns the generated OpenAPI 3.1 document. Unauthenticated so SDK tooling (Orval, Postman, redocly) can fetch without a key. Cacheable for 5 minutes. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
@@ -9049,7 +9029,7 @@ var GENERATED_OPERATIONS = [
|
|
|
9049
9029
|
{ operationId: "getWebhookEvents", toolName: "cueframe_api_getWebhookEvents", title: "Get Webhook Events", method: "GET", pathTemplate: "/v1/webhooks/events", pathParams: [], bodyKey: null, description: "Get the webhook delivery contract \u2014 The machine-readable webhook contract: the delivery envelope, Standard-Webhooks signing (secret format, signed content, how to verify), the synchronous echo-the-token ownership handshake, and every subscribable event with its exact `data` fields. Read this before building a receiver \u2014 it answers 'what's the payload shape / how do I verify the signature / how does activation work' without guessing. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9050
9030
|
{ operationId: "health", toolName: "cueframe_api_health", title: "Health", method: "GET", pathTemplate: "/v1/health", pathParams: [], bodyKey: null, description: "Shallow + deep health check \u2014 Shallow (default) returns 200 with a minimal liveness payload for load balancers. Append `?deep=1` to exercise component bindings (rate-limiter). Unauthenticated. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9051
9031
|
{ operationId: "importMedia", toolName: "cueframe_api_importMedia", title: "Import Media", method: "POST", pathTemplate: "/v1/media/import", pathParams: [], bodyKey: "importMediaBody", description: "Import media from a URL (server-side fetch) \u2014 Import media into the project from a public https URL \u2014 the server fetches and mirrors the bytes (SSRF-filtered), then processes it (transcode + transcribe). Async: returns a media id that flips to ready when the mirror and processing finish; poll GET /media/:id or use a media.completed webhook. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9052
|
-
{ operationId: "importResource", toolName: "cueframe_api_importResource", title: "Import Resource", method: "POST", pathTemplate: "/v1/resources/import", pathParams: [], bodyKey: "importResourceBody", description: `Import a stock candidate or a curated SFX-pack sound \u2014 Two lanes. STOCK { projectId, candidateId }: import a candidate returned by search_resources into a project as an org-owned media item (preserving provider/externalId/license provenance; bytes deduped across orgs). Async: returns { id, status:'importing' };
|
|
9032
|
+
{ operationId: "importResource", toolName: "cueframe_api_importResource", title: "Import Resource", method: "POST", pathTemplate: "/v1/resources/import", pathParams: [], bodyKey: "importResourceBody", description: `Import a stock candidate or a curated SFX-pack sound \u2014 Two lanes. STOCK { projectId, candidateId }: import a candidate returned by search_resources into a project as an org-owned media item (preserving provider/externalId/license provenance; bytes deduped across orgs). Async: returns { id, status:'importing' }; status flips to complete when the import finishes (poll GET /media/:id). A candidate whose 7-day search cache has expired returns 422 \u2014 re-search. PACK { kind:"sfx-pack", id:<soundId> }: mint/return the org media item for a curated CC0 SFX-pack sound (soundId from list_catalog's sfx[]) \u2014 returns { id, status:'ready' } immediately to place as a normal sfx clip. Idempotent per (org, soundId); an unknown soundId is a 422. Pack imports are FREE: no plan feature required, and an x402 payment is released unsettled (no charge). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.`, annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9053
9033
|
{ operationId: "listBrandKits", toolName: "cueframe_api_listBrandKits", title: "List Brand Kits", method: "GET", pathTemplate: "/v1/brand-kits", pathParams: [], bodyKey: null, description: "List brand kits (read-only) \u2014 Required permission: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9054
9034
|
{ operationId: "listBriefs", toolName: "cueframe_api_listBriefs", title: "List Briefs", method: "GET", pathTemplate: "/v1/briefs", pathParams: [], bodyKey: null, description: "List briefs (optionally scoped to a project) \u2014 DEFAULT lists human-authored briefs only. Machine-minted clip briefs (suggest_briefs output) are opt-in: ?kind=clip lists just them, ?kind=all lists everything. Any other kind value is a 400, never silently empty. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9055
9035
|
{ operationId: "listCatalog", toolName: "cueframe_api_listCatalog", title: "List Catalog", method: "GET", pathTemplate: "/v1/components", pathParams: [], bodyKey: null, description: "List component catalog (defaults + installed) \u2014 Discover the built-in primitive catalog (87 primitives + 7 scenes) plus your installed components. Narrow with facet filters (category, kind, tier, useCase, mood) or free-text (q / intent); when ANY filter is set, results are ordered recommended-tier-first. With NO `limit` the WHOLE (filtered) catalog returns in one page \u2014 pass `limit` only to page. Each entry carries a `placement` hint telling you exactly how to author it on the timeline. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
@@ -9062,7 +9042,6 @@ var GENERATED_OPERATIONS = [
|
|
|
9062
9042
|
{ operationId: "listMediaSuggestions", toolName: "cueframe_api_listMediaSuggestions", title: "List Media Suggestions", method: "GET", pathTemplate: "/v1/media/{id}/suggestions", pathParams: ["id"], bodyKey: null, description: "List clip suggestions for a media item \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9063
9043
|
{ operationId: "listProjectRenders", toolName: "cueframe_api_listProjectRenders", title: "List Project Renders", method: "GET", pathTemplate: "/v1/projects/{id}/renders", pathParams: ["id"], bodyKey: null, description: "List renders for a project \u2014 Required permission: renders:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9064
9044
|
{ operationId: "listProjects", toolName: "cueframe_api_listProjects", title: "List Projects", method: "GET", pathTemplate: "/v1/projects", pathParams: [], bodyKey: null, description: "List projects \u2014 Required permission: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9065
|
-
{ operationId: "listRegistryOverlays", toolName: "cueframe_api_listRegistryOverlays", title: "List Registry Overlays", method: "GET", pathTemplate: "/v1/registry/overlays", pathParams: [], bodyKey: null, description: "List built-in primitive registry entries (deprecated; use GET /v1/components) \u2014 Required permission: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9066
9045
|
{ operationId: "listSelectorCandidates", toolName: "cueframe_api_listSelectorCandidates", title: "List Selector Candidates", method: "GET", pathTemplate: "/v1/projects/{id}/selector/candidates", pathParams: ["id"], bodyKey: null, description: "List switch (multicam) candidates + recommendation for a synced-angle group \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9067
9046
|
{ operationId: "listSessions", toolName: "cueframe_api_listSessions", title: "List Sessions", method: "GET", pathTemplate: "/v1/sessions", pathParams: [], bodyKey: null, description: "List sessions \u2014 Required permission: sessions:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9068
9047
|
{ operationId: "listSkills", toolName: "cueframe_api_listSkills", title: "List Skills", method: "GET", pathTemplate: "/v1/skills", pathParams: [], bodyKey: null, description: "List available CueFrame agent skills \u2014 Returns the agent skills CueFrame publishes (e.g. `cueframe-cli`). Metadata only \u2014 fetch the markdown body from GET /skills/{name}. Unauthenticated, like /openapi.json. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
@@ -9073,7 +9052,6 @@ var GENERATED_OPERATIONS = [
|
|
|
9073
9052
|
{ operationId: "patchWebhook", toolName: "cueframe_api_patchWebhook", title: "Patch Webhook", method: "PATCH", pathTemplate: "/v1/webhooks/{id}", pathParams: ["id"], bodyKey: "patchWebhookBody", description: "Update a webhook endpoint \u2014 Required permission: webhooks:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": true, "idempotentHint": false, "openWorldHint": true } },
|
|
9074
9053
|
{ operationId: "previewClip", toolName: "cueframe_api_previewClip", title: "Preview Clip", method: "POST", pathTemplate: "/v1/projects/{id}/preview-clip", pathParams: ["id"], bodyKey: "previewClipBody", description: "Render a scoped motion preview of the composition \u2014 A cheap, watchable MP4 of ONLY [fromSec, toSec) of the composition at preview quality (capped resolution, lighter encode). The way to judge motion \u2014 a cut, a transition, a component's animation \u2014 with real fidelity BEFORE paying for a full render. Async: returns a render job; wait_job(kind='render') or webhook render.completed for the URL. Meters the capture feature, never an exports credit. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9075
9054
|
{ operationId: "previewComponent", toolName: "cueframe_api_previewComponent", title: "Preview Component", method: "POST", pathTemplate: "/v1/projects/{id}/component-preview", pathParams: ["id"], bodyKey: "previewComponentBody", description: "Render one component preview \u2014 Queue a preview of ONE org-installed component. Baked components return the SAME content-addressed VP9-alpha motion clip the production render composites; live components return a still captured through the live JS lane without silently baking. Returns a jobId \u2014 wait_job(kind='preview') for the artifact. Compile/runtime failures land on the job terminal with the sanitized author-fixable message. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9076
|
-
{ operationId: "previewFrame", toolName: "cueframe_api_previewFrame", title: "Preview Frame", method: "POST", pathTemplate: "/v1/projects/{id}/preview-frame", pathParams: ["id"], bodyKey: "previewFrameBody", description: "Render still frame(s) of a composition \u2014 Render presigned still(s) of the composition at the given timestamps \u2014 the live preview for layout/copy judgment (a still cannot show motion: judge motion with preview_clip or preview_component). Stateless: nothing to open, warm, or close, and concurrent previews no longer contend. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9077
9055
|
{ operationId: "previewFrameJob", toolName: "cueframe_api_previewFrameJob", title: "Preview Frame Job", method: "POST", pathTemplate: "/v1/projects/{id}/preview-frame-jobs", pathParams: ["id"], bodyKey: "previewFrameJobBody", description: "Queue still-frame evidence for a composition \u2014 Resolve and freeze the exact authored target, then queue durable still capture. Returns immediately; poll the generic job with wait_job(kind='preview_frame'). One successful request is one compose_capture operation regardless of timestamp count. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9078
9056
|
{ operationId: "previewSelector", toolName: "cueframe_api_previewSelector", title: "Preview Selector", method: "POST", pathTemplate: "/v1/projects/{id}/selector/preview", pathParams: ["id"], bodyKey: "previewSelectorBody", description: "Re-resolve a switch advisory under a hand-supplied policy (A/B taste; not persisted) \u2014 Required permission: media:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9079
9057
|
{ operationId: "purchaseMediaFact", toolName: "cueframe_api_purchaseMediaFact", title: "Purchase Media Fact", method: "POST", pathTemplate: "/v1/media/{id}/facts", pathParams: ["id"], bodyKey: "purchaseMediaFactBody", description: "Buy a derived fact (subject track or behind-subject matte) \u2014 Purchases one enhancement for this source. `matte` REQUIRES `intent:{startSec,endSec}` \u2014 the clip's SOURCE window \u2014 because a matte's cost scales with its duration. For `subjectTrack` the same `intent` is OPTIONAL: give the clip's source window to buy the track the render will look up for THAT clip (and pay only for its duration); omit it for the whole source. If the fact already exists (pending or ready) this returns it with `alreadyExisted:true` and charges nothing. Charging happens on DELIVERY, never here: a job that never lands is never billed. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
@@ -9084,12 +9062,12 @@ var GENERATED_OPERATIONS = [
|
|
|
9084
9062
|
{ operationId: "resumeCheckpoint", toolName: "cueframe_api_resumeCheckpoint", title: "Resume Checkpoint", method: "POST", pathTemplate: "/v1/checkpoints/{id}/resume", pathParams: ["id"], bodyKey: "resumeCheckpointBody", description: "Answer a held checkpoint (approve / revise / abandon) \u2014 The A1 review grammar: one `decision` for the gate, optionally carrying anchored `comments` ({beatId} or {timecodeMs} anchors; per-anchor verdict approve|revise|lock \u2014 lock freezes the element contractually) and/or `edits` (your revised stage artifact). `revise` loops IN-JOB: the director revises and re-presents this same gate with a new packet (version+1); the brief quote states the included revision cycles \u2014 beyond them, revise is refused 402 with the path forward. `abandon` ends the run. Approve-with-comments is legal: the notes record without gating. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9085
9063
|
{ operationId: "retryRender", toolName: "cueframe_api_retryRender", title: "Retry Render", method: "POST", pathTemplate: "/v1/projects/{id}/renders/{renderId}/retry", pathParams: ["id", "renderId"], bodyKey: null, description: "Re-render against an existing renderJob's snapshot \u2014 Required permission: renders:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9086
9064
|
{ operationId: "scoreComposition", toolName: "cueframe_api_scoreComposition", title: "Score Composition", method: "POST", pathTemplate: "/v1/projects/{id}/score-composition", pathParams: ["id"], bodyKey: "scoreCompositionBody", description: "Score a composition (the standalone sighted judge) \u2014 Queue the server-side judge: it samples eval beats, renders them, and grades editorial/spatial/brand/caption (0\u201310 + weighted composite + worst-first critique). Your REGISTERED CRITICS run too (register_critic) \u2014 rules + rubric verdicts ride the result as clientScores, exactly like the Director's gates evaluate them (evaluator-webhook critics run in the Director lane only). Returns a jobId \u2014 wait_job(kind='verify') for the result, which ALSO carries a checkpointId: the verdicts mint a durable kind:'score' Checkpoint (the same evidence noun the Director's gates produce). Stateless \u2014 nothing to open, warm or close; the compose_verify meter fires on the job's success terminal. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9087
|
-
{ operationId: "scoreTrace", toolName: "cueframe_api_scoreTrace", title: "Score Trace", method: "POST", pathTemplate: "/v1/traces/{traceId}/scores", pathParams: ["traceId"], bodyKey: "scoreTraceBody", description: "Attach production scores to one of your director traces \u2014 Record 1\u201310 named scores (0..1) on a
|
|
9065
|
+
{ operationId: "scoreTrace", toolName: "cueframe_api_scoreTrace", title: "Score Trace", method: "POST", pathTemplate: "/v1/traces/{traceId}/scores", pathParams: ["traceId"], bodyKey: "scoreTraceBody", description: "Attach production scores to one of your director traces \u2014 Record 1\u201310 named scores (0..1) on a trace the CueFrame gateway produced for YOUR director run \u2014 the trace id is the `trace_id` the client stamped on that run's requests. Only the trace's own user may score it; any other trace id answers 404. Scores are accepted asynchronously and acknowledged with 202. Free. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9088
9066
|
{ operationId: "searchFonts", toolName: "cueframe_api_searchFonts", title: "Search Fonts", method: "POST", pathTemplate: "/v1/fonts/search", pathParams: [], bodyKey: "searchFontsBody", description: "Search web font families by name/style \u2014 Search the Google Fonts web-font catalog by keyword. Returns matching font families (family name + category + available variants + a css2 stylesheet URL) \u2014 use a returned `family` in composition/component text params. Read-only and free; results are cached server-side. An empty `results` array means no match (or the upstream catalog was unavailable). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9089
|
-
{ operationId: "searchLibrary", toolName: "cueframe_api_searchLibrary", title: "Search Library", method: "GET", pathTemplate: "/v1/media/search", pathParams: [], bodyKey: null, description: 'Semantic search over the org\'s own footage \u2014 Find MOMENTS in your library by describing what they look like. The query
|
|
9067
|
+
{ operationId: "searchLibrary", toolName: "cueframe_api_searchLibrary", title: "Search Library", method: "GET", pathTemplate: "/v1/media/search", pathParams: [], bodyKey: null, description: 'Semantic search over the org\'s own footage \u2014 Find MOMENTS in your library by describing what they look like. The query uses the same visual-semantic index as the footage, so it matches on visual content \u2014 "wide shot of a speaker at a whiteboard", "hands on a keyboard", "city skyline at dusk" \u2014 including shots nobody talks about (which is where transcript search fails). Results are time-ranged: feed `mediaId` + `startSec`/`endSec` straight into apply_composition as a clip. `q` is required; `limit` defaults to 10 and caps at 25. `indexing` is COVERAGE, not emptiness: it is true whenever some of the org\'s footage is not in the visual index yet (media that predates it, or still processing), and it can be true ALONGSIDE results \u2014 then read them as "the best moments among what we have looked at so far". Empty `results` with `indexing: true` is a state, not a failure; re-run the item through processing to index it. The first search after an idle period can take up to ~90s; subsequent searches are typically faster. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.', annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9090
9068
|
{ operationId: "searchResources", toolName: "cueframe_api_searchResources", title: "Search Resources", method: "POST", pathTemplate: "/v1/resources/search", pathParams: [], bodyKey: "searchResourcesBody", description: "Search stock media (Pexels / Pixabay / Freesound / Klipy) \u2014 Search licensed stock media by keyword. Pass `query` for one search, or `queries[]` (\u226410) to run a batch in ONE call \u2014 the batch returns `results[]`, one entry per query in order, each with its own `candidates` (and an `error` string if that single query failed; one bad query never discards the rest). `kind` selects the corpus (video/photo \u2192 Pexels+Pixabay, sfx \u2192 Freesound CC0-only, gif \u2192 Klipy); defaults to video. Returns ranked candidates each carrying an opaque `candidateId` \u2014 pass it to import_resource to bring the asset into a project. Free + rate-limited; results are cached for 7 days, after which a candidateId must be refreshed by searching again. For sfx, bound the result by clip length with `durationSec` \u2014 impacts/ticks \u2248 0\u20132s, risers/whooshes \u2248 2\u20138s, ambients unbounded. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9091
|
-
{ operationId: "selectComposeCandidate", toolName: "cueframe_api_selectComposeCandidate", title: "Select Compose Candidate", method: "POST", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/select", pathParams: ["id", "composeJobId"], bodyKey: "selectComposeCandidateBody", description: "Promote a compose candidate to
|
|
9092
|
-
{ operationId: "streamCompose", toolName: "cueframe_api_streamCompose", title: "Stream Compose", method: "GET", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/stream", pathParams: ["id", "composeJobId"], bodyKey: null, description: "Stream compose progress (SSE) \u2014 Server-Sent Events stream emitting typed `compose_event` frames (per `2026-05-23-compose-api-contract.md` \xA7 SSE event types \u2014 job_started, candidate_phase_started, candidate_phase_evaluated, candidate_completed, critique_retry_started, winner_selected, job_completed, job_failed). The stream closes once the
|
|
9069
|
+
{ operationId: "selectComposeCandidate", toolName: "cueframe_api_selectComposeCandidate", title: "Select Compose Candidate", method: "POST", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/select", pathParams: ["id", "composeJobId"], bodyKey: "selectComposeCandidateBody", description: "Promote a compose candidate to the active composition \u2014 Selects one candidate from a finished compose ensemble and writes it to the project's composition. `selectStrategy` decides how the editor draft interacts with the write (per compose-api-contract.md). \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9070
|
+
{ operationId: "streamCompose", toolName: "cueframe_api_streamCompose", title: "Stream Compose", method: "GET", pathTemplate: "/v1/projects/{id}/compose/jobs/{composeJobId}/stream", pathParams: ["id", "composeJobId"], bodyKey: null, description: "Stream compose progress (SSE) \u2014 Server-Sent Events stream emitting typed `compose_event` frames (per `2026-05-23-compose-api-contract.md` \xA7 SSE event types \u2014 job_started, candidate_phase_started, candidate_phase_evaluated, candidate_completed, critique_retry_started, winner_selected, job_completed, job_failed). The stream closes once the compose job reaches a terminal status. Required scope: projects:read \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": true, "openWorldHint": false } },
|
|
9093
9071
|
{ operationId: "suggestBriefs", toolName: "cueframe_api_suggestBriefs", title: "Suggest Briefs", method: "POST", pathTemplate: "/v1/media/{id}/suggestions", pathParams: ["id"], bodyKey: null, description: "Trigger clip-suggestion analysis \u2014 Analyze a video for its best short-form moments \u2014 returns ranked clip suggestions with trims, hooks, titles, captions, hashtags, and platform fit for turning long footage into shorts. Async: returns 202; poll GET /media/:id/suggestions for the ranked results. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
9094
9072
|
{ operationId: "testWebhook", toolName: "cueframe_api_testWebhook", title: "Test Webhook", method: "POST", pathTemplate: "/v1/webhooks/{id}/test", pathParams: ["id"], bodyKey: null, description: "Fire a webhook.test delivery \u2014 Required permission: webhooks:write \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": true } },
|
|
9095
9073
|
{ operationId: "triggerMatteBake", toolName: "cueframe_api_triggerMatteBake", title: "Trigger Matte Bake", method: "POST", pathTemplate: "/v1/media/{id}/matte", pathParams: ["id"], bodyKey: "triggerMatteBakeBody", description: "Buy a behind-subject matte for one source window \u2014 Bakes the alpha matte that lets a graphic sit BEHIND the subject for a specific source window. The window is the clip's SOURCE trim (`startSec`/`endSec` in seconds into the underlying file), not timeline time, and it is required \u2014 a matte's cost scales with its duration. Async: poll `GET /media/{id}/facts` for the matte fact's status. If a matte for this exact window already exists (bought earlier, or baked by a compose that put a graphic behind the subject) this returns 200 with the existing state and charges NOTHING. `summary.presenceFraction` on the delivered fact is the viability signal: below 0.6 there is no reliable silhouette, and that matte is delivered free. \u2014 Advanced (expert layer) \u2014 prefer the curated high-level tools (compose, apply_composition, create_render, wait_job, get_media_context) when they fit your task.", annotations: { "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false } },
|
|
@@ -9245,7 +9223,7 @@ async function fetchPreviews(urls, cap = 12, opts) {
|
|
|
9245
9223
|
return out;
|
|
9246
9224
|
}
|
|
9247
9225
|
function fmtErr(err) {
|
|
9248
|
-
const head = err instanceof ApiError ? `${err.message} (${err.code}, ${err.status})` : err instanceof Error ? err.message : String(err);
|
|
9226
|
+
const head = err instanceof ApiError ? `${err.message} (${err.code}, ${err.status}${err.requestId ? `, requestId ${err.requestId}` : ""})` : err instanceof Error ? err.message : String(err);
|
|
9249
9227
|
const advice = adviseError(err);
|
|
9250
9228
|
return advice ? `${head}
|
|
9251
9229
|
\u2192 ${advice}` : head;
|