Files
OpenMontage/.gitignore
T
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

87 lines
1.9 KiB
Plaintext

# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
dist/
build/
# Test/IDE
.pytest_cache/
.mypy_cache/
.ruff_cache/
htmlcov/
.coverage
.trae/
.idea/
.vscode/
# Pipeline outputs (regenerable — never commit large media)
output/
pipeline/
tests/qa/output/
# Project workspaces (generated assets, renders — all regenerable)
projects/
# Corpus directories (downloaded stock clips, thumbnails, embeddings —
# regenerable from source APIs via corpus_builder). Explicit rule even
# though most corpora live under projects/ since agents sometimes
# build scratch corpora at the repo root.
corpus/
**/corpus/
# User music library (personal royalty-free tracks — not part of repo)
music_library/
# Environment & credentials
.env
.env.local
*.env
.youtube-token.json
# Google service-account / Vertex AI keys — never commit
gcp-*.json
*-service-account.json
service-account*.json
service_account*.json
# Stray media downloads (test/scratch clips left in repo root)
pexels_video_*.mp4
# Scratch/debug scripts
scratch/
# Internal docs (strategy, handoffs, playbooks — not shipped)
internal/
# Local agent config (user-specific)
.claude/memory/
.claude/settings.local.json
# Agent skills lock (local install tracking)
skills-lock.json
# Generated images (logo drafts — final logo lives in assets/)
logo_*.png
generated_image.png
# Downloaded music files (Pixabay, Freesound — not source code)
pixabay_music_*
# OS
.DS_Store
Thumbs.db
# Node (for remotion-composer/)
node_modules/
# Remotion build output and copied project assets (regenerable at render time)
remotion-composer/out/
remotion-composer/public/*
# But keep demo props (shipped with the project for zero-key demos)
!remotion-composer/public/demo-props/
# Ignore test/scratch compositions in demo-props (keep only curated demos)
remotion-composer/public/demo-props/test-*
remotion-composer/public/demo-props/talking-head-*
remotion-composer/public/demo-props/caption-burn-*