806f7ee1ac
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>
87 lines
1.9 KiB
Plaintext
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-*
|