Skip to content

video-analysis: mode parameter (default both), sound-design brief on the result; sonilo 0.19.0, sonilo-cli 0.18.0 - #44

Merged
spencer-zqian merged 1 commit into
mainfrom
feat/video-analysis-both-mode
Sep 18, 2026
Merged

spencer-zqian merged 1 commit into
mainfrom
feat/video-analysis-both-mode

Conversation

@spencer-zqian

Copy link
Copy Markdown
Contributor

Mirrors the video-analysis change now live on the API.

SDK (sonilo 0.18.2 → 0.19.0)

  • client.video_analysis.submit() / analyze() (sync and async) accept mode — "both" (the server default), "music" or "sfx". Sent only when set; values are not checked client-side, same rule as variants_num.
  • VideoAnalysisResult gains mode, sfx_segments (same shape as segments, label always "none") and sfx_prompt (one string — authored once regardless of variants_num). The parser coerces sfx_segments with the same sanitizer as segments; a blank sfx_prompt reads as None. mode="music" reproduces the previous result exactly.
  • Max video duration 360 → 480 sec in the docs and context7.json.

CLI (sonilo-cli 0.17.2 → 0.18.0)

  • sonilo video-analysis --mode both|music|sfx. The JSON brief now includes mode, and sfx_segments / sfx_prompt when present, in the documented key order.
  • Dependency pin widened to sonilo>=0.19.0,<0.20. sonilo-cli/uv.lock is deliberately not refreshed: it cannot resolve until sonilo 0.19.0 is on PyPI, and CI does not read the lockfiles.

Verified

  • core: pytest -q → 332 passed
  • sonilo-cli: pytest -q → 172 passed
  • pip check clean after the pin change.

Release order

Publish sonilo 0.19.0 first, then sonilo-cli 0.18.0.

…the result; release sonilo 0.19.0 and sonilo-cli 0.18.0

POST /v1/video-analysis takes an optional `mode`: both (the server default),
music or sfx. Both submit() and analyze() on the sync and async resources
accept it and pass it straight through; it is omitted when unset so the
server default applies, and its values are not checked client-side, like
variants_num.

VideoAnalysisResult gains `mode` (an echo of the request), `sfx_segments`
(shot-sized sections, label always "none") and `sfx_prompt` (one string, the
sound design is authored once regardless of variants_num). The parser
sanitizes sfx_segments the way it already sanitizes segments, and reads a
blank or non-string sfx_prompt as None. mode=music reproduces the previous
result shape plus the echo.

The CLI adds `--mode {both,music,sfx}` and emits mode, sfx_segments and
sfx_prompt in its JSON brief when the task carries them; a music or sfx
brief keeps the shape it always had.

The video-analysis duration cap is now 480 seconds (was 360); the price is
unchanged. README, the CLI README and context7.json say so.

sonilo 0.18.2 -> 0.19.0, sonilo-cli 0.17.2 -> 0.18.0, and the CLI's core pin
widens to sonilo>=0.19.0,<0.20. The CLI's uv.lock still resolves the
published 0.18.1 and needs a refresh once 0.19.0 is on PyPI.
@lightsage-app

lightsage-app Bot commented Sep 18, 2026

Copy link
Copy Markdown

Lightsage docs evals

Waiting for the staging docs URL before running evals.

Lightsage will start the selected PR evals automatically when GitHub reports a successful docs deployment for this PR. This usually happens within 15 minutes.

Commit: 44e44ad
Status: waiting for staging docs URL

@spencer-zqian
spencer-zqian merged commit c77a7e5 into main Sep 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant