@scenerok/cli 2.2.0

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 (79) hide show
  1. package/README.md +173 -0
  2. package/dist/commands/auth.d.ts +3 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +94 -0
  5. package/dist/commands/cache.d.ts +3 -0
  6. package/dist/commands/cache.d.ts.map +1 -0
  7. package/dist/commands/cache.js +65 -0
  8. package/dist/commands/lint-video.d.ts +21 -0
  9. package/dist/commands/lint-video.d.ts.map +1 -0
  10. package/dist/commands/lint-video.js +122 -0
  11. package/dist/commands/project.d.ts +3 -0
  12. package/dist/commands/project.d.ts.map +1 -0
  13. package/dist/commands/project.js +173 -0
  14. package/dist/commands/render.d.ts +4 -0
  15. package/dist/commands/render.d.ts.map +1 -0
  16. package/dist/commands/render.js +242 -0
  17. package/dist/commands/skills.d.ts +3 -0
  18. package/dist/commands/skills.d.ts.map +1 -0
  19. package/dist/commands/skills.js +208 -0
  20. package/dist/commands/validate.d.ts +3 -0
  21. package/dist/commands/validate.d.ts.map +1 -0
  22. package/dist/commands/validate.js +254 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +51 -0
  26. package/dist/lib/api.d.ts +268 -0
  27. package/dist/lib/api.d.ts.map +1 -0
  28. package/dist/lib/api.js +160 -0
  29. package/dist/lib/config.d.ts +13 -0
  30. package/dist/lib/config.d.ts.map +1 -0
  31. package/dist/lib/config.js +53 -0
  32. package/dist/lib/format-api-error.d.ts +2 -0
  33. package/dist/lib/format-api-error.d.ts.map +1 -0
  34. package/dist/lib/format-api-error.js +24 -0
  35. package/dist/lib/language.d.ts +3 -0
  36. package/dist/lib/language.d.ts.map +1 -0
  37. package/dist/lib/language.js +9 -0
  38. package/dist/lib/logger.d.ts +8 -0
  39. package/dist/lib/logger.d.ts.map +1 -0
  40. package/dist/lib/logger.js +51 -0
  41. package/dist/lib/project.d.ts +29 -0
  42. package/dist/lib/project.d.ts.map +1 -0
  43. package/dist/lib/project.js +156 -0
  44. package/dist/lib/sdk-scene-modules.d.ts +7 -0
  45. package/dist/lib/sdk-scene-modules.d.ts.map +1 -0
  46. package/dist/lib/sdk-scene-modules.js +35 -0
  47. package/dist/utils/skillsManifest.d.ts +42 -0
  48. package/dist/utils/skillsManifest.d.ts.map +1 -0
  49. package/dist/utils/skillsManifest.js +122 -0
  50. package/examples/system/3-tips-fitness.vid +45 -0
  51. package/examples/system/ecom-product-launch.vid +31 -0
  52. package/examples/system/glitch-title.vid +17 -0
  53. package/examples/system/meme-remix.vid +15 -0
  54. package/examples/system/minimal-text-reel.vid +11 -0
  55. package/examples/system/product-launch.vid +18 -0
  56. package/examples/system/rokmilk-chocolate-promo.vid +25 -0
  57. package/examples/system/testimonial-cut.vid +16 -0
  58. package/examples/system/ugc-testimonial-voiceover.vid +33 -0
  59. package/examples/system/voice-visual-promo.vid +21 -0
  60. package/package.json +51 -0
  61. package/skills/remote/ai-models.md +65 -0
  62. package/skills/remote/animations-catalog.md +89 -0
  63. package/skills/remote/animations-picker.md +77 -0
  64. package/skills/remote/brand-setup.md +69 -0
  65. package/skills/remote/catalog-index.json +1810 -0
  66. package/skills/remote/environments.md +73 -0
  67. package/skills/remote/intent-router.md +81 -0
  68. package/skills/remote/media-stdlib.md +66 -0
  69. package/skills/remote/music.md +69 -0
  70. package/skills/remote/sdk-guide.md +201 -0
  71. package/skills/remote/shaders-filters.md +97 -0
  72. package/skills/remote/text-styles.md +108 -0
  73. package/skills/remote/transitions-catalog.md +55 -0
  74. package/skills/remote/tts.md +82 -0
  75. package/skills/remote/vidscript-guide.md +574 -0
  76. package/skills/remote/vidscript-sample.md +28 -0
  77. package/skills/remote/vidscript-strict.md +251 -0
  78. package/skills/remote/workflow.md +72 -0
  79. package/skills/shared/SKILL.md +157 -0
@@ -0,0 +1,108 @@
1
+ # Text Styles and Motion Primitives
2
+
3
+ `import motion from "@scenerok/basic-animations"` — use with `animate:` on VidScript `text` blocks.
4
+
5
+ In **TypeScript SDK**, use the built-in motion helpers from `@scenerok/sdk` (`fadeIn`, `fadeOut`, `slideY`, `slideX`, `scale`, `popIn`) and place text with `area` / `t.grid` (see `sdk-guide.md`).
6
+
7
+ ## Motion primitives
8
+
9
+ | Primitive | Suits | Phase | SDK helper |
10
+ | --- | --- | --- | --- |
11
+ | `motion.fadeIn` | subtle entrance | entry | `fadeIn(s(0.4))` |
12
+ | `motion.fadeOut` | ending / cut-to-black | exit | `fadeOut(s(0.4))` |
13
+ | `motion.slideX` | horizontal reveal | entry | `slideX(...)` |
14
+ | `motion.slideY` | vertical rise / fall | entry | `slideY(...)` |
15
+ | `motion.popIn` | impact / hero reveal | entry | `popIn(...)` |
16
+ | `motion.riseIn` | title build-up | entry | — (VidScript) |
17
+ | `motion.swingIn` | playful entrance | entry | — (VidScript) |
18
+ | `motion.glitchIn` | energetic entrance | entry | — (VidScript) |
19
+ | `motion.float` | idle ambient drift | idle | — (VidScript) |
20
+ | `motion.typewriter` | technical typing reveal | entry | — (VidScript) |
21
+
22
+ ## Grid areas (both languages)
23
+
24
+ Prefer named regions over hand-picked `x`/`y`:
25
+
26
+ ```vidscript
27
+ [0 .. 3] = text "BIG SALE", area: "title", animate: motion.popIn(0.8)
28
+ ```
29
+
30
+ ```ts
31
+ import { timeline, text, s, popIn } from '@scenerok/sdk'
32
+
33
+ const t = timeline({ width: 1080, height: 1920, fps: 30 })
34
+ t.grid({ rows: '16% 1fr 18% 10%', areas: ['title', 'stage', 'lower-third', 'caption'] })
35
+ t[0][s(3)] = text('BIG SALE', { size: 72, area: 'title' }).animate(popIn(s(0.8)))
36
+ ```
37
+
38
+ Built-in areas (no grid declaration): `title`, `stage`, `lower-third`, `caption`.
39
+
40
+ ## Examples (VidScript)
41
+
42
+ ### Bold hero headline
43
+
44
+ Large sans-serif with shadow and fade entrance/exit.
45
+
46
+ **Center pop** — popIn entrance on a dark canvas.
47
+
48
+ ```vidscript
49
+ import motion from "@scenerok/basic-animations"
50
+
51
+ [0s .. 3s] = text "SCENEROK", font: "Inter Black", size: 200, color: "#7CFAC7", align: "center", letter_spacing: 6, animate: [motion.popIn(0.8), motion.fadeOut(0.5)]
52
+ ```
53
+
54
+ **Bottom-anchored** — position: "bottom", motion.fadeIn + fadeOut.
55
+
56
+ ```vidscript
57
+ import motion from "@scenerok/basic-animations"
58
+
59
+ [0s .. 3s] = text "Make videos from text.", font: "Inter Bold", size: 96, color: "#FFFFFF", position: "bottom", align: "center", shadow_color: "#000000", shadow_blur: 16, x: "50%", y: -180, animate: [motion.fadeIn(0.6), motion.fadeOut(0.6)]
60
+ ```
61
+
62
+ ### Motion presets
63
+
64
+ Composable motion.fadeIn, popIn, and float descriptors.
65
+
66
+ **Fade in + out** — motion.fadeIn(0.5) + motion.fadeOut(0.5).
67
+
68
+ ```vidscript
69
+ import motion from "@scenerok/basic-animations"
70
+
71
+ [0s .. 3s] = text "FADE", font: "Inter Black", size: 220, color: "#FFFFFF", align: "center", animate: [motion.fadeIn(0.5), motion.fadeOut(0.5)]
72
+ ```
73
+
74
+ **Pop + float** — popIn(0.7) then float(2.2, 12).
75
+
76
+ ```vidscript
77
+ import motion from "@scenerok/basic-animations"
78
+
79
+ [0s .. 3s] = text "POP", font: "Inter Black", size: 220, color: "#FFD7A0", align: "center", animate: [motion.popIn(0.7), motion.float(2.2, 12)]
80
+ ```
81
+
82
+ ### Typewriter reveal
83
+
84
+ motion.typewriter() reveals characters one at a time.
85
+
86
+ **Slow sans** — Inter, white, longer typewriter duration.
87
+
88
+ ```vidscript
89
+ import motion from "@scenerok/basic-animations"
90
+
91
+ [0s .. 3s] = text "Type. Render. Ship.", font: "Inter", size: 72, color: "#FFFFFF", align: "center", animate: [motion.typewriter(1.8), motion.fadeOut(0.4)]
92
+ ```
93
+
94
+ **Mono terminal** — JetBrains Mono, mint green on black.
95
+
96
+ ```vidscript
97
+ import motion from "@scenerok/basic-animations"
98
+
99
+ [0s .. 3s] = text "build videos from text.", font: "JetBrains Mono", size: 58, color: "#7CFAC7", align: "center", animate: [motion.typewriter(1.6), motion.fadeOut(0.3)]
100
+ ```
101
+
102
+ Kinetic titles with no HyperFrames block → `text` + `animate: motion.<primitive>`.
103
+
104
+ Richer pre-built text treatments (staggered word reveals, scramble decode, kinetic
105
+ word-per-beat typography, gradient sweeps, typed quotes, count-up stats, glitch, neon) →
106
+ `animations.text_*` blocks — see the `text-anim` rows in `animations-picker.md`.
107
+ Fully custom text animation (your own HTML/CSS/GSAP) → `animations.custom_html` in
108
+ `animations-catalog.md`.
@@ -0,0 +1,55 @@
1
+ # Transitions Catalog
2
+
3
+ All `tr.<fn>(...)` scene transitions from `@scenerok/transitions`. Total: **29** shaders.
4
+
5
+ ## Binding semantics
6
+
7
+ A transition window `[Ts .. Te]` binds the clip active at **Ts** (from) and **Te** (to):
8
+
9
+ ```vidscript
10
+ import tr from "@scenerok/transitions"
11
+
12
+ [0s .. 5s] = video clip_a
13
+ [5s .. 5.6s] = tr.dissolve()
14
+ [5.6s .. 10s] = video clip_b
15
+ ```
16
+
17
+ Common params: `direction`, `ease`, `strength`, `mode`.
18
+
19
+ | fn | shader | defaultDuration |
20
+ | --- | --- | --- |
21
+ | `dissolve` | `dissolve` | 0.6s |
22
+ | `push` | `push` | 0.6s |
23
+ | `cover` | `cover` | 0.6s |
24
+ | `radial` | `radial` | 0.6s |
25
+ | `grid` | `grid` | 0.6s |
26
+ | `scale` | `scale` | 0.6s |
27
+ | `cube` | `cube` | 0.6s |
28
+ | `blur` | `blur` | 0.6s |
29
+ | `distortion` | `distortion` | 0.6s |
30
+ | `destruction` | `destruction` | 0.6s |
31
+ | `light` | `light` | 0.6s |
32
+ | `mechanical` | `mechanical` | 0.6s |
33
+ | `wipe` | `wipe` | 0.6s |
34
+ | `cinematic_zoom` | `cinematic_zoom` | 0.6s |
35
+ | `whip_pan` | `whip_pan` | 0.6s |
36
+ | `light_leak` | `light_leak` | 0.6s |
37
+ | `flash` | `flash` | 0.6s |
38
+ | `warp_morph` | `warp_morph` | 0.6s |
39
+ | `domain_warp` | `domain_warp` | 0.6s |
40
+ | `chromatic_split` | `chromatic_split` | 0.6s |
41
+ | `lens` | `lens` | 0.6s |
42
+ | `glitch` | `glitch` | 0.6s |
43
+ | `swirl` | `swirl` | 0.6s |
44
+ | `thermal` | `thermal` | 0.6s |
45
+ | `ripple` | `ripple` | 0.6s |
46
+ | `iris` | `iris` | 0.6s |
47
+ | `burn` | `burn` | 0.6s |
48
+ | `shatter` | `shatter` | 0.6s |
49
+ | `liquid` | `liquid` | 0.6s |
50
+
51
+ ## VFX filters (single-clip)
52
+
53
+ See `shaders-filters.md` for `filter "liquid_glass"`, `magnetic`, `portal`, `text_cursor`.
54
+
55
+ Preview: https://scenerok.com/catalog#transitions
@@ -0,0 +1,82 @@
1
+ # Text-to-Speech
2
+
3
+ `import xai from "@scenerok/xai"` — voiceover via `xai.tts(...)`.
4
+
5
+ Voice IDs: `eve` (upbeat), `ara` (warm), `rex` (business), `sal` (balanced), `leo` (authoritative).
6
+ Catalog samples may use `Marin`, `Hudson` — check `xai.listVoices()` for current IDs.
7
+
8
+ ### VidScript
9
+
10
+ ```vidscript
11
+ import xai from "@scenerok/xai"
12
+ let vo = xai.tts("Welcome to SceneRok", voice: "eve")
13
+ [0 .. vo.duration] = audio vo
14
+ ```
15
+
16
+ ### TypeScript SDK
17
+
18
+ ```ts
19
+ import { timeline, text, s } from '@scenerok/sdk'
20
+ import xai from '@scenerok/xai'
21
+
22
+ export default async function main() {
23
+ const t = timeline({ width: 1080, height: 1920, fps: 30 })
24
+ const vo = await xai.tts('Welcome to SceneRok', { voice: 'eve' })
25
+ t.push(vo)
26
+ t[0][vo.duration] = text('Welcome', { size: 64, area: 'title' })
27
+ return t.toIR()
28
+ }
29
+ ```
30
+
31
+ **Never guess a TTS window.** You cannot know the audio length while writing the script. VidScript: assign with `let` and use `vo.duration`, or `[-] = audio xai.tts(...)`. SDK: `await xai.tts(...)` then use `vo.duration` / `t.push(vo)`. Guessed ranges like `[0s .. 3s] = audio xai.tts("long sentence...")` clip or collide when the real audio runs longer.
32
+
33
+ Chain multiple lines with symbolic arithmetic:
34
+
35
+ ```vidscript
36
+ let vo1 = xai.tts("First line", voice: "eve")
37
+ let vo2 = xai.tts("Second line", voice: "eve")
38
+ [0 .. vo1.duration] = audio vo1
39
+ [vo1.duration + 0.3 .. vo1.duration + 0.3 + vo2.duration] = audio vo2
40
+ [0 .. vo1.duration] = text "First headline", area: "title" # visual spans the narration
41
+ ```
42
+
43
+ ## Examples (VidScript)
44
+
45
+ Catalog samples below use fixed example windows; in real scripts prefer `vo.duration` or `[-]` blocks as shown above.
46
+
47
+ **Leo — launch** — Product launch energy.
48
+
49
+ ```vidscript
50
+ import xai from "@scenerok/xai"
51
+
52
+ [0s .. 3s] = text "GO.", font: "Inter Black", size: 240, color: "#FF3B3B", align: "center"
53
+ [0s .. 3s] = audio xai.tts("Ship it. Right now.", voice: "leo")
54
+ ```
55
+
56
+ **Rex — countdown** — Punchy three-beat hook.
57
+
58
+ ```vidscript
59
+ import xai from "@scenerok/xai"
60
+
61
+ [0s .. 3s] = text "Drop it.", font: "Inter Black", size: 198, color: "#FFD23F", align: "center"
62
+ [0s .. 3s] = audio xai.tts("Three. Two. One. Drop it.", voice: "rex")
63
+ ```
64
+
65
+ **Ara — short line** — Single sentence under a headline.
66
+
67
+ ```vidscript
68
+ import xai from "@scenerok/xai"
69
+
70
+ [0s .. 3s] = text "Listen.", font: "Inter", size: 120, color: "#9FB6FF", align: "center"
71
+ [0s .. 3s] = audio xai.tts("One line of voice-over, baked into the mix.", voice: "ara")
72
+ ```
73
+
74
+ **Eve — narrative** — Long-form explanatory copy.
75
+
76
+ ```vidscript
77
+ import xai from "@scenerok/xai"
78
+
79
+ [0s .. 3s] = text "Voice from text.", font: "Inter Bold", size: 64, color: "#FFFFFF", align: "center"
80
+ [0s .. 3s] = audio xai.tts("Vidscript turns plain text into a fully rendered video. No timeline editing required.", voice: "eve")
81
+ ```
82
+