@letta-ai/letta-code 0.34.29 → 0.34.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/queue.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,uBAAuB,CAAC;AA4B/B,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAEf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAQA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAWA;AA+KD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC/D,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,IAAI,CAwIP;AA0OD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,oBAAoB,EAC1B,iBAAiB,EAAE,CACjB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,KACzB,OAAO,CAAC,IAAI,CAAC,GACjB,IAAI,CA2BN"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/websocket/listener/queue.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAEb,SAAS,EACV,MAAM,uBAAuB,CAAC;AA4B/B,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAEf,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAQA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAWA;AA+KD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAC/D,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;CAC7B,GAAG,IAAI,CAwIP;AAiPD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,oBAAoB,EAC1B,iBAAiB,EAAE,CACjB,UAAU,EAAE,eAAe,EAC3B,aAAa,EAAE,aAAa,KACzB,OAAO,CAAC,IAAI,CAAC,GACjB,IAAI,CA2BN"}
package/letta.js CHANGED
@@ -6044,7 +6044,7 @@ var package_default;
6044
6044
  var init_package = __esm(() => {
6045
6045
  package_default = {
6046
6046
  name: "@letta-ai/letta-code",
6047
- version: "0.34.29",
6047
+ version: "0.34.31",
6048
6048
  lettaStartupLogProtocol: 1,
6049
6049
  lettaConfigDirProtocol: 1,
6050
6050
  description: "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
@@ -211550,7 +211550,7 @@ var init_mcp_client = __esm(() => {
211550
211550
  init_streamableHttp();
211551
211551
  DEFAULT_CLIENT_INFO = {
211552
211552
  name: "letta-code",
211553
- version: "0.34.29"
211553
+ version: "0.34.31"
211554
211554
  };
211555
211555
  });
211556
211556
 
@@ -244499,7 +244499,7 @@ class CodexAppServerClient {
244499
244499
  await this.request("initialize", {
244500
244500
  clientInfo: {
244501
244501
  name: "letta-code",
244502
- version: "0.34.29"
244502
+ version: "0.34.31"
244503
244503
  },
244504
244504
  capabilities: null
244505
244505
  });
@@ -261342,7 +261342,10 @@ async function drainQueuedMessages(runtime, socket, opts, processQueuedTurn) {
261342
261342
  }
261343
261343
  const { dequeuedBatch, queuedTurn } = consumedQueuedTurn;
261344
261344
  emitQueuePumpBoundary(() => emitDequeuedUserMessage(turnTransport, runtime, queuedTurn, dequeuedBatch));
261345
- emitQueuePumpBoundary(() => emitTurnBoundaryStatus(runtime, turnTransport));
261345
+ emitQueuePumpBoundary(() => emitQueueUpdate(turnTransport, runtime, {
261346
+ agent_id: runtime.agentId,
261347
+ conversation_id: runtime.conversationId
261348
+ }));
261346
261349
  const preTurnStatus = getListenerStatus(runtime.listener) === "processing" ? "processing" : "receiving";
261347
261350
  if (opts.connectionId && runtime.listener.lastEmittedStatus !== preTurnStatus) {
261348
261351
  runtime.listener.lastEmittedStatus = preTurnStatus;
@@ -443065,7 +443068,7 @@ function handleTeleportRequest(params) {
443065
443068
  }
443066
443069
  pendingTeleports.set(key4, pending2);
443067
443070
  const conversationRuntime = getOrCreateScopedRuntime(listener, pending2.agentId, pending2.conversationId);
443068
- pending2.drainAcceptedInputs = hasAcceptedInputsWaiting(conversationRuntime, true);
443071
+ pending2.drainAcceptedInputs = hasAcceptedInputsWaiting(conversationRuntime, !conversationRuntime.isProcessing);
443069
443072
  if (!conversationRuntime.isProcessing && !pending2.drainAcceptedInputs) {
443070
443073
  const connection = listener.connections.get(pending2.connectionId);
443071
443074
  if (!connection || !isListenerTransportOpen(connection.writer)) {
@@ -539179,4 +539182,4 @@ function registerBunOAuthFlows() {
539179
539182
  registerBunOAuthFlows();
539180
539183
  await init_src5().then(() => exports_src2);
539181
539184
 
539182
- //# debugId=395DF1A0E3F5616F64756E2164756E21
539185
+ //# debugId=5AEE6E35869AE1C864756E2164756E21
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.34.29",
3
+ "version": "0.34.31",
4
4
  "lockfileVersion": 3,
5
5
  "packages": {
6
6
  "node_modules/@alcalzone/ansi-tokenize": {
@@ -5633,7 +5633,7 @@
5633
5633
  },
5634
5634
  "": {
5635
5635
  "name": "@letta-ai/letta-code",
5636
- "version": "0.34.29",
5636
+ "version": "0.34.31",
5637
5637
  "dependencies": {
5638
5638
  "@cursor/sdk": "1.1.0",
5639
5639
  "@earendil-works/pi-ai": "^0.99.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.34.29",
3
+ "version": "0.34.31",
4
4
  "lettaStartupLogProtocol": 1,
5
5
  "lettaConfigDirProtocol": 1,
6
6
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
@@ -36,7 +36,25 @@ curl -sS "${LETTA_BASE_URL%/}/v1/videos/models" \
36
36
 
37
37
  Fields on each model worth knowing: `supported_resolutions`, `supported_aspect_ratios`, `supported_sizes`, `supported_durations` (often discrete like `[4,6,8]`, not a range), `supported_frame_images` (which `frame_type` values are accepted), `generate_audio` and `seed` (capability bools), `pricing_skus`, and `allowed_passthrough_parameters`. An out-of-set value returns a 400, so validate client-side.
38
38
 
39
- Models include `google/veo-3.1`, `bytedance/seedance-2.5`, `kwaivgi/kling-v3.0-pro`, `minimax/hailuo-3`, `minimax/hailuo-3-max`, and `heygen/avatar-iv` (a talking head from one photo); the models endpoint has the full list.
39
+ ## Choosing a model
40
+
41
+ Recommendation as of 2026-10-29. Video models move fast, so this will go stale; public leaderboards such as [Artificial Analysis](https://artificialanalysis.ai/video/leaderboard/text-to-video) are one rough signal of what's newer, not a verdict. Only pick models that `/v1/videos/models` lists.
42
+
43
+ - **Default, when quality matters and there's time:** `bytedance/seedance-2.5`. Top tier on the leaderboard, native audio, clips up to 30s. Renders take about 4–6 minutes.
44
+ - **Fast:** `minimax/hailuo-3-max` (MiniMax H3). Also top tier; renders in well under a minute. Use it for quick replies in a live thread or for iterating on a prompt, then rerun the final cut on Seedance.
45
+ - Other top-tier models on the endpoint include `alibaba/wan-3.0`, `black-forest-labs/flux-3-video` and `heygen/heygen-video-1`. Some providers filter prompts more strictly than others; if one rejects a prompt, try another model rather than rewording around the filter.
46
+ - `heygen/avatar-iv` makes a talking head from one photo.
47
+
48
+ ## Writing the prompt
49
+
50
+ For a single clip, read [references/cinematography.md](references/cinematography.md).
51
+ For multiple shots or a sequence, read
52
+ [references/storytelling.md](references/storytelling.md).
53
+
54
+ For worked examples at the right level of detail, see
55
+ [references/example-prompts.md](references/example-prompts.md).
56
+
57
+ A timestamped shot list ending on the payoff helps multi-beat clips.
40
58
 
41
59
  ## Full workflow (drop-in)
42
60
 
@@ -44,8 +62,8 @@ Models include `google/veo-3.1`, `bytedance/seedance-2.5`, `kwaivgi/kling-v3.0-p
44
62
  #!/usr/bin/env bash
45
63
  set -euo pipefail
46
64
 
47
- PROMPT="a golden retriever playing fetch on a sunny beach"
48
- MODEL="google/veo-3.1"
65
+ PROMPT="A golden retriever bounds across wet sand at golden hour to catch a tennis ball mid-air, spray flying off its fur. Low tracking shot at dog height, 35mm, shallow depth of field, warm backlight and lens flare, waves and the ball's thud in the audio. Ends on the dog trotting back toward camera, ball in mouth."
66
+ MODEL="bytedance/seedance-2.5"
49
67
  OUTPUT="video-$(date +%Y%m%d-%H%M%S).mp4"
50
68
  base_url="${LETTA_BASE_URL%/}"
51
69
 
@@ -0,0 +1,217 @@
1
+ > Adapted from fal-ai-community/skills (https://github.com/fal-ai-community/skills, commit 9ca850412943251fc9a466c4c29fdaf7a303a3d8), MIT License per that repository's README. Changes: execution commands replaced with Letta's /v1/videos.
2
+
3
+ # Cinematography
4
+
5
+ Use this reference when the user needs cinematic direction, not generic "make it
6
+ cinematic" prompting.
7
+
8
+ Write concrete visual direction. Avoid empty prestige words and em dashes.
9
+
10
+ ## Inputs to collect
11
+
12
+ Ask only for what affects the shot:
13
+
14
+ - Subject and action.
15
+ - Medium: still image, video, image-to-video, edit, storyboard frame.
16
+ - Genre and mood.
17
+ - Framing: close-up, medium, wide, overhead, POV, profile, locked-off.
18
+ - Camera motion for video: push-in, dolly, tracking, handheld, crane, drone.
19
+ - Lens feel: wide, normal, telephoto, macro, shallow or deep focus.
20
+ - Lighting: natural, practical, studio, noir, high key, low key, backlit.
21
+ - Output: aspect ratio, duration, first frame, last frame, download path.
22
+ - Preferred model, if the user wants a specific cinematography model or
23
+ quality/cost profile.
24
+
25
+ ## Execution with Letta
26
+
27
+ Call `/v1/videos` as described in `SKILL.md`. Pick a model from `SKILL.md`'s
28
+ "Choosing a model" section and `/v1/videos/models`, and use only the controls
29
+ that endpoint reports for the selected model.
30
+
31
+ ## Prompt build order
32
+
33
+ Use the SCLCAM structure:
34
+
35
+ 1. Subject: who or what is in frame.
36
+ 2. Context: location, time, weather, story moment.
37
+ 3. Lens/framing: distance, angle, focal length feel, depth of field.
38
+ 4. Camera motion: only for video or if motion blur is desired.
39
+ 5. Atmosphere: haze, rain, practicals, reflections, texture.
40
+ 6. Mood/color: palette, contrast, grade, exposure style.
41
+ 7. Output controls: aspect ratio, duration, first-frame continuity.
42
+
43
+ Example structure:
44
+
45
+ ```text
46
+ [subject] in [context], framed as [shot size and angle], [lens feel],
47
+ [lighting setup], [camera movement if video], [color grade], [texture],
48
+ [duration or aspect ratio], [continuity constraints]
49
+ ```
50
+
51
+ ## Quality bar
52
+
53
+ Before returning, check:
54
+
55
+ - Camera movement is physically plausible for the scene.
56
+ - Lens, shot size, and camera angle do not contradict each other.
57
+ - Lighting direction is clear and consistent.
58
+ - Color grade supports the mood without flattening subject detail.
59
+ - Video prompt describes one shot unless the selected model supports multiple
60
+ prompts or shot lists.
61
+ - Downloaded video comes from `/v1/videos/{id}/content`.
62
+
63
+ If a result looks generic, improve specificity in camera, blocking, light, and
64
+ environment before adding more adjectives.
65
+
66
+ # Shot language reference
67
+
68
+ ## Shot sizes
69
+
70
+ - Extreme close-up: one detail, texture, eye, hand, product edge.
71
+ - Close-up: face or object detail with emotional focus.
72
+ - Medium close-up: chest-up subject, useful for dialogue and portraits.
73
+ - Medium shot: waist-up subject, body language visible.
74
+ - Full shot: entire body or object, silhouette and stance readable.
75
+ - Wide shot: subject inside environment.
76
+ - Extreme wide: scale, isolation, worldbuilding, architecture.
77
+
78
+ ## Angles
79
+
80
+ - Eye level: natural, direct, grounded.
81
+ - Low angle: power, threat, awe.
82
+ - High angle: vulnerability, surveillance, layout clarity.
83
+ - Dutch angle: unease, instability. Use sparingly.
84
+ - Over-the-shoulder: relationship, conversation, pursuit.
85
+ - POV: subjective experience.
86
+ - Profile: graphic composition, ritual, tension, fashion.
87
+
88
+ ## Camera movement
89
+
90
+ - Slow push-in: attention, realization, premium product reveal.
91
+ - Pull-back: isolation, context, reveal.
92
+ - Dolly left or right: spatial discovery.
93
+ - Tracking shot: follow action with continuity.
94
+ - Crane up: scale reveal or emotional release.
95
+ - Handheld: urgency, intimacy, instability.
96
+ - Locked-off: control, deadpan, formalism, surveillance.
97
+ - Orbit: product reveal, character inspection, heightened drama.
98
+ - Macro glide: product texture, food, jewelry, electronics.
99
+
100
+ ## Composition
101
+
102
+ - Centered symmetry: control, ritual, luxury, unease.
103
+ - Rule of thirds: natural editorial composition.
104
+ - Negative space: loneliness, premium ad copy area, tension.
105
+ - Foreground obstruction: secrecy, surveillance, voyeurism.
106
+ - Leading lines: architecture, movement, precision.
107
+ - Frame within frame: confinement, observation, layered space.
108
+
109
+ ## Continuity language
110
+
111
+ - "same subject and wardrobe as the reference"
112
+ - "preserve product shape and label"
113
+ - "continue from the uploaded first frame"
114
+ - "single continuous shot"
115
+ - "no cutaways"
116
+ - "no time jump"
117
+ - "same lighting direction throughout"
118
+
119
+ # Lighting, lens, and color reference
120
+
121
+ ## Lighting setups
122
+
123
+ - Soft key: flattering, commercial, calm.
124
+ - Hard key: graphic, dramatic, fashion, noir.
125
+ - Backlight: separation, glow, silhouette, premium edge.
126
+ - Rim light: subject outline, product glass, metal highlights.
127
+ - Practical light: lamps, signs, screens, candles in the scene.
128
+ - Motivated light: light that has a visible or logical source.
129
+ - Low key: dark frame, selective highlights, suspense.
130
+ - High key: bright, low contrast, beauty, comedy, clean product work.
131
+ - Top light: interrogation, overhead realism, harsh institutional mood.
132
+ - Window light: natural, intimate, documentary.
133
+
134
+ ## Lens feel
135
+
136
+ - 14-20mm wide: scale, distortion, kinetic interiors, action.
137
+ - 24-28mm wide-normal: environmental realism, travel, documentary.
138
+ - 35mm: natural cinematic perspective, street, lifestyle, narrative.
139
+ - 50mm: classic portrait and product balance.
140
+ - 85mm: compressed portrait, beauty, isolation.
141
+ - 100mm macro: product detail, jewelry, food texture, eyes.
142
+ - Telephoto compression: distance, surveillance, fashion runway.
143
+
144
+ ## Depth of field
145
+
146
+ - Shallow focus: isolate subject, premium portrait, product hero.
147
+ - Deep focus: environment and blocking stay readable.
148
+ - Rack focus: attention shifts between two subjects or details.
149
+
150
+ ## Color and grade
151
+
152
+ - Clean neutral grade: commercial, e-commerce, architecture.
153
+ - Warm golden grade: nostalgia, comfort, luxury hospitality.
154
+ - Cool cyan shadows: thriller, tech, night exterior.
155
+ - Desaturated earth palette: realism, documentary, survival.
156
+ - High contrast monochrome: noir, fashion, graphic product.
157
+ - Pastel palette: beauty, wellness, light lifestyle.
158
+ - Sodium vapor night: urban realism, tension.
159
+
160
+ ## Texture
161
+
162
+ - Fine film grain: organic image, period mood.
163
+ - Clean digital: tech, luxury, e-commerce, architecture.
164
+ - Halation: glowing highlights, dream, night practicals.
165
+ - Mist filter: soft bloom, romance, beauty.
166
+ - Crisp high shutter: action clarity.
167
+ - Motion blur: speed, energy, handheld realism.
168
+
169
+ # Cinematography examples
170
+
171
+ Use these as direction patterns. Replace subject, model fields, and output
172
+ controls with the current task.
173
+
174
+ ## Noir close-up
175
+
176
+ ```text
177
+ a detective sitting alone in a parked car at night, close-up from passenger
178
+ seat angle, 50mm lens feel, rain streaks on the window in foreground, hard
179
+ streetlight slashes across his face, low key noir lighting, deep shadows,
180
+ muted green and amber grade, still frame, no text
181
+ ```
182
+
183
+ ## Product macro glide
184
+
185
+ ```text
186
+ single continuous macro glide across the brushed steel edge of a luxury watch,
187
+ 100mm macro lens feel, black velvet surface, thin strip light reflected along
188
+ the bevel, shallow depth of field, slow controlled camera movement, clean dark
189
+ commercial grade, no extra text, no logo distortion
190
+ ```
191
+
192
+ ## Sci-fi wide shot
193
+
194
+ ```text
195
+ small astronaut crossing a vast white salt flat toward a black monolith,
196
+ extreme wide shot, low horizon, 24mm lens feel, late afternoon backlight,
197
+ long shadow, minimal composition, cool silver color grade, quiet atmospheric
198
+ haze, cinematic still, no extra ships
199
+ ```
200
+
201
+ ## Handheld pursuit
202
+
203
+ ```text
204
+ 8 second handheld tracking shot following a woman running through a narrow
205
+ market alley at night, camera shoulder-height behind her, practical neon and
206
+ food stall lights, motion blur on background, subject remains readable,
207
+ urgent thriller pacing, one continuous shot, no cuts
208
+ ```
209
+
210
+ ## Warm interior drama
211
+
212
+ ```text
213
+ two siblings at a kitchen table after midnight, medium-wide static frame,
214
+ 35mm lens feel, warm practical lamp on table, cool moonlight through window,
215
+ subtle haze, quiet tension, naturalistic color grade, deep focus enough to
216
+ read both faces, no melodramatic poses
217
+ ```
@@ -0,0 +1,55 @@
1
+ # Example prompts
2
+
3
+ Strong text-to-video prompts from model pages on fal.ai, quoted as published. Each link is the page the prompt came from. Use them as models of the level of detail that works: subject, materials, light, camera, lens, palette, timing, sound, on-screen text, and what to exclude.
4
+
5
+ ## Single-shot still life: no people, light-driven
6
+
7
+ Source: [Seedance 2.5 text-to-video on fal](https://fal.ai/models/bytedance/seedance-2.5/us/text-to-video)
8
+
9
+ ```text
10
+ Editorial still life for a luxury perfume brand, no people or hands in frame. A single heavy-based glass bottle with a faceted amber-tinted body and a brushed brass cap, standing on a slab of honed travertine against a warm sand-toned plaster wall. Beside it, a low-profile companion object for scale — a folded cream linen card embossed with the brand mark and a single dried sprig of eucalyptus resting on the stone. A slow drip of liquid catches the light on the bottle's shoulder. Hard, directional late-afternoon sunlight from the right rakes across the scene, casting a long, sharp bottle shadow and a bright caustic refraction on the wall behind it; a soft secondary bounce lifts the shadow side. Palette of amber, ivory, warm grey, and dull gold. Eye-level camera, slight three-quarter angle to the bottle, generous negative space above and to the left for type, medium-format look, 90mm lens, shallow but controlled depth of field, subtle film grain. Quiet, architectural, restrained, tactile, with the light doing the storytelling
11
+ ```
12
+
13
+ ## Character action with a timed beat
14
+
15
+ Source: [MiniMax H3 Max text-to-video on fal](https://fal.ai/models/minimax/h3-max/text-to-video)
16
+
17
+ ```text
18
+ An aging warrior-monk in scorched ceremonial armor, a split ceramic mask and a humming prayer-band on his forearm + 0–4s: climbs silently along a cliffside terrace as insect-like surveyor drones comb the sun-bleached ruins, standing alone under as the camera rises over the ruined monastery. Sun-blasted post-apocalyptic sci-fi action, dust, heat haze, practical debris, sweeping crane tracking, silence broken only by wind.
19
+ ```
20
+
21
+ ## Kinetic typography with timestamped sections
22
+
23
+ Source: [H3 Max Turbo text-to-video on fal](https://fal.ai/models/minimax/h3-max-turbo/text-to-video)
24
+
25
+ ```text
26
+ 0.00–2.50
27
+ Warm ivory background.
28
+ Large black text: **H3 MAX TURBO.**
29
+ Text slides in fast from the left with a clean ease-out. A thin red line grows underneath it. On the beat, the whole composition compresses slightly and snaps back.
30
+
31
+ 2.50–5.50
32
+ The red line extends across the screen and becomes a crop transition.
33
+ Reveal huge stacked text:
34
+
35
+ **FASTER**
36
+ **THAN REAL TIME.**
37
+
38
+ Use aggressive kinetic typography: large scale, edge cropping, fast horizontal movement, strong black/ivory/red composition. Keep the text sharp when it lands.
39
+
40
+ STYLE
41
+ Premium 2D motion design with very subtle 2.5D card depth. Swiss editorial typography mixed with energetic commercial motion graphics. Warm ivory, black and vermilion red. Large type, strong cropping, fast masks, cards, lines, parallax, precise easing, short motion blur only during transitions. No full 3D scenes, no UI, no particles, no random objects, no glitches, no letter-by-letter animation.
42
+
43
+ "fal" must always be lowercase.
44
+ ```
45
+
46
+ ## Period commercial with dialogue and an overlay
47
+
48
+ Source: [FLUX 3 Max text-to-video on fal](https://fal.ai/models/blackforestlabs/flux-3-max/text-to-video)
49
+
50
+ ```text
51
+ 1985 TV beer commercial, 35mm film grain, golden-hour sunset. One continuous slow push-in on a weathered cowboy leaning against a ranch porch rail, his horse tied up behind him. He pulls an ice-cold Lone Star from a cooler, cracks it open with a hiss, takes a long sip, and turns to camera with a tired grin. Warm amber tones, soft lens flare, slide guitar soundtrack.
52
+ Narrator (deep, gravelly): "Sunup to sundown, [pauses], he's earned every drop."
53
+ Cowboy (raising the bottle): "Now this is quittin' time."
54
+ Overlay: Lone Star logo fades in over the final frame.
55
+ ```
@@ -0,0 +1,269 @@
1
+ > Adapted from fal-ai-community/skills (https://github.com/fal-ai-community/skills, commit 9ca850412943251fc9a466c4c29fdaf7a303a3d8), MIT License per that repository's README. Changes: execution commands replaced with Letta's /v1/videos.
2
+
3
+ # Storytelling
4
+
5
+ Use this reference when the user wants a sequence, not a single asset.
6
+
7
+ The goal is to produce clear story beats and executable video generation. Avoid
8
+ generic inspiration copy, fake dialogue, and em dashes.
9
+
10
+ ## Inputs to collect
11
+
12
+ Ask only when missing information affects execution.
13
+
14
+ - Format: ad, short film, music video, documentary, tutorial, social story.
15
+ - Duration and aspect ratio.
16
+ - Number of shots or allowed range.
17
+ - Main subject, character, product, or location.
18
+ - Continuity anchors: character, product, wardrobe, environment, color.
19
+ - Source media: first frame, reference image, product shot, audio track.
20
+ - Audio needs: narration, music, sound design, transcript, no audio.
21
+ - Preferred model or model family, if the user wants to decide quality, cost,
22
+ speed, audio, or multi-shot tradeoffs.
23
+
24
+ ## Execution with Letta
25
+
26
+ Call `/v1/videos` as described in `SKILL.md`. Pick models from `SKILL.md`'s
27
+ "Choosing a model" section and `/v1/videos/models`, and use only the sequence,
28
+ reference, audio, and timeline controls that endpoint reports for each selected
29
+ model. Generate clips separately when the selected model supports only one
30
+ prompt, and do not claim they are stitched unless a model or another tool
31
+ actually stitched them.
32
+
33
+ ## Shot planning
34
+
35
+ Plan every sequence as beats first:
36
+
37
+ 1. Hook: immediate visual reason to keep watching.
38
+ 2. Setup: who, what, where, and why it matters.
39
+ 3. Development: movement, discovery, proof, or escalation.
40
+ 4. Turn: reveal, transformation, result, or emotional change.
41
+ 5. Close: final image, product memory, CTA-safe frame, or unresolved mood.
42
+
43
+ For each shot, write:
44
+
45
+ - Shot number and duration.
46
+ - Story purpose.
47
+ - Visual prompt.
48
+ - Continuity anchor.
49
+ - Input reference, if any.
50
+ - Letta video model.
51
+ - Expected output path.
52
+
53
+ ## Prompt build order
54
+
55
+ Use this structure for each shot:
56
+
57
+ ```text
58
+ SHOT [number], [duration]:
59
+ [story purpose]. [subject and action]. [location and time]. [camera framing].
60
+ [camera movement]. [lighting and color]. [continuity anchor]. [transition or
61
+ relationship to previous shot].
62
+ ```
63
+
64
+ Keep one shot to one clear action unless the selected model supports multi-shot
65
+ or timeline prompting.
66
+
67
+ ## Quality bar
68
+
69
+ Before returning:
70
+
71
+ - Shot order has a clear narrative function.
72
+ - The first shot is strong enough for the platform.
73
+ - Continuity anchors are repeated without bloating every prompt.
74
+ - Camera motion is varied but not random.
75
+ - Durations add up to the requested runtime.
76
+ - Async request IDs and downloaded files are recorded.
77
+ - The model's actual schema, not assumptions, drove the final command.
78
+
79
+ # Shot planning reference
80
+
81
+ ## Basic sequence shapes
82
+
83
+ ## 15 second social ad
84
+
85
+ | Shot | Time | Purpose | Visual role |
86
+ | --- | --- | --- | --- |
87
+ | 1 | 0-2s | Hook | striking product or problem image |
88
+ | 2 | 2-6s | Context | product in use or character reaction |
89
+ | 3 | 6-11s | Proof | feature, texture, process, result |
90
+ | 4 | 11-15s | Close | memorable final frame with safe space |
91
+
92
+ ## 30 second commercial
93
+
94
+ | Shot | Time | Purpose | Visual role |
95
+ | --- | --- | --- | --- |
96
+ | 1 | 0-3s | Hook | image that defines the world |
97
+ | 2 | 3-7s | Product or hero | show subject clearly |
98
+ | 3 | 7-13s | Benefit | action, feature, transformation |
99
+ | 4 | 13-20s | Lifestyle or proof | real context, emotion, result |
100
+ | 5 | 20-27s | Escalation | strongest beauty or motion shot |
101
+ | 6 | 27-30s | End frame | clean brand-safe final composition |
102
+
103
+ ## Short cinematic scene
104
+
105
+ | Shot | Purpose |
106
+ | --- | --- |
107
+ | Establishing | where the scene happens and mood |
108
+ | Character reveal | who matters |
109
+ | Action beat | what changes |
110
+ | Reaction | emotional consequence |
111
+ | Detail insert | object, clue, texture, proof |
112
+ | Resolution | new state or unanswered tension |
113
+
114
+ ## Continuity anchors
115
+
116
+ Character anchor:
117
+
118
+ ```text
119
+ same character face, hair, wardrobe, age, posture, and style as the approved
120
+ reference
121
+ ```
122
+
123
+ Product anchor:
124
+
125
+ ```text
126
+ same product shape, color, packaging, logo placement, and material as the
127
+ reference
128
+ ```
129
+
130
+ Location anchor:
131
+
132
+ ```text
133
+ same room layout, window direction, color palette, and time of day
134
+ ```
135
+
136
+ Motion anchor:
137
+
138
+ ```text
139
+ single continuous shot, starts where previous shot ended, no time jump
140
+ ```
141
+
142
+ ## Pacing guidance
143
+
144
+ - Fast: 1-3 second shots, strong motion, clear graphic frames.
145
+ - Medium: 3-6 second shots, product demos, lifestyle, dialogue-like scenes.
146
+ - Slow: 6-10 second shots, luxury, drama, architecture, atmosphere.
147
+ - Variable: fast hook, slower proof, strong final frame.
148
+
149
+ # Storytelling workflows
150
+
151
+ ## Native multi-prompt sequence
152
+
153
+ Use only when the model supports multiple prompts, shot arrays, scenes,
154
+ timeline, or keyframe-like fields.
155
+
156
+ 1. Inspect the model and identify the exact multi-shot fields.
157
+ 2. Convert the story into concise shot prompts.
158
+ 3. Keep one continuity anchor outside the repeated shot details if the model
159
+ supports a global prompt.
160
+ 4. Run async and download the completed result.
161
+ 5. Check whether the model returned one video or per-shot files.
162
+
163
+ ## Manual per-shot video
164
+
165
+ Use when the model supports only one shot at a time.
166
+
167
+ 1. Create a shot table.
168
+ 2. Generate or upload a reference frame for each shot.
169
+ 3. Run each shot with unique output paths.
170
+ 4. Record model, request id, prompt, local output path, and defects.
171
+ 5. Return clips in timeline order. Do not claim they are stitched unless they
172
+ are actually stitched by the model or another tool.
173
+
174
+ ## First-frame to last-frame
175
+
176
+ 1. Generate or choose the opening frame.
177
+ 2. Generate or choose the target final frame.
178
+ 3. Supply both frames if supported.
179
+ 4. Inspect the model for accepted first/last frame fields.
180
+ 5. Prompt the transition as one physical motion or transformation.
181
+ 6. Run async and download.
182
+
183
+ ## Character narrative
184
+
185
+ 1. Write the character anchor (see "Continuity anchors" above) and generate an approved still of the character to reuse.
186
+ 2. Build shot variables around action, expression, and location.
187
+ 3. Use image-to-video from approved stills when identity drift matters.
188
+ 4. Compare each result to the anchor before advancing to the next shot.
189
+
190
+ ## Product narrative
191
+
192
+ 1. Write the product anchor (see "Continuity anchors" above): shape, color, packaging, logo placement, material.
193
+ 2. Plan the sequence around hook, feature, context, proof, final frame.
194
+ 3. Use the same product reference for every shot if the model allows it.
195
+ 4. Keep motion modest when packaging fidelity matters.
196
+
197
+ ## Audio narrative
198
+
199
+ 1. Choose a model with narration, music, or sound generation support.
200
+ 2. Use the model's supported audio controls.
201
+ 3. Use transcript or beat timing to set shot durations.
202
+ 4. Return audio path and visual clip paths separately unless a model produces
203
+ combined audio-video output.
204
+
205
+ # Storytelling examples
206
+
207
+ These examples show planning density and prompt tone. Adapt to the user's model
208
+ and references.
209
+
210
+ ## 15 second coffee social ad
211
+
212
+ | Shot | Duration | Prompt |
213
+ | --- | --- | --- |
214
+ | 1 | 2s | macro close-up of espresso crema swirling in a glass cup, warm morning window light, shallow focus, immediate sensory hook |
215
+ | 2 | 4s | same coffee cup placed beside a small bag of beans on a clean kitchen counter, slow push-in, product and texture readable |
216
+ | 3 | 5s | hand pours milk into the coffee, soft cloud bloom, controlled motion, warm lifestyle lighting, no text |
217
+ | 4 | 4s | final hero frame of cup and beans with clean negative space on right for copy, calm premium breakfast mood |
218
+
219
+ Execution note: generate still or video per shot unless the selected model
220
+ supports a prompt list.
221
+
222
+ ## 30 second architecture brand film
223
+
224
+ | Shot | Duration | Purpose |
225
+ | --- | --- | --- |
226
+ | 1 | 4s | dawn exterior of a modern house, wide static frame, warm interior lights |
227
+ | 2 | 5s | slow tracking shot along concrete wall and timber detail, tactile proof |
228
+ | 3 | 5s | architect's hand sketches over plan, natural desk light, human process |
229
+ | 4 | 6s | family crosses the living room, soft backlight, space feels livable |
230
+ | 5 | 6s | crane up from courtyard to roofline, shows scale and geometry |
231
+ | 6 | 4s | quiet final exterior with empty safe space for brand mark |
232
+
233
+ Continuity anchor:
234
+
235
+ ```text
236
+ same house, same material palette of warm timber, pale concrete, black steel
237
+ frames, and soft morning light
238
+ ```
239
+
240
+ ## Cinematic reunion scene
241
+
242
+ | Shot | Duration | Prompt |
243
+ | --- | --- | --- |
244
+ | 1 | 5s | empty train platform in blue hour rain, wide locked-off frame, practical lights reflected on wet ground |
245
+ | 2 | 4s | close-up of woman noticing someone off screen, same coat and hairstyle, soft backlight, restrained emotion |
246
+ | 3 | 4s | medium shot of man stepping from train doorway, matching eyeline, cool station light |
247
+ | 4 | 5s | slow tracking two-shot as they walk toward each other, shallow depth of field, no crowd distraction |
248
+ | 5 | 6s | close hands meeting, rain on sleeves, quiet emotional detail |
249
+ | 6 | 6s | wide final frame of both under station clock, warm practical light, unresolved calm |
250
+
251
+ ## Product launch sequence
252
+
253
+ ```text
254
+ SHOT 1, 3s:
255
+ black screen opens to a thin rim light tracing the product silhouette, centered
256
+ macro frame, premium suspense, no text.
257
+
258
+ SHOT 2, 4s:
259
+ slow orbit reveals the product material and main contour, controlled studio
260
+ reflections, same product shape and logo placement as the reference.
261
+
262
+ SHOT 3, 5s:
263
+ close-up of the key feature in use, clean hand interaction, product remains
264
+ sharp, no fake labels.
265
+
266
+ SHOT 4, 3s:
267
+ final hero composition on simple surface with large negative space for copy,
268
+ brand-safe end frame, no generated text.
269
+ ```