@farazirfan/costar-server-executor 1.7.37 → 1.7.39

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 (253) hide show
  1. package/dist/agent/agent.d.ts +90 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +606 -0
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/pi-embedded-runner/run.d.ts.map +1 -1
  6. package/dist/agent/pi-embedded-runner/run.js +2 -1
  7. package/dist/agent/pi-embedded-runner/run.js.map +1 -1
  8. package/dist/agent/pi-embedded-runner/system-prompt.d.ts.map +1 -1
  9. package/dist/agent/pi-embedded-runner/system-prompt.js +16 -37
  10. package/dist/agent/pi-embedded-runner/system-prompt.js.map +1 -1
  11. package/dist/agent/pi-embedded-runner/tools.d.ts +4 -1
  12. package/dist/agent/pi-embedded-runner/tools.d.ts.map +1 -1
  13. package/dist/agent/pi-embedded-runner/tools.js +3 -1
  14. package/dist/agent/pi-embedded-runner/tools.js.map +1 -1
  15. package/dist/agent/pi-embedded-runner/types.d.ts +4 -0
  16. package/dist/agent/pi-embedded-runner/types.d.ts.map +1 -1
  17. package/dist/cli/env-loader.d.ts.map +1 -1
  18. package/dist/cli/env-loader.js +1 -0
  19. package/dist/cli/env-loader.js.map +1 -1
  20. package/dist/cli/setup.js +2 -2
  21. package/dist/cli/setup.js.map +1 -1
  22. package/dist/cron/normalize.d.ts +31 -0
  23. package/dist/cron/normalize.d.ts.map +1 -0
  24. package/dist/cron/normalize.js +211 -0
  25. package/dist/cron/normalize.js.map +1 -0
  26. package/dist/cron/scheduler.d.ts +33 -3
  27. package/dist/cron/scheduler.d.ts.map +1 -1
  28. package/dist/cron/scheduler.js +253 -48
  29. package/dist/cron/scheduler.js.map +1 -1
  30. package/dist/heartbeat/runner.d.ts +27 -12
  31. package/dist/heartbeat/runner.d.ts.map +1 -1
  32. package/dist/heartbeat/runner.js +82 -104
  33. package/dist/heartbeat/runner.js.map +1 -1
  34. package/dist/infra/heartbeat-events-filter.d.ts +29 -0
  35. package/dist/infra/heartbeat-events-filter.d.ts.map +1 -0
  36. package/dist/infra/heartbeat-events-filter.js +80 -0
  37. package/dist/infra/heartbeat-events-filter.js.map +1 -0
  38. package/dist/infra/index.d.ts +9 -0
  39. package/dist/infra/index.d.ts.map +1 -0
  40. package/dist/infra/index.js +9 -0
  41. package/dist/infra/index.js.map +1 -0
  42. package/dist/infra/system-events.d.ts +58 -2
  43. package/dist/infra/system-events.d.ts.map +1 -1
  44. package/dist/infra/system-events.js +80 -14
  45. package/dist/infra/system-events.js.map +1 -1
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +6 -1
  48. package/dist/server.js.map +1 -1
  49. package/dist/services/platform-keys.d.ts +19 -0
  50. package/dist/services/platform-keys.d.ts.map +1 -0
  51. package/dist/services/platform-keys.js +74 -0
  52. package/dist/services/platform-keys.js.map +1 -0
  53. package/dist/subagent/registry.d.ts +96 -0
  54. package/dist/subagent/registry.d.ts.map +1 -0
  55. package/dist/subagent/registry.js +180 -0
  56. package/dist/subagent/registry.js.map +1 -0
  57. package/dist/tools/complete-turn.d.ts +2 -2
  58. package/dist/tools/complete-turn.js +10 -10
  59. package/dist/tools/complete-turn.js.map +1 -1
  60. package/dist/tools/contacts.d.ts +13 -0
  61. package/dist/tools/contacts.d.ts.map +1 -0
  62. package/dist/tools/contacts.js +80 -0
  63. package/dist/tools/contacts.js.map +1 -0
  64. package/dist/tools/cron.d.ts +17 -2
  65. package/dist/tools/cron.d.ts.map +1 -1
  66. package/dist/tools/cron.js +117 -35
  67. package/dist/tools/cron.js.map +1 -1
  68. package/dist/tools/google-maps.d.ts +6 -6
  69. package/dist/tools/google-maps.d.ts.map +1 -1
  70. package/dist/tools/google-maps.js +207 -262
  71. package/dist/tools/google-maps.js.map +1 -1
  72. package/dist/tools/index.d.ts +17 -7
  73. package/dist/tools/index.d.ts.map +1 -1
  74. package/dist/tools/index.js +40 -9
  75. package/dist/tools/index.js.map +1 -1
  76. package/dist/tools/phone-call.d.ts +11 -0
  77. package/dist/tools/phone-call.d.ts.map +1 -0
  78. package/dist/tools/phone-call.js +151 -0
  79. package/dist/tools/phone-call.js.map +1 -0
  80. package/dist/tools/sessions-spawn.d.ts +33 -0
  81. package/dist/tools/sessions-spawn.d.ts.map +1 -0
  82. package/dist/tools/sessions-spawn.js +164 -0
  83. package/dist/tools/sessions-spawn.js.map +1 -0
  84. package/dist/tools/spotify.d.ts +12 -0
  85. package/dist/tools/spotify.d.ts.map +1 -0
  86. package/dist/tools/spotify.js +251 -0
  87. package/dist/tools/spotify.js.map +1 -0
  88. package/dist/tools/subagents.d.ts +23 -0
  89. package/dist/tools/subagents.d.ts.map +1 -0
  90. package/dist/tools/subagents.js +209 -0
  91. package/dist/tools/subagents.js.map +1 -0
  92. package/dist/tools/whatsapp.d.ts +13 -0
  93. package/dist/tools/whatsapp.d.ts.map +1 -0
  94. package/dist/tools/whatsapp.js +215 -0
  95. package/dist/tools/whatsapp.js.map +1 -0
  96. package/dist/tools/youtube.d.ts +12 -0
  97. package/dist/tools/youtube.d.ts.map +1 -0
  98. package/dist/tools/youtube.js +218 -0
  99. package/dist/tools/youtube.js.map +1 -0
  100. package/dist/utils/asterizk-auth.d.ts +43 -0
  101. package/dist/utils/asterizk-auth.d.ts.map +1 -0
  102. package/dist/utils/asterizk-auth.js +125 -0
  103. package/dist/utils/asterizk-auth.js.map +1 -0
  104. package/dist/web-server.d.ts.map +1 -1
  105. package/dist/web-server.js +132 -0
  106. package/dist/web-server.js.map +1 -1
  107. package/dist/workspace/index.d.ts +3 -4
  108. package/dist/workspace/index.d.ts.map +1 -1
  109. package/dist/workspace/index.js +3 -4
  110. package/dist/workspace/index.js.map +1 -1
  111. package/dist/workspace/templates.d.ts +8 -7
  112. package/dist/workspace/templates.d.ts.map +1 -1
  113. package/dist/workspace/templates.js +18 -127
  114. package/dist/workspace/templates.js.map +1 -1
  115. package/dist/workspace/workspace.d.ts +2 -4
  116. package/dist/workspace/workspace.d.ts.map +1 -1
  117. package/dist/workspace/workspace.js +7 -16
  118. package/dist/workspace/workspace.js.map +1 -1
  119. package/package.json +1 -1
  120. package/public/index.html +231 -0
  121. package/skills/docx/SKILL.md +468 -0
  122. package/skills/docx/scripts/__init__.py +1 -0
  123. package/skills/docx/scripts/accept_changes.py +181 -0
  124. package/skills/docx/scripts/comment.py +347 -0
  125. package/skills/docx/scripts/helpers/__init__.py +0 -0
  126. package/skills/docx/scripts/helpers/merge_runs.py +231 -0
  127. package/skills/docx/scripts/helpers/simplify_redlines.py +240 -0
  128. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  129. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  130. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  131. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  132. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  133. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  134. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  135. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  136. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  137. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  138. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  139. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  140. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  141. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  142. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  143. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  144. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  145. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  146. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  147. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  148. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  149. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  150. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  151. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  152. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  153. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  154. package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  155. package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  156. package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  157. package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  158. package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  159. package/skills/docx/scripts/ooxml/schemas/mce/mc.xsd +75 -0
  160. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  161. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  162. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  163. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  164. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  165. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  166. package/skills/docx/scripts/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  167. package/skills/docx/scripts/ooxml/scripts/pack.py +159 -0
  168. package/skills/docx/scripts/ooxml/scripts/unpack.py +29 -0
  169. package/skills/docx/scripts/ooxml/scripts/validate.py +106 -0
  170. package/skills/docx/scripts/ooxml/scripts/validation/__init__.py +15 -0
  171. package/skills/docx/scripts/ooxml/scripts/validation/base.py +1023 -0
  172. package/skills/docx/scripts/ooxml/scripts/validation/docx.py +519 -0
  173. package/skills/docx/scripts/ooxml/scripts/validation/pptx.py +315 -0
  174. package/skills/docx/scripts/ooxml/scripts/validation/redlining.py +284 -0
  175. package/skills/docx/scripts/pack.py +166 -0
  176. package/skills/docx/scripts/templates/comments.xml +3 -0
  177. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  178. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  179. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  180. package/skills/docx/scripts/templates/people.xml +3 -0
  181. package/skills/docx/scripts/unpack.py +134 -0
  182. package/skills/longform-video-generation/SKILL.md +298 -0
  183. package/skills/longform-video-generation/references/advanced_techniques.md +474 -0
  184. package/skills/longform-video-generation/references/google_api_guide.md +288 -0
  185. package/skills/longform-video-generation/scripts/video_generator.py +579 -0
  186. package/skills/pdf/FORMS.md +305 -0
  187. package/skills/pdf/REFERENCE.md +612 -0
  188. package/skills/pdf/SKILL.md +293 -0
  189. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  190. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  191. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  192. package/skills/pdf/scripts/create_validation_image.py +41 -0
  193. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  194. package/skills/pdf/scripts/extract_form_structure.py +124 -0
  195. package/skills/pdf/scripts/fill_fillable_fields.py +116 -0
  196. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +136 -0
  197. package/skills/pptx/SKILL.md +171 -0
  198. package/skills/pptx/editing.md +205 -0
  199. package/skills/pptx/pptxgenjs.md +377 -0
  200. package/skills/pptx/scripts/add_slide.py +225 -0
  201. package/skills/pptx/scripts/clean.py +309 -0
  202. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  203. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  204. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  205. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  206. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  207. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  208. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  209. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  210. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  211. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  212. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  213. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  214. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  215. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  216. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  217. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  218. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  219. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  220. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  221. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  222. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  223. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  224. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  225. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  226. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  227. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  228. package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  229. package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  230. package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  231. package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  232. package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  233. package/skills/pptx/scripts/ooxml/schemas/mce/mc.xsd +75 -0
  234. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  235. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  236. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  237. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  238. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  239. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  240. package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  241. package/skills/pptx/scripts/ooxml/scripts/pack.py +159 -0
  242. package/skills/pptx/scripts/ooxml/scripts/unpack.py +29 -0
  243. package/skills/pptx/scripts/ooxml/scripts/validate.py +106 -0
  244. package/skills/pptx/scripts/ooxml/scripts/validation/__init__.py +15 -0
  245. package/skills/pptx/scripts/ooxml/scripts/validation/base.py +1023 -0
  246. package/skills/pptx/scripts/ooxml/scripts/validation/docx.py +519 -0
  247. package/skills/pptx/scripts/ooxml/scripts/validation/pptx.py +315 -0
  248. package/skills/pptx/scripts/ooxml/scripts/validation/redlining.py +284 -0
  249. package/skills/pptx/scripts/pack.py +168 -0
  250. package/skills/pptx/scripts/thumbnail.py +318 -0
  251. package/skills/pptx/scripts/unpack.py +86 -0
  252. package/skills/xlsx/SKILL.md +291 -0
  253. package/skills/xlsx/recalc.py +247 -0
@@ -0,0 +1,288 @@
1
+ # Google Gemini API - Veo 3.1 Video Generation Guide
2
+
3
+ ## Official Documentation (November 2025)
4
+
5
+ This guide is based on the official Google Gemini API documentation for Veo 3.1 video generation.
6
+
7
+ ## Key Models
8
+
9
+ ### Video Generation
10
+ - **veo-3.1-generate-preview** - Latest Veo model with audio, 8-second clips
11
+ - **veo-3.1-fast-generate-preview** - Faster generation, same quality
12
+
13
+ ### Image Generation (for Reference Images)
14
+ - **gemini-2.5-flash-image** (Nano Banana) - Fast, 1K resolution
15
+ - **gemini-3-pro-image-preview** (Nano Banana Pro) - Professional, up to 4K resolution
16
+
17
+ ## Image Generation for Reference Frames
18
+
19
+ ### Nano Banana Pro (Recommended for Production)
20
+
21
+ ```python
22
+ from google import genai
23
+ from google.genai import types
24
+
25
+ client = genai.Client(api_key="your-api-key")
26
+
27
+ # Generate high-quality reference image
28
+ response = client.models.generate_content(
29
+ model="gemini-3-pro-image-preview",
30
+ contents="Cinematic still frame of tactical agent in dark alley, dramatic lighting",
31
+ config=types.GenerateContentConfig(
32
+ response_modalities=['IMAGE'],
33
+ image_config=types.ImageConfig(
34
+ aspect_ratio="16:9",
35
+ image_size="2K" # or "4K" for maximum quality
36
+ )
37
+ )
38
+ )
39
+
40
+ # Save the image
41
+ for part in response.parts:
42
+ if image := part.as_image():
43
+ image.save("reference_frame.png")
44
+ ```
45
+
46
+ ### Resolution Options
47
+
48
+ | Resolution | Dimensions (16:9) | Tokens | Cost | Use Case |
49
+ |------------|------------------|--------|------|----------|
50
+ | 1K | 1376×768 | ~800 | $0.024 | Testing |
51
+ | 2K | 2752×1536 | ~1200 | $0.036 | **Production** |
52
+ | 4K | 5504×3072 | ~2000 | $0.06 | Maximum quality |
53
+
54
+ ## Smooth Video Transitions - SOLUTION TO JERKY CUTS
55
+
56
+ ### Problem: Jerky Transitions Between Scenes
57
+ When concatenating videos with `-c copy`, there can be visible jumps or jerks at scene boundaries.
58
+
59
+ ### Solution 1: Crossfade Transitions (Recommended)
60
+
61
+ Add a 0.5-second crossfade between scenes for smooth transitions:
62
+
63
+ ```python
64
+ def concatenate_with_crossfade(video_paths: List[str], output_path: str, fade_duration: float = 0.5):
65
+ """Concatenate videos with crossfade transitions for smooth playback"""
66
+
67
+ if len(video_paths) == 1:
68
+ subprocess.run(['cp', video_paths[0], output_path])
69
+ return output_path
70
+
71
+ # Build filter complex for crossfades
72
+ filter_parts = []
73
+
74
+ for i, video_path in enumerate(video_paths):
75
+ if i == 0:
76
+ # First video: fade out at end
77
+ filter_parts.append(f"[{i}:v]fade=t=out:st=7.5:d={fade_duration}:alpha=1[v{i}]")
78
+ elif i == len(video_paths) - 1:
79
+ # Last video: fade in at start only
80
+ filter_parts.append(f"[{i}:v]fade=t=in:st=0:d={fade_duration}:alpha=1[v{i}]")
81
+ else:
82
+ # Middle videos: fade in and out
83
+ filter_parts.append(
84
+ f"[{i}:v]fade=t=in:st=0:d={fade_duration}:alpha=1,"
85
+ f"fade=t=out:st=7.5:d={fade_duration}:alpha=1[v{i}]"
86
+ )
87
+
88
+ # Overlay videos with crossfades
89
+ overlay_chain = "[v0]"
90
+ for i in range(1, len(video_paths)):
91
+ overlay_chain += f"[v{i}]overlay"
92
+ if i < len(video_paths) - 1:
93
+ overlay_chain += f"[tmp{i}];[tmp{i}]"
94
+ overlay_chain += "[vout]"
95
+
96
+ filter_parts.append(overlay_chain)
97
+
98
+ # Audio concatenation
99
+ audio_inputs = "".join(f"[{i}:a]" for i in range(len(video_paths)))
100
+ filter_parts.append(f"{audio_inputs}concat=n={len(video_paths)}:v=0:a=1[aout]")
101
+
102
+ filter_complex = ";".join(filter_parts)
103
+
104
+ # Build ffmpeg command
105
+ cmd = ['ffmpeg']
106
+ for video_path in video_paths:
107
+ cmd.extend(['-i', video_path])
108
+
109
+ cmd.extend([
110
+ '-filter_complex', filter_complex,
111
+ '-map', '[vout]',
112
+ '-map', '[aout]',
113
+ '-c:v', 'libx264',
114
+ '-c:a', 'aac',
115
+ '-y',
116
+ output_path
117
+ ])
118
+
119
+ subprocess.run(cmd, check=True, capture_output=True)
120
+ return output_path
121
+ ```
122
+
123
+ ### Solution 2: Re-encode with Matching Parameters
124
+
125
+ Re-encode all clips to ensure consistent frame timing:
126
+
127
+ ```python
128
+ def concatenate_smooth(video_paths: List[str], output_path: str):
129
+ """Re-encode for smooth concatenation"""
130
+
131
+ # Create concat file
132
+ list_file = 'concat_list.txt'
133
+ with open(list_file, 'w') as f:
134
+ for video_path in video_paths:
135
+ f.write(f"file '{os.path.abspath(video_path)}'\n")
136
+
137
+ # Re-encode with matching parameters
138
+ subprocess.run([
139
+ 'ffmpeg',
140
+ '-f', 'concat',
141
+ '-safe', '0',
142
+ '-i', list_file,
143
+ '-c:v', 'libx264', # Re-encode video
144
+ '-preset', 'fast',
145
+ '-crf', '18', # High quality
146
+ '-c:a', 'aac', # Re-encode audio
147
+ '-b:a', '192k',
148
+ '-y',
149
+ output_path
150
+ ], check=True, capture_output=True)
151
+
152
+ os.remove(list_file)
153
+ return output_path
154
+ ```
155
+
156
+ ### Solution 3: Frame Blending at Boundaries
157
+
158
+ Use xfade filter for professional transitions:
159
+
160
+ ```bash
161
+ ffmpeg -i scene1.mp4 -i scene2.mp4 -i scene3.mp4 \
162
+ -filter_complex "\
163
+ [0:v][1:v]xfade=transition=fade:duration=0.5:offset=7.5[v01]; \
164
+ [v01][2:v]xfade=transition=fade:duration=0.5:offset=15.5[vout]; \
165
+ [0:a][1:a][2:a]concat=n=3:v=0:a=1[aout]" \
166
+ -map "[vout]" -map "[aout]" output.mp4
167
+ ```
168
+
169
+ ## Video Generation
170
+
171
+ ### Text-to-Video
172
+
173
+ ```python
174
+ operation = client.models.generate_videos(
175
+ model="veo-3.1-generate-preview",
176
+ prompt="A cinematic shot of a tactical agent running through an alley",
177
+ config=types.GenerateVideosConfig(
178
+ duration_seconds=8, # 4, 6, or 8
179
+ aspect_ratio="16:9", # or "9:16"
180
+ resolution="720p" # or "1080p" (only for 8s duration)
181
+ )
182
+ )
183
+
184
+ # Poll until complete
185
+ while not operation.done:
186
+ time.sleep(10)
187
+ operation = client.operations.get(operation)
188
+
189
+ # Download video
190
+ video = operation.response.generated_videos[0]
191
+ client.files.download(file=video.video)
192
+ video.video.save("output.mp4")
193
+ ```
194
+
195
+ ### Image-to-Video (CORRECT METHOD)
196
+
197
+ ```python
198
+ # Load reference image using types.Image.from_file()
199
+ reference_img = types.Image.from_file(location="reference_frame.png")
200
+
201
+ operation = client.models.generate_videos(
202
+ model="veo-3.1-generate-preview",
203
+ prompt="The agent continues running, dodging obstacles",
204
+ image=reference_img, # Use as starting frame
205
+ config=types.GenerateVideosConfig(
206
+ duration_seconds=8,
207
+ aspect_ratio="16:9",
208
+ resolution="720p"
209
+ )
210
+ )
211
+ ```
212
+
213
+ ## Best Practices for Smooth Videos
214
+
215
+ ### 1. Use Frame Chaining
216
+ ```python
217
+ # Extract last frame from previous scene
218
+ last_frame = extract_last_frame("scene_01.mp4")
219
+
220
+ # Use as starting frame for next scene
221
+ next_scene = generate_video(
222
+ prompt="Next action...",
223
+ image=types.Image.from_file(location=last_frame)
224
+ )
225
+ ```
226
+
227
+ ### 2. Maintain Consistent Styling
228
+ ```python
229
+ character = "A tactical agent in black gear"
230
+ style = "Cinematic action movie, dramatic lighting"
231
+
232
+ # Use same character/style in ALL scenes
233
+ for scene_action in actions:
234
+ prompt = f"{character}, {style}. {scene_action}"
235
+ ```
236
+
237
+ ### 3. Add Crossfade Transitions
238
+ Use the crossfade concatenation method above for professional results.
239
+
240
+ ### 4. Optimize Prompts for Continuity
241
+ ```python
242
+ # Good: Mentions continuity
243
+ "The agent continues running from the alley into the street..."
244
+
245
+ # Bad: No continuity reference
246
+ "The agent is in the street..."
247
+ ```
248
+
249
+ ## Cost Estimates (November 2025)
250
+
251
+ ### Nano Banana Pro Images
252
+ - 1K: ~$0.024 per image
253
+ - 2K: ~$0.036 per image
254
+ - 4K: ~$0.06 per image
255
+
256
+ ### Veo 3.1 Videos
257
+ - 8-second clip: ~$0.15 per video
258
+ - Audio included automatically
259
+
260
+ ### Example: 24-Second Enhanced Video with Smooth Transitions
261
+ - 1x Nano Banana Pro (2K): $0.036
262
+ - 3x Veo 3.1 (8s each): $0.45
263
+ - **Total: ~$0.49**
264
+
265
+ ## Common Issues & Solutions
266
+
267
+ ### Issue: Jerky Transitions ✅ SOLVED
268
+ **Solution**: Use crossfade transitions (see above) or xfade filter
269
+
270
+ ### Issue: Character Inconsistency
271
+ **Solution**: Use identical character description in all prompts
272
+
273
+ ### Issue: Low Quality Output
274
+ **Solution**: Use Nano Banana Pro for reference images (2K or 4K)
275
+
276
+ ### Issue: Audio Pops at Transitions
277
+ **Solution**: Use audio crossfade in filter_complex
278
+
279
+ ## Reference Links
280
+
281
+ - Official Veo Documentation: https://ai.google.dev/gemini-api/docs/video
282
+ - Image Generation: https://ai.google.dev/gemini-api/docs/image-generation
283
+ - Pricing: https://ai.google.dev/gemini-api/docs/pricing
284
+ - FFmpeg Crossfade: https://ffmpeg.org/ffmpeg-filters.html#xfade
285
+
286
+ ---
287
+
288
+ Last Updated: November 2025 - Added smooth transition solutions