Commit Graph

50 Commits

Author SHA1 Message Date
calesthio
1267066bc4 Merge commit 'f72efb53d3cea7cce0943d5dc4e55e33e4e59af3' into codex/repair-pr-353
# Conflicts:
#	AGENT_GUIDE.md
#	docs/PROVIDERS.md
2026-08-13 11:40:09 -07:00
calesthio
97fcd3c025 Merge commit '1c7047fd1fa6ac63ff2ade67db886344fdebd8c7' into codex/repair-pr-353
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:29:26 -07:00
calesthio
9dc8e379ba Merge commit '1c7047fd1fa6ac63ff2ade67db886344fdebd8c7' into codex/repair-pr-371
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:29:26 -07:00
calesthio
dceea45387 Merge remote-tracking branch 'origin/main' into codex/repair-pr-353
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
calesthio
00e4902348 Merge remote-tracking branch 'origin/main' into codex/repair-pr-371
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
calesthio
ecfdbe5173 Merge remote-tracking branch 'origin/main' into codex/repair-pr-448
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
calesthio
9f50874656 Merge remote-tracking branch 'origin/main' into codex/repair-pr-353
# Conflicts:
#	tests/contracts/test_phase3_contracts.py
2026-08-13 11:11:48 -07:00
calesthio
5f48d9afb7 Merge remote-tracking branch 'origin/main' into codex/repair-pr-448
# Conflicts:
#	.env.example
2026-08-13 11:11:48 -07:00
calesthio
329628a22b Merge remote-tracking branch 'origin/main' into codex/repair-pr-371 2026-08-13 11:11:02 -07:00
calesthio
e2a9e35c40 Merge remote-tracking branch 'origin/main' into codex/repair-pr-442 2026-08-13 11:11:02 -07:00
calesthio
a5c9d789be Merge remote-tracking branch 'origin/main' into codex/repair-pr-458
# Conflicts:
#	tools/graphics/image_selector.py
2026-08-13 10:17:12 -07:00
calesthio
3b966b06cf Merge remote-tracking branch 'origin/main' into codex/repair-pr-353 2026-08-13 10:15:44 -07:00
calesthio
be8cf96861 Merge remote-tracking branch 'origin/main' into codex/repair-pr-371 2026-08-13 10:15:43 -07:00
calesthio
91bd277a73 Merge remote-tracking branch 'origin/main' into codex/repair-pr-448 2026-08-13 10:15:41 -07:00
calesthio
0bb4c266d7 Merge remote-tracking branch 'origin/main' into codex/repair-pr-442 2026-08-13 10:15:35 -07:00
calesthio
95179d92dc fix: keep TokenHub example credential empty 2026-08-13 09:50:14 -07:00
calesthio
b42d360e3d fix: keep TokenHub example credential empty 2026-08-13 09:50:12 -07:00
calesthio
f21e86570d Merge remote-tracking branch 'origin/main' into codex/repair-pr-458 2026-08-13 09:44:58 -07:00
calesthio
7052f3999b Merge remote-tracking branch 'origin/main' into codex/repair-pr-353
# Conflicts:
#	.env.example
2026-08-13 09:28:52 -07:00
calesthio
a3c45aa3bf Merge remote-tracking branch 'origin/main' into codex/repair-pr-371
# Conflicts:
#	.env.example
2026-08-13 09:23:46 -07:00
calesthio
8143266ead fix: complete Hunyuan image provider integration 2026-08-13 09:18:49 -07:00
calesthio
bf55d498fb Merge remote-tracking branch 'origin/main' into codex/repair-pr-442
# Conflicts:
#	.env.example
2026-08-13 09:07:59 -07:00
calesthio
b1aefb364a fix: complete MiniMax image provider contracts 2026-08-13 09:02:22 -07:00
clarkh
b6dded18fe Merge branch 'main' into feat/hunyuan_cloud_video 2026-08-12 21:24:23 +08:00
calesthio
9482eddeff fix: recover bounded defects from PR backlog 2026-08-03 02:14:01 -07:00
clarkh
2237a9bcf9 refactor: remove TENCENT_TOKENHUB_MODEL env var, relocate Hunyuan entry in .env.example
The env var added complexity without meaningful benefit — explicit model
selection via the "model" input parameter is sufficient for both image and
video TokenHub tools.

- tools/video/hunyuan_cloud_video.py: drop env var fallback from
  _resolve_model(), remove mention from install_instructions
- tests/contracts/test_hunyuan_cloud_video.py: remove
  test_resolve_model_from_env and test_resolve_model_input_overrides_env
- .env.example: move TENCENT_TOKENHUB_API_KEY to a dedicated "Tencent
  Hunyuan TokenHub API" section, drop TENCENT_TOKENHUB_MODEL comment,
  broaden description from "video generation" to generic "Tencent Hunyuan
  via TokenHub API"
2026-07-30 10:53:33 +08:00
clarkh
287c77fa64 feat: add Tencent Hunyuan cloud video provider via TokenHub API
Introduce a new video generation provider backed by the Tencent TokenHub
API (tokenhub.tencentmaas.com), an OpenAI-compatible gateway for Tencent
Hunyuan video models with simple Bearer-token auth.

- Add hunyuan_cloud_video tool (submit → poll → download) supporting
  both text-to-video (hy-video-1.5) and image-to-video (yt-video-2.0)
- Add env vars: TENCENT_TOKENHUB_API_KEY, TENCENT_TOKENHUB_MODEL
- Add contract tests for the new tool
- Document setup, API flow, model pricing, and schema constraints in
  PROVIDERS.md
- Update provider tables and capability matrix throughout docs
2026-07-28 16:48:06 +08:00
zzzxtnt
b71f9b1f3e feat(video): add direct Volcengine Ark Seedance 2.0 provider 2026-07-27 11:24:07 +08:00
Calesthio
0af32ce5e1 Merge pull request #341 from yiyabo/feat/jimeng-video
Add Volcengine Jimeng (即梦 AI) video provider with V4 signing
2026-07-23 07:59:05 -07:00
Tomofumi Yagi
b29e238e8e docs: add fish.audio to provider docs and fix stale speech-1.x reference
- .env.example: replace removed speech-1.x mention with the actual
  supported backends (s1 / s2-pro / s2.1-pro)
- docs/PROVIDERS.md: add fish.audio section (setup, backend models,
  per-byte pricing incl. free s2.1-pro-free tier) plus entries in the
  env var summary, Provider-to-Tool Mapping, and Capability Coverage
- skills/INDEX.md: list fish-audio-tts in the TTS & Audio Layer 3 row
2026-07-22 18:52:33 +09:00
Tomofumi Yagi
d40c32441c feat: add fish.audio TTS provider
Add FishAudioTTS (capability=tts) so tts_selector auto-discovers a new
high-quality, voice-clone-capable provider. Backend model is required per
call: s1 (previous flagship, kept for compatibility), s2-pro (first S2
generation), s2.1-pro (latest flagship — inline emotion tags, 80+
languages), s2.1-pro-free (free tier for drafts). s1-mini and the
speech-1.x tier have been removed from the current fish.audio API and are
no longer supported. Voice cloning via reference_id with voice_id as a
selector-compatible alias. Adds temperature/top_p/repetition_penalty
sampling controls, optional sample_rate, opus output format, and a "low"
latency tier. Cost is estimated per UTF-8 byte to match fish.audio
billing. Includes a Layer 3 skill, .env.example entry, and unit tests.

Verified end-to-end with s2.1-pro + reference_id: generated a 7-segment
Japanese narration successfully.
2026-07-22 18:51:05 +09:00
amartya-dev
888d7b1e72 feat(tts): add Azure AI Speech as an optional cloud text-to-speech provider
Neural TTS via the synchronous REST v1 endpoint (SSML body, no token
exchange or job polling). Shares one Speech resource with azure_stt —
AZURE_SPEECH_KEY + AZURE_SPEECH_REGION unlock both directions; optional
AZURE_TTS_ENDPOINT overrides the TTS host (a different subdomain than
the STT endpoint). piper_tts remains the default offline path.

- tools/audio/azure_tts.py: azure_tts tool (capability=tts), voice
  shortlist aliases, SSML prosody/style, mp3/wav output, cost tracking
- tests/tools/test_azure_tts.py: contract, discovery, status, SSML,
  and mocked execute tests (21 tests, no live network)
- .agents/.claude skills: azure-text-to-speech Layer-3 skill
- docs: PROVIDERS.md section + tables, ARCHITECTURE.md inventories,
  AGENT_GUIDE.md + skills/INDEX.md rows, asset-director TTS cheatsheet,
  .env.example
2026-07-13 20:04:28 +05:30
Calesthio
f8d94632ea Merge pull request #354 from amartya-dev/feat/azure-speech-to-text
feat(stt): add Azure AI Speech as an optional cloud speech-to-text provider
2026-07-12 10:48:36 -07:00
amartya-dev
a2a0d8c8af feat(stt): add Azure AI Speech as an optional cloud speech-to-text provider
Add an Azure AI Speech transcription tool. It is opt-in: when
AZURE_SPEECH_KEY is configured the agent may prefer it for cloud STT,
while the local faster-whisper `transcriber` stays the default offline
path. Shared pipeline manifests are intentionally left unchanged, so no
default provider selection is altered for existing users.

- tools/analysis/azure_stt.py: new `azure_stt` tool (capability=analysis,
  provider=azure) calling the Fast Transcription REST API. The local file
  is uploaded via multipart and transcribed synchronously with word-level
  timestamps and optional diarization — no Blob storage or async polling.
  Output schema mirrors `transcriber` exactly, so it is a drop-in for
  `subtitle_gen` and other transcript consumers. Follows the existing
  provider-tool conventions (env-var status check, `_transcribe` helper,
  cost_usd/model on the result, fallback="transcriber").
- Auto-discovered by the registry; no registry or selector changes.
- tests/tools/test_azure_stt.py: contract, discovery, status, response
  mapping, execute guardrails, and a mocked-network success path (no live
  API calls).
- .agents/skills + .claude/skills: azure-speech-to-text Layer-3 skill.
- docs/PROVIDERS.md: Azure AI Speech setup, API notes, and pricing.
- .env.example, skills/INDEX.md, AGENT_GUIDE.md: document the optional
  cloud STT path alongside the default whisper transcriber.
2026-07-10 23:30:19 +05:30
xucailiang
2b6d717f00 Merge remote-tracking branch 'origin/main' into codex/kling-official-phase-1
# Conflicts:
#	.agents/skills/ai-video-gen/SKILL.md
#	.env.example
#	docs/PROVIDERS.md
2026-07-10 14:02:30 +08:00
Yiyabo
e06f56d26a jimeng: add Volcengine Jimeng (即梦 AI) video provider with V4 signing
Implements the Jimeng/Volcengine part of issue #249, as agreed with
@xucailiang (who is handling the Kling provider separately).

Adds a first-class Jimeng video provider that calls the Volcengine
visual API directly (visual.volcengineapi.com) using HMAC-SHA256 V4
request signing with IAM AK/SK credentials. This is the first provider
in OpenMontage to use V4 signing (all others use Bearer token auth).

API flow: POST CVSync2AsyncSubmitTask -> poll CVSync2AsyncGetResult ->
download video_url.

Features:
- Text-to-video and image-to-video (Jimeng 3.0 Pro)
- Configurable frame count (121=5s, 241=10s at 24fps)
- Aspect ratio selection (16:9, 9:16, 1:1, etc.)
- Seed for reproducibility
- Full V4 HMAC-SHA256 request signing (not Bearer token)
- Error handling with Jimeng code 10000 success convention
- API key redaction in error messages (both env vars, no empty-string bug)

Env vars: VOLC_ACCESSKEY + VOLC_SECRETKEY (IAM AK/SK pair).
Idempotency keys include all output-affecting fields.

Files:
- tools/video/jimeng_video.py — new tool (V4 signing + submit/poll/download)
- tests/contracts/test_jimeng_video.py — 46 contract tests (no AK/SK needed)
- .env.example — VOLC_ACCESSKEY + VOLC_SECRETKEY
- docs/PROVIDERS.md — Volcengine Jimeng provider section

End-to-end tested with real Volcengine IAM credentials: generated a
1920x1088 H.264 5.04s video, ffprobe verified.

Test results:
  python -m pytest tests/contracts/test_jimeng_video.py -q  # 46 passed
2026-07-10 10:50:43 +08:00
calesthio
34d1053526 feat(video): add Gemini Omni Flash provider with conversational editing
Add gemini_omni_video, a native Gemini API provider wrapping
gemini-omni-flash-preview via the Interactions API. Text-to-video,
image/reference-to-video with <FIRST_FRAME>/<IMAGE_REF_N> prompt tags,
and stateful edit_video turns via previous_interaction_id — the only
provider in the fleet that can refine a clip without regenerating it.
Reuses the existing GOOGLE_API_KEY / GEMINI_API_KEY, so one Google key
now unlocks images, TTS, and video.

- New Layer 3 skill .agents/skills/gemini-omni (prompting, edit-loop
  rules, tag/timecode syntax, preview limits) sourced from official
  Google docs; linked via agent_skills and the AGENT_GUIDE Layer 3 map
- ai-video-gen gains the Gemini API gateway row + editing pointer
- veo_video/sora_video fallback lists and video_selector agent_skills
  reference the new provider; quality_score 0.85 with rationale
- Contract tests: registry discovery, selector routing, status from
  env keys, uri + inline delivery, edit turns, typed image parts,
  store=false editability, cost clamp
2026-07-08 11:00:57 -07:00
xucailiang
5a23fe6cf5 Merge branch 'main' of https://github.com/calesthio/OpenMontage into codex/kling-official-phase-1 2026-07-07 15:03:07 +08:00
xucailiang
7c5dfdd31a Add official Kling API providers 2026-07-07 14:56:40 +08:00
Ziyu Huang
14eccccb09 docs(env): add missing FAL_AI_API_KEY alias, REPLICATE_API_TOKEN, HIGGSFIELD credentials
The provider tools read these env vars but .env.example never listed
them, so a fresh setup silently misses them:

- FAL_AI_API_KEY — read by kling/minimax/veo/seedance/recraft/flux
  as an alias for FAL_KEY (os.environ.get('FAL_KEY') or FAL_AI_API_KEY),
  but only FAL_KEY was documented.
- REPLICATE_API_TOKEN — required by seedance_replicate; without it the
  Replicate-backed Seedance path stays unselectable.
- HIGGSFIELD_API_KEY / _API_SECRET / HIGGSFIELD_KEY — the three forms
  higgsfield_video.py accepts (combined key:secret vs split pair).

Doc-only, zero runtime change.

Refs: docs/REVIEW-image-to-video-voice.md §8 #11

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 07:29:28 +08:00
Calesthio
e09afaa280 Merge pull request #240 from yiyabo/feat/dashscope-integration
Add DashScope (Alibaba Cloud Bailian) provider: image gen + TTS + ASR
2026-07-03 18:04:53 -07:00
Remotely Human
fabc0e7088 Replace retired OpenAI image models with gpt-image-2 (DALL-E shut down 2026-05-12)
- openai_image: enum narrowed to ["gpt-image-2"]; DALL-E code path, sizes
  (1024x1792/1792x1024) and qualities (standard/hd) removed; estimate_cost
  updated to real GPT Image 2 pricing ($0.006/$0.053/$0.211 at 1024x1024)
- image_gen (deprecated but callable): default dall-e-3 -> gpt-image-2; drop
  response_format="b64_json", which GPT image models reject; update pricing
- docs/skills sweep: scrub retired-model references from README (en/zh),
  .env.example, docs/PROVIDERS.md (incl. pricing table + deprecation note),
  docs/ARCHITECTURE.md, AGENT_GUIDE.md, skills/creative/*, 14 pipeline
  director skills, and tests/qa/QA_PLAN.md

Source: https://developers.openai.com/api/docs/deprecations

proofread by fable 5 + codex
2026-07-02 11:36:31 +08:00
Yiyabo
c8f30c2cf3 dashscope: add DASHSCOPE_API_KEY to .env.example 2026-06-30 14:35:33 +08:00
Shubham
806f7ee1ac feat(google): support service-account auth for TTS + Imagen, fix false availability
Google's TTS and Imagen tools advertised service-account auth
(GOOGLE_APPLICATION_CREDENTIALS) but only ever authenticated with an API
key string, so users with a service-account JSON could not use either tool.
google_tts.get_status() also over-reported availability when the JSON was
set, then failed at execute() — a silent-availability bug.

Separately, both hand-rolled _load_dotenv parsers kept inline comments as
values, so after `cp .env.example .env` every keyed tool falsely reported
"available" with no real credentials.

Changes:
- Add tools/google_credentials.py: lazy google-auth Bearer-token helper.
- google_tts: authenticate via Cloud TTS Bearer token when only a service
  account is configured; make get_status() honest.
- google_imagen: route service-account auth to Vertex AI
  ({location}-aiplatform.googleapis.com) with project/location resolution,
  alongside the existing AI Studio API-key path.
- Fix both _load_dotenv parsers to strip inline comments (quote-aware).
- Add google-auth to requirements; document the new env vars in .env.example.
- .gitignore: never commit GCP service-account key files.

Verified locally with a real service account: TTS produced a valid MP3 and
Imagen produced a valid 1408x768 PNG via Vertex AI. Existing test suite
passes (2 unrelated pre-existing failures only).

Closes #131

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:53:10 +05:30
jiangjiahui5
3ee8548226 feat(tts): add Doubao Speech provider
Add Volcengine Doubao Speech 2.0 as a TTS provider for Mandarin narration with async timestamp metadata, provider documentation, and setup guidance.
2026-05-04 21:40:17 +08:00
calesthio
de94d4dba3 Documentary Montage hardening plus governance fixes 2026-04-10 16:42:39 -07:00
calesthio
a919fde450 Remove fal-first provider guidance 2026-04-08 13:04:32 -07:00
calesthio
7ca04e66d8 Add Grok media providers and improve selector routing 2026-04-05 15:31:37 -07:00
calesthio
4327000433 Add Google Imagen and Google Cloud TTS provider tools
Two new provider tools following the BaseTool pattern with auto-discovery:
- google_imagen: Imagen 4 image generation via Generative Language REST API
- google_tts: Google Cloud TTS with 700+ voices across 50+ languages

Both share GOOGLE_API_KEY env var. Selectors auto-discover them — no
selector code changes needed. Docs and contract tests updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 09:06:26 -07:00
calesthio
a3e735cc7a Initial release — OpenMontage: the first open-source agentic video production system
11 production pipelines, 47 tools, 124 agent skills.
Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and
free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 08:25:17 -07:00