@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.
Files changed (126) hide show
  1. package/dist/_members/authoring/agent/errors.d.ts +8 -0
  2. package/dist/_members/authoring/index.d.ts +1 -1
  3. package/dist/_members/authoring/motion/materializeMotionPresetOps.d.ts +4 -0
  4. package/dist/_members/authoring/prompts/index.d.ts +0 -1
  5. package/dist/_members/authoring/types.d.ts +1 -1
  6. package/dist/_members/cloud-import/CloudImportService.d.ts +3 -4
  7. package/dist/_members/cloud-import/ImportProvider.d.ts +3 -7
  8. package/dist/_members/cloud-import/cloudConfig.d.ts +0 -6
  9. package/dist/_members/cloud-import/index.d.ts +2 -4
  10. package/dist/_members/composition/graphics-plan/schemas.d.ts +20 -20
  11. package/dist/_members/composition/primitive-catalog/projection.d.ts +2 -1
  12. package/dist/_members/composition/projection/behind-readiness.d.ts +4 -2
  13. package/dist/_members/composition/validators/brandKit.d.ts +54 -94
  14. package/dist/_members/composition/validators/composePlan.d.ts +52 -52
  15. package/dist/_members/composition/validators/composition.d.ts +213 -253
  16. package/dist/_members/composition/validators/font.d.ts +2 -2
  17. package/dist/_members/composition/validators/index.d.ts +1 -0
  18. package/dist/_members/composition/validators/opaqueId.d.ts +13 -0
  19. package/dist/_members/composition/validators/project.d.ts +11 -15
  20. package/dist/_members/composition/validators/render.d.ts +372 -534
  21. package/dist/_members/composition/validators/session.d.ts +19 -39
  22. package/dist/_members/composition/validators/webhook.d.ts +8 -16
  23. package/dist/_members/composition-ops/index.d.ts +192 -228
  24. package/dist/_members/director/ai-sdk/messages.d.ts +2 -2
  25. package/dist/_members/director/domain/chat.d.ts +4 -4
  26. package/dist/_members/director/testing/contract.d.ts +1 -1
  27. package/dist/_members/errors/registry.d.ts +115 -1
  28. package/dist/_members/mcp/adapter.d.ts +19 -0
  29. package/dist/_members/mcp/core.d.ts +1 -1
  30. package/dist/_members/mcp/curation.d.ts +4 -0
  31. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  32. package/dist/_members/mcp/generated/operations.d.ts +12 -0
  33. package/dist/_members/mcp/wait.d.ts +1 -1
  34. package/dist/_members/media-model/api.d.ts +53 -109
  35. package/dist/_members/media-model/generation.d.ts +2 -2
  36. package/dist/_members/media-model/index.d.ts +1 -0
  37. package/dist/_members/media-model/opaqueId.d.ts +10 -0
  38. package/dist/_members/render-harness/localRender.d.ts +3 -0
  39. package/dist/_members/render-harness/localRender.d.ts.map +1 -1
  40. package/dist/_members/render-harness/remotion-runtime.d.ts +53 -0
  41. package/dist/authoring/build-tools.js +6 -6
  42. package/dist/authoring/context.js +4 -4
  43. package/dist/authoring/prompts.js +1 -5
  44. package/dist/authoring/tools.js +5 -5
  45. package/dist/authoring.js +40 -27
  46. package/dist/chunk-2SNY75AR.js +498 -0
  47. package/dist/{chunk-XQ72DZKJ.js → chunk-7TQCR7AB.js} +1 -1
  48. package/dist/{chunk-QETYXKQQ.js → chunk-7V3F5HO4.js} +97 -14
  49. package/dist/{chunk-BZZTVOGG.js → chunk-D2EGO543.js} +5 -5
  50. package/dist/{chunk-ZPLJ24OV.js → chunk-D6S3ZKIY.js} +1 -1
  51. package/dist/{chunk-K2IUBCND.js → chunk-HFC3MKXA.js} +0 -51
  52. package/dist/{chunk-ICSZF37W.js → chunk-JRIPQ7DN.js} +1 -1
  53. package/dist/{chunk-TFGKUWHY.js → chunk-JTVFIN6H.js} +15 -19
  54. package/dist/{chunk-DCVJWGIA.js → chunk-JY26PIRP.js} +2 -2
  55. package/dist/{chunk-DWLNPNC4.js → chunk-LSP4HN5N.js} +1 -1
  56. package/dist/{chunk-AO744WIK.js → chunk-PJ4R4N4Q.js} +123 -38
  57. package/dist/{chunk-VFMW3JUY.js → chunk-QSDFTYKV.js} +1 -1
  58. package/dist/{chunk-LLUW26BS.js → chunk-R5BMJ2NX.js} +38 -2
  59. package/dist/{chunk-W3SIWT7J.js → chunk-RQ2G4DXI.js} +406 -174
  60. package/dist/{chunk-VHF66LCQ.js → chunk-RXCEPCAQ.js} +102 -41
  61. package/dist/{chunk-LJ5W4ZBU.js → chunk-TLVPDT4R.js} +1 -1
  62. package/dist/{chunk-PIURX6IZ.js → chunk-WTT3GGCA.js} +9 -4
  63. package/dist/{chunk-CAJQ7H5A.js → chunk-YE3F4LNJ.js} +17 -17
  64. package/dist/{chunk-TD347SSX.js → chunk-YXEZ75MB.js} +31 -20
  65. package/dist/{chunk-TPA6PYN2.js → chunk-ZBRPF6GV.js} +25 -10
  66. package/dist/cloud-import.js +20 -116
  67. package/dist/compose/renderer.js +17 -17
  68. package/dist/compose.js +18 -18
  69. package/dist/composition/graphics-plan.js +1 -1
  70. package/dist/composition/ops.js +3 -3
  71. package/dist/composition/primitive-catalog.js +1 -1
  72. package/dist/composition/projection.js +2 -2
  73. package/dist/composition/validators.js +4 -2
  74. package/dist/composition-ops.js +6 -6
  75. package/dist/composition.js +6 -4
  76. package/dist/{context-JLLU3MYD.js → context-XWNT6QZH.js} +4 -4
  77. package/dist/core/render.js +3 -3
  78. package/dist/core/select.js +2 -2
  79. package/dist/core.js +3 -3
  80. package/dist/director/ai-sdk.js +3 -3
  81. package/dist/director/domain.js +2 -2
  82. package/dist/director.js +3 -3
  83. package/dist/errors.js +1 -1
  84. package/dist/mcp/adapter.js +59 -22
  85. package/dist/mcp/core.js +1 -1
  86. package/dist/mcp/curation.js +5 -1
  87. package/dist/mcp/server.js +4 -4
  88. package/dist/mcp.js +4 -4
  89. package/dist/media-model/media-kind.js +98 -9
  90. package/dist/media-model/testing.js +6 -6
  91. package/dist/media-model.js +83 -77
  92. package/dist/nle-export.js +18 -18
  93. package/dist/primitives/backgrounds.js +2 -2
  94. package/dist/primitives/captions.js +3 -3
  95. package/dist/primitives/effects.js +2 -2
  96. package/dist/primitives/hero-text.js +2 -2
  97. package/dist/primitives/layouts.js +2 -2
  98. package/dist/primitives/lib/index.js +12 -12
  99. package/dist/primitives/lib.js +12 -12
  100. package/dist/primitives/scenes.js +2 -2
  101. package/dist/primitives/text.js +2 -2
  102. package/dist/primitives/ui-blocks.js +2 -2
  103. package/dist/primitives.js +19 -19
  104. package/dist/render-harness.js +4 -2
  105. package/package.json +13 -37
  106. package/dist/_members/authoring/prompts/designReviewerPrompt.d.ts +0 -2
  107. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +0 -18
  108. package/dist/_members/cloud-import/multipartUpload.d.ts +0 -12
  109. package/dist/_members/convex-api/api.d.ts +0 -2
  110. package/dist/_members/convex-api/dataModel.d.ts +0 -4
  111. package/dist/chunk-6IU2UQI5.js +0 -107
  112. package/dist/chunk-EP2Y6M2J.js +0 -64
  113. package/dist/chunk-WZH57M53.js +0 -494
  114. package/dist/cloud-import/multipart.d.ts +0 -1
  115. package/dist/cloud-import/multipart.js +0 -8
  116. package/dist/convex-api/dataModel.d.ts +0 -1
  117. package/dist/convex-api/dataModel.js +0 -0
  118. package/dist/convex-api.d.ts +0 -1
  119. package/dist/convex-api.js +0 -8
  120. package/dist/{chunk-RP4SXXLJ.js → chunk-3PM6VICZ.js} +3 -3
  121. package/dist/{chunk-UQSOS726.js → chunk-6ABIXGLO.js} +4 -4
  122. package/dist/{chunk-SAMQUUO5.js → chunk-BIBYZJL3.js} +3 -3
  123. package/dist/{chunk-GMD33ZD7.js → chunk-O7GNE4BQ.js} +3 -3
  124. package/dist/{chunk-BKHGL4MB.js → chunk-THJAY7QS.js} +4 -4
  125. package/dist/{chunk-DYZE7JZA.js → chunk-TMIBBD5E.js} +3 -3
  126. package/dist/{chunk-G5BFI32U.js → chunk-XATRRDVG.js} +3 -3
@@ -1,42 +1,42 @@
1
- import "./chunk-VFMW3JUY.js";
1
+ import "./chunk-QSDFTYKV.js";
2
2
  import {
3
3
  getPrimitiveText
4
- } from "./chunk-CAJQ7H5A.js";
4
+ } from "./chunk-YE3F4LNJ.js";
5
5
  import "./chunk-H5LMJKZU.js";
6
- import "./chunk-MFHXCHRI.js";
7
6
  import "./chunk-JQMPHKLU.js";
8
7
  import "./chunk-MHOQTPOB.js";
9
8
  import "./chunk-GULDS3VE.js";
10
9
  import "./chunk-YLDMAZZE.js";
11
- import "./chunk-BKHGL4MB.js";
12
- import "./chunk-GMD33ZD7.js";
13
- import "./chunk-SAMQUUO5.js";
14
- import "./chunk-RP4SXXLJ.js";
15
- import "./chunk-DYZE7JZA.js";
16
- import "./chunk-ZSZABOE5.js";
17
- import "./chunk-UQSOS726.js";
10
+ import "./chunk-MFHXCHRI.js";
11
+ import "./chunk-TMIBBD5E.js";
12
+ import "./chunk-6ABIXGLO.js";
18
13
  import "./chunk-DLF4WVSE.js";
19
14
  import "./chunk-U4V4FZGE.js";
20
- import "./chunk-BDMTUEEZ.js";
21
- import "./chunk-EMGFZ3PR.js";
22
15
  import "./chunk-AWT3P5ZN.js";
23
16
  import "./chunk-QGAWDLYX.js";
24
- import "./chunk-G5BFI32U.js";
25
- import "./chunk-XHGZ2E77.js";
17
+ import "./chunk-THJAY7QS.js";
18
+ import "./chunk-ZSZABOE5.js";
19
+ import "./chunk-XATRRDVG.js";
20
+ import "./chunk-O7GNE4BQ.js";
21
+ import "./chunk-BIBYZJL3.js";
22
+ import "./chunk-BDMTUEEZ.js";
23
+ import "./chunk-EMGFZ3PR.js";
26
24
  import "./chunk-ZFEXATWN.js";
25
+ import "./chunk-3PM6VICZ.js";
27
26
  import "./chunk-CX2IIQ4R.js";
28
- import "./chunk-DCVJWGIA.js";
29
- import "./chunk-VHF66LCQ.js";
27
+ import "./chunk-XHGZ2E77.js";
28
+ import "./chunk-JY26PIRP.js";
29
+ import "./chunk-RXCEPCAQ.js";
30
30
  import "./chunk-QH3YI3ND.js";
31
- import "./chunk-XQ72DZKJ.js";
32
31
  import "./chunk-23HFEKV7.js";
32
+ import "./chunk-7TQCR7AB.js";
33
33
  import "./chunk-VZ7TYX6Z.js";
34
34
  import "./chunk-7PA7FGLD.js";
35
35
  import "./chunk-KYRDKK2D.js";
36
36
  import "./chunk-JF4JJAFP.js";
37
37
  import "./chunk-DENF4TPI.js";
38
38
  import "./chunk-WREYUH2E.js";
39
- import "./chunk-LLUW26BS.js";
39
+ import "./chunk-R5BMJ2NX.js";
40
40
  import "./chunk-2ESYSVXG.js";
41
41
 
42
42
  // ../nle-export/src/srt.ts
@@ -11,9 +11,9 @@ import {
11
11
  VectorField,
12
12
  VolumetricRays,
13
13
  catalog
14
- } from "../chunk-G5BFI32U.js";
15
- import "../chunk-XHGZ2E77.js";
14
+ } from "../chunk-XATRRDVG.js";
16
15
  import "../chunk-CX2IIQ4R.js";
16
+ import "../chunk-XHGZ2E77.js";
17
17
  import "../chunk-2ESYSVXG.js";
18
18
  export {
19
19
  AnimatedBarChart,
@@ -1,9 +1,9 @@
1
- import {
2
- fillStyle
3
- } from "../chunk-XLIPPLG3.js";
4
1
  import {
5
2
  Marker
6
3
  } from "../chunk-D2EG7J7X.js";
4
+ import {
5
+ fillStyle
6
+ } from "../chunk-XLIPPLG3.js";
7
7
  import {
8
8
  wordPop
9
9
  } from "../chunk-ZFEXATWN.js";
@@ -10,9 +10,9 @@ import {
10
10
  SuccessConfetti,
11
11
  Vignette,
12
12
  catalog
13
- } from "../chunk-GMD33ZD7.js";
14
- import "../chunk-XHGZ2E77.js";
13
+ } from "../chunk-O7GNE4BQ.js";
15
14
  import "../chunk-CX2IIQ4R.js";
15
+ import "../chunk-XHGZ2E77.js";
16
16
  import "../chunk-2ESYSVXG.js";
17
17
  export {
18
18
  Blur,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  HeroText,
3
3
  catalog
4
- } from "../chunk-SAMQUUO5.js";
4
+ } from "../chunk-BIBYZJL3.js";
5
5
  import "../chunk-BDMTUEEZ.js";
6
6
  import "../chunk-EMGFZ3PR.js";
7
- import "../chunk-XHGZ2E77.js";
8
7
  import "../chunk-ZFEXATWN.js";
8
+ import "../chunk-XHGZ2E77.js";
9
9
  import "../chunk-2ESYSVXG.js";
10
10
  export {
11
11
  HeroText,
@@ -7,9 +7,9 @@ import {
7
7
  SplitScreen,
8
8
  StaggeredBentoGrid,
9
9
  catalog
10
- } from "../chunk-RP4SXXLJ.js";
11
- import "../chunk-XHGZ2E77.js";
10
+ } from "../chunk-3PM6VICZ.js";
12
11
  import "../chunk-CX2IIQ4R.js";
12
+ import "../chunk-XHGZ2E77.js";
13
13
  import "../chunk-2ESYSVXG.js";
14
14
  export {
15
15
  ChatToPreviewLayout,
@@ -1,16 +1,4 @@
1
1
  import "../../chunk-H5LMJKZU.js";
2
- import {
3
- EASING_BY_INTENT,
4
- IN_OUT_CUBIC,
5
- IN_OUT_QUART,
6
- IN_QUART,
7
- LINEAR,
8
- OUT_BACK,
9
- OUT_CUBIC,
10
- OUT_EXPO,
11
- SOFT,
12
- STEP
13
- } from "../../chunk-MFHXCHRI.js";
14
2
  import {
15
3
  PrimitivePreview
16
4
  } from "../../chunk-JQMPHKLU.js";
@@ -36,6 +24,18 @@ import {
36
24
  resolveParams,
37
25
  resolveTokenValue
38
26
  } from "../../chunk-YLDMAZZE.js";
27
+ import {
28
+ EASING_BY_INTENT,
29
+ IN_OUT_CUBIC,
30
+ IN_OUT_QUART,
31
+ IN_QUART,
32
+ LINEAR,
33
+ OUT_BACK,
34
+ OUT_CUBIC,
35
+ OUT_EXPO,
36
+ SOFT,
37
+ STEP
38
+ } from "../../chunk-MFHXCHRI.js";
39
39
  import {
40
40
  palette_exports
41
41
  } from "../../chunk-CX2IIQ4R.js";
@@ -1,16 +1,4 @@
1
1
  import "../chunk-H5LMJKZU.js";
2
- import {
3
- EASING_BY_INTENT,
4
- IN_OUT_CUBIC,
5
- IN_OUT_QUART,
6
- IN_QUART,
7
- LINEAR,
8
- OUT_BACK,
9
- OUT_CUBIC,
10
- OUT_EXPO,
11
- SOFT,
12
- STEP
13
- } from "../chunk-MFHXCHRI.js";
14
2
  import {
15
3
  PrimitivePreview
16
4
  } from "../chunk-JQMPHKLU.js";
@@ -36,6 +24,18 @@ import {
36
24
  resolveParams,
37
25
  resolveTokenValue
38
26
  } from "../chunk-YLDMAZZE.js";
27
+ import {
28
+ EASING_BY_INTENT,
29
+ IN_OUT_CUBIC,
30
+ IN_OUT_QUART,
31
+ IN_QUART,
32
+ LINEAR,
33
+ OUT_BACK,
34
+ OUT_CUBIC,
35
+ OUT_EXPO,
36
+ SOFT,
37
+ STEP
38
+ } from "../chunk-MFHXCHRI.js";
39
39
  import {
40
40
  palette_exports
41
41
  } from "../chunk-CX2IIQ4R.js";
@@ -7,9 +7,9 @@ import {
7
7
  ProductLaunchTrailer,
8
8
  TerminalToBrowserDeploy,
9
9
  catalog
10
- } from "../chunk-DYZE7JZA.js";
11
- import "../chunk-ZSZABOE5.js";
10
+ } from "../chunk-TMIBBD5E.js";
12
11
  import "../chunk-QGAWDLYX.js";
12
+ import "../chunk-ZSZABOE5.js";
13
13
  import "../chunk-CX2IIQ4R.js";
14
14
  import "../chunk-2ESYSVXG.js";
15
15
  export {
@@ -21,14 +21,14 @@ import {
21
21
  TrackingIn,
22
22
  Typewriter,
23
23
  catalog
24
- } from "../chunk-UQSOS726.js";
24
+ } from "../chunk-6ABIXGLO.js";
25
25
  import "../chunk-DLF4WVSE.js";
26
26
  import "../chunk-U4V4FZGE.js";
27
27
  import "../chunk-BDMTUEEZ.js";
28
28
  import "../chunk-EMGFZ3PR.js";
29
- import "../chunk-XHGZ2E77.js";
30
29
  import "../chunk-ZFEXATWN.js";
31
30
  import "../chunk-CX2IIQ4R.js";
31
+ import "../chunk-XHGZ2E77.js";
32
32
  import "../chunk-2ESYSVXG.js";
33
33
  export {
34
34
  BlurReveal,
@@ -30,14 +30,14 @@ import {
30
30
  VisualDocsSnippet,
31
31
  VoiceWaveform,
32
32
  catalog
33
- } from "../chunk-BKHGL4MB.js";
33
+ } from "../chunk-THJAY7QS.js";
34
34
  import {
35
35
  DashboardPopulate
36
36
  } from "../chunk-ZSZABOE5.js";
37
37
  import "../chunk-BDMTUEEZ.js";
38
38
  import "../chunk-EMGFZ3PR.js";
39
- import "../chunk-XHGZ2E77.js";
40
39
  import "../chunk-CX2IIQ4R.js";
40
+ import "../chunk-XHGZ2E77.js";
41
41
  import "../chunk-2ESYSVXG.js";
42
42
  export {
43
43
  AIGenerateOverlay,
@@ -1,36 +1,36 @@
1
- import {
2
- catalog as catalog6
3
- } from "./chunk-BKHGL4MB.js";
4
- import {
5
- catalog as catalog2
6
- } from "./chunk-GMD33ZD7.js";
7
- import {
8
- catalog as catalog8
9
- } from "./chunk-SAMQUUO5.js";
10
- import {
11
- catalog as catalog4
12
- } from "./chunk-RP4SXXLJ.js";
13
1
  import {
14
2
  catalog as catalog7
15
- } from "./chunk-DYZE7JZA.js";
16
- import "./chunk-ZSZABOE5.js";
3
+ } from "./chunk-TMIBBD5E.js";
17
4
  import {
18
5
  catalog
19
- } from "./chunk-UQSOS726.js";
6
+ } from "./chunk-6ABIXGLO.js";
20
7
  import "./chunk-DLF4WVSE.js";
21
8
  import "./chunk-U4V4FZGE.js";
22
- import "./chunk-BDMTUEEZ.js";
23
- import "./chunk-EMGFZ3PR.js";
24
9
  import {
25
10
  catalog as catalog3
26
11
  } from "./chunk-AWT3P5ZN.js";
27
12
  import "./chunk-QGAWDLYX.js";
13
+ import {
14
+ catalog as catalog6
15
+ } from "./chunk-THJAY7QS.js";
16
+ import "./chunk-ZSZABOE5.js";
28
17
  import {
29
18
  catalog as catalog5
30
- } from "./chunk-G5BFI32U.js";
31
- import "./chunk-XHGZ2E77.js";
19
+ } from "./chunk-XATRRDVG.js";
20
+ import {
21
+ catalog as catalog2
22
+ } from "./chunk-O7GNE4BQ.js";
23
+ import {
24
+ catalog as catalog8
25
+ } from "./chunk-BIBYZJL3.js";
26
+ import "./chunk-BDMTUEEZ.js";
27
+ import "./chunk-EMGFZ3PR.js";
32
28
  import "./chunk-ZFEXATWN.js";
29
+ import {
30
+ catalog as catalog4
31
+ } from "./chunk-3PM6VICZ.js";
33
32
  import "./chunk-CX2IIQ4R.js";
33
+ import "./chunk-XHGZ2E77.js";
34
34
  import "./chunk-2ESYSVXG.js";
35
35
 
36
36
  // ../execution/primitives/src/index.ts
@@ -739,7 +739,8 @@ async function renderComponentAlpha(opts) {
739
739
  browserExecutable,
740
740
  chromiumOptions: SOFTWARE_CHROMIUM_OPTIONS
741
741
  });
742
- const videoPath = join5(cacheDir(opts.ws), `alpha-${opts.id}.${alphaExt(codec)}`);
742
+ const rangeSuffix = opts.frameRange ? `-${opts.frameRange[0]}-${opts.frameRange[1]}` : "";
743
+ const videoPath = join5(cacheDir(opts.ws), `alpha-${opts.id}${rangeSuffix}.${alphaExt(codec)}`);
743
744
  await renderMedia({
744
745
  composition,
745
746
  serveUrl,
@@ -748,7 +749,8 @@ async function renderComponentAlpha(opts) {
748
749
  outputLocation: videoPath,
749
750
  ...alphaRenderConfig(codec),
750
751
  chromiumOptions: SOFTWARE_CHROMIUM_OPTIONS,
751
- concurrency: 1
752
+ concurrency: 1,
753
+ ...opts.frameRange ? { frameRange: opts.frameRange } : {}
752
754
  });
753
755
  return { videoPath };
754
756
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cueframe/kernel",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "description": "Publish-only aggregate of CueFrame's isomorphic kernel packages — composition, primitives, authoring, MCP, and friends shipped as one npm artifact. Members remain separate workspace packages; this only changes what ships.",
6
6
  "files": [
@@ -17,30 +17,27 @@
17
17
  "devDependencies": {
18
18
  "tsup": "^8.3.5",
19
19
  "typescript": "^5.9.3",
20
- "@cueframe/account-model": "0.1.0",
21
20
  "@cueframe/animate": "0.1.0",
22
21
  "@cueframe/brand-derivation": "0.1.0",
23
22
  "@cueframe/cloud-import": "0.1.0",
23
+ "@cueframe/compose": "0.1.0",
24
24
  "@cueframe/authoring": "0.1.0",
25
25
  "@cueframe/composition-ops": "0.1.0",
26
- "@cueframe/compose": "0.1.0",
27
- "@cueframe/composition": "0.1.0",
28
- "@cueframe/mcp": "0.1.0",
29
- "@cueframe/convex-api": "0.1.0",
30
- "@cueframe/errors": "0.1.0",
31
26
  "@cueframe/core": "0.1.0",
32
- "@cueframe/media-model": "0.1.0",
27
+ "@cueframe/director": "0.1.0",
28
+ "@cueframe/errors": "0.1.0",
33
29
  "@cueframe/foundation": "0.1.0",
30
+ "@cueframe/mcp": "0.1.0",
31
+ "@cueframe/media-model": "0.1.0",
32
+ "@cueframe/nle-export": "0.1.0",
34
33
  "@cueframe/perception": "0.1.0",
35
- "@cueframe/render-harness": "0.1.0",
36
- "@cueframe/director": "0.1.0",
37
34
  "@cueframe/plane": "0.1.0",
38
- "@cueframe/nle-export": "0.1.0",
39
- "@cueframe/primitives": "0.1.0"
35
+ "@cueframe/primitives": "0.1.0",
36
+ "@cueframe/render-harness": "0.1.0",
37
+ "@cueframe/account-model": "0.1.0",
38
+ "@cueframe/composition": "0.1.0"
40
39
  },
41
40
  "peerDependencies": {
42
- "convex": ">=1.42",
43
- "convex-helpers": "^0.1.114",
44
41
  "react": "^19.0.0",
45
42
  "react-dom": "^19.0.0",
46
43
  "remotion": "4.0.429",
@@ -62,7 +59,6 @@
62
59
  "@ai-sdk/anthropic": "^4.0.39",
63
60
  "@ai-sdk/openai": "^4.0.42",
64
61
  "esbuild": "^0.25.2",
65
- "@uppy/aws-s3": "^5.1.0",
66
62
  "@uppy/core": "^5.2.0",
67
63
  "@uppy/react": "^5.2.0"
68
64
  },
@@ -493,18 +489,6 @@
493
489
  "types": "./dist/cloud-import.d.ts",
494
490
  "default": "./dist/cloud-import.js"
495
491
  },
496
- "./cloud-import/multipart": {
497
- "types": "./dist/cloud-import/multipart.d.ts",
498
- "default": "./dist/cloud-import/multipart.js"
499
- },
500
- "./convex-api": {
501
- "types": "./dist/convex-api.d.ts",
502
- "default": "./dist/convex-api.js"
503
- },
504
- "./convex-api/dataModel": {
505
- "types": "./dist/convex-api/dataModel.d.ts",
506
- "default": "./dist/convex-api/dataModel.js"
507
- },
508
492
  "./director": {
509
493
  "types": "./dist/director.d.ts",
510
494
  "default": "./dist/director.js"
@@ -532,12 +516,6 @@
532
516
  "remotion": {
533
517
  "optional": true
534
518
  },
535
- "convex": {
536
- "optional": true
537
- },
538
- "convex-helpers": {
539
- "optional": true
540
- },
541
519
  "xmlbuilder2": {
542
520
  "optional": true
543
521
  },
@@ -592,9 +570,6 @@
592
570
  "esbuild": {
593
571
  "optional": true
594
572
  },
595
- "@uppy/aws-s3": {
596
- "optional": true
597
- },
598
573
  "@uppy/core": {
599
574
  "optional": true
600
575
  },
@@ -613,6 +588,7 @@
613
588
  },
614
589
  "author": "CueFrame Inc.",
615
590
  "scripts": {
616
- "build": "node ../../tools/build-aggregate.mjs kernel"
591
+ "build": "node ../../tools/build-aggregate.mjs kernel",
592
+ "check": "pnpm build"
617
593
  }
618
594
  }
@@ -1,2 +0,0 @@
1
- export declare const DESIGN_REVIEWER_PROMPT = "You are a design quality reviewer for motion graphics in CueFrame.\n\n## Workflow\n\n1. Call `get_context` to understand the current project state and brand kit.\n2. Call `get_composition` to read the graphics themselves \u2014 a card clip carries its\n `html` and `tokens` verbatim; an overlay or component clip carries its params.\n For a component's animation code, call `get_component_source` with its componentId.\n3. Call `preview_frame` with EVERY beat you need to see in ONE call \u2014 the rendered\n pixels, not your reading of the source.\n4. Assess quality against the checklist below. If improvements are needed, send the\n fixes as ONE `apply_composition` batch \u2014 a `clip.update` op per graphic carrying\n only the fields that change \u2014 then re-preview the beats you touched to verify.\n\n## Quality Checklist\n\n- **Visual hierarchy**: Title large/bold, subtext smaller/lighter, decorative elements subtle\n- **Animation choreography**: Elements arrive in sequence with staggered timing, not all at once\n- **Spring physics**: Use `spring()` for organic entrances instead of plain linear interpolation\n- **Color usage**: Read ALL colors from params (accentColor, textColor, backgroundColor) \u2014 never hardcode\n- **Entrance + exit**: Choreographed entrance sequence AND fade-out in final 15 frames\n- **Layered composition**: Multiple animated elements (text + accent line + shape + bg glow), not just a single element with opacity\n- **Typography**: Appropriate font from FONTS.*, proper letter-spacing, readable sizing\n- **Atmosphere**: Subtle glows, gradients, or accent color bleeds for depth\n\n## Component Contract\n\n- Signature: `export default function Name({ durationInFrames, params }) { ... }`\n- ONLY `useCurrentFrame()` and `useVideoConfig()` hooks. NO useEffect/useState/useMemo/useCallback/useRef.\n- Inline styles only. No imports, no CSS files, no `document` access. Max 10000 chars.\n- All animation driven by frame number.\n\n## Guidelines\n\n- Be specific in feedback: cite which element, which frame range, what to change.\n- Prefer refinement over complete rewrites \u2014 preserve the designer's intent.\n- A still cannot show motion. Judge timing and choreography from the source; judge\n layout, contrast and legibility from the frame.\n- After fixing, always re-preview to confirm the improvement visually.\n";
2
- export declare const DESIGN_REVIEWER_TOOLS: string[];
@@ -1,18 +0,0 @@
1
- import { BasePlugin } from '@uppy/core';
2
- import type { Uppy, Meta } from '@uppy/core';
3
- type CreateMediaItemFn = (file: {
4
- name: string;
5
- size: number;
6
- mimeType: string;
7
- }) => Promise<string>;
8
- export declare class MediaItemPreprocessor extends BasePlugin<Record<string, never>, Meta, Record<string, never>> {
9
- static pluginId: string;
10
- private createFn;
11
- private preprocessBound;
12
- constructor(uppy: Uppy, opts?: Record<string, never>);
13
- setCreateFn(fn: CreateMediaItemFn | null): void;
14
- install(): void;
15
- uninstall(): void;
16
- private preprocess;
17
- }
18
- export {};
@@ -1,12 +0,0 @@
1
- export interface MultipartUploadOptions {
2
- file: File;
3
- signingUrl: string;
4
- token: string;
5
- metadata?: Record<string, string>;
6
- onProgress?: (fraction: number) => void;
7
- }
8
- export interface MultipartUploadResult {
9
- location: string;
10
- mediaItemId: string;
11
- }
12
- export declare function multipartUpload(opts: MultipartUploadOptions): Promise<MultipartUploadResult>;
@@ -1,2 +0,0 @@
1
- import type { api as GeneratedApi } from "./api.generated.js";
2
- export declare const api: typeof GeneratedApi;
@@ -1,4 +0,0 @@
1
- import type { GenericId } from "convex/values";
2
- import type { SystemTableNames } from "convex/server";
3
- export type TableNames = "agentMessages" | "agentThreads" | "apiAuditLog" | "billingPlanState" | "brandKits" | "briefs" | "checkpoints" | "clips" | "clipSuggestionRuns" | "componentVersions" | "composeJobs" | "compositionEvents" | "compositionRuns" | "compositions" | "compositionVersions" | "contextFiles" | "conversations" | "corrections" | "critics" | "dashboardInsights" | "directorProfiles" | "directorWorkflows" | "enrichmentCandidates" | "exports" | "idempotencyKeys" | "installedComponents" | "jobs" | "markers" | "mediaItems" | "mediaUnderstanding" | "overlays" | "pricingPolicy" | "processingEvents" | "projects" | "providerStates" | "renderJobs" | "resourceQueryCache" | "resourceRateBuckets" | "restorePoints" | "runs" | "searchQueries" | "sessions" | "sessionTokens" | "settings" | "socialAccounts" | "socialInsights" | "socialMediaItems" | "templateEmbeddings" | "templates" | "timelineClips" | "tracks" | "transcripts" | "uploadTokens" | "usageEvents" | "userSettings" | "videoChunkEmbeddings" | "webhookDeliveries" | "webhookProjectUpdateDebounce" | "webhooks" | "x402Payments";
4
- export type Id<TableName extends TableNames | SystemTableNames> = GenericId<TableName>;
@@ -1,107 +0,0 @@
1
- // ../data-models/media-model/src/media-kind.ts
2
- var IMAGE_CONTENT_TYPES = ["image/png", "image/jpeg", "image/webp"];
3
- var ALLOWED_CONTENT_TYPES = [
4
- "video/mp4",
5
- "video/quicktime",
6
- "video/x-matroska",
7
- "video/webm",
8
- "audio/mpeg",
9
- "audio/wav",
10
- "audio/x-wav",
11
- "audio/mp4",
12
- "audio/aac",
13
- "image/png",
14
- "image/jpeg",
15
- "image/webp",
16
- "image/gif",
17
- "image/svg+xml",
18
- "application/json",
19
- "font/ttf",
20
- "font/otf",
21
- "font/woff",
22
- "font/woff2"
23
- ];
24
- function mediaKind(contentType) {
25
- const ct = (contentType || "").toLowerCase();
26
- if (ct.startsWith("video/")) return "video";
27
- if (ct.startsWith("audio/")) return "audio";
28
- if (IMAGE_CONTENT_TYPES.includes(ct)) return "image";
29
- return "opaque";
30
- }
31
- var EXT = {
32
- "video/mp4": "mp4",
33
- "audio/mp4": "mp4",
34
- "video/quicktime": "mov",
35
- "video/x-matroska": "mkv",
36
- "video/webm": "webm",
37
- "video/x-msvideo": "avi",
38
- "audio/mpeg": "mp3",
39
- "audio/wav": "wav",
40
- "audio/x-wav": "wav",
41
- "audio/aac": "aac",
42
- "audio/ogg": "ogg",
43
- "audio/flac": "flac",
44
- "image/png": "png",
45
- "image/jpeg": "jpg",
46
- "image/webp": "webp",
47
- "font/ttf": "ttf",
48
- "font/otf": "otf",
49
- "font/woff": "woff",
50
- "font/woff2": "woff2",
51
- "application/json": "json",
52
- "image/svg+xml": "svg",
53
- "image/gif": "gif"
54
- };
55
- function extensionForContentType(contentType) {
56
- return EXT[(contentType || "").toLowerCase()] ?? "bin";
57
- }
58
- var CONTENT_TYPE_ALIASES = {
59
- "audio/mp3": "audio/mpeg",
60
- "audio/x-mp3": "audio/mpeg",
61
- "audio/x-mpeg": "audio/mpeg",
62
- "audio/mpeg3": "audio/mpeg",
63
- "audio/x-mpeg-3": "audio/mpeg",
64
- "audio/x-m4a": "audio/mp4",
65
- "audio/m4a": "audio/mp4",
66
- "audio/wave": "audio/wav",
67
- "audio/vnd.wave": "audio/wav",
68
- "audio/x-aac": "audio/aac",
69
- "image/jpg": "image/jpeg",
70
- "video/x-quicktime": "video/quicktime",
71
- "video/mov": "video/quicktime",
72
- "video/x-m4v": "video/mp4",
73
- "video/mkv": "video/x-matroska"
74
- };
75
- var TYPE_BY_EXTENSION = Object.entries(EXT).reduce(
76
- (acc, [contentType, ext]) => {
77
- if (!(ext in acc)) acc[ext] = contentType;
78
- return acc;
79
- },
80
- {}
81
- );
82
- TYPE_BY_EXTENSION["jpeg"] = "image/jpeg";
83
- TYPE_BY_EXTENSION["m4a"] = "audio/mp4";
84
- function mediaKindForFilename(filename) {
85
- return mediaKind(contentTypeForUpload(filename, null));
86
- }
87
- var POOL_EXTENSIONS = Object.entries(TYPE_BY_EXTENSION).filter(([, contentType]) => mediaKind(contentType) !== "opaque").map(([ext]) => ext);
88
- function contentTypeForUpload(filename, claimed) {
89
- const ct = (claimed ?? "").trim().toLowerCase();
90
- const allowed = ALLOWED_CONTENT_TYPES;
91
- if (ct && allowed.includes(ct)) return ct;
92
- if (ct && CONTENT_TYPE_ALIASES[ct]) return CONTENT_TYPE_ALIASES[ct];
93
- const ext = filename.toLowerCase().split(".").pop() ?? "";
94
- const byExt = TYPE_BY_EXTENSION[ext];
95
- if (byExt) return byExt;
96
- return ct;
97
- }
98
-
99
- export {
100
- IMAGE_CONTENT_TYPES,
101
- ALLOWED_CONTENT_TYPES,
102
- mediaKind,
103
- extensionForContentType,
104
- mediaKindForFilename,
105
- POOL_EXTENSIONS,
106
- contentTypeForUpload
107
- };
@@ -1,64 +0,0 @@
1
- import {
2
- contentTypeForUpload
3
- } from "./chunk-6IU2UQI5.js";
4
-
5
- // ../cloud-import/src/multipartUpload.ts
6
- var CHUNK_SIZE = 10 * 1024 * 1024;
7
- async function reasonFrom(res) {
8
- try {
9
- const text = await res.text();
10
- if (!text) return `HTTP ${res.status}`;
11
- try {
12
- const parsed = JSON.parse(text);
13
- if (typeof parsed.error === "string" && parsed.error) return `${parsed.error} (HTTP ${res.status})`;
14
- } catch {
15
- }
16
- return `${text.slice(0, 200)} (HTTP ${res.status})`;
17
- } catch {
18
- return `HTTP ${res.status}`;
19
- }
20
- }
21
- async function multipartUpload(opts) {
22
- const { file, signingUrl, token, metadata, onProgress } = opts;
23
- const baseUrl = signingUrl.replace(/\/$/, "");
24
- const headers = { "uppy-auth-token": token, "Content-Type": "application/json" };
25
- const createRes = await fetch(`${baseUrl}/s3/multipart`, {
26
- method: "POST",
27
- headers,
28
- body: JSON.stringify({
29
- filename: file.name,
30
- type: contentTypeForUpload(file.name, file.type),
31
- metadata: { uploadToken: token, ...metadata }
32
- })
33
- });
34
- if (!createRes.ok) throw new Error(`Upload init failed for ${file.name}: ${await reasonFrom(createRes)}`);
35
- const { uploadId } = await createRes.json();
36
- const totalParts = Math.ceil(file.size / CHUNK_SIZE);
37
- const parts = [];
38
- for (let i = 0; i < totalParts; i++) {
39
- const start = i * CHUNK_SIZE;
40
- const end = Math.min(start + CHUNK_SIZE, file.size);
41
- const chunk = file.slice(start, end);
42
- const partNumber = i + 1;
43
- const urlRes = await fetch(`${baseUrl}/s3/multipart/${uploadId}/${partNumber}`, {
44
- headers: { "uppy-auth-token": token }
45
- });
46
- if (!urlRes.ok) throw new Error(`Presign failed for ${file.name} part ${partNumber}: ${await reasonFrom(urlRes)}`);
47
- const { url } = await urlRes.json();
48
- const putRes = await fetch(url, { method: "PUT", body: chunk });
49
- if (!putRes.ok) throw new Error(`Part ${partNumber} of ${file.name} failed: ${await reasonFrom(putRes)}`);
50
- parts.push({ PartNumber: partNumber, ETag: putRes.headers.get("ETag") ?? "" });
51
- onProgress?.(end / file.size);
52
- }
53
- const completeRes = await fetch(`${baseUrl}/s3/multipart/${uploadId}/complete`, {
54
- method: "POST",
55
- headers,
56
- body: JSON.stringify({ parts })
57
- });
58
- if (!completeRes.ok) throw new Error(`Complete failed for ${file.name}: ${await reasonFrom(completeRes)}`);
59
- return await completeRes.json();
60
- }
61
-
62
- export {
63
- multipartUpload
64
- };