@cueframe/kernel 0.1.2 → 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/index.d.ts +1 -1
- package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +4 -0
- package/dist/_members/authoring/prompts/index.d.ts +0 -1
- 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 +115 -1
- package/dist/_members/mcp/adapter.d.ts +19 -0
- package/dist/_members/mcp/core.d.ts +1 -1
- package/dist/_members/mcp/curation.d.ts +4 -0
- package/dist/_members/mcp/generated/harness.d.ts +1 -1
- package/dist/_members/mcp/generated/operations.d.ts +12 -0
- package/dist/_members/mcp/wait.d.ts +1 -1
- 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/_members/render-harness/remotion-runtime.d.ts +53 -0
- package/dist/authoring/build-tools.js +6 -6
- package/dist/authoring/context.js +4 -4
- package/dist/authoring/prompts.js +1 -5
- package/dist/authoring/tools.js +5 -5
- package/dist/authoring.js +40 -27
- package/dist/chunk-2SNY75AR.js +498 -0
- package/dist/{chunk-XQ72DZKJ.js → chunk-7TQCR7AB.js} +1 -1
- package/dist/{chunk-QETYXKQQ.js → chunk-7V3F5HO4.js} +97 -14
- package/dist/{chunk-BZZTVOGG.js → chunk-D2EGO543.js} +5 -5
- package/dist/{chunk-ZPLJ24OV.js → chunk-D6S3ZKIY.js} +1 -1
- package/dist/{chunk-K2IUBCND.js → chunk-HFC3MKXA.js} +0 -51
- 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-AO744WIK.js → chunk-PJ4R4N4Q.js} +123 -38
- package/dist/{chunk-VFMW3JUY.js → chunk-QSDFTYKV.js} +1 -1
- package/dist/{chunk-LLUW26BS.js → chunk-R5BMJ2NX.js} +38 -2
- package/dist/{chunk-W3SIWT7J.js → chunk-RQ2G4DXI.js} +406 -174
- package/dist/{chunk-VHF66LCQ.js → chunk-RXCEPCAQ.js} +102 -41
- package/dist/{chunk-LJ5W4ZBU.js → chunk-TLVPDT4R.js} +1 -1
- package/dist/{chunk-PIURX6IZ.js → chunk-WTT3GGCA.js} +9 -4
- package/dist/{chunk-CAJQ7H5A.js → chunk-YE3F4LNJ.js} +17 -17
- package/dist/{chunk-TD347SSX.js → chunk-YXEZ75MB.js} +31 -20
- 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 +59 -22
- 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/testing.js +6 -6
- 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 +13 -37
- 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 -2
- package/dist/_members/convex-api/dataModel.d.ts +0 -4
- 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
|
@@ -45,6 +45,20 @@ function adviseError(err) {
|
|
|
45
45
|
// ../sdk/src/zod.ts
|
|
46
46
|
var zod_exports = {};
|
|
47
47
|
__export(zod_exports, {
|
|
48
|
+
analyzeTimelineBody: () => analyzeTimelineBody,
|
|
49
|
+
analyzeTimelineBodyWordsItemClipIdMax: () => analyzeTimelineBodyWordsItemClipIdMax,
|
|
50
|
+
analyzeTimelineBodyWordsItemPoolItemIdMax: () => analyzeTimelineBodyWordsItemPoolItemIdMax,
|
|
51
|
+
analyzeTimelineBodyWordsItemSourceEndMin: () => analyzeTimelineBodyWordsItemSourceEndMin,
|
|
52
|
+
analyzeTimelineBodyWordsItemSourceStartMin: () => analyzeTimelineBodyWordsItemSourceStartMin,
|
|
53
|
+
analyzeTimelineBodyWordsItemSpeakerIdMax: () => analyzeTimelineBodyWordsItemSpeakerIdMax,
|
|
54
|
+
analyzeTimelineBodyWordsItemTextMax: () => analyzeTimelineBodyWordsItemTextMax,
|
|
55
|
+
analyzeTimelineBodyWordsItemTimelineEndMin: () => analyzeTimelineBodyWordsItemTimelineEndMin,
|
|
56
|
+
analyzeTimelineBodyWordsItemTimelineStartMin: () => analyzeTimelineBodyWordsItemTimelineStartMin,
|
|
57
|
+
analyzeTimelineBodyWordsMax: () => analyzeTimelineBodyWordsMax,
|
|
58
|
+
analyzeTimelineResponse: () => analyzeTimelineResponse,
|
|
59
|
+
analyzeTimelineResponseEmphasisItemMin: () => analyzeTimelineResponseEmphasisItemMin,
|
|
60
|
+
analyzeTimelineResponseFillersItemMin: () => analyzeTimelineResponseFillersItemMin,
|
|
61
|
+
analyzeTimelineResponseSilenceGapsItemMin: () => analyzeTimelineResponseSilenceGapsItemMin,
|
|
48
62
|
analyzeTranscriptBody: () => analyzeTranscriptBody,
|
|
49
63
|
analyzeTranscriptBodyWindowEndSecMin: () => analyzeTranscriptBodyWindowEndSecMin,
|
|
50
64
|
analyzeTranscriptBodyWindowStartSecMin: () => analyzeTranscriptBodyWindowStartSecMin,
|
|
@@ -385,10 +399,6 @@ __export(zod_exports, {
|
|
|
385
399
|
cancelComposeParams: () => cancelComposeParams,
|
|
386
400
|
cancelComposeResponse: () => cancelComposeResponse,
|
|
387
401
|
cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin: () => cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin,
|
|
388
|
-
cancelComposeResponseCostLlmUsdMin: () => cancelComposeResponseCostLlmUsdMin,
|
|
389
|
-
cancelComposeResponseCostModalUsdMin: () => cancelComposeResponseCostModalUsdMin,
|
|
390
|
-
cancelComposeResponseCostTotalUsdMin: () => cancelComposeResponseCostTotalUsdMin,
|
|
391
|
-
cancelComposeResponseCostVisionUsdMin: () => cancelComposeResponseCostVisionUsdMin,
|
|
392
402
|
cancelComposeResponseWinnerCandidateIndexMin: () => cancelComposeResponseWinnerCandidateIndexMin,
|
|
393
403
|
cancelExportParams: () => cancelExportParams,
|
|
394
404
|
cancelExportResponse: () => cancelExportResponse,
|
|
@@ -396,6 +406,7 @@ __export(zod_exports, {
|
|
|
396
406
|
cancelExportResponseProgressMin: () => cancelExportResponseProgressMin,
|
|
397
407
|
cancelJobParams: () => cancelJobParams,
|
|
398
408
|
cancelJobResponse: () => cancelJobResponse,
|
|
409
|
+
cancelJobResponseResultArtifactsItemLayersOverlaysMin: () => cancelJobResponseResultArtifactsItemLayersOverlaysMin,
|
|
399
410
|
cancelRenderParams: () => cancelRenderParams,
|
|
400
411
|
cancelRenderResponse: () => cancelRenderResponse,
|
|
401
412
|
cancelRenderResponseProgressScenesCompletedMin: () => cancelRenderResponseProgressScenesCompletedMin,
|
|
@@ -672,10 +683,6 @@ __export(zod_exports, {
|
|
|
672
683
|
getComposeJobParams: () => getComposeJobParams,
|
|
673
684
|
getComposeJobResponse: () => getComposeJobResponse,
|
|
674
685
|
getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin: () => getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin,
|
|
675
|
-
getComposeJobResponseCostLlmUsdMin: () => getComposeJobResponseCostLlmUsdMin,
|
|
676
|
-
getComposeJobResponseCostModalUsdMin: () => getComposeJobResponseCostModalUsdMin,
|
|
677
|
-
getComposeJobResponseCostTotalUsdMin: () => getComposeJobResponseCostTotalUsdMin,
|
|
678
|
-
getComposeJobResponseCostVisionUsdMin: () => getComposeJobResponseCostVisionUsdMin,
|
|
679
686
|
getComposeJobResponseWinnerCandidateIndexMin: () => getComposeJobResponseWinnerCandidateIndexMin,
|
|
680
687
|
getComposeSessionCompositionParams: () => getComposeSessionCompositionParams,
|
|
681
688
|
getComposeSessionCompositionResponse: () => getComposeSessionCompositionResponse,
|
|
@@ -757,13 +764,17 @@ __export(zod_exports, {
|
|
|
757
764
|
getExportResponseProgressMin: () => getExportResponseProgressMin,
|
|
758
765
|
getJobParams: () => getJobParams,
|
|
759
766
|
getJobResponse: () => getJobResponse,
|
|
767
|
+
getJobResponseResultArtifactsItemLayersOverlaysMin: () => getJobResponseResultArtifactsItemLayersOverlaysMin,
|
|
760
768
|
getMediaContextParams: () => getMediaContextParams,
|
|
761
769
|
getMediaContextResponse: () => getMediaContextResponse,
|
|
762
770
|
getMediaParams: () => getMediaParams,
|
|
763
|
-
getMediaPerformanceParams: () => getMediaPerformanceParams,
|
|
764
|
-
getMediaPerformanceResponse: () => getMediaPerformanceResponse,
|
|
765
771
|
getMediaResponse: () => getMediaResponse,
|
|
766
772
|
getMediaTranscriptParams: () => getMediaTranscriptParams,
|
|
773
|
+
getMediaTranscriptQueryAfterMin: () => getMediaTranscriptQueryAfterMin,
|
|
774
|
+
getMediaTranscriptQueryBeforeMin: () => getMediaTranscriptQueryBeforeMin,
|
|
775
|
+
getMediaTranscriptQueryLimitDefault: () => getMediaTranscriptQueryLimitDefault,
|
|
776
|
+
getMediaTranscriptQueryLimitMax: () => getMediaTranscriptQueryLimitMax,
|
|
777
|
+
getMediaTranscriptQueryParams: () => getMediaTranscriptQueryParams,
|
|
767
778
|
getMediaTranscriptResponse: () => getMediaTranscriptResponse,
|
|
768
779
|
getMuxJobParams: () => getMuxJobParams,
|
|
769
780
|
getMuxJobResponse: () => getMuxJobResponse,
|
|
@@ -1038,13 +1049,14 @@ __export(zod_exports, {
|
|
|
1038
1049
|
previewClipBodyFromSecMin: () => previewClipBodyFromSecMin,
|
|
1039
1050
|
previewClipParams: () => previewClipParams,
|
|
1040
1051
|
previewComponentBody: () => previewComponentBody,
|
|
1052
|
+
previewComponentBodyDurationInFramesMax: () => previewComponentBodyDurationInFramesMax,
|
|
1053
|
+
previewComponentBodyPreviewFrameMin: () => previewComponentBodyPreviewFrameMin,
|
|
1041
1054
|
previewComponentParams: () => previewComponentParams,
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
previewFrameResponse: () => previewFrameResponse,
|
|
1055
|
+
previewFrameJobBody: () => previewFrameJobBody,
|
|
1056
|
+
previewFrameJobBodyJpegQualityMax: () => previewFrameJobBodyJpegQualityMax,
|
|
1057
|
+
previewFrameJobBodyScaleMax: () => previewFrameJobBodyScaleMax,
|
|
1058
|
+
previewFrameJobBodyScaleMin: () => previewFrameJobBodyScaleMin,
|
|
1059
|
+
previewFrameJobParams: () => previewFrameJobParams,
|
|
1048
1060
|
previewSelectorBody: () => previewSelectorBody,
|
|
1049
1061
|
previewSelectorBodyCooldownSecMin: () => previewSelectorBodyCooldownSecMin,
|
|
1050
1062
|
previewSelectorBodyEnterSecMin: () => previewSelectorBodyEnterSecMin,
|
|
@@ -1398,7 +1410,7 @@ var getAccountResponse = zod.object({
|
|
|
1398
1410
|
"name": zod.string().nullable().describe("Plan display name.")
|
|
1399
1411
|
}).nullable().describe("The customer's current base plan/tier. null = unknown (billing not configured, or no active plan resolvable yet)."),
|
|
1400
1412
|
"entitlements": zod.record(zod.string(), zod.object({
|
|
1401
|
-
"featureId": zod.string().describe("
|
|
1413
|
+
"featureId": zod.string().describe("Stable billing feature id."),
|
|
1402
1414
|
"name": zod.string().describe("Human-readable feature name."),
|
|
1403
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."),
|
|
1404
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."),
|
|
@@ -1411,14 +1423,10 @@ var getAccountResponse = zod.object({
|
|
|
1411
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."),
|
|
1412
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.")
|
|
1413
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)."),
|
|
1414
|
-
"gateway": zod.object({
|
|
1415
|
-
"url": zod.string().describe("Base URL of the CueFrame LLM gateway (OpenAI-compatible)."),
|
|
1416
|
-
"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.")
|
|
1417
|
-
}).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."),
|
|
1418
1426
|
"costCeilings": zod.object({
|
|
1419
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.")
|
|
1420
1428
|
}).describe("Discoverable per-call cost ceilings so an agent can price/right-size a request before a guaranteed 402."),
|
|
1421
|
-
"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.")
|
|
1422
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).");
|
|
1423
1431
|
var getProfileResponseBrandKitsItemAudioMusicMoodMax = 300;
|
|
1424
1432
|
var getProfileResponseBrandKitsItemAudioSonicLogoOffsetMsMin = 0;
|
|
@@ -1463,7 +1471,6 @@ var getProfileResponse = zod.object({
|
|
|
1463
1471
|
"criticId": zod.string(),
|
|
1464
1472
|
"label": zod.string(),
|
|
1465
1473
|
"tier": zod.enum(["rules", "rubric", "evaluator"]),
|
|
1466
|
-
"phase": zod.enum(["static", "temporal"]),
|
|
1467
1474
|
"floor": zod.number(),
|
|
1468
1475
|
"referenceMediaIds": zod.array(zod.string()).optional()
|
|
1469
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."),
|
|
@@ -1517,7 +1524,7 @@ var getUsageResponse = zod3.object({
|
|
|
1517
1524
|
});
|
|
1518
1525
|
var getBillingPlansResponse = zod3.object({
|
|
1519
1526
|
"plans": zod3.array(zod3.object({
|
|
1520
|
-
"id": zod3.string().describe("
|
|
1527
|
+
"id": zod3.string().describe("Billing catalog product id (e.g. pro, pro_yearly)."),
|
|
1521
1528
|
"tier": zod3.string().describe("Plan tier: pro | business | studio."),
|
|
1522
1529
|
"name": zod3.string(),
|
|
1523
1530
|
"interval": zod3.string().describe("month | year."),
|
|
@@ -1534,7 +1541,7 @@ var createCheckoutResponse = zod3.object({
|
|
|
1534
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."),
|
|
1535
1542
|
"plan": zod3.string(),
|
|
1536
1543
|
"interval": zod3.string(),
|
|
1537
|
-
"productId": zod3.string().describe("Resolved
|
|
1544
|
+
"productId": zod3.string().describe("Resolved billing catalog product id.")
|
|
1538
1545
|
});
|
|
1539
1546
|
|
|
1540
1547
|
// ../sdk/src/generated/zod/brand-kits/brand-kits.ts
|
|
@@ -2217,7 +2224,7 @@ var createBriefBody = zod5.object({
|
|
|
2217
2224
|
"platform": zod5.string().max(createBriefBodyPlatformMax).optional(),
|
|
2218
2225
|
"format": zod5.object({
|
|
2219
2226
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2220
|
-
"fps": zod5.union([zod5.
|
|
2227
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2221
2228
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2222
2229
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
2223
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."),
|
|
@@ -2342,6 +2349,11 @@ var createBriefBody = zod5.object({
|
|
|
2342
2349
|
"kind": zod5.literal("effect"),
|
|
2343
2350
|
"primitiveId": zod5.string().min(1),
|
|
2344
2351
|
"params": zod5.record(zod5.string(), zod5.unknown()).optional()
|
|
2352
|
+
}).strict(), zod5.object({
|
|
2353
|
+
"kind": zod5.literal("alpha-layer"),
|
|
2354
|
+
"componentId": zod5.string().min(1),
|
|
2355
|
+
"props": zod5.record(zod5.string(), zod5.unknown()),
|
|
2356
|
+
"zPlane": zod5.enum(["front", "behind-subject"]).optional()
|
|
2345
2357
|
}).strict(), zod5.object({
|
|
2346
2358
|
"kind": zod5.literal("card"),
|
|
2347
2359
|
"html": zod5.string().min(1),
|
|
@@ -2476,7 +2488,7 @@ var listBriefsResponse = zod5.object({
|
|
|
2476
2488
|
"platform": zod5.string().max(listBriefsResponseDataItemPlatformMax).optional(),
|
|
2477
2489
|
"format": zod5.object({
|
|
2478
2490
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2479
|
-
"fps": zod5.union([zod5.
|
|
2491
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2480
2492
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2481
2493
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
2482
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."),
|
|
@@ -2601,6 +2613,11 @@ var listBriefsResponse = zod5.object({
|
|
|
2601
2613
|
"kind": zod5.literal("effect"),
|
|
2602
2614
|
"primitiveId": zod5.string().min(1),
|
|
2603
2615
|
"params": zod5.record(zod5.string(), zod5.unknown()).optional()
|
|
2616
|
+
}), zod5.object({
|
|
2617
|
+
"kind": zod5.literal("alpha-layer"),
|
|
2618
|
+
"componentId": zod5.string().min(1),
|
|
2619
|
+
"props": zod5.record(zod5.string(), zod5.unknown()),
|
|
2620
|
+
"zPlane": zod5.enum(["front", "behind-subject"]).optional()
|
|
2604
2621
|
}), zod5.object({
|
|
2605
2622
|
"kind": zod5.literal("card"),
|
|
2606
2623
|
"html": zod5.string().min(1),
|
|
@@ -2751,7 +2768,7 @@ var getBriefResponse = zod5.object({
|
|
|
2751
2768
|
"platform": zod5.string().max(getBriefResponsePlatformMax).optional(),
|
|
2752
2769
|
"format": zod5.object({
|
|
2753
2770
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
2754
|
-
"fps": zod5.union([zod5.
|
|
2771
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
2755
2772
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
2756
2773
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
2757
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."),
|
|
@@ -2876,6 +2893,11 @@ var getBriefResponse = zod5.object({
|
|
|
2876
2893
|
"kind": zod5.literal("effect"),
|
|
2877
2894
|
"primitiveId": zod5.string().min(1),
|
|
2878
2895
|
"params": zod5.record(zod5.string(), zod5.unknown()).optional()
|
|
2896
|
+
}), zod5.object({
|
|
2897
|
+
"kind": zod5.literal("alpha-layer"),
|
|
2898
|
+
"componentId": zod5.string().min(1),
|
|
2899
|
+
"props": zod5.record(zod5.string(), zod5.unknown()),
|
|
2900
|
+
"zPlane": zod5.enum(["front", "behind-subject"]).optional()
|
|
2879
2901
|
}), zod5.object({
|
|
2880
2902
|
"kind": zod5.literal("card"),
|
|
2881
2903
|
"html": zod5.string().min(1),
|
|
@@ -3016,7 +3038,7 @@ var updateBriefBody = zod5.object({
|
|
|
3016
3038
|
"platform": zod5.string().max(updateBriefBodyPlatformMax).optional(),
|
|
3017
3039
|
"format": zod5.object({
|
|
3018
3040
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3019
|
-
"fps": zod5.union([zod5.
|
|
3041
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
3020
3042
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
3021
3043
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
3022
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."),
|
|
@@ -3141,6 +3163,11 @@ var updateBriefBody = zod5.object({
|
|
|
3141
3163
|
"kind": zod5.literal("effect"),
|
|
3142
3164
|
"primitiveId": zod5.string().min(1),
|
|
3143
3165
|
"params": zod5.record(zod5.string(), zod5.unknown()).optional()
|
|
3166
|
+
}).strict(), zod5.object({
|
|
3167
|
+
"kind": zod5.literal("alpha-layer"),
|
|
3168
|
+
"componentId": zod5.string().min(1),
|
|
3169
|
+
"props": zod5.record(zod5.string(), zod5.unknown()),
|
|
3170
|
+
"zPlane": zod5.enum(["front", "behind-subject"]).optional()
|
|
3144
3171
|
}).strict(), zod5.object({
|
|
3145
3172
|
"kind": zod5.literal("card"),
|
|
3146
3173
|
"html": zod5.string().min(1),
|
|
@@ -3274,7 +3301,7 @@ var updateBriefResponse = zod5.object({
|
|
|
3274
3301
|
"platform": zod5.string().max(updateBriefResponsePlatformMax).optional(),
|
|
3275
3302
|
"format": zod5.object({
|
|
3276
3303
|
"aspectRatio": zod5.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3277
|
-
"fps": zod5.union([zod5.
|
|
3304
|
+
"fps": zod5.union([zod5.literal(24), zod5.literal(25), zod5.literal(30), zod5.literal(60)]).optional(),
|
|
3278
3305
|
"resolution": zod5.enum(["hd", "fhd", "4k"]).optional()
|
|
3279
3306
|
}).optional().describe("Output-format spec per \xA7Format."),
|
|
3280
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."),
|
|
@@ -3399,6 +3426,11 @@ var updateBriefResponse = zod5.object({
|
|
|
3399
3426
|
"kind": zod5.literal("effect"),
|
|
3400
3427
|
"primitiveId": zod5.string().min(1),
|
|
3401
3428
|
"params": zod5.record(zod5.string(), zod5.unknown()).optional()
|
|
3429
|
+
}), zod5.object({
|
|
3430
|
+
"kind": zod5.literal("alpha-layer"),
|
|
3431
|
+
"componentId": zod5.string().min(1),
|
|
3432
|
+
"props": zod5.record(zod5.string(), zod5.unknown()),
|
|
3433
|
+
"zPlane": zod5.enum(["front", "behind-subject"]).optional()
|
|
3402
3434
|
}), zod5.object({
|
|
3403
3435
|
"kind": zod5.literal("card"),
|
|
3404
3436
|
"html": zod5.string().min(1),
|
|
@@ -3511,7 +3543,7 @@ var recordReviewDecisionParams = zod6.object({
|
|
|
3511
3543
|
"id": zod6.string()
|
|
3512
3544
|
});
|
|
3513
3545
|
var recordReviewDecisionResponse = zod6.object({
|
|
3514
|
-
"ok": zod6.
|
|
3546
|
+
"ok": zod6.literal(true),
|
|
3515
3547
|
"stage": zod6.enum(["content", "layout", "motion"]).optional(),
|
|
3516
3548
|
"version": zod6.number().optional(),
|
|
3517
3549
|
"composeJobId": zod6.string().optional()
|
|
@@ -3596,7 +3628,7 @@ var resumeCheckpointBody = zod6.object({
|
|
|
3596
3628
|
"globalNote": zod6.string().max(resumeCheckpointBodyGlobalNoteMax).optional()
|
|
3597
3629
|
}).strict().describe("POST /checkpoints/:id/resume body \u2014 the A1 review grammar.");
|
|
3598
3630
|
var resumeCheckpointResponse = zod6.object({
|
|
3599
|
-
"ok": zod6.
|
|
3631
|
+
"ok": zod6.literal(true)
|
|
3600
3632
|
}).describe("POST /checkpoints/:id/resume response.");
|
|
3601
3633
|
|
|
3602
3634
|
// ../sdk/src/generated/zod/clips/clips.ts
|
|
@@ -3608,7 +3640,7 @@ var composeFromSuggestionBody = zod7.object({
|
|
|
3608
3640
|
"suggestionId": zod7.string().min(1),
|
|
3609
3641
|
"format": zod7.object({
|
|
3610
3642
|
"aspectRatio": zod7.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3611
|
-
"fps": zod7.union([zod7.
|
|
3643
|
+
"fps": zod7.union([zod7.literal(24), zod7.literal(25), zod7.literal(30), zod7.literal(60)]).optional(),
|
|
3612
3644
|
"resolution": zod7.enum(["hd", "fhd", "4k"]).optional(),
|
|
3613
3645
|
"platform": zod7.string().optional()
|
|
3614
3646
|
}).strict().optional()
|
|
@@ -3700,10 +3732,11 @@ var listCatalogResponse = zod8.object({
|
|
|
3700
3732
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3701
3733
|
"format": zod8.object({
|
|
3702
3734
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3703
|
-
"fps": zod8.union([zod8.
|
|
3735
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3704
3736
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3705
3737
|
}).optional(),
|
|
3706
3738
|
"durationInFrames": zod8.number().optional(),
|
|
3739
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3707
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."),
|
|
3708
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."),
|
|
3709
3742
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3736,7 +3769,7 @@ var listCatalogResponse = zod8.object({
|
|
|
3736
3769
|
}).describe("Cursor pagination metadata."),
|
|
3737
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."),
|
|
3738
3771
|
"sfx": zod8.array(zod8.object({
|
|
3739
|
-
"soundId": zod8.string().describe("Stable pack id
|
|
3772
|
+
"soundId": zod8.string().describe("Stable sound-pack item id."),
|
|
3740
3773
|
"family": zod8.enum(["tick", "pop", "impact", "confirm", "error", "whoosh", "riser"]).describe("Editorial family the compose sfx pass binds by."),
|
|
3741
3774
|
"envelopeClass": zod8.enum(["transient", "sweep", "ambient"]).describe("Coarse envelope shape \u2014 the browse grouping."),
|
|
3742
3775
|
"intensity": zod8.enum(["subtle", "standard", "strong"]),
|
|
@@ -3780,6 +3813,7 @@ var createComponentBody = zod8.object({
|
|
|
3780
3813
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3781
3814
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3782
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."),
|
|
3783
3817
|
"executionMode": zod8.enum(["live", "baked"]).optional()
|
|
3784
3818
|
}).strict().describe("POST /components body. Org/user are server-resolved; never accepted from the body.");
|
|
3785
3819
|
var updateComponentParams = zod8.object({
|
|
@@ -3799,6 +3833,7 @@ var updateComponentBody = zod8.object({
|
|
|
3799
3833
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3800
3834
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3801
3835
|
"durationInFrames": zod8.number().optional(),
|
|
3836
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3802
3837
|
"executionMode": zod8.enum(["live", "baked"]).optional()
|
|
3803
3838
|
}).strict().describe("PUT /components/:id body. Org/user are server-resolved; never accepted from the body.");
|
|
3804
3839
|
var updateComponentResponse = zod8.object({
|
|
@@ -3815,10 +3850,11 @@ var updateComponentResponse = zod8.object({
|
|
|
3815
3850
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3816
3851
|
"format": zod8.object({
|
|
3817
3852
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3818
|
-
"fps": zod8.union([zod8.
|
|
3853
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3819
3854
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3820
3855
|
}).optional(),
|
|
3821
3856
|
"durationInFrames": zod8.number().optional(),
|
|
3857
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3822
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."),
|
|
3823
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."),
|
|
3824
3860
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3861,10 +3897,11 @@ var getComponentResponse = zod8.object({
|
|
|
3861
3897
|
"subtextParam": zod8.string().nullish().describe("The param field for secondary text (subtitle/byline); null = none."),
|
|
3862
3898
|
"format": zod8.object({
|
|
3863
3899
|
"aspectRatio": zod8.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3864
|
-
"fps": zod8.union([zod8.
|
|
3900
|
+
"fps": zod8.union([zod8.literal(24), zod8.literal(25), zod8.literal(30), zod8.literal(60)]).optional(),
|
|
3865
3901
|
"resolution": zod8.enum(["hd", "fhd", "4k"]).optional()
|
|
3866
3902
|
}).optional(),
|
|
3867
3903
|
"durationInFrames": zod8.number().optional(),
|
|
3904
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional(),
|
|
3868
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."),
|
|
3869
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."),
|
|
3870
3907
|
"pairsWith": zod8.array(zod8.string()).optional().describe("Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit."),
|
|
@@ -3904,7 +3941,8 @@ var getComponentSourceResponse = zod8.object({
|
|
|
3904
3941
|
"ejectedFrom": zod8.string().optional(),
|
|
3905
3942
|
"tokens": zod8.record(zod8.string(), zod8.unknown()).optional(),
|
|
3906
3943
|
"examples": zod8.array(zod8.record(zod8.string(), zod8.unknown())).optional(),
|
|
3907
|
-
"durationInFrames": zod8.number().optional()
|
|
3944
|
+
"durationInFrames": zod8.number().optional(),
|
|
3945
|
+
"alphaPolicy": zod8.enum(["requires-transparency", "allows-opaque"]).optional()
|
|
3908
3946
|
}).describe("Installed component SOURCE (TSX) + ownership provenance per \xA7Components.");
|
|
3909
3947
|
|
|
3910
3948
|
// ../sdk/src/generated/zod/compose/compose.ts
|
|
@@ -3924,17 +3962,17 @@ var composeBody = zod9.object({
|
|
|
3924
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."),
|
|
3925
3963
|
"format": zod9.object({
|
|
3926
3964
|
"aspectRatio": zod9.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
3927
|
-
"fps": zod9.union([zod9.
|
|
3965
|
+
"fps": zod9.union([zod9.literal(24), zod9.literal(25), zod9.literal(30), zod9.literal(60)]).optional(),
|
|
3928
3966
|
"resolution": zod9.enum(["hd", "fhd", "4k"]).optional()
|
|
3929
3967
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
3930
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."),
|
|
3931
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."),
|
|
3932
|
-
"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."),
|
|
3933
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."),
|
|
3934
3972
|
"budgetUsd": zod9.number().optional().describe("Per-job budget cap (USD). Clamped at the route against the org's composeMaxBudgetUsdPerJob setting."),
|
|
3935
3973
|
"qualityThreshold": zod9.number().min(composeBodyQualityThresholdMin).max(composeBodyQualityThresholdMax).optional().describe("Composite-score accept threshold. Server default per contract."),
|
|
3936
|
-
"seed": zod9.number().optional().describe("Deterministic seed for replay.
|
|
3937
|
-
"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."),
|
|
3938
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.")
|
|
3939
3977
|
}).strict().describe("POST /projects/:id/compose body.");
|
|
3940
3978
|
var streamComposeParams = zod9.object({
|
|
@@ -3969,10 +4007,6 @@ var cancelComposeParams = zod9.object({
|
|
|
3969
4007
|
"composeJobId": zod9.string()
|
|
3970
4008
|
});
|
|
3971
4009
|
var cancelComposeResponseWinnerCandidateIndexMin = 0;
|
|
3972
|
-
var cancelComposeResponseCostLlmUsdMin = 0;
|
|
3973
|
-
var cancelComposeResponseCostVisionUsdMin = 0;
|
|
3974
|
-
var cancelComposeResponseCostModalUsdMin = 0;
|
|
3975
|
-
var cancelComposeResponseCostTotalUsdMin = 0;
|
|
3976
4010
|
var cancelComposeResponseAdvisoryResultProposalsItemCandidateIndexMin = 0;
|
|
3977
4011
|
var cancelComposeResponse = zod9.object({
|
|
3978
4012
|
"composeJobId": zod9.string(),
|
|
@@ -3994,12 +4028,6 @@ var cancelComposeResponse = zod9.object({
|
|
|
3994
4028
|
"candidateIndex": zod9.number().min(cancelComposeResponseWinnerCandidateIndexMin),
|
|
3995
4029
|
"compositionRunId": zod9.string()
|
|
3996
4030
|
}).nullable(),
|
|
3997
|
-
"cost": zod9.object({
|
|
3998
|
-
"llmUsd": zod9.number().min(cancelComposeResponseCostLlmUsdMin),
|
|
3999
|
-
"visionUsd": zod9.number().min(cancelComposeResponseCostVisionUsdMin),
|
|
4000
|
-
"modalUsd": zod9.number().min(cancelComposeResponseCostModalUsdMin),
|
|
4001
|
-
"totalUsd": zod9.number().min(cancelComposeResponseCostTotalUsdMin)
|
|
4002
|
-
}).nullable(),
|
|
4003
4031
|
"listUsd": zod9.number().optional(),
|
|
4004
4032
|
"startedAt": zod9.number(),
|
|
4005
4033
|
"completedAt": zod9.number().nullable(),
|
|
@@ -4066,10 +4094,6 @@ var getComposeJobParams = zod9.object({
|
|
|
4066
4094
|
"composeJobId": zod9.string()
|
|
4067
4095
|
});
|
|
4068
4096
|
var getComposeJobResponseWinnerCandidateIndexMin = 0;
|
|
4069
|
-
var getComposeJobResponseCostLlmUsdMin = 0;
|
|
4070
|
-
var getComposeJobResponseCostVisionUsdMin = 0;
|
|
4071
|
-
var getComposeJobResponseCostModalUsdMin = 0;
|
|
4072
|
-
var getComposeJobResponseCostTotalUsdMin = 0;
|
|
4073
4097
|
var getComposeJobResponseAdvisoryResultProposalsItemCandidateIndexMin = 0;
|
|
4074
4098
|
var getComposeJobResponse = zod9.object({
|
|
4075
4099
|
"composeJobId": zod9.string(),
|
|
@@ -4091,12 +4115,6 @@ var getComposeJobResponse = zod9.object({
|
|
|
4091
4115
|
"candidateIndex": zod9.number().min(getComposeJobResponseWinnerCandidateIndexMin),
|
|
4092
4116
|
"compositionRunId": zod9.string()
|
|
4093
4117
|
}).nullable(),
|
|
4094
|
-
"cost": zod9.object({
|
|
4095
|
-
"llmUsd": zod9.number().min(getComposeJobResponseCostLlmUsdMin),
|
|
4096
|
-
"visionUsd": zod9.number().min(getComposeJobResponseCostVisionUsdMin),
|
|
4097
|
-
"modalUsd": zod9.number().min(getComposeJobResponseCostModalUsdMin),
|
|
4098
|
-
"totalUsd": zod9.number().min(getComposeJobResponseCostTotalUsdMin)
|
|
4099
|
-
}).nullable(),
|
|
4100
4118
|
"listUsd": zod9.number().optional(),
|
|
4101
4119
|
"startedAt": zod9.number(),
|
|
4102
4120
|
"completedAt": zod9.number().nullable(),
|
|
@@ -4257,10 +4275,10 @@ var getCompositionResponseCaptionsStyleExitMsMinOne = 0;
|
|
|
4257
4275
|
var getCompositionResponseCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
4258
4276
|
var getCompositionResponseCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
4259
4277
|
var getCompositionResponse = zod11.object({
|
|
4260
|
-
"v": zod11.
|
|
4278
|
+
"v": zod11.literal(1),
|
|
4261
4279
|
"format": zod11.object({
|
|
4262
4280
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4263
|
-
"fps": zod11.union([zod11.
|
|
4281
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4264
4282
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
4265
4283
|
"platform": zod11.string().optional()
|
|
4266
4284
|
}),
|
|
@@ -4360,6 +4378,11 @@ var getCompositionResponse = zod11.object({
|
|
|
4360
4378
|
"kind": zod11.literal("effect"),
|
|
4361
4379
|
"primitiveId": zod11.string().min(1),
|
|
4362
4380
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
4381
|
+
}), zod11.object({
|
|
4382
|
+
"kind": zod11.literal("alpha-layer"),
|
|
4383
|
+
"componentId": zod11.string().min(1),
|
|
4384
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
4385
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
4363
4386
|
}), zod11.object({
|
|
4364
4387
|
"kind": zod11.literal("card"),
|
|
4365
4388
|
"html": zod11.string().min(1),
|
|
@@ -4596,10 +4619,10 @@ var putCompositionBodyCaptionsStyleExitMsMinOne = 0;
|
|
|
4596
4619
|
var putCompositionBodyCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
4597
4620
|
var putCompositionBodyCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
4598
4621
|
var putCompositionBody = zod11.object({
|
|
4599
|
-
"v": zod11.
|
|
4622
|
+
"v": zod11.literal(1),
|
|
4600
4623
|
"format": zod11.object({
|
|
4601
4624
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4602
|
-
"fps": zod11.union([zod11.
|
|
4625
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4603
4626
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
4604
4627
|
"platform": zod11.string().optional()
|
|
4605
4628
|
}).strict(),
|
|
@@ -4699,6 +4722,11 @@ var putCompositionBody = zod11.object({
|
|
|
4699
4722
|
"kind": zod11.literal("effect"),
|
|
4700
4723
|
"primitiveId": zod11.string().min(1),
|
|
4701
4724
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
4725
|
+
}).strict(), zod11.object({
|
|
4726
|
+
"kind": zod11.literal("alpha-layer"),
|
|
4727
|
+
"componentId": zod11.string().min(1),
|
|
4728
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
4729
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
4702
4730
|
}).strict(), zod11.object({
|
|
4703
4731
|
"kind": zod11.literal("card"),
|
|
4704
4732
|
"html": zod11.string().min(1),
|
|
@@ -4869,7 +4897,7 @@ var newCompositionBody = zod11.object({
|
|
|
4869
4897
|
"name": zod11.string().min(1).max(newCompositionBodyNameMax).optional(),
|
|
4870
4898
|
"format": zod11.object({
|
|
4871
4899
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4872
|
-
"fps": zod11.union([zod11.
|
|
4900
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4873
4901
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
4874
4902
|
}).strict().optional().describe("Output-format spec per \xA7Format.")
|
|
4875
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.");
|
|
@@ -4882,7 +4910,7 @@ var listCompositionsResponse = zod11.object({
|
|
|
4882
4910
|
"compositionId": zod11.string(),
|
|
4883
4911
|
"format": zod11.object({
|
|
4884
4912
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
4885
|
-
"fps": zod11.union([zod11.
|
|
4913
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
4886
4914
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
4887
4915
|
}).describe("Output-format spec per \xA7Format."),
|
|
4888
4916
|
"etag": zod11.string(),
|
|
@@ -5150,6 +5178,11 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5150
5178
|
"kind": zod11.literal("effect"),
|
|
5151
5179
|
"primitiveId": zod11.string().min(1),
|
|
5152
5180
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
5181
|
+
}).strict(), zod11.object({
|
|
5182
|
+
"kind": zod11.literal("alpha-layer"),
|
|
5183
|
+
"componentId": zod11.string().min(1),
|
|
5184
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
5185
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
5153
5186
|
}).strict(), zod11.object({
|
|
5154
5187
|
"kind": zod11.literal("card"),
|
|
5155
5188
|
"html": zod11.string().min(1),
|
|
@@ -5292,6 +5325,11 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5292
5325
|
"kind": zod11.literal("effect"),
|
|
5293
5326
|
"primitiveId": zod11.string().min(1),
|
|
5294
5327
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
5328
|
+
}).strict(), zod11.object({
|
|
5329
|
+
"kind": zod11.literal("alpha-layer"),
|
|
5330
|
+
"componentId": zod11.string().min(1),
|
|
5331
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
5332
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
5295
5333
|
}).strict(), zod11.object({
|
|
5296
5334
|
"kind": zod11.literal("card"),
|
|
5297
5335
|
"html": zod11.string().min(1),
|
|
@@ -5430,6 +5468,11 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5430
5468
|
"kind": zod11.literal("effect"),
|
|
5431
5469
|
"primitiveId": zod11.string().min(1),
|
|
5432
5470
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
5471
|
+
}).strict(), zod11.object({
|
|
5472
|
+
"kind": zod11.literal("alpha-layer"),
|
|
5473
|
+
"componentId": zod11.string().min(1),
|
|
5474
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
5475
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
5433
5476
|
}).strict(), zod11.object({
|
|
5434
5477
|
"kind": zod11.literal("card"),
|
|
5435
5478
|
"html": zod11.string().min(1),
|
|
@@ -5572,6 +5615,9 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5572
5615
|
"maxWidthPercent": zod11.number().max(applyCompositionOpBodyStyleMaxWidthPercentMax).optional()
|
|
5573
5616
|
}).strict()
|
|
5574
5617
|
}).strict().describe("Merge style overrides (font/color/position/emphasis) onto the composition's caption layer. Partial \u2014 omitted fields keep their current value; creates the caption container if absent."), zod11.object({
|
|
5618
|
+
"type": zod11.literal("setCaptionDepth"),
|
|
5619
|
+
"zPlane": zod11.enum(["front", "behind-subject"])
|
|
5620
|
+
}).strict().describe("Set the caption compositing plane. Use `behind-subject` to place captions behind the segmented foreground subject; use `front` for conventional captions above all video layers."), zod11.object({
|
|
5575
5621
|
"type": zod11.literal("setCaptions"),
|
|
5576
5622
|
"segments": zod11.array(zod11.object({
|
|
5577
5623
|
"words": zod11.array(zod11.object({
|
|
@@ -5640,7 +5686,7 @@ var applyCompositionOpBody = zod11.union([zod11.object({
|
|
|
5640
5686
|
"type": zod11.literal("setFormat"),
|
|
5641
5687
|
"format": zod11.object({
|
|
5642
5688
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
5643
|
-
"fps": zod11.union([zod11.
|
|
5689
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
5644
5690
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
5645
5691
|
}).strict()
|
|
5646
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({
|
|
@@ -5950,6 +5996,11 @@ var applyCompositionBody = zod11.object({
|
|
|
5950
5996
|
"kind": zod11.literal("effect"),
|
|
5951
5997
|
"primitiveId": zod11.string().min(1),
|
|
5952
5998
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
5999
|
+
}).strict(), zod11.object({
|
|
6000
|
+
"kind": zod11.literal("alpha-layer"),
|
|
6001
|
+
"componentId": zod11.string().min(1),
|
|
6002
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
6003
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
5953
6004
|
}).strict(), zod11.object({
|
|
5954
6005
|
"kind": zod11.literal("card"),
|
|
5955
6006
|
"html": zod11.string().min(1),
|
|
@@ -6092,6 +6143,11 @@ var applyCompositionBody = zod11.object({
|
|
|
6092
6143
|
"kind": zod11.literal("effect"),
|
|
6093
6144
|
"primitiveId": zod11.string().min(1),
|
|
6094
6145
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
6146
|
+
}).strict(), zod11.object({
|
|
6147
|
+
"kind": zod11.literal("alpha-layer"),
|
|
6148
|
+
"componentId": zod11.string().min(1),
|
|
6149
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
6150
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
6095
6151
|
}).strict(), zod11.object({
|
|
6096
6152
|
"kind": zod11.literal("card"),
|
|
6097
6153
|
"html": zod11.string().min(1),
|
|
@@ -6230,6 +6286,11 @@ var applyCompositionBody = zod11.object({
|
|
|
6230
6286
|
"kind": zod11.literal("effect"),
|
|
6231
6287
|
"primitiveId": zod11.string().min(1),
|
|
6232
6288
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
6289
|
+
}).strict(), zod11.object({
|
|
6290
|
+
"kind": zod11.literal("alpha-layer"),
|
|
6291
|
+
"componentId": zod11.string().min(1),
|
|
6292
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
6293
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
6233
6294
|
}).strict(), zod11.object({
|
|
6234
6295
|
"kind": zod11.literal("card"),
|
|
6235
6296
|
"html": zod11.string().min(1),
|
|
@@ -6372,6 +6433,9 @@ var applyCompositionBody = zod11.object({
|
|
|
6372
6433
|
"maxWidthPercent": zod11.number().max(applyCompositionBodyOpsItemStyleMaxWidthPercentMax).optional()
|
|
6373
6434
|
}).strict()
|
|
6374
6435
|
}).strict().describe("Merge style overrides (font/color/position/emphasis) onto the composition's caption layer. Partial \u2014 omitted fields keep their current value; creates the caption container if absent."), zod11.object({
|
|
6436
|
+
"type": zod11.literal("setCaptionDepth"),
|
|
6437
|
+
"zPlane": zod11.enum(["front", "behind-subject"])
|
|
6438
|
+
}).strict().describe("Set the caption compositing plane. Use `behind-subject` to place captions behind the segmented foreground subject; use `front` for conventional captions above all video layers."), zod11.object({
|
|
6375
6439
|
"type": zod11.literal("setCaptions"),
|
|
6376
6440
|
"segments": zod11.array(zod11.object({
|
|
6377
6441
|
"words": zod11.array(zod11.object({
|
|
@@ -6440,7 +6504,7 @@ var applyCompositionBody = zod11.object({
|
|
|
6440
6504
|
"type": zod11.literal("setFormat"),
|
|
6441
6505
|
"format": zod11.object({
|
|
6442
6506
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6443
|
-
"fps": zod11.union([zod11.
|
|
6507
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6444
6508
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
6445
6509
|
}).strict()
|
|
6446
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({
|
|
@@ -6501,7 +6565,7 @@ var deriveCompositionBody = zod11.object({
|
|
|
6501
6565
|
"fromCompositionId": zod11.string().min(1).describe("Source composition to reframe a sibling from."),
|
|
6502
6566
|
"targetFormat": zod11.object({
|
|
6503
6567
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6504
|
-
"fps": zod11.union([zod11.
|
|
6568
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6505
6569
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional()
|
|
6506
6570
|
}).strict().describe("Output-format spec per \xA7Format.")
|
|
6507
6571
|
}).strict().describe("Derive a reframed sibling composition for a new aspect (Auto-Reframe / Magic-Resize, agent-native).");
|
|
@@ -6579,10 +6643,10 @@ var validateCompositionBodyCaptionsStyleExitMsMinOne = 0;
|
|
|
6579
6643
|
var validateCompositionBodyCaptionsStyleEmphasisPlateRadiusMinOne = 0;
|
|
6580
6644
|
var validateCompositionBodyCaptionsStyleMaxWidthPercentMaxOne = 100;
|
|
6581
6645
|
var validateCompositionBody = zod11.object({
|
|
6582
|
-
"v": zod11.
|
|
6646
|
+
"v": zod11.literal(1),
|
|
6583
6647
|
"format": zod11.object({
|
|
6584
6648
|
"aspectRatio": zod11.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
6585
|
-
"fps": zod11.union([zod11.
|
|
6649
|
+
"fps": zod11.union([zod11.literal(24), zod11.literal(25), zod11.literal(30), zod11.literal(60)]).optional(),
|
|
6586
6650
|
"resolution": zod11.enum(["hd", "fhd", "4k"]).optional(),
|
|
6587
6651
|
"platform": zod11.string().optional()
|
|
6588
6652
|
}).strict(),
|
|
@@ -6682,6 +6746,11 @@ var validateCompositionBody = zod11.object({
|
|
|
6682
6746
|
"kind": zod11.literal("effect"),
|
|
6683
6747
|
"primitiveId": zod11.string().min(1),
|
|
6684
6748
|
"params": zod11.record(zod11.string(), zod11.unknown()).optional()
|
|
6749
|
+
}).strict(), zod11.object({
|
|
6750
|
+
"kind": zod11.literal("alpha-layer"),
|
|
6751
|
+
"componentId": zod11.string().min(1),
|
|
6752
|
+
"props": zod11.record(zod11.string(), zod11.unknown()),
|
|
6753
|
+
"zPlane": zod11.enum(["front", "behind-subject"]).optional()
|
|
6685
6754
|
}).strict(), zod11.object({
|
|
6686
6755
|
"kind": zod11.literal("card"),
|
|
6687
6756
|
"html": zod11.string().min(1),
|
|
@@ -6861,6 +6930,7 @@ var validateCompositionResponse = zod11.object({
|
|
|
6861
6930
|
"detail": zod11.string(),
|
|
6862
6931
|
"fix": zod11.string()
|
|
6863
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."),
|
|
6864
6934
|
"quote": zod11.object({
|
|
6865
6935
|
"thisStepUsd": zod11.number(),
|
|
6866
6936
|
"jobSpendSoFarUsd": zod11.number(),
|
|
@@ -6894,7 +6964,6 @@ var createCriticBody = zod13.object({
|
|
|
6894
6964
|
"criticId": zod13.string().min(1).describe("Stable client id; re-registering the same id UPSERTS."),
|
|
6895
6965
|
"label": zod13.string().min(1),
|
|
6896
6966
|
"tier": zod13.enum(["rules", "rubric", "evaluator"]),
|
|
6897
|
-
"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."),
|
|
6898
6967
|
"floor": zod13.number().min(createCriticBodyFloorMin).max(createCriticBodyFloorMax).optional().describe("Score below this routes a refine like a built-in criterion. Defaults to 6."),
|
|
6899
6968
|
"rules": zod13.array(zod13.record(zod13.string(), zod13.unknown())).optional().describe('tier "rules": declarative ClientRule[] (data).'),
|
|
6900
6969
|
"rubric": zod13.string().optional().describe('tier "rubric": your criterion + description; scored as an extra column.'),
|
|
@@ -6906,7 +6975,6 @@ var listCriticsResponse = zod13.object({
|
|
|
6906
6975
|
"criticId": zod13.string(),
|
|
6907
6976
|
"label": zod13.string(),
|
|
6908
6977
|
"tier": zod13.enum(["rules", "rubric", "evaluator"]),
|
|
6909
|
-
"phase": zod13.enum(["static", "temporal"]),
|
|
6910
6978
|
"floor": zod13.number(),
|
|
6911
6979
|
"referenceMediaIds": zod13.array(zod13.string()).optional()
|
|
6912
6980
|
}).describe("One registered critic (rubric/rules/url stay write-only \u2014 never echoed)."))
|
|
@@ -6927,30 +6995,33 @@ var scoreCompositionBody = zod14.object({
|
|
|
6927
6995
|
"editorialIntent": zod14.string().optional(),
|
|
6928
6996
|
"brandContext": zod14.string().optional()
|
|
6929
6997
|
}).strict();
|
|
6930
|
-
var
|
|
6998
|
+
var previewFrameJobParams = zod14.object({
|
|
6931
6999
|
"id": zod14.string()
|
|
6932
7000
|
});
|
|
6933
|
-
var
|
|
6934
|
-
var
|
|
6935
|
-
var
|
|
6936
|
-
var
|
|
7001
|
+
var previewFrameJobBodyScaleMin = 0.1;
|
|
7002
|
+
var previewFrameJobBodyScaleMax = 1;
|
|
7003
|
+
var previewFrameJobBodyJpegQualityMax = 100;
|
|
7004
|
+
var previewFrameJobBody = zod14.object({
|
|
6937
7005
|
"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."),
|
|
6938
7006
|
"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."),
|
|
6939
7007
|
"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."),
|
|
6940
7008
|
"timestamps": zod14.array(zod14.number()).min(1),
|
|
6941
7009
|
"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."),
|
|
6942
|
-
"scale": zod14.number().min(
|
|
6943
|
-
"jpegQuality": zod14.number().min(1).max(
|
|
7010
|
+
"scale": zod14.number().min(previewFrameJobBodyScaleMin).max(previewFrameJobBodyScaleMax).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."),
|
|
7011
|
+
"jpegQuality": zod14.number().min(1).max(previewFrameJobBodyJpegQualityMax).optional().describe("JPEG quality (jpeg only). Default 70 \u2014 the quality the eval panel grades at.")
|
|
6944
7012
|
}).strict();
|
|
6945
|
-
var previewFrameResponse = zod14.unknown();
|
|
6946
7013
|
var previewComponentParams = zod14.object({
|
|
6947
7014
|
"id": zod14.string()
|
|
6948
7015
|
});
|
|
7016
|
+
var previewComponentBodyDurationInFramesMax = 3600;
|
|
7017
|
+
var previewComponentBodyPreviewFrameMin = 0;
|
|
6949
7018
|
var previewComponentBody = zod14.object({
|
|
6950
7019
|
"componentId": zod14.string().min(1),
|
|
6951
7020
|
"params": zod14.record(zod14.string(), zod14.unknown()).optional(),
|
|
6952
7021
|
"width": zod14.number().optional(),
|
|
6953
|
-
"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.")
|
|
6954
7025
|
}).strict();
|
|
6955
7026
|
|
|
6956
7027
|
// ../sdk/src/generated/zod/exports/exports.ts
|
|
@@ -7061,17 +7132,72 @@ import * as zod18 from "zod";
|
|
|
7061
7132
|
var getJobParams = zod18.object({
|
|
7062
7133
|
"jobId": zod18.string()
|
|
7063
7134
|
});
|
|
7135
|
+
var getJobResponseResultArtifactsItemLayersOverlaysMin = 0;
|
|
7064
7136
|
var getJobResponse = zod18.object({
|
|
7065
7137
|
"id": zod18.string().describe("Job id \u2014 pass to GET /v1/jobs/{id} / wait_job."),
|
|
7066
7138
|
"jobKey": zod18.string().describe("Deterministic identity of the work (idempotency key, e.g. `verify-<sessionId>-<contentHash>` \u2014 the hash covers the composition AND grading inputs). Re-enqueueing the same key returns the same job while it runs."),
|
|
7067
7139
|
"kind": zod18.string().describe("Job family, e.g. `verify`."),
|
|
7068
|
-
"status": zod18.enum(["running", "succeeded", "failed"]).describe("Poll until terminal (`succeeded` | `failed`)."),
|
|
7140
|
+
"status": zod18.enum(["running", "succeeded", "failed", "cancelled"]).describe("Poll until terminal (`succeeded` | `failed` | `cancelled`)."),
|
|
7069
7141
|
"progress": zod18.object({
|
|
7070
7142
|
"phase": zod18.string(),
|
|
7071
7143
|
"percent": zod18.number().optional(),
|
|
7072
7144
|
"message": zod18.string().optional()
|
|
7073
7145
|
}).nullable().describe("Executor heartbeat while running; null when none reported."),
|
|
7074
|
-
"result": zod18.
|
|
7146
|
+
"result": zod18.union([zod18.object({
|
|
7147
|
+
"geometry": zod18.object({
|
|
7148
|
+
"scale": zod18.number(),
|
|
7149
|
+
"compositionWidth": zod18.number().optional(),
|
|
7150
|
+
"compositionHeight": zod18.number().optional(),
|
|
7151
|
+
"width": zod18.number().optional(),
|
|
7152
|
+
"height": zod18.number().optional()
|
|
7153
|
+
}),
|
|
7154
|
+
"warnings": zod18.array(zod18.record(zod18.string(), zod18.unknown())).optional(),
|
|
7155
|
+
"previewed": zod18.object({
|
|
7156
|
+
"source": zod18.enum(["inline", "scratch", "persisted"]),
|
|
7157
|
+
"compositionId": zod18.string().optional(),
|
|
7158
|
+
"etag": zod18.string().optional()
|
|
7159
|
+
}),
|
|
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
|
+
}))
|
|
7173
|
+
}), zod18.union([zod18.object({
|
|
7174
|
+
"artifactKind": zod18.literal("image"),
|
|
7175
|
+
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7176
|
+
"cached": zod18.boolean(),
|
|
7177
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7178
|
+
"url": zod18.string().url(),
|
|
7179
|
+
"urlExpiresAt": zod18.string()
|
|
7180
|
+
}), zod18.object({
|
|
7181
|
+
"artifactKind": zod18.literal("motion"),
|
|
7182
|
+
"contentType": zod18.literal("video/webm"),
|
|
7183
|
+
"cached": zod18.boolean(),
|
|
7184
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7185
|
+
"url": zod18.string().url(),
|
|
7186
|
+
"urlExpiresAt": zod18.string()
|
|
7187
|
+
})]), zod18.object({
|
|
7188
|
+
"perCriterion": zod18.unknown().optional(),
|
|
7189
|
+
"composite": zod18.number(),
|
|
7190
|
+
"critique": zod18.string(),
|
|
7191
|
+
"checkpointId": zod18.string(),
|
|
7192
|
+
"beats": zod18.unknown().optional(),
|
|
7193
|
+
"clientScores": zod18.array(zod18.unknown()).optional(),
|
|
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."),
|
|
7075
7201
|
"error": zod18.object({
|
|
7076
7202
|
"code": zod18.string(),
|
|
7077
7203
|
"message": zod18.string()
|
|
@@ -7083,17 +7209,72 @@ var getJobResponse = zod18.object({
|
|
|
7083
7209
|
var cancelJobParams = zod18.object({
|
|
7084
7210
|
"jobId": zod18.string()
|
|
7085
7211
|
});
|
|
7212
|
+
var cancelJobResponseResultArtifactsItemLayersOverlaysMin = 0;
|
|
7086
7213
|
var cancelJobResponse = zod18.object({
|
|
7087
7214
|
"id": zod18.string().describe("Job id \u2014 pass to GET /v1/jobs/{id} / wait_job."),
|
|
7088
7215
|
"jobKey": zod18.string().describe("Deterministic identity of the work (idempotency key, e.g. `verify-<sessionId>-<contentHash>` \u2014 the hash covers the composition AND grading inputs). Re-enqueueing the same key returns the same job while it runs."),
|
|
7089
7216
|
"kind": zod18.string().describe("Job family, e.g. `verify`."),
|
|
7090
|
-
"status": zod18.enum(["running", "succeeded", "failed"]).describe("Poll until terminal (`succeeded` | `failed`)."),
|
|
7217
|
+
"status": zod18.enum(["running", "succeeded", "failed", "cancelled"]).describe("Poll until terminal (`succeeded` | `failed` | `cancelled`)."),
|
|
7091
7218
|
"progress": zod18.object({
|
|
7092
7219
|
"phase": zod18.string(),
|
|
7093
7220
|
"percent": zod18.number().optional(),
|
|
7094
7221
|
"message": zod18.string().optional()
|
|
7095
7222
|
}).nullable().describe("Executor heartbeat while running; null when none reported."),
|
|
7096
|
-
"result": zod18.
|
|
7223
|
+
"result": zod18.union([zod18.object({
|
|
7224
|
+
"geometry": zod18.object({
|
|
7225
|
+
"scale": zod18.number(),
|
|
7226
|
+
"compositionWidth": zod18.number().optional(),
|
|
7227
|
+
"compositionHeight": zod18.number().optional(),
|
|
7228
|
+
"width": zod18.number().optional(),
|
|
7229
|
+
"height": zod18.number().optional()
|
|
7230
|
+
}),
|
|
7231
|
+
"warnings": zod18.array(zod18.record(zod18.string(), zod18.unknown())).optional(),
|
|
7232
|
+
"previewed": zod18.object({
|
|
7233
|
+
"source": zod18.enum(["inline", "scratch", "persisted"]),
|
|
7234
|
+
"compositionId": zod18.string().optional(),
|
|
7235
|
+
"etag": zod18.string().optional()
|
|
7236
|
+
}),
|
|
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
|
+
}))
|
|
7250
|
+
}), zod18.union([zod18.object({
|
|
7251
|
+
"artifactKind": zod18.literal("image"),
|
|
7252
|
+
"contentType": zod18.enum(["image/png", "image/jpeg"]),
|
|
7253
|
+
"cached": zod18.boolean(),
|
|
7254
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7255
|
+
"url": zod18.string().url(),
|
|
7256
|
+
"urlExpiresAt": zod18.string()
|
|
7257
|
+
}), zod18.object({
|
|
7258
|
+
"artifactKind": zod18.literal("motion"),
|
|
7259
|
+
"contentType": zod18.literal("video/webm"),
|
|
7260
|
+
"cached": zod18.boolean(),
|
|
7261
|
+
"listUsd": zod18.number().optional().describe("List price charged for this delivered preview."),
|
|
7262
|
+
"url": zod18.string().url(),
|
|
7263
|
+
"urlExpiresAt": zod18.string()
|
|
7264
|
+
})]), zod18.object({
|
|
7265
|
+
"perCriterion": zod18.unknown().optional(),
|
|
7266
|
+
"composite": zod18.number(),
|
|
7267
|
+
"critique": zod18.string(),
|
|
7268
|
+
"checkpointId": zod18.string(),
|
|
7269
|
+
"beats": zod18.unknown().optional(),
|
|
7270
|
+
"clientScores": zod18.array(zod18.unknown()).optional(),
|
|
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."),
|
|
7097
7278
|
"error": zod18.object({
|
|
7098
7279
|
"code": zod18.string(),
|
|
7099
7280
|
"message": zod18.string()
|
|
@@ -7130,7 +7311,8 @@ var createMediaUploadBodySizeMax = 10737418240;
|
|
|
7130
7311
|
var createMediaUploadBody = zod19.object({
|
|
7131
7312
|
"filename": zod19.string().min(1).max(createMediaUploadBodyFilenameMax),
|
|
7132
7313
|
"contentType": zod19.enum(["video/mp4", "video/quicktime", "video/x-matroska", "video/webm", "audio/mpeg", "audio/wav", "audio/x-wav", "audio/mp4", "audio/aac", "image/png", "image/jpeg", "image/webp", "image/gif", "image/svg+xml", "application/json", "font/ttf", "font/otf", "font/woff", "font/woff2"]),
|
|
7133
|
-
"size": zod19.number().max(createMediaUploadBodySizeMax)
|
|
7314
|
+
"size": zod19.number().max(createMediaUploadBodySizeMax),
|
|
7315
|
+
"projectId": zod19.string().min(1).optional()
|
|
7134
7316
|
}).strict().describe("POST /media upload initiation body.");
|
|
7135
7317
|
var listMediaResponse = zod19.object({
|
|
7136
7318
|
"data": zod19.array(zod19.object({
|
|
@@ -7190,7 +7372,7 @@ var generateMediaBodyPromptMax = 1e4;
|
|
|
7190
7372
|
var generateMediaBody = zod19.object({
|
|
7191
7373
|
"generator": zod19.enum(["text-to-video", "text-to-image", "image-to-video", "text-to-music", "text-to-speech", "text-to-sfx", "auto"]),
|
|
7192
7374
|
"prompt": zod19.string().min(1).max(generateMediaBodyPromptMax),
|
|
7193
|
-
"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."),
|
|
7194
7376
|
"refs": zod19.object({
|
|
7195
7377
|
"firstFrameMediaId": zod19.string().optional(),
|
|
7196
7378
|
"lastFrameMediaId": zod19.string().optional(),
|
|
@@ -7252,13 +7434,43 @@ var getMediaResponse = zod19.object({
|
|
|
7252
7434
|
var getMediaTranscriptParams = zod19.object({
|
|
7253
7435
|
"id": zod19.string()
|
|
7254
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
|
+
});
|
|
7255
7446
|
var getMediaTranscriptResponse = zod19.object({
|
|
7256
7447
|
"mediaItemId": zod19.string(),
|
|
7257
7448
|
"language": zod19.string().nullable(),
|
|
7258
|
-
"model": zod19.string().nullable(),
|
|
7259
7449
|
"fullText": zod19.string(),
|
|
7260
|
-
"utterances": zod19.array(zod19.
|
|
7261
|
-
|
|
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(),
|
|
7262
7474
|
"pagination": zod19.object({
|
|
7263
7475
|
"hasMore": zod19.boolean(),
|
|
7264
7476
|
"nextCursor": zod19.string().nullable(),
|
|
@@ -7278,7 +7490,10 @@ var getMediaContextResponse = zod19.object({
|
|
|
7278
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."),
|
|
7279
7491
|
"faces": zod19.object({
|
|
7280
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."),
|
|
7281
7495
|
"windows": zod19.array(zod19.object({
|
|
7496
|
+
"detectorVersion": zod19.string().describe("Version of the face detector that produced this source-window roster."),
|
|
7282
7497
|
"window": zod19.object({
|
|
7283
7498
|
"startSec": zod19.number(),
|
|
7284
7499
|
"endSec": zod19.number()
|
|
@@ -7300,10 +7515,31 @@ var getMediaContextResponse = zod19.object({
|
|
|
7300
7515
|
"data": zod19.union([zod19.object({
|
|
7301
7516
|
"mediaItemId": zod19.string(),
|
|
7302
7517
|
"language": zod19.string().nullable(),
|
|
7303
|
-
"model": zod19.string().nullable(),
|
|
7304
7518
|
"fullText": zod19.string(),
|
|
7305
|
-
"utterances": zod19.array(zod19.
|
|
7306
|
-
|
|
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(),
|
|
7307
7543
|
"pagination": zod19.object({
|
|
7308
7544
|
"hasMore": zod19.boolean(),
|
|
7309
7545
|
"nextCursor": zod19.string().nullable(),
|
|
@@ -7332,13 +7568,11 @@ var getMediaContextResponse = zod19.object({
|
|
|
7332
7568
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7333
7569
|
"intent": zod19.object({
|
|
7334
7570
|
"kind": zod19.enum(["whole", "window"]),
|
|
7335
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7336
7571
|
"window": zod19.object({
|
|
7337
7572
|
"startSec": zod19.number(),
|
|
7338
7573
|
"endSec": zod19.number()
|
|
7339
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7574
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7340
7575
|
}),
|
|
7341
|
-
"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."),
|
|
7342
7576
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7343
7577
|
"summary": zod19.object({
|
|
7344
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."),
|
|
@@ -7387,13 +7621,11 @@ var listMediaFactsResponse = zod19.object({
|
|
|
7387
7621
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7388
7622
|
"intent": zod19.object({
|
|
7389
7623
|
"kind": zod19.enum(["whole", "window"]),
|
|
7390
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7391
7624
|
"window": zod19.object({
|
|
7392
7625
|
"startSec": zod19.number(),
|
|
7393
7626
|
"endSec": zod19.number()
|
|
7394
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7627
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7395
7628
|
}),
|
|
7396
|
-
"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."),
|
|
7397
7629
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7398
7630
|
"summary": zod19.object({
|
|
7399
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."),
|
|
@@ -7428,13 +7660,11 @@ var listMediaFactsResponse = zod19.object({
|
|
|
7428
7660
|
"kind": zod19.enum(["transcript", "subjectTrack", "matte"]),
|
|
7429
7661
|
"intent": zod19.object({
|
|
7430
7662
|
"kind": zod19.enum(["whole", "window"]),
|
|
7431
|
-
"hash": zod19.string().describe("The fact's cache key \u2014 stable for this (kind, window, producer)."),
|
|
7432
7663
|
"window": zod19.object({
|
|
7433
7664
|
"startSec": zod19.number(),
|
|
7434
7665
|
"endSec": zod19.number()
|
|
7435
|
-
}).optional().describe("The SOURCE window this fact covers
|
|
7666
|
+
}).optional().describe("The SOURCE window this fact covers, when it is scoped to a clip.")
|
|
7436
7667
|
}),
|
|
7437
|
-
"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."),
|
|
7438
7668
|
"status": zod19.enum(["pending", "ready", "failed"]),
|
|
7439
7669
|
"summary": zod19.object({
|
|
7440
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."),
|
|
@@ -7478,35 +7708,6 @@ var purchaseMediaFactBody = zod19.object({
|
|
|
7478
7708
|
"endSec": zod19.number()
|
|
7479
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.")
|
|
7480
7710
|
}).strict().describe("POST /media/:id/facts body.");
|
|
7481
|
-
var getMediaPerformanceParams = zod19.object({
|
|
7482
|
-
"id": zod19.string()
|
|
7483
|
-
});
|
|
7484
|
-
var getMediaPerformanceResponse = zod19.object({
|
|
7485
|
-
"media": zod19.object({
|
|
7486
|
-
"id": zod19.string(),
|
|
7487
|
-
"name": zod19.string(),
|
|
7488
|
-
"createdAt": zod19.string(),
|
|
7489
|
-
"fileSize": zod19.number(),
|
|
7490
|
-
"duration": zod19.number().nullable(),
|
|
7491
|
-
"status": zod19.string()
|
|
7492
|
-
}),
|
|
7493
|
-
"window": zod19.object({
|
|
7494
|
-
"startIso": zod19.string(),
|
|
7495
|
-
"endIso": zod19.string()
|
|
7496
|
-
}),
|
|
7497
|
-
"workflowCount": zod19.number(),
|
|
7498
|
-
"workflows": zod19.array(zod19.object({
|
|
7499
|
-
"name": zod19.string(),
|
|
7500
|
-
"startedAt": zod19.string(),
|
|
7501
|
-
"durationMs": zod19.number(),
|
|
7502
|
-
"activities": zod19.array(zod19.object({
|
|
7503
|
-
"name": zod19.string(),
|
|
7504
|
-
"startedAt": zod19.string(),
|
|
7505
|
-
"durationMs": zod19.number(),
|
|
7506
|
-
"service": zod19.string()
|
|
7507
|
-
}))
|
|
7508
|
-
}))
|
|
7509
|
-
}).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.");
|
|
7510
7711
|
var analyzeTranscriptParams = zod19.object({
|
|
7511
7712
|
"id": zod19.string()
|
|
7512
7713
|
});
|
|
@@ -7521,9 +7722,37 @@ var analyzeTranscriptBody = zod19.object({
|
|
|
7521
7722
|
}).strict().describe("One editorial question about a media item's transcript.");
|
|
7522
7723
|
var analyzeTranscriptResponse = zod19.object({
|
|
7523
7724
|
"task": zod19.enum(["summary", "chapters", "highlights"]).describe("Echo of the requested task \u2014 so a batched caller can pair answers to asks."),
|
|
7524
|
-
"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.")
|
|
7525
|
-
"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.")
|
|
7526
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.");
|
|
7727
|
+
var analyzeTimelineBodyWordsItemTextMax = 1e3;
|
|
7728
|
+
var analyzeTimelineBodyWordsItemTimelineStartMin = 0;
|
|
7729
|
+
var analyzeTimelineBodyWordsItemTimelineEndMin = 0;
|
|
7730
|
+
var analyzeTimelineBodyWordsItemClipIdMax = 256;
|
|
7731
|
+
var analyzeTimelineBodyWordsItemPoolItemIdMax = 256;
|
|
7732
|
+
var analyzeTimelineBodyWordsItemSourceStartMin = 0;
|
|
7733
|
+
var analyzeTimelineBodyWordsItemSourceEndMin = 0;
|
|
7734
|
+
var analyzeTimelineBodyWordsItemSpeakerIdMax = 256;
|
|
7735
|
+
var analyzeTimelineBodyWordsMax = 12e3;
|
|
7736
|
+
var analyzeTimelineBody = zod19.object({
|
|
7737
|
+
"words": zod19.array(zod19.object({
|
|
7738
|
+
"text": zod19.string().min(1).max(analyzeTimelineBodyWordsItemTextMax),
|
|
7739
|
+
"timelineStart": zod19.number().min(analyzeTimelineBodyWordsItemTimelineStartMin),
|
|
7740
|
+
"timelineEnd": zod19.number().min(analyzeTimelineBodyWordsItemTimelineEndMin),
|
|
7741
|
+
"clipId": zod19.string().min(1).max(analyzeTimelineBodyWordsItemClipIdMax),
|
|
7742
|
+
"poolItemId": zod19.string().min(1).max(analyzeTimelineBodyWordsItemPoolItemIdMax),
|
|
7743
|
+
"sourceStart": zod19.number().min(analyzeTimelineBodyWordsItemSourceStartMin),
|
|
7744
|
+
"sourceEnd": zod19.number().min(analyzeTimelineBodyWordsItemSourceEndMin),
|
|
7745
|
+
"speakerId": zod19.string().max(analyzeTimelineBodyWordsItemSpeakerIdMax).nullable()
|
|
7746
|
+
}).strict()).min(1).max(analyzeTimelineBodyWordsMax)
|
|
7747
|
+
}).strict().describe("A bounded merged timeline transcript for CueFrame edit analysis. The server selects the model; clients cannot provide a provider, API key, or model override.");
|
|
7748
|
+
var analyzeTimelineResponseFillersItemMin = 0;
|
|
7749
|
+
var analyzeTimelineResponseSilenceGapsItemMin = 0;
|
|
7750
|
+
var analyzeTimelineResponseEmphasisItemMin = 0;
|
|
7751
|
+
var analyzeTimelineResponse = zod19.object({
|
|
7752
|
+
"fillers": zod19.array(zod19.number().min(analyzeTimelineResponseFillersItemMin)),
|
|
7753
|
+
"silenceGaps": zod19.array(zod19.number().min(analyzeTimelineResponseSilenceGapsItemMin)),
|
|
7754
|
+
"emphasis": zod19.array(zod19.number().min(analyzeTimelineResponseEmphasisItemMin))
|
|
7755
|
+
}).describe("CueFrame-model analysis of timeline word indices. Every returned index refers to the request's words array.");
|
|
7527
7756
|
|
|
7528
7757
|
// ../sdk/src/generated/zod/projects/projects.ts
|
|
7529
7758
|
import * as zod20 from "zod";
|
|
@@ -7535,7 +7764,7 @@ var listProjectsResponse = zod20.object({
|
|
|
7535
7764
|
"description": zod20.string().nullable(),
|
|
7536
7765
|
"format": zod20.union([zod20.object({
|
|
7537
7766
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7538
|
-
"fps": zod20.union([zod20.
|
|
7767
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7539
7768
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7540
7769
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7541
7770
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7567,7 +7796,7 @@ var createProjectBody = zod20.object({
|
|
|
7567
7796
|
"description": zod20.string().optional(),
|
|
7568
7797
|
"format": zod20.object({
|
|
7569
7798
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7570
|
-
"fps": zod20.union([zod20.
|
|
7799
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7571
7800
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7572
7801
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
7573
7802
|
"brandKitId": zod20.string().min(1).optional(),
|
|
@@ -7584,7 +7813,7 @@ var getProjectResponse = zod20.object({
|
|
|
7584
7813
|
"description": zod20.string().nullable(),
|
|
7585
7814
|
"format": zod20.union([zod20.object({
|
|
7586
7815
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7587
|
-
"fps": zod20.union([zod20.
|
|
7816
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7588
7817
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7589
7818
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7590
7819
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7613,7 +7842,7 @@ var patchProjectBody = zod20.object({
|
|
|
7613
7842
|
"description": zod20.string().optional(),
|
|
7614
7843
|
"format": zod20.object({
|
|
7615
7844
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7616
|
-
"fps": zod20.union([zod20.
|
|
7845
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7617
7846
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7618
7847
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
7619
7848
|
"brandKitId": zod20.string().min(1).optional()
|
|
@@ -7625,7 +7854,7 @@ var patchProjectResponse = zod20.object({
|
|
|
7625
7854
|
"description": zod20.string().nullable(),
|
|
7626
7855
|
"format": zod20.union([zod20.object({
|
|
7627
7856
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7628
|
-
"fps": zod20.union([zod20.
|
|
7857
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7629
7858
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional()
|
|
7630
7859
|
}).describe("Output-format spec per \xA7Format."), zod20.null()]),
|
|
7631
7860
|
"brandKitId": zod20.string().nullable(),
|
|
@@ -7750,10 +7979,10 @@ var getProjectContextResponseMarkersItemStartTimeMin = 0;
|
|
|
7750
7979
|
var getProjectContextResponseMarkersItemEndTimeMin = 0;
|
|
7751
7980
|
var getProjectContextResponse = zod20.object({
|
|
7752
7981
|
"composition": zod20.union([zod20.object({
|
|
7753
|
-
"v": zod20.
|
|
7982
|
+
"v": zod20.literal(1),
|
|
7754
7983
|
"format": zod20.object({
|
|
7755
7984
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
7756
|
-
"fps": zod20.union([zod20.
|
|
7985
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
7757
7986
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional(),
|
|
7758
7987
|
"platform": zod20.string().optional()
|
|
7759
7988
|
}),
|
|
@@ -7853,6 +8082,11 @@ var getProjectContextResponse = zod20.object({
|
|
|
7853
8082
|
"kind": zod20.literal("effect"),
|
|
7854
8083
|
"primitiveId": zod20.string().min(1),
|
|
7855
8084
|
"params": zod20.record(zod20.string(), zod20.unknown()).optional()
|
|
8085
|
+
}), zod20.object({
|
|
8086
|
+
"kind": zod20.literal("alpha-layer"),
|
|
8087
|
+
"componentId": zod20.string().min(1),
|
|
8088
|
+
"props": zod20.record(zod20.string(), zod20.unknown()),
|
|
8089
|
+
"zPlane": zod20.enum(["front", "behind-subject"]).optional()
|
|
7856
8090
|
}), zod20.object({
|
|
7857
8091
|
"kind": zod20.literal("card"),
|
|
7858
8092
|
"html": zod20.string().min(1),
|
|
@@ -8017,7 +8251,7 @@ var getProjectContextResponse = zod20.object({
|
|
|
8017
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."),
|
|
8018
8252
|
"format": zod20.object({
|
|
8019
8253
|
"aspectRatio": zod20.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8020
|
-
"fps": zod20.union([zod20.
|
|
8254
|
+
"fps": zod20.union([zod20.literal(24), zod20.literal(25), zod20.literal(30), zod20.literal(60)]).optional(),
|
|
8021
8255
|
"resolution": zod20.enum(["hd", "fhd", "4k"]).optional(),
|
|
8022
8256
|
"platform": zod20.string().optional()
|
|
8023
8257
|
}).nullable().describe("The composition's format, hoisted \u2014 the pixel frame every card/graphic must be authored against. Null whenever `composition` is null."),
|
|
@@ -8025,7 +8259,7 @@ var getProjectContextResponse = zod20.object({
|
|
|
8025
8259
|
"id": zod20.string(),
|
|
8026
8260
|
"name": zod20.string(),
|
|
8027
8261
|
"kind": zod20.string().nullable(),
|
|
8028
|
-
"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)."),
|
|
8029
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).")
|
|
8030
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."),
|
|
8031
8265
|
"transcript": zod20.union([zod20.union([zod20.object({
|
|
@@ -8214,7 +8448,7 @@ var createRenderBody = zod21.object({
|
|
|
8214
8448
|
"compositionId": zod21.string().min(1).optional().describe("Target a specific composition in the project; defaults to the project's active composition."),
|
|
8215
8449
|
"format": zod21.object({
|
|
8216
8450
|
"aspectRatio": zod21.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8217
|
-
"fps": zod21.union([zod21.
|
|
8451
|
+
"fps": zod21.union([zod21.literal(24), zod21.literal(25), zod21.literal(30), zod21.literal(60)]).optional(),
|
|
8218
8452
|
"resolution": zod21.enum(["hd", "fhd", "4k"]).optional()
|
|
8219
8453
|
}).strict().optional().describe("Output-format spec per \xA7Format."),
|
|
8220
8454
|
"priority": zod21.enum(["interactive", "standard", "background"]).optional(),
|
|
@@ -8239,12 +8473,12 @@ var listProjectRendersResponse = zod21.object({
|
|
|
8239
8473
|
"outputUrl": zod21.string().nullable(),
|
|
8240
8474
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8241
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."),
|
|
8242
|
-
"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."),
|
|
8243
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`."),
|
|
8244
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`."),
|
|
8245
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`."),
|
|
8246
8480
|
"createdAt": zod21.string(),
|
|
8247
|
-
"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."),
|
|
8248
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."),
|
|
8249
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).")
|
|
8250
8484
|
}).describe("Render job response per \xA7Renders.")),
|
|
@@ -8281,12 +8515,12 @@ var getRenderResponse = zod21.object({
|
|
|
8281
8515
|
"outputUrl": zod21.string().nullable(),
|
|
8282
8516
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8283
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."),
|
|
8284
|
-
"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."),
|
|
8285
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`."),
|
|
8286
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`."),
|
|
8287
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`."),
|
|
8288
8522
|
"createdAt": zod21.string(),
|
|
8289
|
-
"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."),
|
|
8290
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."),
|
|
8291
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).")
|
|
8292
8526
|
}).describe("Render job response per \xA7Renders.");
|
|
@@ -8308,12 +8542,12 @@ var cancelRenderResponse = zod21.object({
|
|
|
8308
8542
|
"outputUrl": zod21.string().nullable(),
|
|
8309
8543
|
"outputExpiresAt": zod21.string().nullable(),
|
|
8310
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."),
|
|
8311
|
-
"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."),
|
|
8312
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`."),
|
|
8313
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`."),
|
|
8314
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`."),
|
|
8315
8549
|
"createdAt": zod21.string(),
|
|
8316
|
-
"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."),
|
|
8317
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."),
|
|
8318
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).")
|
|
8319
8553
|
}).describe("Render job response per \xA7Renders.");
|
|
@@ -8572,7 +8806,6 @@ var getMuxJobParams = zod24.object({
|
|
|
8572
8806
|
var getMuxJobResponse = zod24.object({
|
|
8573
8807
|
"jobId": zod24.string(),
|
|
8574
8808
|
"status": zod24.string(),
|
|
8575
|
-
"workflowId": zod24.string().optional(),
|
|
8576
8809
|
"muxedItems": zod24.record(zod24.string(), zod24.string()).nullish(),
|
|
8577
8810
|
"error": zod24.string().nullish(),
|
|
8578
8811
|
"startedAt": zod24.string().nullish(),
|
|
@@ -8719,23 +8952,24 @@ var createWorkspaceBody = zod28.object({
|
|
|
8719
8952
|
"videoUrl": zod28.string().url().max(createWorkspaceBodyVideoUrlMax),
|
|
8720
8953
|
"format": zod28.object({
|
|
8721
8954
|
"aspectRatio": zod28.enum(["16:9", "9:16", "1:1", "4:5"]),
|
|
8722
|
-
"fps": zod28.union([zod28.
|
|
8955
|
+
"fps": zod28.union([zod28.literal(24), zod28.literal(25), zod28.literal(30), zod28.literal(60)]).optional(),
|
|
8723
8956
|
"resolution": zod28.enum(["hd", "fhd", "4k"]).optional()
|
|
8724
8957
|
}).strict().optional().describe("Output-format spec per \xA7Format.")
|
|
8725
8958
|
}).strict();
|
|
8726
8959
|
|
|
8727
8960
|
// ../mcp/src/generated/operations.ts
|
|
8728
8961
|
var GENERATED_OPERATIONS = [
|
|
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 } },
|
|
8729
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 } },
|
|
8730
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 } },
|
|
8731
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 } },
|
|
8732
|
-
{ 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 } },
|
|
8733
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 } },
|
|
8734
|
-
{ 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 } },
|
|
8735
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 } },
|
|
8736
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 } },
|
|
8737
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 } },
|
|
8738
|
-
{ 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 } },
|
|
8739
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 } },
|
|
8740
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 } },
|
|
8741
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 } },
|
|
@@ -8753,7 +8987,7 @@ var GENERATED_OPERATIONS = [
|
|
|
8753
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 } },
|
|
8754
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 } },
|
|
8755
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 } },
|
|
8756
|
-
{ 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 } },
|
|
8757
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 } },
|
|
8758
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 } },
|
|
8759
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 } },
|
|
@@ -8762,11 +8996,11 @@ var GENERATED_OPERATIONS = [
|
|
|
8762
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 } },
|
|
8763
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 } },
|
|
8764
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 } },
|
|
8765
|
-
{ 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 } },
|
|
8766
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 } },
|
|
8767
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 } },
|
|
8768
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 } },
|
|
8769
|
-
{ 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 } },
|
|
8770
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 } },
|
|
8771
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 } },
|
|
8772
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 } },
|
|
@@ -8777,10 +9011,9 @@ var GENERATED_OPERATIONS = [
|
|
|
8777
9011
|
{ operationId: "getComposeSessionComposition", toolName: "cueframe_api_getComposeSessionComposition", title: "Get Compose Session Composition", method: "GET", pathTemplate: "/v1/projects/{id}/compose-session/{sessionId}/composition", pathParams: ["id", "sessionId"], bodyKey: null, description: "Read the session's scratch composition \u2014 Pure read: returns the composition currently held in the session's SCRATCH (what the author LLM has been editing over this session), NOT the project's active composition. The Director ensemble reads this back per candidate and returns it as the authored composition \u2014 the winner is saved downstream, so a candidate never commits its scratch to active. 404 when the session is unknown/foreign or has never written a scratch. \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 } },
|
|
8778
9012
|
{ operationId: "getComposition", toolName: "cueframe_api_getComposition", title: "Get Composition", method: "GET", pathTemplate: "/v1/projects/{id}/composition", pathParams: ["id"], bodyKey: null, description: "Get a project's composition \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 } },
|
|
8779
9013
|
{ operationId: "getExport", toolName: "cueframe_api_getExport", title: "Get Export", method: "GET", pathTemplate: "/v1/projects/{id}/exports/{exportId}", pathParams: ["id", "exportId"], bodyKey: null, description: "Get an export job \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 } },
|
|
8780
|
-
{ 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`), 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 } },
|
|
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 } },
|
|
8781
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 } },
|
|
8782
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 } },
|
|
8783
|
-
{ 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 } },
|
|
8784
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 } },
|
|
8785
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 } },
|
|
8786
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 } },
|
|
@@ -8796,7 +9029,7 @@ var GENERATED_OPERATIONS = [
|
|
|
8796
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 } },
|
|
8797
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 } },
|
|
8798
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 } },
|
|
8799
|
-
{ 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 } },
|
|
8800
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 } },
|
|
8801
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 } },
|
|
8802
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 } },
|
|
@@ -8809,18 +9042,17 @@ var GENERATED_OPERATIONS = [
|
|
|
8809
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 } },
|
|
8810
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 } },
|
|
8811
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 } },
|
|
8812
|
-
{ 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 } },
|
|
8813
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 } },
|
|
8814
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 } },
|
|
8815
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 } },
|
|
8816
9048
|
{ operationId: "listWebhooks", toolName: "cueframe_api_listWebhooks", title: "List Webhooks", method: "GET", pathTemplate: "/v1/webhooks", pathParams: [], bodyKey: null, description: "List webhook endpoints \u2014 Required permission: webhooks: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 } },
|
|
8817
9049
|
{ operationId: "newComposition", toolName: "cueframe_api_newComposition", title: "New Composition", method: "POST", pathTemplate: "/v1/projects/{id}/compositions", pathParams: ["id"], bodyKey: "newCompositionBody", description: "Create a new composition (video) in a project \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 } },
|
|
8818
|
-
{ operationId: "openComposeSession", toolName: "cueframe_api_openComposeSession", title: "Open Compose Session", method: "POST", pathTemplate: "/v1/projects/{id}/compose-session", pathParams: ["id"], bodyKey: "openComposeSessionBody", description: "Open
|
|
9050
|
+
{ operationId: "openComposeSession", toolName: "cueframe_api_openComposeSession", title: "Open Compose Session", method: "POST", pathTemplate: "/v1/projects/{id}/compose-session", pathParams: ["id"], bodyKey: "openComposeSessionBody", description: "Open an isolated scratch composition \u2014 Mint isolated scratch state for project authoring. This returns immediately and starts no sandbox or render provider; use /preview-frame-jobs and /score-composition for durable preview and verification work. The scratch closes automatically after its idle TTL or explicitly via DELETE. Optionally seed it from a supplied composition (seedComposition); a bodyless open derives from the project's active composition. \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 } },
|
|
8819
9051
|
{ operationId: "patchProject", toolName: "cueframe_api_patchProject", title: "Patch Project", method: "PATCH", pathTemplate: "/v1/projects/{id}", pathParams: ["id"], bodyKey: "patchProjectBody", description: "Update a project \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": false, "openWorldHint": false } },
|
|
8820
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 } },
|
|
8821
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 } },
|
|
8822
|
-
{ 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
|
|
8823
|
-
{ operationId: "
|
|
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 } },
|
|
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 } },
|
|
8824
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 } },
|
|
8825
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 } },
|
|
8826
9058
|
{ operationId: "putComposition", toolName: "cueframe_api_putComposition", title: "Put Composition", method: "PUT", pathTemplate: "/v1/projects/{id}/composition", pathParams: ["id"], bodyKey: "putCompositionBody", description: "Replace 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": true, "idempotentHint": true, "openWorldHint": false } },
|
|
@@ -8830,12 +9062,12 @@ var GENERATED_OPERATIONS = [
|
|
|
8830
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 } },
|
|
8831
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 } },
|
|
8832
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 } },
|
|
8833
|
-
{ 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 } },
|
|
8834
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 } },
|
|
8835
|
-
{ 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 } },
|
|
8836
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 } },
|
|
8837
|
-
{ 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
|
|
8838
|
-
{ 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 } },
|
|
8839
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 } },
|
|
8840
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 } },
|
|
8841
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 } },
|
|
@@ -8991,7 +9223,7 @@ async function fetchPreviews(urls, cap = 12, opts) {
|
|
|
8991
9223
|
return out;
|
|
8992
9224
|
}
|
|
8993
9225
|
function fmtErr(err) {
|
|
8994
|
-
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);
|
|
8995
9227
|
const advice = adviseError(err);
|
|
8996
9228
|
return advice ? `${head}
|
|
8997
9229
|
\u2192 ${advice}` : head;
|
|
@@ -9066,10 +9298,10 @@ function paymentRequiredResult(paymentRequired) {
|
|
|
9066
9298
|
structuredContent: paymentRequired
|
|
9067
9299
|
};
|
|
9068
9300
|
}
|
|
9069
|
-
async function dispatchOp(ex, op, mapArg, body, extra, label, formatOk) {
|
|
9301
|
+
async function dispatchOp(ex, op, mapArg, body, extra, label, formatOk, query) {
|
|
9070
9302
|
const paymentObj = extractPaymentFromMeta(extra?._meta);
|
|
9071
9303
|
const payment = paymentObj ? encodePaymentSignature(paymentObj) : void 0;
|
|
9072
|
-
const res = await invokeOp(ex, op, mapArg, body, payment);
|
|
9304
|
+
const res = await invokeOp(ex, op, mapArg, body, payment, query);
|
|
9073
9305
|
if (res.status === MCP_PAYMENT_REQUIRED_CODE) {
|
|
9074
9306
|
const parsed = safeParse(res.text);
|
|
9075
9307
|
if (isX402PaymentRequired(parsed)) return paymentRequiredResult(parsed);
|