@imgly/codesign-mcp 0.1.7 → 0.1.9-next.20260720172141.gfa485d7

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.
Files changed (215) hide show
  1. package/README.md +36 -2
  2. package/assets/docs/api/SKILL.md +24 -22
  3. package/assets/docs/api/index.d.ts +138 -11
  4. package/assets/docs/guide/SKILL.md +4 -4
  5. package/assets/docs/guide/api/BlockAPI.md +77 -0
  6. package/assets/docs/guide/api/node/classes/blockapi.md +154 -0
  7. package/assets/docs/guide/api/node/classes/creativeengine.md +13 -13
  8. package/assets/docs/guide/api/node/interfaces/assetfacetvalue.md +23 -0
  9. package/assets/docs/guide/api/node/interfaces/assetquerydata.md +1 -0
  10. package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +1 -0
  11. package/assets/docs/guide/api/node/interfaces/configuration.md +1 -1
  12. package/assets/docs/guide/api/node/type-aliases/assetfacetpath.md +22 -0
  13. package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +3 -3
  14. package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +1 -2
  15. package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +2 -0
  16. package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +2 -1
  17. package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +2 -1
  18. package/assets/docs/guide/api/node/type-aliases/transitiontype.md +24 -0
  19. package/assets/docs/guide/api/node/type-aliases/transitiontypelonghand.md +21 -0
  20. package/assets/docs/guide/api/node/type-aliases/transitiontypeshorthand.md +18 -0
  21. package/assets/docs/guide/api/node/variables/transition_types.md +21 -0
  22. package/assets/docs/guide/api/node.md +347 -0
  23. package/assets/docs/guide/api/types.md +1 -1
  24. package/assets/docs/guide/colors/apply.md +1 -1
  25. package/assets/docs/guide/colors/basics.md +1 -1
  26. package/assets/docs/guide/concepts/assets.md +69 -3
  27. package/assets/docs/guide/concepts/blocks.md +1 -1
  28. package/assets/docs/guide/concepts/error-catalog.md +1000 -0
  29. package/assets/docs/guide/concepts/terminology.md +1 -1
  30. package/assets/docs/guide/concepts.md +1 -0
  31. package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +1 -1
  32. package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +1 -1
  33. package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +1 -1
  34. package/assets/docs/guide/create-templates/add-dynamic-content.md +1 -1
  35. package/assets/docs/guide/edit-image/transform/scale.md +1 -3
  36. package/assets/docs/guide/{filters-and-effects/gradients.md → fills/gradient.md} +1 -1
  37. package/assets/docs/guide/fills.md +2 -2
  38. package/assets/docs/guide/filters-and-effects/duotone.md +1 -1
  39. package/assets/docs/guide/get-started/agent-skills.md +74 -15
  40. package/assets/docs/guide/get-started/build-with-ai.md +9 -2
  41. package/assets/docs/guide/get-started/bun.md +0 -2
  42. package/assets/docs/guide/get-started/cesdk-plugin-coding-agents.md +101 -0
  43. package/assets/docs/guide/get-started/deno.md +0 -1
  44. package/assets/docs/guide/get-started/mcp-server.md +1 -1
  45. package/assets/docs/guide/get-started/overview.md +0 -1
  46. package/assets/docs/guide/get-started/vanilla.md +0 -2
  47. package/assets/docs/guide/import-media/default-assets.md +21 -25
  48. package/assets/docs/guide/llms-txt.md +1 -1
  49. package/assets/docs/guide/outlines/strokes.md +1 -1
  50. package/assets/docs/guide/plugins/print-ready-pdf.md +0 -2
  51. package/assets/docs/guide/serve-assets.md +80 -23
  52. package/assets/docs/guide/text/edit.md +1 -0
  53. package/assets/docs/handbook/SKILL.md +116 -30
  54. package/dist/assets/inline.generated.d.ts.map +1 -1
  55. package/dist/assets/inline.generated.js +54 -45
  56. package/dist/assets/inline.generated.js.map +1 -1
  57. package/dist/cli/http.d.ts.map +1 -1
  58. package/dist/cli/http.js +25 -5
  59. package/dist/cli/http.js.map +1 -1
  60. package/dist/cli/stdio.d.ts.map +1 -1
  61. package/dist/cli/stdio.js +57 -16
  62. package/dist/cli/stdio.js.map +1 -1
  63. package/dist/cli/trial-license.generated.d.ts +1 -1
  64. package/dist/cli/trial-license.generated.js +1 -1
  65. package/dist/cli/trial-license.generated.js.map +1 -1
  66. package/dist/config.d.ts +6 -0
  67. package/dist/config.d.ts.map +1 -1
  68. package/dist/config.js +8 -0
  69. package/dist/config.js.map +1 -1
  70. package/dist/diagnostics/bundle.d.ts +3 -0
  71. package/dist/diagnostics/bundle.d.ts.map +1 -1
  72. package/dist/diagnostics/bundle.js +25 -22
  73. package/dist/diagnostics/bundle.js.map +1 -1
  74. package/dist/diagnostics/prompt.d.ts +3 -0
  75. package/dist/diagnostics/prompt.d.ts.map +1 -0
  76. package/dist/diagnostics/prompt.js +21 -0
  77. package/dist/diagnostics/prompt.js.map +1 -0
  78. package/dist/diagnostics/router.d.ts +12 -0
  79. package/dist/diagnostics/router.d.ts.map +1 -0
  80. package/dist/diagnostics/router.js +64 -0
  81. package/dist/diagnostics/router.js.map +1 -0
  82. package/dist/diagnostics/spa-assets.generated.d.ts +2 -0
  83. package/dist/diagnostics/spa-assets.generated.d.ts.map +1 -0
  84. package/dist/diagnostics/spa-assets.generated.js +1231 -0
  85. package/dist/diagnostics/spa-assets.generated.js.map +1 -0
  86. package/dist/diagnostics/status.d.ts +39 -0
  87. package/dist/diagnostics/status.d.ts.map +1 -0
  88. package/dist/diagnostics/status.js +65 -0
  89. package/dist/diagnostics/status.js.map +1 -0
  90. package/dist/diagnostics/summary.d.ts +48 -0
  91. package/dist/diagnostics/summary.d.ts.map +1 -0
  92. package/dist/diagnostics/summary.js +116 -0
  93. package/dist/diagnostics/summary.js.map +1 -0
  94. package/dist/diagnostics/tool.d.ts +16 -0
  95. package/dist/diagnostics/tool.d.ts.map +1 -0
  96. package/dist/diagnostics/tool.js +90 -0
  97. package/dist/diagnostics/tool.js.map +1 -0
  98. package/dist/engine/asset-sources.d.ts +8 -0
  99. package/dist/engine/asset-sources.d.ts.map +1 -1
  100. package/dist/engine/asset-sources.js +9 -2
  101. package/dist/engine/asset-sources.js.map +1 -1
  102. package/dist/engine/engine-capacity.js +2 -2
  103. package/dist/engine/engine-capacity.js.map +1 -1
  104. package/dist/engine/engine-slots.d.ts.map +1 -1
  105. package/dist/engine/engine-slots.js +30 -16
  106. package/dist/engine/engine-slots.js.map +1 -1
  107. package/dist/engine/uri-resolver.js.map +1 -1
  108. package/dist/features.d.ts +7 -0
  109. package/dist/features.d.ts.map +1 -0
  110. package/dist/features.js +45 -0
  111. package/dist/features.js.map +1 -0
  112. package/dist/frontmatter.d.ts +12 -0
  113. package/dist/frontmatter.d.ts.map +1 -0
  114. package/dist/frontmatter.js +42 -0
  115. package/dist/frontmatter.js.map +1 -0
  116. package/dist/gateway/local.js +1 -1
  117. package/dist/gateway/local.js.map +1 -1
  118. package/dist/http/server.d.ts +0 -1
  119. package/dist/http/server.d.ts.map +1 -1
  120. package/dist/http/server.js +0 -1
  121. package/dist/http/server.js.map +1 -1
  122. package/dist/index.d.ts +1 -1
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js.map +1 -1
  125. package/dist/server.d.ts +51 -3
  126. package/dist/server.d.ts.map +1 -1
  127. package/dist/server.js +77 -60
  128. package/dist/server.js.map +1 -1
  129. package/dist/skill-prompts.d.ts +3 -0
  130. package/dist/skill-prompts.d.ts.map +1 -0
  131. package/dist/skill-prompts.js +76 -0
  132. package/dist/skill-prompts.js.map +1 -0
  133. package/dist/skill-tool.d.ts +34 -0
  134. package/dist/skill-tool.d.ts.map +1 -0
  135. package/dist/skill-tool.js +207 -0
  136. package/dist/skill-tool.js.map +1 -0
  137. package/dist/tools/edit.d.ts.map +1 -1
  138. package/dist/tools/edit.js +21 -4
  139. package/dist/tools/edit.js.map +1 -1
  140. package/dist/tools/engine.d.ts +89 -14
  141. package/dist/tools/engine.d.ts.map +1 -1
  142. package/dist/tools/engine.js +143 -33
  143. package/dist/tools/engine.js.map +1 -1
  144. package/dist/tools/export.d.ts +7 -0
  145. package/dist/tools/export.d.ts.map +1 -1
  146. package/dist/tools/export.js +201 -32
  147. package/dist/tools/export.js.map +1 -1
  148. package/dist/tools/history.js +1 -1
  149. package/dist/tools/history.js.map +1 -1
  150. package/dist/tools/import.d.ts +2 -0
  151. package/dist/tools/import.d.ts.map +1 -1
  152. package/dist/tools/import.js +79 -24
  153. package/dist/tools/import.js.map +1 -1
  154. package/dist/tools/index.d.ts +6 -0
  155. package/dist/tools/index.d.ts.map +1 -1
  156. package/dist/tools/index.js +8 -5
  157. package/dist/tools/index.js.map +1 -1
  158. package/dist/tools/list.d.ts.map +1 -1
  159. package/dist/tools/list.js +8 -2
  160. package/dist/tools/list.js.map +1 -1
  161. package/dist/tools/load.d.ts.map +1 -1
  162. package/dist/tools/load.js +26 -19
  163. package/dist/tools/load.js.map +1 -1
  164. package/dist/tools/media-sniff.d.ts +14 -0
  165. package/dist/tools/media-sniff.d.ts.map +1 -0
  166. package/dist/tools/media-sniff.js +80 -0
  167. package/dist/tools/media-sniff.js.map +1 -0
  168. package/dist/tools/preview.d.ts +2 -0
  169. package/dist/tools/preview.d.ts.map +1 -1
  170. package/dist/tools/preview.js +280 -63
  171. package/dist/tools/preview.js.map +1 -1
  172. package/dist/tools/save.d.ts.map +1 -1
  173. package/dist/tools/save.js +18 -1
  174. package/dist/tools/save.js.map +1 -1
  175. package/dist/tools/telemetry-wrapper.js +2 -2
  176. package/dist/tools/telemetry-wrapper.js.map +1 -1
  177. package/dist/tools/{open-editor.d.ts → view.d.ts} +3 -3
  178. package/dist/tools/view.d.ts.map +1 -0
  179. package/dist/tools/{open-editor.js → view.js} +20 -18
  180. package/dist/tools/view.js.map +1 -0
  181. package/dist/viewer/cesdk-cdn.d.ts +21 -6
  182. package/dist/viewer/cesdk-cdn.d.ts.map +1 -1
  183. package/dist/viewer/cesdk-cdn.js +26 -7
  184. package/dist/viewer/cesdk-cdn.js.map +1 -1
  185. package/dist/viewer/listener.d.ts +2 -0
  186. package/dist/viewer/listener.d.ts.map +1 -1
  187. package/dist/viewer/listener.js +2 -0
  188. package/dist/viewer/listener.js.map +1 -1
  189. package/dist/viewer/presigned-r2-url-builder.d.ts +1 -1
  190. package/dist/viewer/presigned-r2-url-builder.js +1 -1
  191. package/dist/viewer/presigned-r2-url-builder.js.map +1 -1
  192. package/dist/viewer/router.d.ts.map +1 -1
  193. package/dist/viewer/router.js +11 -18
  194. package/dist/viewer/router.js.map +1 -1
  195. package/dist/viewer/session-mount.js.map +1 -1
  196. package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
  197. package/dist/viewer/spa-assets.generated.js +757 -869
  198. package/dist/viewer/spa-assets.generated.js.map +1 -1
  199. package/dist/viewer/url-builder.d.ts +4 -3
  200. package/dist/viewer/url-builder.d.ts.map +1 -1
  201. package/dist/viewer/url-builder.js +4 -4
  202. package/dist/viewer/url-builder.js.map +1 -1
  203. package/package.json +6 -5
  204. package/dist/cross-ref.d.ts +0 -2
  205. package/dist/cross-ref.d.ts.map +0 -1
  206. package/dist/cross-ref.js +0 -31
  207. package/dist/cross-ref.js.map +0 -1
  208. package/dist/skill-tools.d.ts +0 -3
  209. package/dist/skill-tools.d.ts.map +0 -1
  210. package/dist/skill-tools.js +0 -105
  211. package/dist/skill-tools.js.map +0 -1
  212. package/dist/tools/open-editor.d.ts.map +0 -1
  213. package/dist/tools/open-editor.js.map +0 -1
  214. /package/assets/docs/guide/{create-video → create-audio}/audio/adjust-speed.md +0 -0
  215. /package/assets/docs/guide/{create-video → create-audio}/audio/adjust-volume.md +0 -0
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # @imgly/codesign-mcp
2
2
 
3
3
  MCP server exposing a CE.SDK CreativeEngine for vector design + print-quality
4
- PDF output. Ships skills (Iris design loop, cesdk-api signatures, cesdk-guide
5
- docs), tools (`design_exec`, `design_capture`), and prompts as MCP resources.
4
+ PDF output. Ships a single `skill` tool (read + search over an embedded
5
+ handbook / api / guide catalog), per-skill MCP prompts surfaced as slash
6
+ commands, and the design/workspace tools (`edit`, `preview`, `export`,
7
+ `list`, `history`, …).
6
8
 
7
9
  ## Install
8
10
 
@@ -23,6 +25,16 @@ for the exact per-host snippets — all spawn
23
25
  Set `CESDK_LICENSE` in the server's `env` to use your own CE.SDK node license;
24
26
  during the internal beta a 30-day trial is bundled, so it's optional.
25
27
 
28
+ ### Development builds (`@next`)
29
+
30
+ The newest not-yet-released build is continuously published under the `next`
31
+ dist-tag. It may be less stable than a release, but it's the fastest way to try
32
+ what's coming:
33
+
34
+ ```bash
35
+ claude mcp add codesign-next -- npx -y @imgly/codesign-mcp@next stdio
36
+ ```
37
+
26
38
  ### Offline / air-gapped install
27
39
 
28
40
  Fetch the published package as a self-contained tarball on a connected machine,
@@ -135,6 +147,28 @@ sessions over `max-sessions` get `503 Service Unavailable` with `Retry-After: 30
135
147
 
136
148
  Stdio mode uses a single engine for the lifetime of the process.
137
149
 
150
+ ### Long-running exports (video)
151
+
152
+ Video is **opt-in**: set `IMGLY_FEATURE_VIDEO=on` to enable video export,
153
+ video/audio import, and the handbook's video guidance (all hidden by default
154
+ while cross-platform video encoding stabilizes). With the flag on and no
155
+ explicit `IMGLY_CESDK_ENGINE`, the server picks the native engine
156
+ automatically — video cannot encode on the WASM engine.
157
+
158
+ Video export holds the engine for the whole encode and can run for minutes.
159
+ The server reports MCP progress while encoding:
160
+
161
+ - **Claude Code** shows the progress and keeps the call alive — progress
162
+ resets its idle timeout (30 min on stdio by default), so no configuration
163
+ is needed.
164
+ - **Codex CLI** kills tool calls after **300 s** regardless of progress.
165
+ Raise the per-server timeout in `config.toml` before exporting video:
166
+
167
+ ```toml
168
+ [mcp_servers.codesign]
169
+ tool_timeout_sec = 1800
170
+ ```
171
+
138
172
  ## Embedding
139
173
 
140
174
  The HTTP server is also exposed as a programmatic factory for callers that
@@ -1,14 +1,15 @@
1
1
  ---
2
2
  name: api
3
3
  description: |
4
- Authoritative TypeScript signatures for the CE.SDK CreativeEngine. Use this skill
5
- whenever you need the exact signature, parameter types, or return type of an
6
- `engine.*` method — especially before calling a method you haven't used in the
7
- current scene, or when the markdown docs in `cesdk-guide` are ambiguous.
4
+ Authoritative TypeScript signatures for the CE.SDK CreativeEngine. Use this
5
+ skill whenever you need the exact signature, parameter types, or return type
6
+ of an `engine.*` method — especially before calling a method you haven't
7
+ used yet. This is THE source of truth for signatures: the `.d.ts` it wraps
8
+ ships with the same `@cesdk/node` package the engine runs, while prose docs
9
+ (the `guide` skill) can drift.
8
10
 
9
- This is THE source of truth for method signatures. The hand-written cheatsheets
10
- in SYSTEM.md and the markdown docs in `cesdk-guide` can drift; this `.d.ts`
11
- ships with the same `@cesdk/node` package the engine runs.
11
+ The entry document is an overview; pass path: "index.d.ts" for the full
12
+ type definition file (~9000 lines) and slice it with offset/limit.
12
13
 
13
14
  Triggered when you need to verify an `engine.block.*` or `engine.scene.*`
14
15
  signature, look up a parameter type, or confirm an enum/string-property name.
@@ -17,26 +18,27 @@ description: |
17
18
  ## Single file: `index.d.ts`
18
19
 
19
20
  The whole CE.SDK TypeScript surface is in `index.d.ts` (~9000 lines). Use
20
- `read --offset --limit` to fetch the slice you need; never read the whole file.
21
+ `path: "index.d.ts"` with `offset`/`limit` to fetch the slice you need; never
22
+ read the whole file.
21
23
 
22
24
  ## Line anchors
23
25
 
24
- The most-used classes are at known line offsets. Pass these directly to `read`:
26
+ The most-used classes are at known line offsets. Pass these directly:
25
27
 
26
- | Class | Start line | Read example |
27
- | ------------ | ---------- | ------------------------------------------------- |
28
- | AssetAPI | 260 | `read path=… offset=260 limit=200` |
29
- | **BlockAPI** | **1421** | `read path=… offset=1421 limit=400` (largest API) |
30
- | EditorAPI | 6300 | `read path=… offset=6300 limit=300` |
31
- | EventAPI | 7382 | `read path=… offset=7382 limit=200` |
32
- | **SceneAPI** | **8114** | `read path=… offset=8114 limit=300` |
33
- | VariableAPI | 9531 | `read path=… offset=9531 limit=100` |
28
+ | Class | Start line | Read example |
29
+ | ------------ | ---------- | -------------------------------------- |
30
+ | AssetAPI | 260 | `offset=260, limit=200` |
31
+ | **BlockAPI** | **1421** | `offset=1421, limit=400` (largest API) |
32
+ | EditorAPI | 6300 | `offset=6300, limit=300` |
33
+ | EventAPI | 7382 | `offset=7382, limit=200` |
34
+ | **SceneAPI** | **8114** | `offset=8114, limit=300` |
35
+ | VariableAPI | 9531 | `offset=9531, limit=100` |
34
36
 
35
37
  ## How to look up a method
36
38
 
37
39
  1. Identify which class owns it (e.g. `engine.block.setFont` → BlockAPI).
38
- 2. `grep pattern="setFont\\(" path="**/skills/cesdk-api/index.d.ts" maxResults=5`
39
- 3. `read path=… offset=<grep-line - 5> limit=30` to get the JSDoc + signature.
40
+ 2. `skill({ name: 'api', query: 'setFont(' })` — matches come back as `index.d.ts:<line>: …`.
41
+ 3. `skill({ name: 'api', path: 'index.d.ts', offset: <match-line - 5>, limit: 30 })` to get the JSDoc + signature.
40
42
 
41
43
  The JSDoc above each method tells you the canonical usage and lists `@param`
42
44
  types. When a method has multiple overloads, prefer the one without
@@ -44,6 +46,6 @@ types. When a method has multiple overloads, prefer the one without
44
46
 
45
47
  ## When to NOT use this skill
46
48
 
47
- - Reading conceptual prose ("how does XYZ work") → use `cesdk-guide` instead.
48
- - General topic guides (text, fills, export, rules) → `cesdk-guide`.
49
- - This skill is signatures only — use `cesdk-guide` for everything else.
49
+ - Reading conceptual prose ("how does XYZ work") → use the `guide` skill instead.
50
+ - General topic guides (text, fills, export, rules) → use the `guide` skill instead.
51
+ - This skill is signatures only — use the `guide` skill for everything else.
@@ -893,6 +893,28 @@ export declare interface AssetEnumProperty {
893
893
  options: string[];
894
894
  }
895
895
 
896
+ /**
897
+ * Property paths that can be faceted — the facetable subset of
898
+ * `AssetPropertyPath`. `label` and `id` are excluded because their
899
+ * cardinality is unbounded.
900
+ * @public
901
+ */
902
+ export declare type AssetFacetPath = 'tags' | 'groups' | `meta.${string}`;
903
+
904
+ /**
905
+ * One bucket of a facet distribution.
906
+ * @public
907
+ */
908
+ export declare interface AssetFacetValue {
909
+ /** Raw value exactly as stored on the assets (no casing or locale normalization). */
910
+ value: string;
911
+ /**
912
+ * Number of matched assets carrying this value. Always set by local
913
+ * sources; custom sources may omit it when counting is expensive.
914
+ */
915
+ count?: number;
916
+ }
917
+
896
918
  /**
897
919
  * Filter expression — predicate or logical combinator. Combinators nest
898
920
  * arbitrarily. The union is mutually exclusive: an object with both
@@ -1037,10 +1059,10 @@ export declare type AssetProperty = AssetBooleanProperty | AssetColorProperty |
1037
1059
  * substring) or `equals` (case-insensitive equality) must be set — the
1038
1060
  * type forbids passing both or neither. On a string-array property
1039
1061
  * (`tags`, `groups`), the operator matches if any element matches.
1062
+ * `meta.<key>` values are flat strings, compared whole.
1040
1063
  *
1041
- * `meta.<key>` values are flat strings in the engine; if a meta value
1042
- * was originally serialized as a number or boolean, stringify it the
1043
- * same way before comparing.
1064
+ * If a meta value was originally serialized as a number or boolean,
1065
+ * stringify it the same way before comparing.
1044
1066
  * @public
1045
1067
  */
1046
1068
  export declare type AssetPropertyFilter = {
@@ -1055,8 +1077,7 @@ export declare type AssetPropertyFilter = {
1055
1077
 
1056
1078
  /**
1057
1079
  * Dot-path against the resolved asset that a property predicate targets:
1058
- * `label`, `id`, `tags`, `groups`, or `meta.<key>` (one segment — meta
1059
- * values in the engine are flat strings).
1080
+ * `label`, `id`, `tags`, `groups`, or `meta.<key>` (one segment).
1060
1081
  *
1061
1082
  * The template literal accepts `'meta.'` (empty key) because TypeScript's
1062
1083
  * `${string}` includes the empty string; the engine rejects this at
@@ -1139,6 +1160,13 @@ export declare interface AssetQueryData {
1139
1160
  * ```
1140
1161
  */
1141
1162
  filter?: AssetFilter[];
1163
+ /**
1164
+ * Facet distributions to compute over the matched (pre-pagination) set,
1165
+ * e.g. to populate filter dropdowns. Local sources compute facets
1166
+ * automatically; custom sources may fulfill any subset of the request.
1167
+ * Combine with `perPage: 0` to enumerate values without fetching assets.
1168
+ */
1169
+ facets?: AssetFacetPath[];
1142
1170
  }
1143
1171
 
1144
1172
  /**
@@ -1300,6 +1328,16 @@ export declare interface AssetsQueryResult<T extends AssetResult = AssetResult>
1300
1328
  nextPage?: number;
1301
1329
  /** How many assets are there in total for the current query regardless of the page */
1302
1330
  total: number;
1331
+ /**
1332
+ * Distributions for the requested facet paths, keyed by the exact
1333
+ * requested path string. Ordered by count descending, ties by value
1334
+ * ascending. A missing key signals the
1335
+ * source did not compute that facet. Absent entirely when no facets
1336
+ * were requested or none were computed.
1337
+ */
1338
+ facets?: {
1339
+ [path: string]: AssetFacetValue[];
1340
+ };
1303
1341
  }
1304
1342
 
1305
1343
  /**
@@ -6271,6 +6309,62 @@ export declare class BlockAPI {
6271
6309
  * @returns The "out" animation of the block.
6272
6310
  */
6273
6311
  getOutAnimation(id: DesignBlockId): DesignBlockId;
6312
+ /**
6313
+ * Creates a new transition block.
6314
+ *
6315
+ * The created block is standalone until assigned to a clip with `setTransition`.
6316
+ * Once assigned, it is owned by that clip: it is destroyed together with the
6317
+ * clip, and the engine also destroys it automatically when the two clips stop
6318
+ * being timeline-adjacent on the track (e.g. after a manual gap is introduced).
6319
+ *
6320
+ * @category Block Transitions
6321
+ * @param type - The type of transition to create.
6322
+ * @returns The handle of the new transition instance.
6323
+ */
6324
+ createTransition(type: TransitionType): DesignBlockId;
6325
+ /**
6326
+ * Checks whether a clip can own an outgoing clip-to-clip transition.
6327
+ *
6328
+ * Only leaf clips inside a video track qualify. Audio, group, caption, and
6329
+ * cutout blocks — as well as blocks outside a video track — report `false`.
6330
+ *
6331
+ * @category Block Transitions
6332
+ * @param id - The clip block to check.
6333
+ * @returns Whether the block can own an outgoing transition.
6334
+ */
6335
+ supportsTransition(id: DesignBlockId): boolean;
6336
+ /**
6337
+ * Assigns the outgoing transition of a clip.
6338
+ *
6339
+ * A previously assigned transition block is detached but not destroyed
6340
+ * automatically. Throws an error if the given transition block is invalid or
6341
+ * already assigned to another clip. Both the clip and its following clip on
6342
+ * the track must support transitions, see `supportsTransition`. To clear a
6343
+ * clip's transition, use `removeTransition` instead.
6344
+ *
6345
+ * @category Block Transitions
6346
+ * @param id - The outgoing clip that owns the transition relation.
6347
+ * @param transition - The transition block to assign.
6348
+ */
6349
+ setTransition(id: DesignBlockId, transition: DesignBlockId): void;
6350
+ /**
6351
+ * Removes the outgoing transition of a clip.
6352
+ *
6353
+ * The removed transition block is detached but not destroyed automatically.
6354
+ * Removing from a clip without an assigned transition is a no-op.
6355
+ *
6356
+ * @category Block Transitions
6357
+ * @param id - The outgoing clip whose transition relation should be cleared.
6358
+ */
6359
+ removeTransition(id: DesignBlockId): void;
6360
+ /**
6361
+ * Gets the outgoing transition assigned to a clip.
6362
+ *
6363
+ * @category Block Transitions
6364
+ * @param id - The outgoing clip whose transition relation should be queried.
6365
+ * @returns The assigned transition block, or an invalid block if unset.
6366
+ */
6367
+ getTransition(id: DesignBlockId): DesignBlockId;
6274
6368
  /**
6275
6369
  * Updates a pixel stream fill block with a new pixel buffer.
6276
6370
  *
@@ -6556,7 +6650,7 @@ export declare type BlurTypeShorthand = (typeof BLUR_TYPES)[number];
6556
6650
  export declare type BooleanOperation = 'Difference' | 'Intersection' | 'Union' | 'XOR';
6557
6651
 
6558
6652
  /** @public */
6559
- export declare type BoolPropertyName = 'alwaysOnBottom' | 'alwaysOnTop' | 'clipped' | 'flip/horizontal' | 'flip/vertical' | 'highlightEnabled' | 'includedInExport' | 'placeholder/enabled' | 'playback/playing' | 'playback/soloPlaybackEnabled' | 'scene/aspectRatioLock' | 'scene/extendedPanningArea' | 'selected' | 'selectionEnabled' | 'transformLocked' | 'visible' | 'blur/enabled' | 'dropShadow/clip' | 'dropShadow/enabled' | 'fill/enabled' | 'fill/overprint' | 'page/guides/gridEnabled' | 'page/guides/gridSnapEnabled' | 'page/marginEnabled' | 'placeholderControls/showButton' | 'placeholderControls/showOverlay' | 'playback/looping' | 'playback/muted' | 'stroke/enabled' | 'stroke/overprint' | 'backgroundColor/enabled' | 'placeholderBehavior/enabled' | 'text/automaticFontSizeEnabled' | 'text/clipLinesOutsideOfFrame' | 'text/hasClippedLines' | 'text/pathFlipped' | 'text/useContextualLigatures' | 'text/useDiscretionaryLigatures' | 'text/useKerning' | 'text/useLigatures' | 'track/automaticallyManageBlockOffsets' | 'caption/automaticFontSizeEnabled' | 'caption/clipLinesOutsideOfFrame' | 'caption/hasClippedLines' | 'caption/pathFlipped' | 'caption/useContextualLigatures' | 'caption/useDiscretionaryLigatures' | 'caption/useKerning' | 'caption/useLigatures' | 'captionTrack/automaticallyManageBlockOffsets' | 'animation/slide/fade' | 'animation/pan/fade' | 'animation/blur/fade' | 'animation/zoom/fade' | 'animation/crop_zoom/fade' | 'animation/spin/fade' | 'animation/block_swipe_text/useTextColor' | 'animation/spread_text/fade' | 'animation/ken_burns/fade' | 'effect/enabled' | (string & {});
6653
+ export declare type BoolPropertyName = 'alwaysOnBottom' | 'alwaysOnTop' | 'clipped' | 'flip/horizontal' | 'flip/vertical' | 'highlightEnabled' | 'includedInExport' | 'placeholder/enabled' | 'playback/playing' | 'playback/soloPlaybackEnabled' | 'scene/aspectRatioLock' | 'scene/extendedPanningArea' | 'selected' | 'selectionEnabled' | 'transformLocked' | 'visible' | 'blur/enabled' | 'dropShadow/clip' | 'dropShadow/enabled' | 'fill/enabled' | 'fill/overprint' | 'page/guides/gridEnabled' | 'page/guides/gridSnapEnabled' | 'page/marginEnabled' | 'placeholderControls/showButton' | 'placeholderControls/showOverlay' | 'playback/looping' | 'playback/muted' | 'stroke/enabled' | 'stroke/overprint' | 'backgroundColor/enabled' | 'placeholderBehavior/enabled' | 'text/automaticFontSizeEnabled' | 'text/clipLinesOutsideOfFrame' | 'text/hasClippedLines' | 'text/pathFlipped' | 'text/useContextualAlternates' | 'text/useContextualLigatures' | 'text/useDiscretionaryLigatures' | 'text/useKerning' | 'text/useLigatures' | 'track/automaticallyManageBlockOffsets' | 'caption/automaticFontSizeEnabled' | 'caption/clipLinesOutsideOfFrame' | 'caption/hasClippedLines' | 'caption/pathFlipped' | 'caption/useContextualAlternates' | 'caption/useContextualLigatures' | 'caption/useDiscretionaryLigatures' | 'caption/useKerning' | 'caption/useLigatures' | 'captionTrack/automaticallyManageBlockOffsets' | 'animation/slide/fade' | 'animation/pan/fade' | 'animation/blur/fade' | 'animation/zoom/fade' | 'animation/crop_zoom/fade' | 'animation/spin/fade' | 'animation/block_swipe_text/useTextColor' | 'animation/spread_text/fade' | 'animation/ken_burns/fade' | 'effect/enabled' | (string & {});
6560
6654
 
6561
6655
  /**
6562
6656
  * Represents a buffer of data.
@@ -6884,16 +6978,20 @@ declare class CreativeEngine {
6884
6978
  * - `'ly.img.filter.duotone'` - Color effects of various kinds
6885
6979
  *
6886
6980
  * These assets are parsed at \{\{base_url\}\}/<id>/content.json, where
6887
- * `base_url` defaults to the IMG.LY CDN.
6981
+ * `base_url` defaults to the engine's configured baseURL. For `@cesdk/node`
6982
+ * that is the local package (`file://<pkg>/assets/`), which does not bundle
6983
+ * these sources, so pass a `baseURL` to load them.
6888
6984
  * Each source is created via `addLocalSource` and populated with the parsed assets. To modify the available
6889
6985
  * assets, you may either exclude certain IDs via `excludeAssetSourceIds` or alter the sources after creation.
6890
6986
  *
6987
+ * @deprecated This method uses legacy v4 asset source IDs and will be removed in a future version.
6988
+ * Please migrate to v5 asset sources using engine.asset.addLocalAssetSourceFromJSONURI().
6891
6989
  * @category Asset Sources
6892
6990
  * @param options - Configuration options for loading default asset sources.
6893
6991
  * @returns A promise that resolves when all asset sources are loaded.
6894
6992
  */
6895
6993
  addDefaultAssetSources({ baseURL, excludeAssetSourceIds }?: {
6896
- /** The source of the asset definitions, must be absolute. Defaults to IMG.LY CDN. */
6994
+ /** The source of the asset definitions, must be absolute. Defaults to the engine's configured baseURL. */
6897
6995
  baseURL?: string;
6898
6996
  /** A list of IDs, that will be ignored during load. */
6899
6997
  excludeAssetSourceIds?: DefaultAssetSourceId[];
@@ -6911,12 +7009,14 @@ declare class CreativeEngine {
6911
7009
  * - `'ly.img.video'` - Sample videos
6912
7010
  * - `'ly.img.video.upload'` - Demo source to upload video assets
6913
7011
  *
7012
+ * @deprecated This method uses legacy v3 demo asset source IDs and will be removed in a future version.
7013
+ * Please migrate to v4 asset sources using engine.asset.addLocalAssetSourceFromJSONURI().
6914
7014
  * @category Asset Sources
6915
7015
  * @param options - Configuration options for loading demo asset sources.
6916
7016
  * @returns A promise that resolves when all demo asset sources are loaded.
6917
7017
  */
6918
7018
  addDemoAssetSources({ baseURL, excludeAssetSourceIds, sceneMode, withUploadAssetSources }?: {
6919
- /** The source of the demo asset definitions, must be absolute. Defaults to IMG.LY CDN. */
7019
+ /** The source of the demo asset definitions, must be absolute. Defaults to the engine's configured baseURL. */
6920
7020
  baseURL?: string;
6921
7021
  /** A list of IDs, that will be ignored during load */
6922
7022
  excludeAssetSourceIds?: DemoAssetSourceId[];
@@ -8599,6 +8699,8 @@ declare interface FindAssetsQuery {
8599
8699
  sortKey: string;
8600
8700
  sortActiveFirst: boolean;
8601
8701
  filter: AssetFilter[];
8702
+ /** Facet paths crossing the binding boundary as plain path strings. */
8703
+ facets: AssetFacetPath[];
8602
8704
  }
8603
8705
 
8604
8706
  /**
@@ -8964,14 +9066,14 @@ export declare type ObjectType = ObjectTypeShorthand | ObjectTypeLonghand;
8964
9066
  * engine when calling `cesdk.engine.block.getType(blockId)` for example.
8965
9067
  * @public
8966
9068
  */
8967
- export declare type ObjectTypeLonghand = DesignBlockTypeLonghand | ShapeTypeLonghand | FillTypeLonghand | EffectTypeLonghand | BlurTypeLonghand | AnimationTypeLonghand;
9069
+ export declare type ObjectTypeLonghand = DesignBlockTypeLonghand | ShapeTypeLonghand | FillTypeLonghand | EffectTypeLonghand | BlurTypeLonghand | AnimationTypeLonghand | TransitionTypeLonghand;
8968
9070
 
8969
9071
  /**
8970
9072
  * The shorthand block type IDs for all blocks types in the Creative Engine. Those are the types that can be
8971
9073
  * passed to `cesdk.engine.block.findByType(type)` for example.
8972
9074
  * @public
8973
9075
  */
8974
- export declare type ObjectTypeShorthand = DesignBlockTypeShorthand | `shape/${ShapeTypeShorthand}` | `fill/${FillTypeShorthand}` | `effect/${EffectTypeShorthand}` | `blur/${BlurTypeShorthand}` | `animation/${AnimationTypeShorthand}`;
9076
+ export declare type ObjectTypeShorthand = DesignBlockTypeShorthand | `shape/${ShapeTypeShorthand}` | `fill/${FillTypeShorthand}` | `effect/${EffectTypeShorthand}` | `blur/${BlurTypeShorthand}` | `animation/${AnimationTypeShorthand}` | `transition/${TransitionTypeShorthand}`;
8975
9077
 
8976
9078
  /** @public */
8977
9079
  export declare type OptionalPrefix<T extends string> = `ubq://${T}` | T;
@@ -10577,6 +10679,31 @@ export declare interface TransientResource {
10577
10679
  size: number;
10578
10680
  }
10579
10681
 
10682
+ /**
10683
+ * The shorthand block type IDs for the transition blocks. These are the IDs used to create new transitions
10684
+ * using `cesdk.engine.block.createTransition(id)`.
10685
+ * @public
10686
+ */
10687
+ export declare const TRANSITION_TYPES: readonly ["none", "cross-fade", "cross-blur", "cross-spin", "cross-zoom", "cross-warp", "push", "slide", "stack", "splice", "diagonal-splice", "fade", "fade-to-white", "fade-to-black", "color-wipe", "line-wipe", "wipe", "clock-wipe", "chop", "gradient-fade", "two-stripes"];
10688
+
10689
+ /**
10690
+ * The block type IDs for the transition blocks. These are the IDs used to create new transitions
10691
+ * using `cesdk.engine.block.createTransition(id)`.
10692
+ * Refer to {@link TransitionTypeShorthand} and {@link TransitionTypeLonghand} for more details.
10693
+ * @public
10694
+ */
10695
+ export declare type TransitionType = TransitionTypeShorthand | TransitionTypeLonghand;
10696
+
10697
+ /**
10698
+ * The longhand block type IDs for the transition blocks. These are the IDs used to create new transitions
10699
+ * using `cesdk.engine.block.createTransition(id)`.
10700
+ * @public
10701
+ */
10702
+ export declare type TransitionTypeLonghand = `//ly.img.ubq/transition/${TransitionTypeShorthand}`;
10703
+
10704
+ /** @public */
10705
+ export declare type TransitionTypeShorthand = (typeof TRANSITION_TYPES)[number];
10706
+
10580
10707
  /** Typeface definition */
10581
10708
  export declare interface Typeface {
10582
10709
  name: string;
@@ -25,9 +25,9 @@ argument-hint: "[search-topic]"
25
25
 
26
26
  ## Version Notice
27
27
 
28
- > **CE.SDK version**: 1.77.0 | **Generated**: 2026-07-02
28
+ > **CE.SDK version**: 1.79.0-rc.0 | **Generated**: 2026-07-17
29
29
  >
30
- > This skill was generated for CE.SDK v1.77.0 on 2026-07-02.
30
+ > This skill was generated for CE.SDK v1.79.0-rc.0 on 2026-07-17.
31
31
  > CE.SDK releases new versions approximately every two weeks.
32
32
  > If the current date is more than 6 weeks after the generation date above,
33
33
  > this skill is likely outdated. **Inform the user** that a newer version
@@ -54,7 +54,7 @@ argument-hint: "[search-topic]"
54
54
 
55
55
  ## Documentation Index
56
56
 
57
- <-- IMGLY-AGENTS-MD-START -->[CE.SDK Node.js Docs Index]|root: .|IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any CE.SDK tasks. Consult the local docs directory before using pre-trained knowledge.|animation:{create,edit.md,types.md}|animation/create:{base.md,text.md}|api:{node}|api/node:{classes,enumerations,functions,interfaces,type-aliases,variables}|api-reference:{overview.md}|automation:{auto-resize.md,data-merge.md,design-generation.md,multi-image-generation.md,overview.md}|capabilities.md|colors:{adjust.md,apply.md,basics.md,conversion.md,create-color-palette.md,extract-colors.md,for-print,for-screen,overview.md,replace.md}|colors/for-print:{cmyk.md,spot.md}|colors/for-screen:{p3.md,srgb.md}|compatibility.md|concepts:{architecture.md,assets.md,blocks.md,buffers.md,design-units.md,editing-workflow.md,events.md,headless-mode.md,pages.md,resources.md,scenes.md,templating.md,terminology.md,undo-and-history.md}|configuration.md|conversion:{overview.md,to-base64.md,to-pdf.md,to-png.md}|create-audio:{audio}|create-audio/audio:{add-music.md,add-sound-effects.md,loop.md}|create-composition:{add-background.md,blend-modes.md,collage.md,group-and-ungroup.md,layer-management.md,layout.md,lock-design.md,multi-page.md,overview.md,programmatic.md}|create-templates:{add-dynamic-content,add-to-template-library.md,edit-or-remove.md,from-scratch.md,import,lock.md,overview.md}|create-templates/add-dynamic-content:{placeholders.md,set-editing-constraints.md,text-variables.md}|create-templates/import:{from-scene-file.md}|create-video:{audio,control.md,limitations.md}|create-video/audio:{adjust-speed.md,adjust-volume.md}|edit-image:{add-watermark.md,overview.md,remove-bg.md,replace-colors.md,transform}|edit-image/transform:{crop.md,flip.md,move.md,resize.md,rotate.md,scale.md}|edit-video:{add-captions.md,add-watermark.md,join-and-arrange.md,redaction.md,split.md,transform,trim.md}|edit-video/transform:{crop.md,flip.md,move.md,resize.md,rotate.md,scale.md}|engine-interface.md|export-save-publish:{create-thumbnail.md,export,for-printing.md,for-social-media.md,pre-export-validation.md,save.md,store-custom-metadata.md}|export-save-publish/export:{compress.md,overview.md,partial-export.md,size-limits.md,to-jpeg.md,to-pdf.md,to-png.md,to-raw-data.md,to-webp.md,with-color-mask.md}|file-format-support.md|fills:{color.md,image.md,overview.md,video.md}|filters-and-effects:{apply.md,blur.md,chroma-key-green-screen.md,create-custom-filters.md,create-custom-lut-filter.md,distortion.md,duotone.md,gradients.md,overview.md,support.md}|get-started:{agent-skills.md,build-with-ai.md,bun.md,deno.md,mcp-server.md,overview.md,vanilla.md,vanilla-aws-lambda.md,vanilla-clone-github-project.md}|guides:{export-save-publish}|guides/export-save-publish:{export}|import-media:{asset-panel,concepts.md,content-json-schema.md,default-assets.md,edit-or-remove-assets.md,file-format-support.md,from-remote-source,overview.md,retrieve-mimetype.md,size-limits.md,source-sets.md}|import-media/asset-panel:{refresh-assets.md}|import-media/from-remote-source:{asset-versioning.md,remote-asset.md}|insert-media:{audio.md,images.md,position-and-align.md,shapes-or-stickers.md,videos.md}|key-capabilities.md|key-concepts.md|licensing.md|llms-txt.md|open-the-editor:{blank-canvas.md,from-image.md,from-template.md,from-video.md,import-design,load-scene.md,overview.md,uri-resolver.md}|open-the-editor/import-design:{from-archive.md,from-indesign.md,from-photoshop.md}|outlines:{overview.md,shadows-and-glows.md,strokes.md}|overview.md|performance.md|plugins:{print-ready-pdf.md}|rules:{asset-handling.md,common-pitfalls.md,content-fill-mode.md,enforce-brand-guidelines.md,lock-content.md,moderate-content.md,overview.md,silent-init-errors.md,verify-properties-before-use.md}|security.md|serve-assets.md|settings.md|shapes.md|stickers.md|stickers-and-shapes:{combine.md,create-cutout.md,create-edit,insert-qr-code.md}|stickers-and-shapes/create-edit:{create-shapes.md,create-stickers.md,edit-shapes.md}|text:{add.md,adjust-spacing.md,auto-size.md,edit.md,effects.md,emojis.md,language-support.md,overview.md,styling.md,text-designs.md}|to-v1-19.md|upgrade.md|use-templates:{apply-template.md,generate.md,overview.md,programmatic.md,replace-content.md}|what-is-cesdk.md|<-- IMGLY-AGENTS-MD-END -->
57
+ <-- IMGLY-AGENTS-MD-START -->[CE.SDK Node.js Docs Index]|root: .|IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any CE.SDK tasks. Consult the local docs directory before using pre-trained knowledge.|animation:{create,edit.md,types.md}|animation/create:{base.md,text.md}|api:{node}|api/node:{classes,enumerations,functions,interfaces,type-aliases,variables}|api-reference:{overview.md}|automation:{auto-resize.md,data-merge.md,design-generation.md,multi-image-generation.md,overview.md}|capabilities.md|colors:{adjust.md,apply.md,basics.md,conversion.md,create-color-palette.md,extract-colors.md,for-print,for-screen,overview.md,replace.md}|colors/for-print:{cmyk.md,spot.md}|colors/for-screen:{p3.md,srgb.md}|compatibility.md|concepts:{architecture.md,assets.md,blocks.md,buffers.md,design-units.md,editing-workflow.md,error-catalog.md,events.md,headless-mode.md,pages.md,resources.md,scenes.md,templating.md,terminology.md,undo-and-history.md}|configuration.md|conversion:{overview.md,to-base64.md,to-pdf.md,to-png.md}|create-audio:{audio}|create-audio/audio:{add-music.md,add-sound-effects.md,adjust-speed.md,adjust-volume.md,loop.md}|create-composition:{add-background.md,blend-modes.md,collage.md,group-and-ungroup.md,layer-management.md,layout.md,lock-design.md,multi-page.md,overview.md,programmatic.md}|create-templates:{add-dynamic-content,add-to-template-library.md,edit-or-remove.md,from-scratch.md,import,lock.md,overview.md}|create-templates/add-dynamic-content:{placeholders.md,set-editing-constraints.md,text-variables.md}|create-templates/import:{from-scene-file.md}|create-video:{control.md,limitations.md}|edit-image:{add-watermark.md,overview.md,remove-bg.md,replace-colors.md,transform}|edit-image/transform:{crop.md,flip.md,move.md,resize.md,rotate.md,scale.md}|edit-video:{add-captions.md,add-watermark.md,join-and-arrange.md,redaction.md,split.md,transform,trim.md}|edit-video/transform:{crop.md,flip.md,move.md,resize.md,rotate.md,scale.md}|engine-interface.md|export-save-publish:{create-thumbnail.md,export,for-printing.md,for-social-media.md,pre-export-validation.md,save.md,store-custom-metadata.md}|export-save-publish/export:{compress.md,overview.md,partial-export.md,size-limits.md,to-jpeg.md,to-pdf.md,to-png.md,to-raw-data.md,to-webp.md,with-color-mask.md}|file-format-support.md|fills:{color.md,gradient.md,image.md,overview.md,video.md}|filters-and-effects:{apply.md,blur.md,chroma-key-green-screen.md,create-custom-filters.md,create-custom-lut-filter.md,distortion.md,duotone.md,overview.md,support.md}|get-started:{agent-skills.md,build-with-ai.md,bun.md,cesdk-plugin-coding-agents.md,deno.md,mcp-server.md,overview.md,vanilla.md,vanilla-aws-lambda.md,vanilla-clone-github-project.md}|guides:{export-save-publish}|guides/export-save-publish:{export}|import-media:{asset-panel,concepts.md,content-json-schema.md,default-assets.md,edit-or-remove-assets.md,file-format-support.md,from-remote-source,overview.md,retrieve-mimetype.md,size-limits.md,source-sets.md}|import-media/asset-panel:{refresh-assets.md}|import-media/from-remote-source:{asset-versioning.md,remote-asset.md}|insert-media:{audio.md,images.md,position-and-align.md,shapes-or-stickers.md,videos.md}|key-capabilities.md|key-concepts.md|licensing.md|llms-txt.md|open-the-editor:{blank-canvas.md,from-image.md,from-template.md,from-video.md,import-design,load-scene.md,overview.md,uri-resolver.md}|open-the-editor/import-design:{from-archive.md,from-indesign.md,from-photoshop.md}|outlines:{overview.md,shadows-and-glows.md,strokes.md}|overview.md|performance.md|plugins:{print-ready-pdf.md}|rules:{asset-handling.md,common-pitfalls.md,content-fill-mode.md,enforce-brand-guidelines.md,lock-content.md,moderate-content.md,overview.md,silent-init-errors.md,verify-properties-before-use.md}|security.md|serve-assets.md|settings.md|shapes.md|stickers.md|stickers-and-shapes:{combine.md,create-cutout.md,create-edit,insert-qr-code.md}|stickers-and-shapes/create-edit:{create-shapes.md,create-stickers.md,edit-shapes.md}|text:{add.md,adjust-spacing.md,auto-size.md,edit.md,effects.md,emojis.md,language-support.md,overview.md,styling.md,text-designs.md}|to-v1-19.md|upgrade.md|use-templates:{apply-template.md,generate.md,overview.md,programmatic.md,replace-content.md}|what-is-cesdk.md|<-- IMGLY-AGENTS-MD-END -->
58
58
 
59
59
  ## API Index
60
60
 
@@ -62,7 +62,7 @@ argument-hint: "[search-topic]"
62
62
  [CE.SDK Web API Index]|root: .
63
63
 
64
64
  CreativeEngine:{asset,block,editor,event,scene,variable,actions,shortcuts,reactor,version,addPlugin,unstable_setVideoExportInactivityTimeout,unstable_setExportInactivityTimeout,addPostUpdateCallback,addPreUpdateCallback},... (+7)
65
- BlockAPI:{export,getDominantColors,exportWithColorMask,exportVideo,exportAudio,loadFromString,loadFromArchiveURL,loadFromURL,saveToString,saveToArchive,create,createFill,getAudioTrackCountFromVideo,createAudioFromVideo,createAudiosFromVideo},... (+397)
65
+ BlockAPI:{export,getDominantColors,exportWithColorMask,exportVideo,exportAudio,loadFromString,loadFromArchiveURL,loadFromURL,saveToString,saveToArchive,create,createFill,getAudioTrackCountFromVideo,createAudioFromVideo,createAudiosFromVideo},... (+402)
66
66
  AssetAPI:{registerApplyMiddleware,registerApplyToBlockMiddleware,addSource,addLocalSource,addLocalAssetSourceFromJSONString,addLocalAssetSourceFromJSONURI,removeSource,findAllSources,findAssets,fetchAsset,getGroups,getSupportedMimeTypes,getCredits,name,url},... (+14)
67
67
  SceneAPI:{loadFromString,loadFromURL,loadFromArchiveURL,saveToString,saveToArchive,create,createVideo,createFromImage,createFromVideo,get,applyTemplateFromString,applyTemplateFromURL,getMode,setMode,setDesignUnit},... (+24)
68
68
  EditorAPI:{unlockWithLicense,startTracking,setTrackingMetadata,getTrackingMetadata,getActiveLicense,onStateChanged,setEditMode,getEditMode,unstable_isInteractionHappening,hasSelectedVectorNode,addVectorNode,deleteVectorNode,hasSelectedVectorControlPoint,deleteSelectedVectorControlPoints,toggleSelectedVectorNodeSmooth},... (+95)
@@ -6224,6 +6224,83 @@ getOutAnimation(id: DesignBlockId): DesignBlockId
6224
6224
 
6225
6225
  **Returns:** The "out" animation of the block.
6226
6226
 
6227
+ ## Block Transitions
6228
+
6229
+ ### createTransition()
6230
+
6231
+ Creates a new transition block.
6232
+ The created block is standalone until assigned to a clip with `setTransition`.
6233
+ Once assigned, it is owned by that clip: it is destroyed together with the
6234
+ clip, and the engine also destroys it automatically when the two clips stop
6235
+ being timeline-adjacent on the track (e.g. after a manual gap is introduced).
6236
+
6237
+ ```typescript
6238
+ createTransition(type: TransitionType): DesignBlockId
6239
+ ```
6240
+
6241
+ **Parameters:**
6242
+ - `type` - The type of transition to create.
6243
+
6244
+ **Returns:** The handle of the new transition instance.
6245
+
6246
+ ### supportsTransition()
6247
+
6248
+ Checks whether a clip can own an outgoing clip-to-clip transition.
6249
+ Only leaf clips inside a video track qualify. Audio, group, caption, and
6250
+ cutout blocks — as well as blocks outside a video track — report `false`.
6251
+
6252
+ ```typescript
6253
+ supportsTransition(id: DesignBlockId): boolean
6254
+ ```
6255
+
6256
+ **Parameters:**
6257
+ - `id` - The clip block to check.
6258
+
6259
+ **Returns:** Whether the block can own an outgoing transition.
6260
+
6261
+ ### setTransition()
6262
+
6263
+ Assigns the outgoing transition of a clip.
6264
+ A previously assigned transition block is detached but not destroyed
6265
+ automatically. Throws an error if the given transition block is invalid or
6266
+ already assigned to another clip. Both the clip and its following clip on
6267
+ the track must support transitions, see `supportsTransition`. To clear a
6268
+ clip's transition, use `removeTransition` instead.
6269
+
6270
+ ```typescript
6271
+ setTransition(id: DesignBlockId, transition: DesignBlockId): void
6272
+ ```
6273
+
6274
+ **Parameters:**
6275
+ - `id` - The outgoing clip that owns the transition relation.
6276
+ - `transition` - The transition block to assign.
6277
+
6278
+ ### removeTransition()
6279
+
6280
+ Removes the outgoing transition of a clip.
6281
+ The removed transition block is detached but not destroyed automatically.
6282
+ Removing from a clip without an assigned transition is a no-op.
6283
+
6284
+ ```typescript
6285
+ removeTransition(id: DesignBlockId): void
6286
+ ```
6287
+
6288
+ **Parameters:**
6289
+ - `id` - The outgoing clip whose transition relation should be cleared.
6290
+
6291
+ ### getTransition()
6292
+
6293
+ Gets the outgoing transition assigned to a clip.
6294
+
6295
+ ```typescript
6296
+ getTransition(id: DesignBlockId): DesignBlockId
6297
+ ```
6298
+
6299
+ **Parameters:**
6300
+ - `id` - The outgoing clip whose transition relation should be queried.
6301
+
6302
+ **Returns:** The assigned transition block, or an invalid block if unset.
6303
+
6227
6304
  ---
6228
6305
 
6229
6306
  For complete type definitions, see the [CE.SDK TypeScript API Reference](https://img.ly/docs/cesdk/engine/api/).