@cueframe/kernel 0.2.41 → 0.2.42
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/component-runtime/contracts.d.ts +19 -0
- package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
- package/dist/_members/composition/floors/clips.d.ts +18 -0
- package/dist/_members/composition/floors/cohesionFloors.d.ts +31 -0
- package/dist/_members/composition/floors/craftFloors.d.ts +86 -0
- package/dist/_members/composition/floors/index.d.ts +24 -0
- package/dist/_members/composition/floors/occlusionFloor.d.ts +160 -0
- package/dist/_members/composition/floors/staticHold.d.ts +103 -0
- package/dist/_members/composition/floors/types.d.ts +52 -0
- package/dist/_members/composition/scene/introspection.d.ts +15 -0
- package/dist/_members/composition/scene/schema.d.ts +2 -8
- package/dist/_members/errors/registry.d.ts +6 -0
- package/dist/animate/preparation-facts.js +2 -2
- package/dist/animate.js +3 -3
- package/dist/authoring/scene.js +2 -2
- package/dist/authoring.js +2 -2
- package/dist/{chunk-JBWSK2YD.js → chunk-2PU2TSUG.js} +2 -2
- package/dist/{chunk-TE3PNQG6.js → chunk-4B4V3HYW.js} +6 -6
- package/dist/{chunk-WAUVKF2F.js → chunk-5ZQLMPDY.js} +1 -1
- package/dist/{chunk-C7TTI7FP.js → chunk-62VTAA6O.js} +1 -1
- package/dist/chunk-BUK4P6AW.js +571 -0
- package/dist/{chunk-XACXNDFL.js → chunk-CL5Y6V6K.js} +18 -16
- package/dist/{chunk-JRJQECCF.js → chunk-CZOVEX2D.js} +1 -1
- package/dist/{chunk-L5XECASW.js → chunk-D72CKEOC.js} +9 -9
- package/dist/{chunk-GA6NRDK3.js → chunk-DQRJJ2YN.js} +3 -1
- package/dist/{chunk-JNOM4FW3.js → chunk-J53SGAWP.js} +1 -1
- package/dist/{chunk-5NGYBI5Z.js → chunk-JX7NKSJP.js} +1 -1
- package/dist/{chunk-4MK6YGKV.js → chunk-N2OZDD44.js} +4 -1
- package/dist/{chunk-BLDL2EKL.js → chunk-P472GIBJ.js} +8 -563
- package/dist/{chunk-5BAWOULP.js → chunk-PCCVZYAF.js} +2 -2
- package/dist/{chunk-CJF3KBJ5.js → chunk-RO57QD5M.js} +4 -4
- package/dist/{chunk-QHLCJ3PE.js → chunk-UAOTQSS3.js} +4 -4
- package/dist/{chunk-ZVG446DJ.js → chunk-UGYYZBG4.js} +2 -0
- package/dist/{chunk-OBA6NW4S.js → chunk-XV2K3AQT.js} +1 -1
- package/dist/component-runtime/browserOptions.js +3 -3
- package/dist/component-runtime/contracts.js +3 -1
- package/dist/component-runtime/importPolicy.js +2 -2
- package/dist/component-runtime/render.js +5 -5
- package/dist/component-runtime/sourceAdmission.js +2 -2
- package/dist/component-runtime.js +9 -7
- package/dist/compose.js +15 -15
- package/dist/composition/floors.d.ts +1 -0
- package/dist/composition/floors.js +517 -0
- package/dist/composition/scene.js +1 -1
- package/dist/composition-ops.js +3 -3
- package/dist/core/render.js +3 -3
- package/dist/core.js +3 -3
- package/dist/mcp/adapter.js +2 -2
- package/dist/mcp/core.js +1 -1
- package/dist/mcp/scene-shot.d.ts +1 -0
- package/dist/mcp/scene-shot.js +18 -0
- package/dist/mcp/server.js +4 -3
- package/dist/mcp.js +4 -3
- package/dist/primitives/captions.js +3 -3
- package/dist/primitives/effects.js +4 -4
- package/dist/primitives/hero-text.js +2 -2
- package/dist/primitives/layouts.js +4 -4
- package/dist/primitives/lib/index.js +8 -8
- package/dist/primitives/lib.js +8 -8
- package/dist/primitives/scenes.js +5 -5
- package/dist/primitives/text.js +2 -2
- package/dist/primitives.js +13 -13
- package/dist/render-harness.js +10 -10
- package/package.json +17 -9
- package/dist/{chunk-RL5SO653.js → chunk-7SQOXIWR.js} +3 -3
- package/dist/{chunk-RBWS5XHE.js → chunk-X34KW2SL.js} +4 -4
|
@@ -3,14 +3,6 @@ import {
|
|
|
3
3
|
buildEasedZooms,
|
|
4
4
|
buildPannedCenters
|
|
5
5
|
} from "./chunk-QH3YI3ND.js";
|
|
6
|
-
import {
|
|
7
|
-
flattenCompoundClips,
|
|
8
|
-
hasCompoundClips
|
|
9
|
-
} from "./chunk-QISFYLBB.js";
|
|
10
|
-
import {
|
|
11
|
-
compositionHasVo,
|
|
12
|
-
roleDefaultGainDb
|
|
13
|
-
} from "./chunk-VZ7TYX6Z.js";
|
|
14
6
|
import {
|
|
15
7
|
DOMINANCE_WEIGHTS,
|
|
16
8
|
ENTER_SEC,
|
|
@@ -29,6 +21,14 @@ import {
|
|
|
29
21
|
segmentShots,
|
|
30
22
|
stabilizeSelectionHysteresis
|
|
31
23
|
} from "./chunk-IYZEK6WY.js";
|
|
24
|
+
import {
|
|
25
|
+
flattenCompoundClips,
|
|
26
|
+
hasCompoundClips
|
|
27
|
+
} from "./chunk-QISFYLBB.js";
|
|
28
|
+
import {
|
|
29
|
+
compositionHasVo,
|
|
30
|
+
roleDefaultGainDb
|
|
31
|
+
} from "./chunk-VZ7TYX6Z.js";
|
|
32
32
|
import {
|
|
33
33
|
SHOT_SCALE_TARGET,
|
|
34
34
|
shotScaleZoom
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
sceneFullMipLevels,
|
|
52
52
|
sceneTextureBytes,
|
|
53
53
|
selectSceneBakeScale
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-CL5Y6V6K.js";
|
|
55
55
|
import {
|
|
56
56
|
SCENE_CONTEXT_GL_BUDGET_BYTES,
|
|
57
57
|
SCENE_MAX_TRIANGLES,
|
|
@@ -8404,6 +8404,7 @@ var UsageListResponse = zod200.strictObject({
|
|
|
8404
8404
|
// ../sdk/src/generated/zod/models/validateComposition200.zod.ts
|
|
8405
8405
|
import * as zod201 from "zod";
|
|
8406
8406
|
var ValidateComposition200 = zod201.strictObject({
|
|
8407
|
+
"contract": zod201.string().describe("The contract this verdict was computed against (the kernel version the deployment runs). If it differs between two calls, the validator changed, not your composition."),
|
|
8407
8408
|
"valid": zod201.boolean(),
|
|
8408
8409
|
"errors": zod201.array(zod201.strictObject({
|
|
8409
8410
|
"code": zod201.string(),
|
|
@@ -8831,6 +8832,7 @@ var DeriveCompositionBody = DeriveCompositionRequest;
|
|
|
8831
8832
|
var DeriveCompositionResponseSchema = DeriveCompositionResponse;
|
|
8832
8833
|
var ValidateCompositionBody = Composition;
|
|
8833
8834
|
var ValidateCompositionResponse = zod221.object({
|
|
8835
|
+
"contract": zod221.string().describe("The contract this verdict was computed against (the kernel version the deployment runs). If it differs between two calls, the validator changed, not your composition."),
|
|
8834
8836
|
"valid": zod221.boolean(),
|
|
8835
8837
|
"errors": zod221.array(zod221.object({
|
|
8836
8838
|
"code": zod221.string(),
|
|
@@ -9373,7 +9375,7 @@ var GENERATED_OPERATIONS = [
|
|
|
9373
9375
|
{ operationId: "triggerSubjectDetection", toolName: "cueframe_api_triggerSubjectDetection", title: "Trigger Subject Detection", method: "POST", pathTemplate: "/v1/media/{id}/detect-subjects", pathParams: ["id"], queryParams: [{ "name": "detector", "required": false, "description": "Which detector to run. Defaults to `face`; an unknown value is refused, never defaulted.", "style": "form", "explode": true, "allowReserved": false, "schema": { "type": "string", "enum": ["face", "person"] } }], bodyKey: null, description: "Trigger standalone subject/face detection \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 }, outputSchema: { "type": "object", "properties": { "factId": { "type": "string", "description": "Opaque identifier for the derived fact." }, "status": { "type": "string", "description": "State of the fact right now. `ready` with `alreadyExisted` means the detection was already computed and is available immediately.", "enum": ["pending", "ready", "failed"] }, "quotedUsd": { "type": "number", "description": "The server's price for this detection, in USD, quoted from the source duration. Zero is charged when `alreadyExisted` is true." }, "alreadyExisted": { "type": "boolean", "description": "True when this exact detection was already pending or ready. Nothing was dispatched and nothing will be charged \u2014 the same fact is served twice for one price." } }, "additionalProperties": true } },
|
|
9374
9376
|
{ operationId: "updateBrief", toolName: "cueframe_api_updateBrief", title: "Update Brief", method: "PATCH", pathTemplate: "/v1/briefs/{id}", pathParams: ["id"], queryParams: [], bodyKey: "updateBriefBody", description: "Edit a brief \u2014 Partial update. While an ACTIVE compose job references this brief the edit is refused (409 conflict) \u2014 finish, resume, or abandon the job first; the Director never has its input edited out from under it. \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 }, outputSchema: { "type": "object", "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "kind": { "type": "string", "description": "authored = create_brief; clip = minted by suggest_briefs from an AI clip suggestion.", "enum": ["authored", "clip"] }, "sourceSuggestionId": { "type": "string", "description": "kind:'clip' provenance \u2014 the suggestion this Brief was minted from." }, "name": { "type": "string" }, "goal": { "type": "string", "description": "What the video must accomplish." }, "audience": { "type": "string" }, "platform": { "type": "string" }, "format": { "type": "object", "description": "Output-format spec per \xA7Format." }, "durationSec": { "type": "number", "description": "Target output duration. HONOR-OR-REFUSE: compose validates it against the beat-source window (\xB11.5s) and refuses a brief it cannot honor." }, "tone": { "type": "string" }, "cta": { "type": "string" }, "locale": { "type": "string", "description": "Output language (BCP-47 tag, e.g. 'es-419'): ALL on-screen copy + captions." }, "hook": { "type": "string" }, "caption": { "type": "string" }, "beats": { "type": "array" }, "mustIncludes": { "type": "array" }, "references": { "type": "array" }, "captions": { "type": "object" }, "motionStyle": { "type": "object" }, "seededGraphics": { "type": "array", "description": "Client-authored graphic clips the Director must carry VERBATIM: seeded into the design loop's base composition as LOCKED clips (never re-authored, never discarded)." }, "exclusions": { "type": "array" }, "gates": { "type": "object" }, "audio": { "type": "object" }, "quote": { "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "additionalProperties": true } },
|
|
9375
9377
|
{ operationId: "updateComponent", toolName: "cueframe_api_updateComponent", title: "Update Component", method: "PUT", pathTemplate: "/v1/components/{id}", pathParams: ["id"], queryParams: [], bodyKey: "updateComponentBody", description: "Update an authored component \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 }, outputSchema: { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "source": { "type": "string", "description": "'default' = built-in primitive (place by primitiveId); 'installed' = org-authored component (place by componentId).", "enum": ["default", "installed"] }, "category": { "type": "string", "enum": ["text", "effects", "transitions", "layouts", "backgrounds", "ui-blocks", "scenes"] }, "kind": { "type": "string", "description": "RENDER kind (component | transition | scene). NOT the ClipSource variant \u2014 see `placement` for how to author it on the timeline.", "enum": ["component", "transition", "scene"] }, "version": { "type": "string" }, "propSchema": { "type": "object" }, "propDefaults": { "type": "object" }, "textParam": { "type": ["string", "null"], "description": "The param field that carries this primitive's primary text; null = no single text slot." }, "subtextParam": { "type": ["string", "null"], "description": "The param field for secondary text (subtitle/byline); null = none." }, "format": { "type": "object" }, "durationInFrames": { "type": "number" }, "intent": { "type": "string", "description": "Selection signal: a verb naming what this primitive accomplishes (e.g. 'product-trailer'). Match it to the beat you are authoring." }, "useWhen": { "type": "string", "description": "When to use this \u2014 AND when not to. The negative guidance is load-bearing; read it before picking." }, "pairsWith": { "type": "array", "description": "Authoring guidance: ids of primitives that COMPOSE well with this one in the same edit." }, "avoidWith": { "type": "array", "description": "Authoring guidance: ids of primitives that CONFLICT with this one \u2014 do not place together." }, "tags": { "type": "array", "description": "Free-text search keywords." }, "mood": { "type": "array", "description": "Vibe/tone tags (e.g. 'cinematic', 'minimal'). Filter to match the edit's mood." }, "tier": { "type": "string", "description": "Quality/applicability RANKING (a preference, not a flag). Prefer 'recommended'; reach for 'niche' only when its specific use-case is exactly the beat.", "enum": ["recommended", "standard", "niche"] }, "useCase": { "type": "array", "description": "The edit ROLE(s) this primitive fills \u2014 the dimension to filter by for a beat (e.g. 'intro', 'title-over-footage', 'grade')." }, "examples": { "type": "array" }, "fixedCopy": { "type": "array", "description": "On-screen strings this primitive BAKES \u2014 the read-side counterpart to propSchema. These literals render REGARDLESS of params (no param can change them); fork the source via get_component_source to edit them. Use this to see at author time what fixed copy (someone-else's marketing text, faux-code, faux-data) will appear before you render." }, "brandBindings": { "type": "array", "description": "Params that can follow the project brand kit. Each {param, brandToken} says: set `param` to `brandToken` (a `$brand:` ref, e.g. '$brand:colors.accent') to track the brand instead of a literal. See the list response's `brandTokens` for the full ref vocabulary. Omitted when nothing is brand-bound." }, "placement": { "type": "object" }, "warnings": { "type": "array", "description": "Non-blocking save-time advisories \u2014 the create/update SUCCEEDED. Currently: a `fontFamily` string literal referencing a NON-vendored font (a bare CSS generic like 'serif', or an unknown named family like 'Arial') whose LIVE-lane pixels vary by render host \u2014 re-author with a vendored family or 'Georgia'. Omitted when there is nothing to flag; only present on the create/update responses." } }, "additionalProperties": true } },
|
|
9376
|
-
{ operationId: "validateComposition", toolName: "cueframe_api_validateComposition", title: "Validate Composition", method: "POST", pathTemplate: "/v1/composition/validate", pathParams: [], queryParams: [], bodyKey: "validateCompositionBody", description: "Validate a composition body without saving it (dry-run) \u2014 Dry-run the FULL save-time authoring guard set against a Composition body WITHOUT persisting it and without a project. Runs the same pure, DB-free guards saveComposition enforces \u2014 wire shape, primitive membership (unknown_primitive / custom_missing_sourcecode), required-param shape (invalid_primitive_params), clip\u2194track family (clip_source_track_mismatch), reframe coverage (reframe_coverage_gap), and font admission (font_not_reproducible: a caption/param face that is neither bundled nor sealed in a brand font asset) \u2014 and returns ONE shape, `200 { valid, errors[] }`, for BOTH wire-shape and deep-invariant failures (no 400-vs-200 split). `valid:false` lists every authoring error (sanitized envelopes) to fix before save/render. The ONLY checks NOT run here are the two DB-bound ones \u2014 trim-bounds (media duration) and image/asset-on-video-track (media kind) \u2014 which can only be caught at save/render. \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 }, outputSchema: { "type": "object", "properties": { "valid": { "type": "boolean" }, "errors": { "type": "array" }, "advisories": { "type": "array", "description": "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)." }, "warnings": { "type": "array", "description": "Non-blocking render-fidelity warnings detected before enqueue, including unavailable font families." }, "quote": { "type": "object", "description": "The A2 money triple for the commodity lane: validate is free; estimatedJourneyTotalUsd is the render price to finish from a valid composition \u2014 relay it BEFORE create_render." } }, "additionalProperties": true } },
|
|
9378
|
+
{ operationId: "validateComposition", toolName: "cueframe_api_validateComposition", title: "Validate Composition", method: "POST", pathTemplate: "/v1/composition/validate", pathParams: [], queryParams: [], bodyKey: "validateCompositionBody", description: "Validate a composition body without saving it (dry-run) \u2014 Dry-run the FULL save-time authoring guard set against a Composition body WITHOUT persisting it and without a project. Runs the same pure, DB-free guards saveComposition enforces \u2014 wire shape, primitive membership (unknown_primitive / custom_missing_sourcecode), required-param shape (invalid_primitive_params), clip\u2194track family (clip_source_track_mismatch), reframe coverage (reframe_coverage_gap), and font admission (font_not_reproducible: a caption/param face that is neither bundled nor sealed in a brand font asset) \u2014 and returns ONE shape, `200 { valid, errors[] }`, for BOTH wire-shape and deep-invariant failures (no 400-vs-200 split). `valid:false` lists every authoring error (sanitized envelopes) to fix before save/render. The ONLY checks NOT run here are the two DB-bound ones \u2014 trim-bounds (media duration) and image/asset-on-video-track (media kind) \u2014 which can only be caught at save/render. \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 }, outputSchema: { "type": "object", "properties": { "contract": { "type": "string", "description": "The contract this verdict was computed against (the kernel version the deployment runs). If it differs between two calls, the validator changed, not your composition." }, "valid": { "type": "boolean" }, "errors": { "type": "array" }, "advisories": { "type": "array", "description": "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)." }, "warnings": { "type": "array", "description": "Non-blocking render-fidelity warnings detected before enqueue, including unavailable font families." }, "quote": { "type": "object", "description": "The A2 money triple for the commodity lane: validate is free; estimatedJourneyTotalUsd is the render price to finish from a valid composition \u2014 relay it BEFORE create_render." } }, "additionalProperties": true } },
|
|
9377
9379
|
{ operationId: "verifyWebhook", toolName: "cueframe_api_verifyWebhook", title: "Verify Webhook", method: "POST", pathTemplate: "/v1/webhooks/{id}/verify", pathParams: ["id"], queryParams: [], bodyKey: null, description: 'Re-run webhook ownership verification \u2014 Re-send the signed `webhook.verify` ownership challenge to a PENDING webhook\'s url and, if the endpoint now echoes `data.token` in a 2xx, flip it active \u2014 IN PLACE (id + secret preserved; no delete/recreate). Use it to recover after fixing a receiver that failed the challenge at create time. An already-verified webhook returns `status:"active"` unchanged (idempotent). Returns the same `{ status, verification? }` shape as create. \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 }, outputSchema: { "type": "object", "properties": { "id": { "type": "string" }, "status": { "type": "string", "description": "active = ownership verified + receiving events; pending = challenge not echoed.", "enum": ["active", "pending"] }, "verification": { "type": "object", "description": "Present only when the re-challenge did not verify; `reason` names why (see WebhookCreateResponse.verification)." } }, "additionalProperties": true } },
|
|
9378
9380
|
{ operationId: "whoami", toolName: "cueframe_api_whoami", title: "Whoami", method: "GET", pathTemplate: "/v1/whoami", pathParams: [], queryParams: [], bodyKey: null, description: "Return the caller identity + permissions \u2014 Echoes the `orgId`, `permissions`, and key metadata derived from the Authorization header (or x402 payment). Useful for SDKs to confirm which org a key is bound to and what permissions it carries. \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 }, outputSchema: { "type": "object", "properties": { "orgId": { "type": "string" }, "permissions": { "type": "object" }, "keyId": { "type": "string" }, "keyName": { "type": "string" } }, "additionalProperties": true } }
|
|
9379
9381
|
];
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
sceneShotImageSlots,
|
|
9
9
|
sceneShotVideoSlots,
|
|
10
10
|
sceneSpecIssues
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CL5Y6V6K.js";
|
|
12
12
|
|
|
13
13
|
// ../authoring/src/scene/validate.ts
|
|
14
14
|
var SceneAuthoringError = class extends Error {
|
|
@@ -337,6 +337,9 @@ async function materializeSceneOpsCore(composition, ops, deps) {
|
|
|
337
337
|
if (error.opIndex === void 0) error.opIndex = i;
|
|
338
338
|
throw error;
|
|
339
339
|
}
|
|
340
|
+
if (error instanceof Error && typeof error.code === "string") {
|
|
341
|
+
throw error;
|
|
342
|
+
}
|
|
340
343
|
throw new SceneAuthoringError(
|
|
341
344
|
"scene_materialization_failed",
|
|
342
345
|
"scene",
|