Commit Graph
100 Commits
Author SHA1 Message Date
Calesthio 91ad909bd1 Merge pull request #209 from calesthio/docs/readme-add-alexandria-remove-abyss
docs(readme): swap 'Into the Abyss' for 'The Library at Alexandria'
2026-06-27 14:53:08 -07:00
Calesthio 3065bb91ef Merge pull request #208 from calesthio/chore/version-bumps-and-hf-resync
Version bumps + HyperFrames re-vendor (v0.7.17) + atelier doctrine HF-aware
2026-06-27 14:52:37 -07:00
calesthio ea8c238c3e docs(readme): swap 'Into the Abyss' for 'The Library at Alexandria'
Adds the new atelier-mode bespoke piece (Library of Alexandria) to the
showcase block, right after THE LAST BANANA. Removes the prior 'Into the
Abyss' anime piece to keep the section focused.

Showcases the doctrine shipped in #203: every scene crafted from scratch
with no shared components — the signature device (the candle + Burning
Counter) appears in only one of five scenes (the climax), per the
scene-distinctness rule in skills/meta/bespoke-composition.md.
2026-06-27 14:33:09 -07:00
calesthio c4d8975213 docs(atelier): recognize HyperFrames as natively bespoke
Building the in-a-hurry showcase video surfaced a real workflow gap:
bespoke-composition.md was Remotion-flavored throughout. A fresh agent
reading it for a music-driven hero piece would be routed straight to
Remotion atelier — missing that HyperFrames has no cut-schema and is
already atelier by its nature (every HF composition is a hand-authored
index.html with data-* timing and a GSAP timeline you write).

This commit reframes the doctrine to be runtime-aware:

- New "Atelier and the two runtimes" subsection explicitly separates
  Remotion (atelier as escape hatch from cut-schema registry) from
  HyperFrames (always atelier; composition_mode "atelier" is implicit).
  Same principles apply in both cases; the rendering path differs.

- Step 3 (vocabulary) now routes to /hyperframes-animation for HF
  projects — 36+ atomic rules (kinetic-beat-slam, 3d-text-depth-layers,
  motion-blur-streak, ...), 15+ scene blueprints, 16 transition families,
  7 runtime adapters (GSAP / Lottie / Three.js / Anime.js / CSS / WAAPI /
  TypeGPU), and the html-in-canvas-patterns headline capability for 1–3
  cinematic hero beats per video. Also points at /hyperframes-creative,
  /hyperframes-media, /media-use, /hyperframes-cli.

- Step 4 (engine mechanics) adds HF-side gotchas alongside Remotion:
  the data-* contract, mandatory class="clip", paused-timeline + seek
  rule, lint/validate/snapshot verification primitives, stable-id
  selectors over nth-of-type.

- Step 5 (render) split into per-runtime paths:
  * Remotion atelier — auto-stage copy + bespoke contract (unchanged).
  * HyperFrames — npx hyperframes init scaffold, beats workflow,
    lint+validate+snapshot verification, npx hyperframes render.
    Flags the known gap (F13): hyperframes_compose.render still requires
    cuts[] from the templated path; call npx directly until the tool
    grows a bespoke branch parallel to _render_via_atelier.

- Worked precedents section now lists both runtimes — Phantom Reach /
  Compound Snowball / Library of Alexandria for Remotion atelier, plus
  in-a-hurry for HyperFrames (kinetic-beat-slam + 3d-text-depth-layers
  + motion-blur-streak + css-distortion + html-in-canvas + Three.js
  bloom).
2026-06-27 14:28:16 -07:00
calesthio 46d5514a0a chore(deps,skills): bump Remotion 4.0.441→4.0.484; re-vendor HyperFrames skills at v0.7.17
## Remotion bump (mechanical, semver-safe)

remotion-composer: Remotion 4.0.441 → 4.0.484 (43 patch versions, all
within 4.0.x). Includes the seven core packages: remotion + @remotion/cli,
captions, google-fonts, media, player, transitions.

Smoke test: re-rendered the compound-snowball atelier composition through
the unchanged tool path; final_review status=pass, atelier checks clean.

Note: package.json also carries d3-geo@^3.1.1 forward — this line was
already in the working tree from prior unrelated WIP and is not part of
this bump. Removing it would leave package-lock mismatched, so it's
preserved as-is here; clean up separately when its consumer lands.

## HyperFrames skills re-vendor (0.4.2 → 0.7.17)

The runtime invoked by hyperframes_compose (`npx hyperframes`) was
already pulling 0.7.17 on every render, but the vendored skill docs the
agent reads were frozen at 0.4.2-era. This commit closes that gap.

Re-vendored from upstream commit 3351fb1a (tag v0.7.17, 2026-06-27):

  Re-vendored core 4 (restructured upstream):
  - hyperframes        (slim entry; deep content moved to focused skills)
  - hyperframes-cli    (1 → 7 files; covers validate/inspect/snapshot/
                        benchmark/lambda natively, dropping the obsolete
                        OM-local validate patch)
  - hyperframes-registry
  - website-to-video   (renamed upstream from website-to-hyperframes)

  Newly vendored (8 strategic additions in 0.5–0.7):
  - hyperframes-core        composition contract (data-*/tracks/sub-comps)
  - hyperframes-creative    palette, type, narration, beat planning
  - hyperframes-media       TTS, BGM, SFX, transcription, captions, bg-remove
  - hyperframes-animation   all motion knowledge (rules, blueprints,
                            transitions, 7 runtime adapters)
  - media-use               agent Media OS (one `resolve` verb for
                            BGM/SFX/image/icon; project + global cache)
  - motion-graphics         short design-led motion patterns
  - remotion-to-hyperframes migration guidance (directly relevant since
                            OpenMontage runs both runtimes)
  - music-to-video          beat-synced video using `hyperframes beats`

Intentionally NOT vendored (HF-workflow-specific; would compete with
OpenMontage pipeline routing): embedded-captions, faceless-explainer,
general-video, pr-to-video, product-launch-video, slideshow,
talking-head-recut. Re-evaluate per pipeline need.

PROVENANCE.md refreshed with the new vendor point + re-sync instructions.

## GSAP CDN pin

.agents/skills/hyperframes/SKILL.md: gsap@3.14.2 → gsap@3 (auto-latest 3.x
on jsdelivr; avoids future drift without breaking the API surface).

## Doctrine updates routing to new skill structure

- skills/INDEX.md — HyperFrames row expanded to enumerate the 12 vendored
  skills and their roles.
- skills/meta/animation-runtime-selector.md — runtime decision matrix
  updated for the rename (website-to-hyperframes → website-to-video) and
  three new rows added: beat-synced music videos, Remotion→HF porting,
  and the media-use resolve verb. The HyperFrames composition row in the
  animation-library matrix split into four (core/creative/media/animation)
  per the upstream skill structure.
- skills/core/hyperframes.md — Layer-2 routing skill rewritten to point at
  the new focused skills and all website-to-hyperframes references renamed.
2026-06-27 14:00:00 -07:00
Calesthio 9a676d6997 Merge pull request #203 from calesthio/feat/atelier-bespoke-compositions
Atelier (bespoke) composition mode — hand-stitched every time
2026-06-27 12:02:35 -07:00
calesthio f9f86ac9f8 feat(atelier): forbid hero-component spine; captions/text dedup rule (F12 + F9)
F12 — Hero-component spine is a templating anti-pattern. The first
atelier proof (alexandria-fire) leaned on a single candle as scaffolding
under every scene with different text below — same hero, different
caption — which is exactly the "branded slides" pattern atelier was
supposed to break. The signature device is meant to appear in ONE or
at most two beats (typically the climactic moment), not as the visual
scaffolding of every scene. Each scene must earn its own composition:
a different primary visual subject, a different scale, a different motion
register. Doctrine added as step 1.5 in skills/meta/bespoke-composition.md
("Plan each scene as its own composition") plus a reviewer
scene_distinctness gate enforced at compose stage — the reviewer samples
one representative frame per scene and refuses to pass if two or more
scenes share their primary visual subject.

F9 — Captions/on-screen-text dedup. When a SerifLine reads the script
verbatim AND auto-captions emit the same text, the piece looks amateurish
even when the rest is beautiful. Rule added under engine mechanics: decide
once per piece whether captions add meaning (numbers, names, translations,
attributions) or are accessibility subtitles echoing narration — never
both for the same content. Reviewer gate at compose stage compares active
caption text against on-screen text in the same time window.

Both gates are CRITICAL; the publish-stage check was updated to expect
six (was four) resolved atelier findings.

Self-audit of alexandria-fire under the new rules: 4 of 5 scenes share
the candle as their primary visual subject — would now flag CRITICAL
scene_distinctness and require re-planning. (Re-author the piece in a
follow-up; the doctrine is the deliverable here.)
2026-06-27 11:36:51 -07:00
calesthio 0f10381f2b feat(atelier): repo-root projects/, scaffolder, schemas (F1 + F3 + F5)
Closes the remaining three atelier audit gaps.

F1 — atelier projects live under repo-root projects/<slug>/ (the
established OpenMontage convention), not under remotion-composer/.
_render_via_atelier now auto-stages source files into
remotion-composer/projects/<slug>/ via mtime-skip copy when the entry
isn't already under the composer tree. Originally tried a directory
junction, but webpack walks up from the entry's REAL location to
resolve node_modules — junctions get dereferenced and module resolution
fails. Copy keeps source-of-truth under projects/, is invisible to the
user's project view, and is cheap (typical project is a few small .tsx
files). Output stays wherever output_path says. effective_entry is
returned in tool data for transparency.

F3 — scripts/scaffold_atelier_project.py generates the engine
boilerplate (index.tsx / Root.tsx / Composition.tsx / art-direction.md /
props template / README) ONLY. No creative content emitted — the
Composition.tsx is a deliberately blank black placeholder with prominent
TODOs. This removes the friction that nudged agents back to templated
mode while making it impossible to ship the scaffold unauthored (review
correctly flags black frames / silent audio as 'revise'). Verified
end-to-end: scaffold → render → review fires the right warnings.

F5 — schemas extended to know about atelier:
  - decision_log: 'composition_mode' added to category enum.
  - proposal_packet.production_plan: composition_mode + art_direction.
  - edit_decisions: composition_mode + bespoke{entry, composition_id,
    art_direction, props_path, public_dir, scale, crf, concurrency}.
  - final_review.checks: 'atelier' block (stock_reuse_detected,
    offending_imports[], art_direction_declared, art_direction).
  - final_review.recommended_action: 're_author' added.
  - final_review.transcript_comparison: allow null word_accuracy /
    transcript_matches_script (pre-existing latent bug surfaced here).
Both pass and fail shapes of the atelier render's final_review now
validate against the updated schema.
2026-06-27 11:15:36 -07:00
calesthio 5481226faf feat(atelier): post-render review hook + reviewer enforcement (F6 + F7)
Closes the two biggest gaps from the atelier audit: hero bespoke renders
were skipping every automated quality gate, and the templated→atelier
inversion was advisory rather than enforced.

F6 — _render_via_atelier now runs the full _run_final_review (technical
probe + visual spotcheck + audio spotcheck + duration drift + transcript
comparison) plus two atelier-specific doctrine checks:

  - stock_reuse_check: rglobs the bespoke project tree for imports from
    the stock creative registry (src/components, src/Explainer, etc.).
    Any hit fails the render with status="fail" and names the offending
    file — the doctrine bypass is now mechanically caught.
  - art_direction_check: requires edit_decisions.bespoke.art_direction.
    Missing → warning surfaced in final_review.issues_found; forcing
    function for step 1 of skills/meta/bespoke-composition.md.

Verified end-to-end on the compound-snowball proof render: positive case
status=pass, atelier checks clean; negative case (deliberate stock import
+ missing art_direction) returns status=fail with both findings named.

F7 — skills/meta/reviewer.md gets a "Composition Authoring Mode Review"
section that enforces the inversion at every stage:

  - proposal: composition_mode must be a presented decision with both
    options; hero briefs default to atelier; templated for hero requires
    an explicit sanctioned reason.
  - scene_plan/edit: any stock cut.type in an atelier piece is CRITICAL;
    bespoke.{entry, composition_id, art_direction} required.
  - compose: consumes final_review.checks.atelier from F6; mandates a
    recorded distinctness review (the human taste call the tool can't
    automate — its absence is itself CRITICAL).
  - publish: blocks ship on any unresolved atelier finding.

Engine knowledge stays reusable; creative components don't.
2026-06-27 11:01:00 -07:00
calesthio 578f0f1bb1 feat(compose): add atelier (bespoke) composition mode + doctrine
Introduce a hand-authored, project-local Remotion render path that bypasses
the cut-schema and the stock scene-type registry, for hero/bespoke videos
that must look distinct from one another.

- video_compose: composition_mode="atelier" (or renderer_family="bespoke")
  routes to _render_via_atelier, which renders a project-local entry under
  remotion-composer/projects/<slug>/ with an optional per-project public_dir
  (skips copying the bloated shared public/). No cut-schema, no stock registry.
- skills/meta/bespoke-composition.md: routing skill — art direction
  (visual-style) -> motion principles (Disney 12) -> engine mechanics
  (remotion-best-practices + stock components read only as a mechanics codex)
  -> atelier render. Doctrine: reuse engine knowledge, never creative components.
- AGENT_GUIDE: "Composition Authoring Mode" (templated vs atelier); default
  atelier for hero work; scene-type catalog reframed as a mechanics codex.
- animation-runtime-selector + INDEX: authoring-mode-first pointers.
- base_tool.run_command: decode subprocess output as UTF-8/replace (Windows
  cp1252 crashed the reader thread on Remotion's Unicode progress output).
- .gitignore: remotion-composer/projects/ (throwaway bespoke compositions).
2026-06-27 10:32:07 -07:00
Calesthio 49a1e56825 Merge pull request #136 from vizionik25/feat/apple-silicon-mps-support
feat(gpu): Apple Silicon MPS (Metal) GPU Support
2026-06-26 14:29:55 -07:00
Calesthio 7cda18df13 Merge pull request #188 from 0xDevNinja/chore/gitattributes-line-endings
chore: add .gitattributes to normalize line endings
2026-06-26 11:22:34 -07:00
Calesthio af778b2340 Merge pull request #162 from mlaniak/claude/friendly-aryabhata-fd5bd4
chore: gitignore downloaded voice models (*.onnx)
2026-06-26 11:12:07 -07:00
Calesthio 05cadb74ee Merge pull request #195 from 0xDevNinja/fix/issue-60-reference-analyst-runtime-default
fix: defer composition runtime choice to Present Both gate in reference-analyst
2026-06-26 11:10:22 -07:00
Calesthio ff93b20339 Merge pull request #196 from An-idd/fix/provider-model-default-drift
fix(video): runway/higgsfield model defaults diverge from schema → wrong cost & silent model swap
2026-06-26 11:09:25 -07:00
Calesthio 27144c70e6 Merge pull request #197 from 0xDevNinja/chore/issue-61-orphaned-agents-stale-gsap
docs: resolve orphaned skill AGENTS.md scope and stale gsap README (#61)
2026-06-26 11:08:44 -07:00
Calesthio 0d917ea2ca Merge pull request #193 from calesthio/codex/add-ci-pipeline
[codex] Add GitHub Actions CI pipeline
2026-06-25 16:56:27 -07:00
calesthio 6419cfcf97 ci: add GitHub Actions validation pipeline 2026-06-25 13:19:12 -07:00
Calesthio 758f6ebd21 Merge pull request #190 from 0xDevNinja/chore/issue-pr-templates
chore: add issue templates and a pull-request template
2026-06-25 12:38:17 -07:00
Calesthio 928311bf58 Merge pull request #191 from harshdadiya-wappnet/fix/skill-warnings-and-references
fix: resolve skill loading warnings and correct video-toolkit naming
2026-06-25 11:58:19 -07:00
Calesthio 82c5cff606 Merge pull request #186 from 0xDevNinja/fix/windows-remotion-props-equals
fix: use --props=<path> equals form for Remotion render on Windows
2026-06-25 11:40:01 -07:00
calesthio 7ee36dd6b6 docs: add provider viability review guidance 2026-06-24 10:55:33 -07:00
Calesthio 704b281a8f Merge pull request #159 from KasuganoMeow/feat/zh-CN-README
i18n: add README zh-CN translation
2026-06-24 10:38:06 -07:00
Calesthio 29fe30401b Merge pull request #171 from calesthio/codex/add-pr-review-guide
Add public PR review guide
2026-06-24 10:04:10 -07:00
calesthio 69e2ff1f00 docs: add PR review guide 2026-06-24 09:32:18 -07:00
calesthio a5b5b12142 docs(readme): add sponsor link 2026-06-23 17:05:25 -07:00
calesthio ddfd567c92 chore: enable GitHub Sponsors button 2026-06-23 17:02:37 -07:00
Calesthio beb7fdc846 Merge pull request #140 from Diwakar-odds/feat-checkpoint-resume
feat: add intra-stage generation checkpoint and resume support (closes #129)
2026-06-23 12:27:52 -07:00
calesthio d9793ed0e4 docs: clarify partial checkpoint validation 2026-06-23 12:12:32 -07:00
Calesthio 32836fc99a Merge pull request #132 from shubham21155102/feat/google-service-account-auth
feat(google): service-account auth for TTS + Imagen (Vertex AI), fix false-availability bugs
2026-06-23 12:00:56 -07:00
Calesthio 8ce5c042f0 Merge pull request #138 from evanclan/fix/e2e-edit-decisions-render-runtime
fix(tests): carry render_runtime into e2e edit_decisions fixture (#69)
2026-06-23 11:14:51 -07:00
Calesthio 58578ce290 Merge pull request #139 from CooperSheroy/catalina/makefile-python3-lint-20260623
Make Makefile Python targets use python3
2026-06-23 11:00:35 -07:00
calesthio 28dda8c808 docs(readme): add #1 GitHub Trending badge 2026-06-22 11:12:00 -07:00
Calesthio 9066dcb2e3 Merge pull request #57 from RayJiang4S/doubao-tts-provider
Add Doubao Speech TTS provider
2026-05-07 05:12:35 -07:00
calesthio fdd6457fed docs(prompting): adopt 5-aspect video specification across skills
Incorporate the structured taxonomy from Lin et al. "Building a Precise
Video Language with Human-AI Oversight" (CMU/Harvard, arXiv 2604.21718v2).
The paper proves prompts structured around five aspects (Subject /
Subject Motion / Scene / Spatial Framing / Camera) unlock controllable
cinematography in fine-tuned video generation models. Off-the-shelf VLMs
already nail subject and scene; the gains live in motion, spatial, and
camera, which prompts routinely omit.

Universal layer (skills/creative/video-gen-prompting.md, +125 lines):
- 5-aspect prompt skeleton replaces flat formula
- Camera movements regrouped (translation / rotation / lens-only) with
  dolly!=zoom, pan!=truck, bird's-eye!=aerial disambiguations
- New primitive tables: camera height, camera angle, POV, lens
  distortion (fisheye vs barrel), focus / DoF (rack / pull / tracking),
  playback speed (6 modes), subject transitions
- Order-matters and self-contained-prompt rules
- Identity anchoring rule for multi-shot
- Strict static-shot rule, anti-subjective callout, overlays-not-depth
- Per-model word-count guidance

Per-model guides (sora, veo, hunyuan, ltx, seedance):
- Add the primitives each model honors literally
- Word-count sweet spots per model
- Strengthen seedance verbatim-identity and subject-transition guidance

Pipeline directors (cinematic / explainer / animation scene-director,
cinematic / explainer asset-director):
- 5-aspect scene-plan checklist (per-pipeline adapted)
- Overlays-not-depth callout
- Pre / critique / post self-review loop for generation prompts

Reviewer (skills/meta/reviewer.md):
- CHAI critique-quality rules: accurate / complete / constructive
- Critical findings now require a proposed_fix

Storytelling, cinematic, broll, video-reference-analyst:
- Anti-subjective rule (replace mood adjectives with visual causes)
- Camera-intent-per-beat for script writers
- POV column in stock-footage query templates
- 5-aspect structured output mandatory for reference-video analysis

skills/INDEX.md: video-gen-prompting marked as canonical 5-aspect spec.
2026-04-28 08:11:31 -07:00
calesthio 2b0801030c feat(character-animation): add local rigged character pipeline
New beta pipeline for reusable cartoon characters with SVG rigs, pose
libraries, action timelines, and Canvas/Remotion/HyperFrames rendering.

- pipeline_defs/character-animation.yaml: 11-stage manifest
- skills/pipelines/character-animation/: 11 stage director skills
- tools/character/: BaseTool implementations for char design, rigging,
  pose libraries, action timelines, previews, and QA
- schemas/artifacts/{character_design,rig_plan,pose_library,
  action_timeline,character_qa_report}.schema.json: canonical artifacts
- schemas/artifacts/scene_plan.schema.json: extended for character-led
  scenes
- .agents/skills/{canvas-procedural-animation,character-animation-qa,
  character-rigging,pose-library-design,svg-character-animation}/:
  Layer 3 vendor knowledge
- AGENT_GUIDE / PROJECT_CONTEXT / README / ARCHITECTURE / PROVIDERS:
  surface the new pipeline and its capability family
- tools/video/hyperframes_compose.py: SVG character rig support
- tests/contracts/test_character_animation_pipeline.py: contract tests
2026-04-28 08:11:02 -07:00
calesthio 386338c92b feat(remotion): upgrade cinematic TitleCard + add new scene components
- CinematicRenderer.tsx / cinematic/types.ts: TitleCard now supports
  ghosted video background, word-by-word stagger reveal with blur->sharp
  transition, proper newline handling, and growing accent lines. Title
  scenes accept backgroundSrc/backgroundTrimBeforeSeconds/
  backgroundTrimAfterSeconds plus a plate|overlay variant.
- Add CollageBurst, LyricOverlay, ScreenshotScene components.
- Explainer, Root, components/index.ts wiring updates.
- SCENE_TYPES.md reflects the new components.
- seedance-2-0 skill + seedance_video.py: small fixes.
2026-04-23 23:30:23 -07:00
Calesthio 578d77e336 Merge pull request #47 from itsuzef/fix/architecture-hyperframes-package-name
docs(architecture): fix HyperFrames npm package name
2026-04-23 16:42:00 -07:00
Calesthio 676aec6e05 Merge pull request #46 from itsuzef/fix/source-media-review-get-tool
fix(source_media_review): use registry.get() not get_tool()
2026-04-23 16:41:39 -07:00
Calesthio d88b048938 Merge pull request #45 from itsuzef/fix/seedance-upload-image-name
fix(seedance): correct upload_image_fal call name
2026-04-23 16:36:38 -07:00
calesthio 0efed7427c video-compose: catch TTS punctuation leaks in final review
Adds a transcript_comparison check to VideoCompose._run_final_review
that word-diffs the whisper/whisperx transcript against script.txt and
fails loudly when the TTS engine literally voiced punctuation tokens
(dot, dots, ellipsis, comma, dash, hyphen, period). Chirp3-HD did this
to ellipses in a production run and it slipped past review; now it
cannot.

Also corrects the "tiny background video" gotcha in
skills/core/hyperframes.md. After six renders of blaming HyperFrames
CSS, the real root cause was 640x360 Pexels sources combined with a
fit-and-pad pre-transform — HyperFrames was rendering the letterboxed
input faithfully. Gotcha now walks through the ffprobe diagnostic and
the scale-to-cover fix, and keeps the wrapper-div pattern for the
right reasons (aspect mismatch handling, not framework bug workaround).

Four regression tests cover the new check: punctuation-leak detection,
clean-audio false-positive guard, graceful skip when inputs missing,
and always-present transcript_comparison section.
2026-04-18 22:16:27 -07:00
calesthio b6ce481073 hyperframes skill: document the six gotchas hard-earned on the first production
Surfaces six real traps an agent learns the expensive way: full-frame
videos need BOTH HTML width/height attrs AND `!important` CSS because
the runtime applies inline size from intrinsic dimensions; preview-scrub
matters more than a 60-minute render for visual bugs; legibility comes
from scrims + text-shadow, not from lowering video opacity; downloaded
stock needs dense keyframes (-g 30) before render or parallel capture
times out; --workers 1 is mandatory for video-heavy compositions; the
deterministic-font compiler silently replaces unmapped families like
Space Grotesk, use Outfit/Inter/JetBrains Mono/Poppins instead. Each
gotcha documented with the fix-at-author-time pattern so the next agent
ships a clean first render.
2026-04-18 20:13:19 -07:00
calesthio b4f7ec4eee hyperframes: add HTML/CSS/GSAP as a parallel composition runtime
Separates creative grammar (renderer_family) from technical engine
(render_runtime) so HyperFrames can stand alongside Remotion as a
first-class runtime instead of masquerading as a Remotion sub-case.
Locks runtime choice at proposal stage and enforces it end-to-end: the
schemas require it, video_compose routes by it, the reviewer fails
closed on silent swaps, and a parametrized contract test walks every
pipeline manifest to ensure each planning-stage skill explains the
conversation to the user. Adds hyperframes_compose (scaffold/lint/
validate/render/doctor/add_block), a playbook -> CSS style bridge, and
vendored HyperFrames Layer 3 skills from commit d291358, pinned via
PROVENANCE.md for future re-sync. Final_review now records
render_runtime_used and runtime_swap_detected so compose lies are
catchable after the fact.
2026-04-18 18:37:00 -07:00
calesthio 9e17263aa5 video-gen: prefer Seedance 2.0 on every gateway that supports it
Expands the Seedance 2.0 surface from fal.ai-only to every gateway the
OpenMontage toolset can reach, so users on Replicate / Runway /
Higgsfield automatically route cinematic briefs through Seedance 2.0
instead of the gateway's prior default.

- tools/video/seedance_replicate (new): REPLICATE_API_TOKEN adapter for
  bytedance/seedance-2.0 and bytedance/seedance-2.0-fast. Same provider
  family ("seedance"), quality_score=0.95, premium capability flags.
- tools/video/runway_video: add seedance_2.0 / seedance_2.0_fast to the
  model enum as the new default, flag native_audio + multi_shot +
  camera_direction + lip_sync in supports, point agent_skills at
  seedance-2-0 Layer 3 skill. Note Runway Unlimited/Enterprise + non-US
  gating in the model description.
- tools/video/higgsfield_video: same pattern. seedance_2.0 is now the
  default model. Cost estimates calibrated to Higgsfield credit pricing
  (~$0.50-$1.20 per 5s).
- tools/video/_shared: annotate HEYGEN_PROVIDERS seedance_pro/lite as
  Seedance 1.x (2.0 on HeyGen flows through Video Agent / Avatar Shots
  which need a separate wrapper — tracked as follow-up).
- .agents/skills/seedance-2-0: update provider matrix to show which
  gateways are wrapped (fal.ai, Replicate, Runway, Higgsfield) vs. which
  are still roadmap (HeyGen Video Agent, BytePlus, Freepik, aggregators).

The scoring engine already deduplicates by provider="seedance" so
whichever gateway the user has configured wins automatically. Agents
passing preferred_provider="seedance" to video_selector route to the
best available Seedance 2.0 path without naming a specific gateway.
2026-04-17 22:04:08 -07:00
calesthio 16791a3a80 video-gen: adopt Seedance 2.0 as preferred premium default
Seedance 2.0 is now routed as the top-ranked video generator whenever a
premium gateway is available. Touches the tool layer, scoring engine,
cinematic pipeline, and both skill layers so discovery works from every
entry point.

- tools/video/seedance_video: BETA stability, quality_score=0.95, add
  reference_to_video operation plus 9 img + 3 vid + 3 audio ceilings,
  fix pre-existing upload_image_fal import
- tools/base_tool: surface optional quality_score / success_rate /
  latency fields in get_info so the scorer can read them
- lib/scoring: fix reliability enum-vs-string bug that was pinning every
  available tool to 0.0, switch to overlap coefficient so rich best_for
  descriptions aren't penalized, add premium-cinematic feature bonus
- pipeline_defs/cinematic + cinematic asset-director: add pixabay_music
  and freesound_music, restore pixabay-first music default
- cinematic compose-director: mandatory Remotion preflight at stage entry
- New Layer 3 .agents/skills/seedance-2-0/SKILL.md (8-part prompt
  structure, multi-shot, lip-sync, reference-to-video, provider landscape)
- New Layer 2 skills/creative/prompting/seedance-prompting.md
- Update ai-video-gen, video-gen-prompting, AGENT_GUIDE, INDEX to flag
  Seedance 2.0 as the preferred premium default and make the skill
  discoverable from every routing path
2026-04-17 21:51:54 -07:00
calesthio 4822454e77 pipelines: require meta/animation-runtime-selector in animation-heavy pipelines
Declaratively wire the new Layer 2 animation-runtime dispatcher into the
four pipelines that do meaningful animation authoring:

  - animated-explainer  (generated explainer scenes, kinetic typography)
  - animation           (motion graphics, logo morphs, motion paths)
  - cinematic           (title cards, curved camera moves, prestige easings)
  - screen-demo         (synthetic terminal timing + callout overlays)

Before this, skills/meta/animation-runtime-selector.md was referenced only
in asset-director prose — a fresh-context agent running preflight on the
manifest alone would miss it. Adding it to required_skills: closes the
discovery loop: the reviewer + checkpoint systems now enforce that it
was consulted before authoring animated components.

No schema change required — follows the existing pattern of listing meta
skills (reviewer, checkpoint-protocol, skill-creator) as required.
2026-04-16 20:23:05 -07:00
calesthio a37b58199a skills: adopt GSAP Layer 3 + Layer 2 animation-runtime routing
Mirror the official GSAP AI skills (greensock/gsap-skills, MIT) into
.agents/skills/ and add the Layer 2 wiring that makes them discoverable
from a fresh context.

GSAP covers animation needs that Remotion primitives strain at:
per-character text reveals (SplitText), SVG shape morphs (MorphSVG),
curved camera paths (MotionPath), stroke-reveal line drawing (DrawSVG),
layout-to-layout flight (Flip), and custom bezier easings (CustomEase).
Also becomes mandatory day-1 knowledge if we wire in HyperFrames later
(HF uses GSAP timelines as its native animation runtime).

Layer 3 adds (.agents/skills/):
- gsap-core, gsap-timeline, gsap-plugins, gsap-utils
- gsap-react, gsap-performance
- gsap-scrolltrigger, gsap-frameworks (situational)
- gsap/README.md — OpenMontage-specific framing and Remotion-safe usage

Layer 2 wiring (the discovery triggers):
- skills/meta/animation-runtime-selector.md — NEW routing meta-skill.
  Decision matrix covering Remotion primitives, GSAP plugins, framer-
  motion, Lottie, Manim, D3, TerminalScene. Enforces the "keep it
  simple" bias: reach for GSAP only when the plugin genuinely earns
  its bundle weight.
- skills/pipelines/explainer/asset-director.md — references GSAP for
  kinetic typography, multi-step choreography, SVG line draws.
- skills/pipelines/animation/asset-director.md — references GSAP for
  logo morphs, motion paths, FLIP transitions, custom easings.
- skills/pipelines/cinematic/asset-director.md — references GSAP for
  cinematic camera moves, per-char title reveals, prestige easings.
- AGENT_GUIDE.md — adds a categorized Layer 3 skills table so a fresh-
  context agent can find the right skill by what they're trying to do,
  plus a pointer to animation-runtime-selector.md for routing.

Determinism: every GSAP use inside Remotion must drive timeline progress
from useCurrentFrame(), never requestAnimationFrame. Three Remotion-safe
patterns are documented in both the gsap/README and the selector skill.

Attribution: https://github.com/greensock/gsap-skills (MIT).
2026-04-16 20:07:00 -07:00
calesthio a36ce99793 screen-demo: add synthetic-terminal mode via Remotion TerminalScene
Make synthetic screen recording a first-class, discoverable capability
alongside real OS capture. For CLI / terminal / install-flow demos where
commands and output are predictable, author a `terminal_scene` cut instead
of driving a real screen recorder — deterministic, privacy-safe, pixel-
perfect, and frame-accurate to narration cues.

Components:
- TerminalScene.tsx: window chrome, char-by-char typing, blinking cursor,
  scrolling output, non-blocking floating pills, spring-based reveals
- ProviderChip.tsx: rotating badge overlay that cycles through provider
  names (used in AI-generated-motion scenes)
- BackgroundVideoLayer + source_in_seconds + backgroundVideo props on
  every scene type — supports video-behind-component composition

Discovery chain (six layers, so the next agent finds this without reading
source code):

1. pipeline_defs/screen-demo.yaml — bump to 2.1, declare production_modes
   (real_capture, synthetic_terminal) with required_tools, scene_type, and
   agent_skills pointers
2. skills/pipelines/screen-demo/idea-director.md — mode-selection table
   at brief time; brief.metadata.production_mode contract
3. skills/pipelines/screen-demo/asset-director.md — reads production_mode
   and branches asset production (capture+overlays vs steps+narration+
   pacing check)
4. .agents/skills/synthetic-screen-recording/SKILL.md — Layer 3 skill with
   step kinds (cmd/out/pause/pill), pacing rule, and the frozen-terminal
   failure mode captured from the showcase v3 retune
5. AGENT_GUIDE.md — TerminalScene added to Remotion routing; links
   SCENE_TYPES.md as the authoritative cut-type registry
6. remotion-composer/SCENE_TYPES.md — new cheat sheet of every cut.type
   and overlay.type with required fields, plus a "how to add a new scene
   type" section (candidates: ChatTranscript, EditorScene, PrReview,
   SlackThread, TicketBoard)

Guardrail:
- lib/verify_scene_pacing.py — reusable trace() and assert_alignment()
  helpers that mimic the TerminalScene frame math exactly. Fail loudly
  before render if steps burn through too fast or leave the scene frozen.
2026-04-16 19:22:46 -07:00
calesthio 33ba37704e docmontage: add children's fantasy content routing + CaptionOverlayOnly composition
Teach the agent to automatically use Pixabay AI-generated fantasy clips
for children's content. scene-director.md gets query rewriting rules
(10-row table) and source routing. asset-director.md gets source lock,
visual consistency check, and fallback rules. Root.tsx adds a
CaptionOverlayOnly Remotion composition for transparent caption
rendering used in the TikTok-style subtitle pipeline.
2026-04-13 16:22:15 -07:00
calesthio 55c08acdd0 sources: add 11 stock source adapters, expand catalog from 5 to 16 providers
6 API-based adapters: Pixabay Video, Coverr, NARA (U.S. National Archives),
Library of Congress, Pond5 Public Domain, Videvo. 5 scraper-based adapters
for sites without APIs: ESA, NOAA, Mixkit, Dareful, JAXA. All follow the
StockSource protocol and are auto-discovered — no tool code changes needed.

Updated scene-director, asset-director, and idea-director skills with
source routing guidance so agents know which provider to use for which
content type (e.g. nara for historical, noaa for ocean, esa for space).

Also includes: grok_video capability updates (native audio, 1-15s duration,
new aspect ratios), seedance_video tool (Seedance 2.0 via fal.ai),
ProductReveal Remotion composition registration.
2026-04-13 12:34:58 -07:00
calesthio a06d4c234e readme: add YouTube channel badge and subscribe CTA after showcase 2026-04-12 15:24:01 -07:00
calesthio ddc8901154 cleanup: register HeroTitle composition, harden gitignore
Add HeroTitle Remotion composition (used for documentary title cards).
Gitignore now covers youtube tokens, stray pexels downloads, and
scratch dirs. Removed leftover test media and credential files.
2026-04-12 14:27:51 -07:00
calesthio 0999eaddc7 docmontage: add direct_clip_search tool for fast provider-agnostic clip acquisition
Adds a lightweight alternative to the corpus_builder + clip_search pipeline
that skips CLIP embeddings, motion scores, and index files. Uses the same
StockSource adapter protocol so it works with all providers (Pexels,
Archive.org, NASA, Wikimedia, Unsplash). Asset-director skill now documents
both fast path (direct search) and standard path (corpus + CLIP retrieval).
Pipeline manifest updated to make corpus tools optional.
2026-04-12 14:23:14 -07:00
Calesthio 61fa591aa4 Merge pull request #21 from calesthio/codex/fix-demo-and-requirements
Fix demo rendering and baseline requirements
2026-04-12 07:21:00 -07:00
calesthio 1f2ed2f05d Fix demo rendering and baseline requirements 2026-04-12 07:18:00 -07:00
calesthio cf3527fbbe docmontage: end-tag overlay default + Chirp 3 HD as default TTS voice
End-tag now composited over final body footage (ProRes 4444 with alpha)
instead of concatenated as a black card. Updated idea-director,
edit-director, compose-director, and pipeline manifest with overlay-first
instructions. Default Google TTS voice changed from Neural2-D to
Chirp3-HD-Orus across tool code and docs.
2026-04-11 21:38:36 -07:00
calesthio a8d1ebdf6f docmontage: corpus builder hardening from P1 + P2 audit observations
All of these changes came out of running the P1 and P2 documentary-montage
audits end-to-end and watching specific things break. Grouping them into
one commit because they share a theme: making the corpus builder and its
stock source adapters robust enough that a real brief can produce a
real corpus without special-casing.

corpus_builder.py + new clip_cache.py + test_clip_cache.py
  Phase 1 of the shared-corpus architecture. Adds
  ~/.openmontage/clips_cache/ — a process-safe, LRU-evicted cache of
  downloaded clip files keyed by clip_id. Before each candidate download,
  corpus_builder asks the cache whether the bytes already exist on disk
  from a previous run; on a hit it hard-links (or copies on cross-drive)
  the blob into the caller's corpus dir and skips the network fetch. On
  a miss it downloads as usual and ingests the fresh file. Motivation:
  re-running the P1 audit after every tool fix was re-downloading gigs
  of archive.org footage that had already been fetched in the prior run.
  Cache faults never block the pipeline — they degrade gracefully to
  normal downloads. The cache bubbles counters into the corpus_builder
  return payload so the production report can show hit/miss/bytes-saved.
  Default 20 GB cap, overridable via OPENMONTAGE_CACHE_MAX_GB.
  Full test coverage: try_link, ingest, stats, LRU eviction, manifest
  persistence, lock behavior. 23 tests, tmp_path-scoped.

stock_sources/archive_org.py
  1. Three-strategy query cascade (phrase_prox_10 → distinctive_and →
     distinctive_or). Motivation: natural-language documentary queries
     against archive.org Solr were zeroing out — "1950s family watching
     television" returned 0 hits because Solr's default multi-term AND
     over-intersects. Walks strict to loose and returns the first
     non-empty strategy. Stop words, source hints ("prelinger",
     "archive", "footage"), and year tokens ("1950s") are excluded from
     the distinctive-token picks since they don't correlate with
     Prelinger title tokens.
  2. 150 MB per-rendition size cap. archive.org routinely hosts
     multi-hundred-megabyte h.264 masters and one 2 GB Prelinger item
     poisons corpus build wall-time and disk. Within a format bucket
     we now pick the largest rendition under the cap; if nothing fits
     we fall through to the next format rather than dropping the item.
  3. 180 s default max-duration ceiling when the caller hasn't set one
     — archive.org is the only source that routinely hosts feature-
     length material and a naive fan-out pulls them into corpora that
     only ever want a few seconds per clip.

stock_sources/wikimedia.py
  Parallel 3-strategy cascade (full → top2_or → single_best). Motivation:
  Commons CirrusSearch also defaults to AND across multi-word queries;
  our first P2 diagnostic pass returned 0 video results for 10/10
  queries. Same stop-word / source-hint / year-token stripping as
  archive_org so the two adapters stay symmetric.

test_stock_source_adapters.py
  Rewrote the wikimedia query-builder tests against the new cascade
  API. Added coverage for multi-word fallback + source-hint/year
  stripping.

video_compose.py
  Two small fixes for the Remotion renderer on Windows:
  1. Resolve output_path to absolute before invoking the CLI so the
     binary can write wherever the caller asked regardless of cwd.
  2. Pass cwd=composer_dir to run_command so npx can find the local
     Remotion binary under node_modules/.bin. Without this, Windows
     npx returns "could not determine executable to run" because it
     resolves .bin relative to the process cwd rather than the
     script's parent.
2026-04-11 00:46:06 -07:00
calesthio b80b7a0a61 docmontage: make music + end-tag mandatory, add Remotion EndTag component
User override during the audit runs made music and an end-tag MANDATORY
defaults for documentary-montage (narration stays optional). This commit
codifies those defaults into the pipeline manifest + director skills and
ships the Remotion end-tag component that the compose stage now
concatenates after the FFmpeg body.

Changes:

- pipeline_defs/documentary-montage.yaml: idea/edit/compose stages now
  require music_plan and end_tag_plan to be present; opt-out requires
  an explicit user note recorded in metadata.

- skills/pipelines/documentary-montage/idea-director.md: rewrote sections
  4 (music MANDATORY), 5 (end-tag MANDATORY with shape
  {text,palette,duration_seconds,render_engine:remotion,component:EndTag}),
  6 (narration OPTIONAL), 7 (updated brief JSON shape), 8 (quality gate).
  Common Pitfalls grew two entries covering silent-contract drift and
  end-tag omission.

- skills/pipelines/documentary-montage/compose-director.md: section 4
  now stops on music-contract violation; new section 4b documents the
  two-engine flow (FFmpeg body -> npx remotion render EndTag -> ffmpeg
  concat). Quality gate checks render_report.metadata.music_mixed and
  end_tag_rendered.

- remotion-composer/src/components/EndTag.tsx (new): bold uppercase
  typographic end-card with animated 0->100% underline draw-in and a
  single left-to-right shimmer sweep. Supports cool_offwhite_on_black
  and warm_ivory_on_black palettes. Renders at 1920x1080 @ 30fps.

- remotion-composer/src/Root.tsx: register EndTag as a first-class
  composition (durationInFrames=165, 5.5s hold) so it can be rendered
  standalone via the Remotion CLI with --props overrides.
2026-04-11 00:42:53 -07:00
calesthio de94d4dba3 Documentary Montage hardening plus governance fixes 2026-04-10 16:42:39 -07:00
calesthio 44baede67f Add documentary-montage pipeline for retrieval-first motion-clip montage
New end-to-end pipeline for building thematic documentary montages from
a locally-indexed corpus of free stock footage (Pexels, Archive.org,
NASA). The agent builds a project-local corpus, CLIP-ranks candidates
per scene slot, edits with motion-aware arc logic, and composes via
ffmpeg. No paid APIs required for the full path.

Pipeline definition and director skills:
- pipeline_defs/documentary-montage.yaml: 5-stage manifest
  (idea -> scene_plan -> assets -> edit -> compose)
- skills/pipelines/documentary-montage/: 6 director skills
  (executive-producer + idea/scene/asset/edit/compose directors)

Corpus and retrieval infrastructure:
- tools/video/corpus_builder.py: multi-source stock fan-out with
  resumable append-only corpus index
- tools/video/clip_search.py: CLIP ViT-B/32 retrieval —
  rank_for_slot, find_similar_set, diversify, stats
- tools/video/stock_sources/: base + pexels + archive_org + nasa
  adapters with a pluggable BaseStockSource contract
- lib/clip_embedder.py: CLIP wrapper
- lib/corpus.py: corpus schema, jsonl append/read, motion-score
  caching

video_compose fix rolled in because any concat-based pipeline depends
on it:
- Replace ambiguous -to with -t duration (was double-trimming cuts)
- Force re-encode + normalize to 1920x1080 @ 30fps (was keyframe-
  snapping with -c copy and breaking concat on mixed-source corpora)
- Add silent-audio anullsrc fallback for clips without an audio
  stream

README: add Documentary Montage row to the pipeline table and bump
the pipeline count from 11 to 12.
2026-04-10 16:04:28 -07:00
Calesthio e815126f5a Merge pull request #14 from calesthio/codex/fix-fal-provider-bias
Remove fal-first provider guidance
2026-04-08 13:06:29 -07:00
calesthio a919fde450 Remove fal-first provider guidance 2026-04-08 13:04:32 -07:00
Calesthio dfae315656 Merge pull request #12 from calesthio/add-higgsfield-and-update-runway
Add Higgsfield provider and update Runway to v0.2.0
2026-04-08 12:59:45 -07:00
calesthio 4f682c8b0a Add Higgsfield provider and update Runway to v0.2.0
- New: Higgsfield video provider with multi-model routing (Kling 3.0, Veo 3.1, Sora 2, WAN 2.5, Soul Cinema) and Soul ID character consistency
- Updated: Runway provider with gen4_aleph and gen3a_turbo models, proper pixel-ratio mapping, probe_output, watermark param, RUNWAYML_API_SECRET env var support
- Docs: Updated provider counts (12→13), tool counts (51→52), added Higgsfield setup/pricing sections across README, AGENT_GUIDE, ARCHITECTURE, and PROVIDERS
2026-04-08 12:57:43 -07:00
calesthio b1a078b282 Add screen capture tools with FFmpeg and Cap dual-provider system
New capture layer for the screen-demo pipeline: FFmpeg for quick CLI-driven
recording, Cap integration for polished recordings with webcam overlay and
cursor effects. Selector presents both options and routes based on availability.
2026-04-07 21:36:29 -07:00
calesthio d5e754ba0f Add Chirp 3 HD and Journey voice support to Google TTS
Route Chirp and Journey voice families to the v1beta1 API endpoint
automatically. Adds beta voice detection, dynamic API version
selection, and Chirp3-HD cost estimation ($30/1M chars).
2026-04-06 12:13:41 -07:00
calesthio 1b7e13d24b Fix Remotion-first rendering docs and post-render verification gaps
Compose-director had contradictory instructions: Step 2 described Remotion
captions/audio, but Steps 5/5b gave detailed FFmpeg code that agents followed
instead. This caused three failures in production: FFmpeg subtitles instead of
Remotion CaptionOverlay, missing audio (mixed externally but never embedded in
Remotion props), and skipped audio verification in post-render review.

Changes:
- compose-director: Remotion is now DEFAULT for audio, captions, text overlays;
  FFmpeg is labeled FALLBACK only. Post-render review has mandatory ffprobe gate
  and audio transcription with explicit stop conditions.
- remotion.md: routing table updated (captions/audio → Remotion), added universal
  Post-Render Verification Protocol for all pipelines (only 2/10 had one).
- scene-director, asset-director: added pitfall for AI-generated text in CTA
  screens — must use Remotion text_card for verbatim text.
- image-provider-usage: added Recraft V4 caveat (style param causes 422 on fal.ai).
- recraft_image.py: documented the style parameter 422 issue inline.
2026-04-06 08:21:48 -07:00
calesthio 5a10ef1ca1 Update README social links 2026-04-05 15:45:36 -07:00
calesthio 7ca04e66d8 Add Grok media providers and improve selector routing 2026-04-05 15:31:37 -07:00
calesthio 6a6d456e50 Fix video showcase ordering in README 2026-04-04 14:32:55 -07:00
calesthio 5f0a0a5abc Add The Last Banana to README showcase 2026-04-04 14:31:17 -07:00
calesthio 26d8bb46a1 Remove demo-props dev fixtures from public repo 2026-04-04 14:25:24 -07:00
calesthio 7b40edb82c Fix gap #22 and add CinematicRenderer captions + music support
- AGENT_GUIDE.md: add "never read source code" rule — skills are the
  interface, not .py files
- animation.yaml: add Layer 2 skill-first guardrail in assets stage
- video-reference-analyst.md: Step 4b now mandates Layer 2 before Layer 3,
  explicitly forbids reading implementation code
- CinematicRenderer: add TikTok-style CaptionOverlay and separate music
  track support (narration + music as independent audio layers)
- cinematic/types.ts: add CinematicCaptionConfig and music prop types
2026-04-04 14:23:46 -07:00
calesthio 370f2f11b7 Default TTS recommendation to Google Chirp3-HD over ElevenLabs
Chirp3-HD is near-free ($0.003 vs $0.30+ per script), expressive,
24kHz, and available without quota limits. ElevenLabs demoted to
voice-cloning-only recommendation.
2026-04-04 14:08:34 -07:00
calesthio 20dcc785e5 Fix gaps #18-20: multi-gateway video skill, selector-first routing, self-review
- ai-video-gen skill: document fal.ai as primary gateway alongside HeyGen,
  add video_selector-first guidance
- animation.yaml: add selector-first rule in assets stage, mandatory
  post-render self-review in compose stage
- CinematicRenderer: add resolveAsset() for staticFile path resolution,
  fixing file:// URI errors in OffthreadVideo and Audio components
2026-04-04 13:53:19 -07:00
calesthio fc6ff2248a Add UAT guardrails to pipeline YAML and fix playbook test
- animation.yaml: enforce audio architecture + provider comparison in
  proposal stage, Layer 3 skill gate + clip duration in assets stage
- video-reference-analyst.md: Step 6 is now a hard redirect forcing
  stage-by-stage pipeline execution
- Fix test_compatible_with_manifest for nested compatible_playbooks dict
2026-04-04 13:29:24 -07:00
calesthio 93de8effbe Add mandatory Layer 3 skill gate before any asset generation
New Step 4b requires the agent to read agent_skills from every tool
before writing generation prompts. Discovered during UAT: agent
generated video clips, images, and TTS without reading provider-specific
prompting guidance, violating AGENT_GUIDE governance.
2026-04-04 13:20:19 -07:00
calesthio 97097e61a1 Present video gen provider options with costs to user, don't auto-pick
Agent must show a provider comparison table (quality, speed, cost per
clip) and recommend one, but let the user choose.
2026-04-04 13:18:15 -07:00
calesthio 1451f4fd69 Add clip duration optimization and Layer 3 skill reminder to proposals
Proposals must now specify clip duration strategy (prefer 10s over 5s
to halve API costs) and list Layer 3 skills that must be read before
generating assets. Both were governance gaps found during UAT.
2026-04-04 13:17:31 -07:00
calesthio 1e5fda3c5c Fix OpenAI TTS passing null instructions to API
The instructions parameter was passed as None when not provided,
causing a 400 error. Now only included when explicitly set. Also
adds speed passthrough support.
2026-04-04 13:10:29 -07:00
calesthio 0e90b45324 Remove QA tests that make paid API calls
test_01_tts.py (ElevenLabs), test_02_image_gen.py (DALL-E + FLUX),
and test_03_music.py (ElevenLabs Music) were burning ~$0.44 per run
against live API keys. These were run repeatedly and exhausted the
ElevenLabs starter plan quota (30K characters).
2026-04-04 13:08:54 -07:00
calesthio 24a85337c3 List all TTS providers in proposal template, not just ElevenLabs
Agent must run tts_selector preflight to check available providers
instead of defaulting to ElevenLabs. Supports ElevenLabs, Google TTS,
OpenAI TTS, and Piper (offline).
2026-04-04 12:53:34 -07:00
calesthio cb1423a61f Add audio architecture decision to video-reference-analyst planning
The agent must lock the audio approach (single narrator vs. character
dialogue vs. both) during Step 3, not defer it to script/compose stage.
Proposals now include voice casting with specific voice IDs.
2026-04-04 12:51:47 -07:00
calesthio 16647d2d36 Enforce Remotion-first composition engine, fix FFmpeg fallback bugs
Remotion is now the default composition engine for ALL final renders
when available — video clips, images, mixed content. FFmpeg is only
used as fallback when Remotion is not installed or for standalone
operations (trim, transcode). Also fixes three FFmpeg fallback bugs:
profile + copy codec conflict, stream order mapping, and segment
seeking for audio-first containers.
2026-04-04 12:39:24 -07:00
calesthio 38b6ec5212 Add mandatory lightweight research step to video-reference-analyst
The reference analyst skill went straight from capability audit to
creative proposals with no research. This caused the agent to propose
concepts based solely on the reference analysis and its own knowledge,
missing content landscape context, technique best practices, and
subject-matter depth.

Added Step 3b between critical questions and creative proposals:
- Content landscape scan (3-5 similar existing videos)
- Style/technique research (AI model strengths, prompting patterns)
- Subject-matter research (facts, tropes, hooks)
- 2-3 minute time budget — lightweight, not full research-director
2026-04-04 11:59:11 -07:00
calesthio 65a6b32ebd Fix video generation pipeline gaps found during UAT
Four gaps found during user acceptance testing of the reference-video
production workflow:

- video_selector: expose aspect_ratio, duration, reference_image_path,
  reference_image_url, and image_url in schema so agents can discover
  these critical params. Auto-upload local images when the selected
  provider requires a URL.
- _shared.py: add upload_image_fal() for local→URL image bridging via
  fal.ai storage. Fix upload_image_heygen() to try v2 presigned upload
  before falling back to fal.ai (old /v1/asset endpoint returns 404).
- kling_video: call probe_output() so response includes output_path,
  duration_seconds, file_size_mb, video dimensions, and codec info.
2026-04-04 11:55:54 -07:00
calesthio 61c704149e Enforce Remotion-first composition in video-reference-analyst skill
The AGENT_GUIDE establishes Remotion as the preferred composition engine
over FFmpeg, but the reference analyst skill was presenting them as peer
options. This caused the agent to default to FFmpeg during proposals.

- Capability audit template now labels Remotion as "preferred" and FFmpeg
  as "fallback only"
- Added explicit composition engine priority note
- Proposal template separates Composition and Motion as distinct lines
2026-04-04 11:43:17 -07:00
calesthio 286c26e33d Add per-scene motion classification to video analyzer
Video analyzer now uses Farneback dense optical flow to classify each
scene as motion_clip, animated_still, or static_image. This lets the
agent correctly identify whether a reference video uses AI-generated
video clips vs still images with pan/zoom — and plan the right pipeline.

Changes:
- video_analyzer.py: new Step 3b with _classify_scene_motion() and
  _read_frame_at() helpers; updated _needs_motion() to use per-scene
  motion data instead of pacing heuristic alone
- video-reference-analyst.md: added Motion line to summary template
  and instructions to read motion_type field before proposing tools
2026-04-04 11:33:33 -07:00
calesthio 6ba79390e9 Make all assistant entry points hard redirects to AGENT_GUIDE.md
Entry point files (CLAUDE.md, AGENTS.md, .windsurfrules, .cursorrules,
copilot-instructions.md) previously contained useful snippets that let
agents skip reading the full AGENT_GUIDE. Now they contain zero usable
instructions — only a mandatory redirect — so any assistant is forced
to read AGENT_GUIDE.md before acting on user requests.
2026-04-04 10:57:45 -07:00
calesthio 290712c552 Add reference-video entry point to agent guide 2026-04-04 10:51:27 -07:00
calesthio c4d0da9f80 Add OpenClaw README ramp-up note 2026-04-04 10:42:31 -07:00
calesthio 8977197c49 Move reference-video section below showcase videos 2026-04-04 10:34:24 -07:00
calesthio 55374e7cc0 Tighten README reference-video copy 2026-04-04 10:23:11 -07:00
Calesthio 7385d55156 Merge pull request #5 from calesthio/codex/video-input-analysis
Add video reference input analysis workflow
2026-04-04 10:21:26 -07:00
calesthio e0ffffefb3 Promote reference-video workflow in README 2026-04-04 10:20:44 -07:00
calesthio b0917d2d84 Add reference video input analysis workflow 2026-04-04 10:01:11 -07:00
Calesthio 87df43d39f Merge pull request #4 from calesthio/codex/creative-identity-guidance
Align pipeline prompts with custom visual identity workflow
2026-04-03 10:15:25 -07:00
calesthio fd4c58f30b Refine visual identity guidance across pipelines 2026-04-03 10:13:39 -07:00
calesthio 2cd36fa8e0 Implementation spec: governance, decision intelligence, theme system, and E2E bug fixes
Implements the 2026-04-02 transformation spec (Phases 1-8) and fixes all
critical bugs found during 5-pipeline E2E testing.

Governance & Decision Intelligence:
- Pipeline-specific stage order in checkpoint (replaces global STAGES list)
- Provider scoring engine (lib/scoring.py) with 7-dimension weighted ranking
- Decision log artifact enforced at proposal/idea stage across all 10 pipelines
- Delivery promise classifier prevents silent motion-to-still downgrades
- Structured shot language in scene_plan schema (camera, lens, lighting, DOF)
- Variation checker and slideshow risk scorer block samey output before render
- Creative intake, capability extension, and creative-intake meta skills
- Final self-review artifact with 5 mandatory checks before presenting output
- Source media review contract for user-supplied footage

Render & Theme System:
- Remotion AnimatedBackground now derives colors from playbook (no more hardcoded
  dark blue fintech gradient on every video)
- video_compose builds custom ThemeConfig from playbook YAML colors/fonts —
  custom playbooks flow through to Remotion automatically
- Explainer component wires theme to all child components (charts, cards, etc.)
- resolveAsset() handles absolute paths on Windows/Unix via file:// URIs
- RENDERER_FAMILY_MAP synced with actual Remotion compositions

Critical Bug Fixes:
- Windows npx subprocess: run_command() resolves .cmd wrappers via shutil.which()
- Silent renderer downgrade: Remotion failure now returns explicit error with
  options instead of silently falling back to FFmpeg
- .env inline comment parsing strips trailing # comments from API keys
- concat_path UnboundLocalError in video_compose finally block
- audio_mixer and showcase_card capture=True kwarg bug
- Selector estimate_cost() calls fixed (_select_tool -> _select_best_tool)
- asset_manifest schema expanded with provider, license, subtype fields
- screen-demo subtitle_gen moved from required to optional tools
- Duration drift detection in post-render final review (>25% warns)
2026-04-03 09:35:09 -07:00
calesthio a7e5f7498b Green screen pipeline: new tools, AnimatedBackground, caption burn fixes
Add green_screen_processor (auto-detect + rembg fallback) and
green_screen_composite (4 layout presets with alpha compositing) tools
to automate the full keying-to-composite pipeline.

Remotion: add AnimatedBackground with gradient mesh and floating orbs
to Explainer, fix caption burn tool (remove entry point arg, auto-detect
dimensions, extend TalkingHead duration to 300s).

Update scene-director, compose-director, and asset-director skill docs
with green screen workflow steps and component constraints.
2026-04-02 11:54:30 -07:00