gflow-cli 0.53.1__tar.gz → 0.55.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/dependabot.yml +35 -7
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/deps-watch.yml +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/external-pr-triage.yml +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/labels.yml +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/AGENTS.md +4 -4
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/CHANGELOG.md +48 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/DISCLAIMER.md +3 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/PKG-INFO +8 -8
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/README.md +5 -5
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/AUTHENTICATION.md +7 -5
- {gflow_cli-0.53.1/website → gflow_cli-0.55.0}/docs/CONFIGURATION.md +8 -2
- {gflow_cli-0.53.1/website → gflow_cli-0.55.0}/docs/DEBUGGING.md +4 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/INDEX.md +1 -2
- gflow_cli-0.55.0/docs/LIVE_VERIFICATION_v0.54.0.md +67 -0
- gflow_cli-0.55.0/docs/LIVE_VERIFICATION_v0.55.0.md +86 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/MCP.md +14 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/PROJECT_STATUS.md +37 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/SECURITY.md +8 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/USAGE.md +19 -3
- {gflow_cli-0.53.1/website → gflow_cli-0.55.0}/docs/USER_GUIDE.md +12 -13
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/medium_tutorial.md +1 -1
- gflow_cli-0.55.0/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +98 -0
- gflow_cli-0.55.0/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +27 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/llms.txt +2 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/pyproject.toml +3 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/incident_bundle_quality.py +3 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/record_demo.ps1 +5 -6
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/gflow-cli/SKILL.md +7 -7
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/_cli_helpers.py +16 -14
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/client.py +4 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/ui_automation.py +12 -23
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/__init__.py +16 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/real_chrome.py +5 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli.py +68 -14
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/config.py +3 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/diagnostics.py +109 -9
- gflow_cli-0.55.0/src/gflow_cli/mcp/setup.py +133 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/tools.py +96 -48
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/runtime.py +2 -1
- gflow_cli-0.55.0/src/gflow_cli/winsec.py +120 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tasks/lessons.md +10 -0
- gflow_cli-0.55.0/tests/auth/test_windows_acl.py +158 -0
- gflow_cli-0.55.0/tests/cli/test_auth_status.py +95 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_incident_output.py +34 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/auth.feature +9 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_auth_steps.py +24 -0
- gflow_cli-0.55.0/tests/mcp/test_error_funnel.py +81 -0
- gflow_cli-0.55.0/tests/mcp/test_setup.py +206 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_config.py +22 -4
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_recorder.py +33 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_retention.py +14 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_overlay_banner_dismissal.py +3 -4
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_playwright_pin.py +60 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_runtime.py +25 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/uv.lock +34 -34
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/AUTHENTICATION.md +7 -5
- {gflow_cli-0.53.1 → gflow_cli-0.55.0/website}/docs/CONFIGURATION.md +8 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0/website}/docs/DEBUGGING.md +4 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/MCP.md +14 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/SECURITY.md +8 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/USAGE.md +19 -3
- {gflow_cli-0.53.1 → gflow_cli-0.55.0/website}/docs/USER_GUIDE.md +12 -13
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/index.md +2 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/installation.md +1 -1
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/onboarding-mockup.html +2 -2
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/onboarding.md +2 -2
- gflow_cli-0.53.1/docs/LIVE_VERIFICATION_v0.53.0.md +0 -55
- gflow_cli-0.53.1/docs/LIVE_VERIFICATION_v0.53.1.md +0 -55
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.env.template +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.gitattributes +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.gitignore +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/.secrets.baseline +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/CLAUDE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/KNOWN_ISSUES.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/LICENSE +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/RELEASE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/ROADMAP.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docker-compose.yml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/eval/pr_triage_eval.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/eval/pr_triage_fixtures.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/index.html +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/autopilot/Dockerfile.triage +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/autopilot/entrypoint.sh +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/autopilot/pr_triage_gate.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/monitor_pr_38.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/README.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/sonar-project.properties +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_media.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/KNOWN_ISSUES.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.53.1 → gflow_cli-0.55.0}/website/mkdocs.yml +0 -0
|
@@ -51,14 +51,42 @@ updates:
|
|
|
51
51
|
# `groups` unless a group sets `applies-to: security-updates`, so an advisory
|
|
52
52
|
# fix still opens immediately on its own instead of waiting for Monday.
|
|
53
53
|
ignore:
|
|
54
|
-
# playwright
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
54
|
+
# playwright MINORS must be ignored here. They are NOT gated by the
|
|
55
|
+
# `<1.62.0` upper bound in pyproject.toml -- that was the assumption this
|
|
56
|
+
# rule used to state, and PR #465 falsified it. The "uv" ecosystem does
|
|
57
|
+
# not respect a constraint standing in an update's way, it REWRITES it:
|
|
58
|
+
# #465 widened `playwright>=1.61.0,<1.62.0` to `<1.63.0` and locked
|
|
59
|
+
# 1.62.0 -- the exact version observed hanging every `video i2v` right
|
|
60
|
+
# after the frame upload (see the bound's comment in pyproject.toml).
|
|
61
|
+
# Only tests/test_playwright_pin.py stopped it, and on its way out it
|
|
62
|
+
# red-lighted the whole grouped weekly batch.
|
|
63
|
+
#
|
|
64
|
+
# PATCH bumps stay allowed on purpose: the 1.61.x headroom exists so a
|
|
65
|
+
# driver CVE fix does not require a gflow release. Raising a MINOR is a
|
|
66
|
+
# deliberate, live-verified act (AGENTS.md "verify before you act") and
|
|
67
|
+
# also means hand-editing SUPPORTED_PLAYWRIGHT_RANGE in
|
|
68
|
+
# src/gflow_cli/api/transports/ui_automation_video.py, which no bot can
|
|
69
|
+
# do -- so a bot-authored minor bump can never be mergeable here anyway.
|
|
70
|
+
# The weekly `deps-watch` workflow reports how far behind the pin has
|
|
71
|
+
# drifted so it does not freeze unnoticed.
|
|
60
72
|
- dependency-name: "playwright"
|
|
61
|
-
update-types:
|
|
73
|
+
update-types:
|
|
74
|
+
- "version-update:semver-major"
|
|
75
|
+
- "version-update:semver-minor"
|
|
76
|
+
# patchright is the SAME hazard with a bigger blast radius, and the exact
|
|
77
|
+
# `==` pin protects it no better than playwright's upper bound protected
|
|
78
|
+
# playwright -- an exact pin is just another constraint for the "uv"
|
|
79
|
+
# ecosystem to rewrite. It ships a PATCHED Chromium driver that loads the
|
|
80
|
+
# real Google session (cookies, OAuth Bearer, SAPISID), so docs/SECURITY.md
|
|
81
|
+
# requires every bump to get a security review and explicitly says it is
|
|
82
|
+
# "NOT a routine dependabot auto-merge". That was prose with nothing
|
|
83
|
+
# enforcing it; this is the enforcement. ALL update-types, patch included:
|
|
84
|
+
# any version change moves the browser binary underneath the user.
|
|
85
|
+
- dependency-name: "patchright"
|
|
86
|
+
update-types:
|
|
87
|
+
- "version-update:semver-major"
|
|
88
|
+
- "version-update:semver-minor"
|
|
89
|
+
- "version-update:semver-patch"
|
|
62
90
|
|
|
63
91
|
# GitHub Actions
|
|
64
92
|
- package-ecosystem: "github-actions"
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
# Unlike the step above, this ignores our constraints and reports the
|
|
67
67
|
# true latest on PyPI — so a package frozen by one of OUR upper bounds
|
|
68
68
|
# shows up here and nowhere else. This is the expiry alarm for those
|
|
69
|
-
# bounds: `playwright>=1.
|
|
69
|
+
# bounds: `playwright>=1.61.0,<1.62.0` is deliberate (an untested driver
|
|
70
70
|
# silently wedged video generation — see the comment in pyproject.toml),
|
|
71
71
|
# but a deliberate pin still needs a periodic "how stale is it now?"
|
|
72
72
|
# signal, and raising it requires a live-verified generation first.
|
|
@@ -8,15 +8,15 @@ Supported tools that auto-discover this file: Cursor, Codex, Aider, Antigravity
|
|
|
8
8
|
|
|
9
9
|
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com`.
|
|
10
10
|
- Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
|
|
11
|
-
- Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `composition.py`, `config.py`, `errors.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
11
|
+
- Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `composition.py`, `config.py`, `errors.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
12
12
|
- Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain — no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
13
|
-
-
|
|
13
|
+
- Works with any Google account that has Flow access. All generations bill against the user's own Google account.
|
|
14
14
|
|
|
15
15
|
## Headed-browser dependency (architectural reality)
|
|
16
16
|
|
|
17
17
|
gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects Playwright's bundled Chromium and most headless approaches. This is the project's defining trade-off:
|
|
18
18
|
|
|
19
|
-
- ✅ Works end-to-end against live
|
|
19
|
+
- ✅ Works end-to-end against live Google accounts.
|
|
20
20
|
- ❌ Requires a saved Chrome profile, a display server for one-time login, and ~150 MB for Chromium.
|
|
21
21
|
- ❌ Cannot run on serverless / headless CI workers without prerecorded profile transplant.
|
|
22
22
|
- ❌ Per-account horizontal concurrency is capped by what one warm Page pool can drive.
|
|
@@ -58,7 +58,7 @@ Or invoke the wrapper: `/gflow:check`.
|
|
|
58
58
|
|
|
59
59
|
- Type hints everywhere; `pyright` strict on `src/gflow_cli`.
|
|
60
60
|
- Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
|
|
61
|
-
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–
|
|
61
|
+
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–31, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping.
|
|
62
62
|
- 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
|
|
63
63
|
- **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
|
|
64
64
|
- **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
|
|
@@ -7,8 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.55.0] — 2026-08-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`gflow mcp setup` is implemented (#475).** The long-stubbed command now writes the gflow MCP server entry into the target client's config: `--target claude-desktop` (default), `cursor`, or `vscode` (VS Code's `servers` + `"type": "stdio"` schema). Non-destructive by construction: existing config content is merged, a pre-existing file is backed up as `<name>.gflow-backup`, a manual `gflow-cli` entry is converged in place instead of duplicated, and a corrupt config fails loud (exit 11) without ever being touched. Also fixed the bogus `%APPDATA%\Castano\Claude` path in docs/MCP.md.
|
|
15
|
+
- **Incident bundles now include a pre-filled bug-report template (#476).** On every captured incident, the recorder stages `report.md` alongside the existing artifacts: version/platform, error class + exit code + retryability, phase/route, and pointers to the captured evidence — built exclusively from the allowlisted manifest fields (never raw exception text). The CLI error message now prints the report path next to the bundle path, and retention treats `report.md` as recorder-owned. Downgrade caveat: gflow <= 0.54.x does not recognize `report.md`, so its retention classifies new bundles as unknown and stops pruning them — delete `<GFLOW_CLI_HOME>/incidents` manually if you downgrade. The report is meant to be copied out of the bundle before editing (the template says so), and the e2e privacy scanner now leak-scans `*.md` alongside the JSON artifacts.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **`gflow auth status` now proves the Flow session and exits 0/1 (#471).** The command previously only checked that the profile directory and cookies file exist — it could report OK on a dead session. It now runs the fast `verify_flow_profile` probe (cookie snapshot + Flow session endpoint; no browser, no credits) and exits 0 only on a verified session, printing the verified account email; any other outcome exits 1 with a `gflow auth login` remediation hint. Fail-closed: an unreachable endpoint is a failure, never an OK.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **Removed the false "requires a Google AI Ultra or Pro subscription" claim across all docs.** Any Google account with Flow access can use gflow-cli — a paid plan only affects credit allowances and tier-gated features (e.g. 4K upscale stays Ultra-only). Swept README, AGENTS.md, DISCLAIMER.md, USER_GUIDE, CONFIGURATION, AUTHENTICATION, DEBUGGING, the medium tutorial, and the gflow-cli skill; factual tier-gating notes are unchanged.
|
|
24
|
+
|
|
25
|
+
### Security
|
|
26
|
+
|
|
27
|
+
- **MCP tools no longer leak raw exception text to clients (#473).** Every registered MCP tool now routes through one error funnel: `GFlowError`s keep their structured RFC-9457 problem-details envelope (with the shared `retryable` flag), while unexpected exceptions return a masked envelope carrying only the exception class name — messages can embed filesystem paths, profile names, or token material, so the full text goes exclusively to the server-side structured log (`mcp.tool.unexpected_error`). Previously only 3 of 11 tools had any funnel, and those leaked `str(exc)` as the `detail` field; the rest leaked through the framework's default error path. Guarded by a registry-introspection test that fails if any future tool bypasses the funnel.
|
|
28
|
+
|
|
29
|
+
- **Windows profile dirs are now really restricted to the current user (#472).** POSIX `chmod 0700`/`0600` is a no-op on Windows, so a profile created under a custom `GFLOW_CLI_HOME` on a shared/world-readable volume inherited that visibility — with the live Google session cookies inside. `gflow auth login` now applies an explicit `icacls` DACL before the browser runs: inheritance stripped, a single owner-only ACE (by SID, locale-safe), children reset to inherit it. Two-step sequence verified empirically (the naive `/t` grant leaves files without effective access). Existing profiles created before this release are swept on their next use: the client's browser-launch path runs a marker-gated hardening pass once per profile. Traversal profile names are rejected before any directory is created or re-ACLed. Best-effort — an ACL failure is logged (with icacls exit code and stderr) and never blocks login; no-op off Windows.
|
|
30
|
+
- **Secret settings can no longer leak through a `Settings` dump (#474).** `llm_api_key` (`GFLOW_CLI_LLM_API_KEY`) and `daemon_token` (`GFLOW_CLI_DAEMON_TOKEN`/`GFLOW_DAEMON_TOKEN`) are now stored as Pydantic `SecretStr`, so `repr()`, `str()`, and `model_dump_json()` of the settings object mask them by construction — defense-in-depth on top of the existing logging-boundary redaction. Values are unwrapped only at the single point of use (the prompt-tools LLM client).
|
|
31
|
+
|
|
32
|
+
## [0.54.0] — 2026-08-12
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- **Clearer close-the-browser guidance in `gflow auth login` (#470).** Reworded the final passive-capture step in `real_chrome.py` from the abrupt "CLOSE THE BROWSER" command into plain-language guidance: closing the Chrome window is how you signal you're done, after which gflow verifies the Flow session automatically. No behavior change — the manual close stays required on the real-Chrome path, because Chrome holds an exclusive lock on its cookie store while running (verified empirically), so gflow cannot auto-detect completion there without breaking the zero-automation-surface stealth model.
|
|
37
|
+
- **Overlay/watermark detection hardened to pure structural selectors.** Council-review cleanup of `ui_automation.py`: enforced 100% language-agnostic structural anchors, removed text-label hacks and dead aliases, and fixed a stale test assertion — strengthens the #403 release-modal dismissal across localized profiles.
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- **Dependabot could re-offer the known-bad playwright 1.62.0 every Monday (#465).** The `uv` ecosystem does not respect a version bound standing in an update's way — it **rewrites** it, so the deliberate `playwright>=1.61.0,<1.62.0` bound in `pyproject.toml` never gated Dependabot as `.github/dependabot.yml` claimed. PR #465 widened it to `<1.63.0` and locked 1.62.0, the exact version documented as hanging every `video i2v` right after the frame upload. Dependabot now ignores playwright `semver-minor` alongside `semver-major` (patch bumps stay allowed so a driver CVE fix needs no gflow release), guarded by `tests/test_playwright_pin.py::test_dependabot_ignores_playwright_minor_bumps`.
|
|
42
|
+
- **`patchright` was exposed to the same bug, with a bigger blast radius.** Its exact `==` pin is just another constraint the `uv` ecosystem can rewrite, so `docs/SECURITY.md`'s "a Patchright version change is NOT a routine dependabot auto-merge" was prose with nothing enforcing it. Dependabot now ignores **all** patchright update-types (any version change moves the patched Chromium driver — which loads the real Google session — underneath the user), guarded by `test_dependabot_ignores_driver_engine_bumps`. Also corrected the stale pin cited in `docs/SECURITY.md` (`1.60.1` → `1.61.2`) and the stale playwright range in `.github/workflows/deps-watch.yml`.
|
|
43
|
+
- **Character-composer focus isolation.** `_submit_body_prompt` now preserves the locator-scoped `press_sequentially`, keeping correct focus during character-composer submission.
|
|
44
|
+
|
|
45
|
+
### Security
|
|
46
|
+
|
|
47
|
+
- **Timing-jitter entropy now uses a cryptographically-strong RNG (SonarCloud S2245).** The `_jitter_ms` interaction-delay humanization helper draws from `secrets.SystemRandom` instead of the standard `random` module, so the jitter entropy is not predictable.
|
|
48
|
+
|
|
10
49
|
## [0.53.1] — 2026-08-06
|
|
11
50
|
|
|
51
|
+
- Re-release of 0.53.0 (version bump only; recorded headed live-verification evidence). No functional changes.
|
|
52
|
+
|
|
53
|
+
## [0.53.0] — 2026-08-06
|
|
54
|
+
|
|
12
55
|
### Added
|
|
13
56
|
|
|
14
57
|
- **Driver interaction delay humanization (#315).** Added `_jitter_ms` timing entropy helper to `ui_automation.py` to randomize Playwright interaction wait durations around base values, mitigating anti-automation fingerprinting without degrading batch throughput.
|
|
@@ -2753,8 +2796,11 @@ shell-script template that branches on these codes.
|
|
|
2753
2796
|
|
|
2754
2797
|
First skeleton. Not functional end-to-end yet.
|
|
2755
2798
|
|
|
2756
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
2757
|
-
[0.
|
|
2799
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.55.0...HEAD
|
|
2800
|
+
[0.55.0]: https://github.com/ffroliva/gflow-cli/compare/v0.54.0...v0.55.0
|
|
2801
|
+
[0.54.0]: https://github.com/ffroliva/gflow-cli/compare/v0.53.1...v0.54.0
|
|
2802
|
+
[0.53.1]: https://github.com/ffroliva/gflow-cli/compare/v0.53.0...v0.53.1
|
|
2803
|
+
[0.53.0]: https://github.com/ffroliva/gflow-cli/compare/v0.52.0...v0.53.0
|
|
2758
2804
|
[0.52.0]: https://github.com/ffroliva/gflow-cli/compare/v0.51.0...v0.52.0
|
|
2759
2805
|
[0.51.0]: https://github.com/ffroliva/gflow-cli/compare/v0.50.0...v0.51.0
|
|
2760
2806
|
[0.50.0]: https://github.com/ffroliva/gflow-cli/compare/v0.49.0...v0.50.0
|
|
@@ -19,7 +19,7 @@ If you need a stable, supported, contractual API, use the [official Google Gen A
|
|
|
19
19
|
|
|
20
20
|
To use `gflow-cli` you must:
|
|
21
21
|
|
|
22
|
-
1. **Own a valid Google account** with active access to [Google Flow](https://labs.google/fx/tools/flow) —
|
|
22
|
+
1. **Own a valid Google account** with active access to [Google Flow](https://labs.google/fx/tools/flow) — any Google account works; a paid plan ([AI Pro or AI Ultra](https://gemini.google/subscriptions/)) only affects credit allowances and tier-gated features.
|
|
23
23
|
2. **Comply with Google's terms of service** for that account, including:
|
|
24
24
|
- [Google Terms of Service](https://policies.google.com/terms)
|
|
25
25
|
- [Generative AI Additional Terms](https://policies.google.com/terms/generative-ai)
|
|
@@ -36,10 +36,10 @@ The maintainer asks that you do **not** use `gflow-cli` to:
|
|
|
36
36
|
|
|
37
37
|
- Generate content that violates the [Generative AI Prohibited Use Policy](https://policies.google.com/terms/generative-ai/use-policy) (CSAM, harassment, IP infringement, etc.).
|
|
38
38
|
- Circumvent Google's billing, quota, or rate limits via account-rotation farms.
|
|
39
|
-
- Automate Flow access for users who do not have their own
|
|
39
|
+
- Automate Flow access for users who do not have their own Flow access entitlement.
|
|
40
40
|
- Re-sell access to Veo via this tool as a "wrapped" commercial service.
|
|
41
41
|
|
|
42
|
-
These uses can get **your** Google account banned, can put the maintainer in a difficult position with Google, and are antithetical to why this project exists (which is to let legitimate
|
|
42
|
+
These uses can get **your** Google account banned, can put the maintainer in a difficult position with Google, and are antithetical to why this project exists (which is to let legitimate Flow user subscribers use credits they already paid for, more efficiently).
|
|
43
43
|
|
|
44
44
|
## Takedown policy
|
|
45
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.55.0
|
|
4
4
|
Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
|
|
@@ -58,7 +58,7 @@ Requires-Dist: numpy>=1.24; extra == 'dev'
|
|
|
58
58
|
Requires-Dist: pyright>=1.1.0; extra == 'dev'
|
|
59
59
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
60
60
|
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
61
|
-
Requires-Dist: ruff==0.16.
|
|
61
|
+
Requires-Dist: ruff==0.16.2; extra == 'dev'
|
|
62
62
|
Provides-Extra: gcs
|
|
63
63
|
Requires-Dist: gcsfs>=2024.2.0; extra == 'gcs'
|
|
64
64
|
Requires-Dist: universal-pathlib>=0.2.5; extra == 'gcs'
|
|
@@ -84,7 +84,7 @@ Description-Content-Type: text/markdown
|
|
|
84
84
|
[](CONTRIBUTING.md)
|
|
85
85
|
[](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
|
|
86
86
|
|
|
87
|
-
> ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It
|
|
87
|
+
> ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
|
|
88
88
|
>
|
|
89
89
|
> 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
|
|
90
90
|
>
|
|
@@ -92,7 +92,7 @@ Description-Content-Type: text/markdown
|
|
|
92
92
|
|
|
93
93
|
## Why gflow-cli?
|
|
94
94
|
|
|
95
|
-
You
|
|
95
|
+
You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
|
|
96
96
|
|
|
97
97
|
- **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
|
|
98
98
|
- **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
|
|
@@ -100,7 +100,7 @@ You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch
|
|
|
100
100
|
- **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
|
|
101
101
|
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs.
|
|
102
102
|
|
|
103
|
-
Same Veo and Imagen models, same quality, same
|
|
103
|
+
Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
|
|
104
104
|
|
|
105
105
|
## 60-second quick start
|
|
106
106
|
|
|
@@ -144,7 +144,7 @@ One command in, real Flow output back. Left: `gflow image t2i` generating a phot
|
|
|
144
144
|
|
|
145
145
|

|
|
146
146
|
|
|
147
|
-
A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in
|
|
147
|
+
A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Flow profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
|
|
148
148
|
|
|
149
149
|
Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1) (Windows, OBS, ffmpeg, gifski). More formats, including the side-by-side split-screen: **[docs/DEMOS.md](docs/DEMOS.md)**.
|
|
150
150
|
|
|
@@ -202,7 +202,7 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
|
|
|
202
202
|
|
|
203
203
|
## License & legal
|
|
204
204
|
|
|
205
|
-
[MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms
|
|
205
|
+
[MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms and any plan-specific subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
|
|
206
206
|
|
|
207
207
|
## Acknowledgements
|
|
208
208
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
[](CONTRIBUTING.md)
|
|
14
14
|
[](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
|
|
15
15
|
|
|
16
|
-
> ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It
|
|
16
|
+
> ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
|
|
17
17
|
>
|
|
18
18
|
> 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
|
|
19
19
|
>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
## Why gflow-cli?
|
|
23
23
|
|
|
24
|
-
You
|
|
24
|
+
You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
|
|
25
25
|
|
|
26
26
|
- **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
|
|
27
27
|
- **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
|
|
@@ -29,7 +29,7 @@ You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch
|
|
|
29
29
|
- **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
|
|
30
30
|
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs.
|
|
31
31
|
|
|
32
|
-
Same Veo and Imagen models, same quality, same
|
|
32
|
+
Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
|
|
33
33
|
|
|
34
34
|
## 60-second quick start
|
|
35
35
|
|
|
@@ -73,7 +73,7 @@ One command in, real Flow output back. Left: `gflow image t2i` generating a phot
|
|
|
73
73
|
|
|
74
74
|

|
|
75
75
|
|
|
76
|
-
A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in
|
|
76
|
+
A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Flow profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
|
|
77
77
|
|
|
78
78
|
Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1) (Windows, OBS, ffmpeg, gifski). More formats, including the side-by-side split-screen: **[docs/DEMOS.md](docs/DEMOS.md)**.
|
|
79
79
|
|
|
@@ -131,7 +131,7 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
|
|
|
131
131
|
|
|
132
132
|
## License & legal
|
|
133
133
|
|
|
134
|
-
[MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms
|
|
134
|
+
[MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms and any plan-specific subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
|
|
135
135
|
|
|
136
136
|
## Acknowledgements
|
|
137
137
|
|
|
@@ -10,7 +10,7 @@ This page documents the full lifecycle: capture, storage, reuse, refresh, multi-
|
|
|
10
10
|
|---|---|
|
|
11
11
|
| Re-implement Google's OAuth dance | Google's web SSO involves anti-automation challenges (CAPTCHA, device verification). A community SDK can't reliably ship that. |
|
|
12
12
|
| Extract the bearer token from cookies and use `httpx` directly | Tokens are short-lived and tied to a refresh flow we don't have. Re-implementing the refresh is brittle. |
|
|
13
|
-
| Use a service-account JSON | Flow doesn't currently support service accounts on the
|
|
13
|
+
| Use a service-account JSON | Flow doesn't currently support service accounts on the consumer tier. |
|
|
14
14
|
| Pure stored cookie jar (no Playwright) | Some Flow endpoints set additional `x-` headers based on Chromium fingerprint; matching them by hand is fragile. |
|
|
15
15
|
| **Playwright persistent context (chosen)** | Captures session once, reuses indefinitely, refreshes automatically on idle, auto-attaches every header Flow expects. One-time cost: a ~150 MB Chromium download. |
|
|
16
16
|
|
|
@@ -197,18 +197,20 @@ accidental interference or data corruption.
|
|
|
197
197
|
|
|
198
198
|
### `gflow auth status`
|
|
199
199
|
|
|
200
|
-
Reports
|
|
200
|
+
Reports where the profile lives, then **proves the session**: it probes the Flow session endpoint with the profile's cookies (no browser, no credits) and exits `0` only when the session is verified — `1` otherwise. Handy for scripts: `gflow auth status && gflow run ...`.
|
|
201
201
|
|
|
202
202
|
```bash
|
|
203
203
|
$ gflow auth status
|
|
204
|
-
Profile 'default' is configured.
|
|
205
204
|
profile: /home/you/.local/share/gflow-cli/profile_default
|
|
206
205
|
exists: True
|
|
207
206
|
cookies_present: True
|
|
208
207
|
cookies_path: /home/you/.local/share/gflow-cli/profile_default/Default/Cookies
|
|
208
|
+
browser_engine: playwright
|
|
209
|
+
Probing Flow session (may take up to ~45s on a slow network)...
|
|
210
|
+
Flow session verified as you@example.com.
|
|
209
211
|
```
|
|
210
212
|
|
|
211
|
-
> Note: `cookies_present: True` only confirms the file exists
|
|
213
|
+
> Note: `cookies_present: True` only confirms the file exists. The final verdict line is the live probe result: a dead session prints a `gflow auth login` remediation hint and exits 1; a probe that cannot reach the endpoint (offline, 5xx) also exits 1 but suggests checking connectivity instead of re-logging in.
|
|
212
214
|
|
|
213
215
|
### `gflow auth list`
|
|
214
216
|
|
|
@@ -394,7 +396,7 @@ extraction lives in `gflow_cli.auth.cookies`.
|
|
|
394
396
|
|---|---|
|
|
395
397
|
| Session file leaked to a public repo | `.gitignore` excludes profile dirs at every layer. Recommended belt-and-braces: keep the gflow-cli home outside the repo (default location via `platformdirs` already does this) and run `git status` before any commit. Automatic in-repo detection is on the backlog (not yet scheduled). |
|
|
396
398
|
| Multi-user shared machine | Profiles live under each user's home dir; OS file permissions (`0700` on POSIX, ACL on Windows) prevent cross-user reads by default. |
|
|
397
|
-
| `gflow-cli` itself becomes malicious | The package is open-source under MIT; pin a version (`uv tool install gflow-cli==0.
|
|
399
|
+
| `gflow-cli` itself becomes malicious | The package is open-source under MIT; pin a version (`uv tool install gflow-cli==0.55.0`) and review release diffs before upgrading. |
|
|
398
400
|
| Stolen laptop | Anyone with disk access has your session. Use full-disk encryption (FileVault, BitLocker, LUKS). Consider a dedicated `--profile sandbox` for short-lived experiments. |
|
|
399
401
|
| Sharing a profile between machines | Technically works (copy the profile dir), but Google may flag the device-fingerprint mismatch as suspicious. Re-login on the new machine instead. |
|
|
400
402
|
|
|
@@ -109,7 +109,7 @@ Deep setup, verification, and security notes live in
|
|
|
109
109
|
### `GFLOW_CLI_PROVIDER`
|
|
110
110
|
|
|
111
111
|
**What:** Backend to use for generations.
|
|
112
|
-
**Values:** `flow` (default — reverse-engineered,
|
|
112
|
+
**Values:** `flow` (default — reverse-engineered, works with any Google account that has Flow access) | `official` (planned v0.5+ — Phase 5 official Veo SDK swap, will require a Gemini API key).
|
|
113
113
|
**Default:** `flow`
|
|
114
114
|
**CLI override:** none yet — set the env var to switch backends once `official` is wired.
|
|
115
115
|
|
|
@@ -205,6 +205,12 @@ gflow tools run creative-director "cat in space" --json # check "was_expanded"
|
|
|
205
205
|
no env var set. If a corporate proxy is configured, add your local gateway to `NO_PROXY`
|
|
206
206
|
or its traffic will be routed through the proxy and fail non-obviously.
|
|
207
207
|
|
|
208
|
+
### `GFLOW_CLI_DAEMON_TOKEN` (alias: `GFLOW_DAEMON_TOKEN`)
|
|
209
|
+
|
|
210
|
+
**What:** API token required before `gflow serve` will bind to a non-localhost address (`--host` other than `127.0.0.1`). Without it, non-local binds abort with exit 11.
|
|
211
|
+
**Default:** unset.
|
|
212
|
+
**Security:** stored as a Pydantic `SecretStr` (since v0.55.0), so a `repr()`/`str()`/`model_dump_json()` of the settings object masks it by construction — on top of the existing logging-boundary redaction. Treat it like any credential: set it via `.env`/environment, never commit it.
|
|
213
|
+
|
|
208
214
|
### `GFLOW_CLI_AUTH_LOGIN_TIMEOUT`
|
|
209
215
|
|
|
210
216
|
**What:** Maximum time (seconds) that `gflow auth login` waits for the user to complete the Google sign-in flow in the browser.
|
|
@@ -338,7 +344,7 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
|
|
|
338
344
|
**Default:** `true`
|
|
339
345
|
**When to disable:** shared machines where even structural failure metadata should not persist, or scripted runs that must write nothing outside the output dir.
|
|
340
346
|
|
|
341
|
-
**Privacy:** the automatic
|
|
347
|
+
**Privacy:** the automatic artifacts (`manifest.json`, `ui.json`, `network.json`, `browser.json`, and the pre-filled `report.md` bug-report template) are built from an explicit allowlist — no prompts, tokens, cookies, headers, request/response bodies, signed URLs, raw page titles, raw error/console text, or unknown hosts/routes ever enter them. The screenshot is inherently sensitive (it can show your account identity, prompts, and media) and therefore lives under the bundle's `sensitive/` subdirectory — **review it before sharing**. Nothing is ever uploaded; retention is bounded (at most 50 complete bundles / 250 MiB, pruned oldest-first at startup). Raw HAR capture stays separate and strictly opt-in via `GFLOW_CLI_HAR_PATH`.
|
|
342
348
|
|
|
343
349
|
### `GFLOW_CLI_HAR_PATH`
|
|
344
350
|
|
|
@@ -87,6 +87,9 @@ object) between the UTC timestamp and a collision-resistant random suffix:
|
|
|
87
87
|
│ # category, canonical route, status, duration
|
|
88
88
|
├── browser.json # last ≤100 console warn/error + ≤50 page errors —
|
|
89
89
|
│ # class/category + length only, never message text
|
|
90
|
+
├── report.md # pre-filled Markdown bug report: version/platform,
|
|
91
|
+
│ # error class + exit code, artifact pointers — fill
|
|
92
|
+
│ # in "What I was doing" and attach when filing
|
|
90
93
|
├── sensitive/screenshot.png # UI-state failures only — REVIEW BEFORE SHARING
|
|
91
94
|
└── .pending # present only while a capture is still staging
|
|
92
95
|
```
|
|
@@ -181,7 +184,7 @@ without manual copying. Caveats verified during the v0.7.0 work:
|
|
|
181
184
|
### 3. Firecrawl (`firecrawl-scrape` / `firecrawl-interact`)
|
|
182
185
|
Best for unauthenticated docs (e.g., Material Symbols icon names, third-
|
|
183
186
|
party API references). Not ideal for Flow itself — Flow requires a
|
|
184
|
-
logged-in
|
|
187
|
+
logged-in Flow session that Firecrawl's hosted browser doesn't
|
|
185
188
|
share with your local profile.
|
|
186
189
|
|
|
187
190
|
### 4. Playwright trace viewer
|
|
@@ -57,7 +57,6 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
|
|
|
57
57
|
| [docs/superpowers/plans/2026-07-19-live-verify/PLAN.md](superpowers/plans/2026-07-19-live-verify/PLAN.md) | Task-by-task implementation plan for `/gflow:live-verify` (skill file → AGENTS.md/check.md wiring → INDEX row) | Tracking task-by-task execution of the live-verify skill |
|
|
58
58
|
| [docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md](superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md) | Edge-case matrix for replacing fixed chain/movie credit estimates with truthful pending-operation guidance | Reviewing the financial-safety, resume, dry-run, and compatibility scenarios |
|
|
59
59
|
| [docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md](superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md) | TDD implementation plan for tier-aware chain/movie planning and confirmation output | Tracking the isolated runtime pricing-guidance bugfix |
|
|
60
|
-
| **[docs/LIVE_VERIFICATION_v0.53.1.md](LIVE_VERIFICATION_v0.53.1.md)** | Live verification ledger for v0.53.1: overlay dismissal, delay jittering, intra-batch references | Verifying v0.53.1 headed live evidence against real Flow |
|
|
61
60
|
|
|
62
61
|
## Agent commands
|
|
63
62
|
|
|
@@ -136,7 +135,7 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
136
135
|
**"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
|
|
137
136
|
**"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
|
|
138
137
|
**"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
|
|
139
|
-
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
138
|
+
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.55.0](LIVE_VERIFICATION_v0.55.0.md) (**Tier-1 quick wins #471–#476 verified 2026-08-13 on profile `ffroliva`, ZERO credits** — `gflow auth status` probed the real Flow session endpoint live [`Flow session verified as ffroliva@gmail.com.`, exit 0, fail-closed contract pinned]; `gflow mcp setup` ran end-to-end with the real CLI against a scratch copy of the real Claude Desktop config [correct merged entry, pristine original]; the Windows profile-DACL two-step `icacls` idiom was derived empirically [the naive `/t` form broke file access] and is pinned by a real-icacls round-trip test on every Windows host; the incident bug-report template, MCP error funnel [all 11 tools guarded, raw exception text masked], and SecretStr settings are suite-verified with no live-Flow surface — reasons recorded, not omitted). Prior: [LIVE_VERIFICATION_v0.54.0](LIVE_VERIFICATION_v0.54.0.md) (**close-browser guidance #470, character-composer focus fix, overlay/jitter hardening, and SonarCloud-S2245 RNG swap live-verified 2026-08-12 on profile `ffroliva`, ZERO credits** — the new #470 login wording printed verbatim and the manual-close → `auth_flow_session_verified` round-trip worked end-to-end; a Classic-UI `t2i` produced a real 1024×1024 JPEG [`ff d8 ff e0`] exercising overlay dismissal + jitter + image-composer submit + mode controller, and a credit-free `character create` [entity `da3cd647…`, face 1376×768 JPEG] exercised the character-composer path directly [`entering_character_editor` → `prompt_submitted` → `entity_patched` → `completed`]; the first `t2i` hit the known agentic-cohort video-for-image condition [correctly refused via `WireFormatError`, tracked by #299, not a regression] and Classic UI worked around it. First mainline release after the orphaned v0.53.0/v0.53.1 tags — CHANGELOG restores honest 0.53.x sections). Prior: [LIVE_VERIFICATION_v0.52.0](LIVE_VERIFICATION_v0.52.0.md) (**batch DAG references #317, character entity provenance recording #402, and video duration selector cascade fix #451 live-verified 2026-08-05** — 3/3 live E2E tests in `tests/e2e/test_entity_provenance_e2e.py` passed clean on profile `ffroliva`, 5-layer evidence ledger verified). Prior: [v0.51.0](LIVE_VERIFICATION_v0.51.0.md) (**dependency/security/test-correctness release verified 2026-08-05, 1 Imagen credit + 1 Veo attempt** — the only change needing live evidence was the `playwright` bound raise `>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0`, and the 2026-08-03 regression does NOT reproduce on 1.61.0: a live i2v drove `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live i2i local-ref attach passed outright [96.7s]. **1.62.0 stays excluded**, never root-caused. `-m e2e_auth` 16/16, daemon e2e 1 passed [MCP over Streamable HTTP — the first live coverage that test has ever had, it was structurally incapable of passing before], MCP Tasks 5/5 layers, 2923 offline tests, `pip-audit --all-extras` clean. **No finished mp4 is claimed** — Flow's own generation returned `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT`, server-side. Defect found and recorded not omitted: Flow dropped the duration-tab UI so **`--duration` is currently broken for i2v**, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0 — [#451](https://github.com/ffroliva/gflow-cli/issues/451)). Prior: [v0.50.0](LIVE_VERIFICATION_v0.50.0.md) (**MCP Tasks extension SEP-2663, non-blocking task handle responses, CLI/MCP output path hardening -o/--output, and Telegram PR triage alert resilience verified 2026-08-04** — 5-layer evidence ledger note generated at `tmp/live-verify/mcp-tasks.md` confirming instant task handle return, working status queries, and cancelled status DB state transitions; full 118-test suite green). Prior: [v0.49.0](LIVE_VERIFICATION_v0.49.0.md) (**#125 `omni-flash` start-frame I2V video generation, Playwright dependency upper-bound pin `>=1.59.0,<1.60.0`, submission stage watchdog timeout, and #404 count-tab fail-closed logic verified 2026-08-03** — 0-credit wire intercept captured `batchAsyncGenerateVideoStartImage` with `startImage` bound; live costed generation on `omni-flash` I2V produced a 1.2MB valid mp4 video asset on `ffroliva`; full 2902-test release suite green). Prior: [v0.48.0](LIVE_VERIFICATION_v0.48.0.md) (**#411 predictable `-o`/`--output` paths, offline-verified 2026-08-02, ZERO credits** — exact single-target local writes + `_1`/`_2` multi-count **image** suffixes proven by the CLI suite; the pre-tag council audit [RED, then resolved] re-scoped the release to the truthful surface: a dead MCP `output` param was deleted [worker queue never read it — #414], cloud `-o` targets and video multi-count suffixes are follow-ups [#415], and two tautological video-path tests are recorded as weak evidence rather than claimed as proof; storage-layer S3 writes verified against Docker MinIO at the layer level only; 2888-test release tree green; the live-Flow run aborted pre-generation on an expired denon82 session [`AuthExpiredError` 401, correct RFC-7807 contract + remediation hint, $0] — recorded, not omitted; live re-run queued for the next authenticated session). Prior: [v0.47.0](LIVE_VERIFICATION_v0.47.0.md) (**MCP SDK 2.0.0 migration + dual-era protocol + #402 entity provenance recording live-verified 2026-08-01, ZERO credits** — stdio JSON-RPC initialization handshake verified over subprocess transport, `resolve-drift` CI job added to prevent dependency drift, and 121 unit tests in `tests/data` passed). Prior: [v0.46.1](LIVE_VERIFICATION_v0.46.1.md) (**#404 classic count-setter fix live-verified 2026-07-31 on the reporter's exact environment, ZERO credits** — credit-free DOM recon proved Flow renamed the count-tab labels to uniform `xN` [`x1` replaces `1x`, image AND video rows], that `nth(0)` of the old filtered set landed on the selected `x2` and actively moved the count AWAY from the target, and that a digit-keyed click on `x1` converges instantly and persists without a Save commit; the new classic e2e then passed live [count=1 against a fresh project displaying 2 → exactly 1 image; count=2 early-exit → exactly 2], and the #313 agentic count-enforcement e2e passed 4/4 [counts 1–4 vs deliberately mismatched sticky defaults, magic-byte-verified downloads] after its stale setup was repaired [Flow now loads the editor in classic mode — the setup needed an Agent-pill toggle before the `tune` icon; test-only fix, no product code implicated]; the video output-count cascade carries a recorded waiver [full drive costs Veo credits; its exact selector shape was exercised live in the spike's cleanup step]). Prior: [v0.46.0](LIVE_VERIFICATION_v0.46.0.md) (**#387 provider-agnostic prompt-tools transport live-verified 2026-07-28, ZERO credits** — a four-probe capability spike passed 4/4 against BOTH a non-Google gateway and Google's OpenAI-compat endpoint, including a *semantic* multimodal check [a generated solid-red JPEG round-tripped and the model answered 'Red'], which is what proved the native Gemini `inlineData` path could be deleted outright rather than kept as a fallback; the real CLI then returned `was_expanded: true` on gateway/gateway-no-model/Google-default, emitted the loud one-time notice + no-op for the removed `GFLOW_CLI_GEMINI_API_KEY`, and made NO network call when unconfigured. Live verification caught two defects a fully green 2849-test offline suite missed: Google's compat endpoint has no server-side default model [`400 "model is not specified"`, silently no-oping the DEFAULT configuration], and the first redirect guard did not actually work because `build_opener()` installs its default handlers regardless of arguments, so `Authorization` would still have been replayed cross-host. `/code-review high` is recorded as NOT run — it is user-triggered only). Prior: [v0.45.0](LIVE_VERIFICATION_v0.45.0.md) (**#393 UUID `--ref` binding + #395 character-entity binding live-verified 2026-07-27/28** — a controlled A/B on identical input flipped `--ref` from exit 9 to exit 0 via the catalog-backed upload fallback, with the anti-silence guard [an unbindable ref aborts non-zero and writes no image] pinned by a live e2e; picker DOM + HAR showed Flow indexes a short auto-caption, NOT the prompt, so a prompt-derived search hint was dropped rather than shipped on assumption; a CDP spike against Flow's own character flow then captured the `entityContext` contract that gflow's generations were missing, root-causing #395 to two gflow defects [overlay dismissal Escaping Flow's own composer, and a character-route bounce that sent the prompt to the project composer] — both fixed, both character e2e tests now pass live, including `--format-prompt` [#383], with a read-back confirming the character carries its name and `thumbnail_media_id`). Prior: [v0.44.0](LIVE_VERIFICATION_v0.44.0.md) (**#381 dual-side project management & Playwright Chromium transport live-verified 2026-07-26** — real-editor project creation + rename tRPC server/DOM sync, prompt slugging, `gflow project` subcommand family, HTTP 429 adaptive backoff, and full E2E test suite). Prior: [v0.43.0](LIVE_VERIFICATION_v0.43.0.md) (**private incident diagnostics live-verified 2026-07-23, 1 Veo credit**). Prior: [v0.42.0](LIVE_VERIFICATION_v0.42.0.md) (**#361 production-readiness live-gaps confirmed live 2026-07-21, 1 Veo credit** — a real `veo-lite` t2v through the worker path persisted a real `remote_started` checkpoint [observer→checkpoint→DB chain confirmed], crash-recovery classified the task `indeterminate` without resubmitting, and mid-launch cancellation released the `ProfileLease` credit-free; full evidence in [v0.40.0-production-readiness § "2026-07-21 live follow-up"](LIVE_VERIFICATION_v0.40.0-production-readiness.md#2026-07-21-live-follow-up-0420-cycle); #359 content-safety `400`→`ContentPolicyError` classification is unit-covered, not live-triggered [would require a deliberate policy violation]; #360/#362 are docs-only, verified by the documentation gates). Prior: [v0.41.0](LIVE_VERIFICATION_v0.41.0.md) (**#357 production-readiness hardening — stale-session fail-fast, free image gen, paid veo-lite T2V all proven live**). Prior: [v0.40.0](LIVE_VERIFICATION_v0.40.0.md) (**#344 `@`-mention asset-tagging resolution proven live e2e, ~2 Imagen credits** — `gflow character create` staged a real taggable character [bound reference images, `has_reference_images` guard], the e2e test's documented propagation wait cleared Flow's `projectInitialData` lag, and `gflow image t2i "@Zoro …"` passed with returncode 0, a real generated image, and the correctly de-tagged prompt in the catalog — no code changes needed, `resolve_and_apply` as merged in #344 already works end-to-end; pre-existing unrelated issue #174 [Flow media-library A/B flake] can still intermittently block generation regardless of this feature — recorded, not omitted). Prior: [v0.39.0](LIVE_VERIFICATION_v0.39.0.md) (**#341 failed-generation persistence proven live** — a real `image t2i` on denon82 failed at the wire [`batchGenerateImages` HTTP 400 → `WireFormatError`] and the record-on-catch funnel wrote the **first-ever `failed` row** into the production catalog [`error_type=wire-format`, redacted `error_detail`, browsable via `gflow data list errors`], **$0**; the remaining paid paths [video/chain/batch/movie/worker] are funnel-regression-tested, not force-failed live [would cost credits], and the status-aware `succeeded=false` video-poll fix is unit-locked — recorded, not omitted). Prior: [v0.38.1](LIVE_VERIFICATION_v0.38.1.md) (**#338 agentic-pin recovery proven live ON the pinned account** — run 1 caught the composer-render race the unit suite could not [`ensure_media_incomplete` +115 ms, toggle never reached]; the readiness-wait fix landed and run 2 recovered classic on denon82 after ~2h of pin [`ui_driver.bound mode=classic`, real 768×1376 JPEG, exact prompt adherence]; reload branch unit-locked, live trigger not observed this cycle — recorded, not omitted). Prior: [v0.38.0](LIVE_VERIFICATION_v0.38.0.md) (**#332 mode control + #314 i2i ref dedup proven live e2e** — `image t2i --ui-mode classic` recovered agentic→classic in a real run [`ui_mode.attempt_exit_agent` → full classic chain, 1376×768 JPEG]; two identical `image i2i` runs proved the dedup contract [run 1: picker miss → `image_uploaded`; run 2: `reference_deduped_by_filename`, ZERO uploads]; `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 15.2 MB `ftyp` mp4]; autopilot #333 recorded deferred-with-reason [hermes-ops deployment staged separately]). Prior: [v0.37.0](LIVE_VERIFICATION_v0.37.0.md) (**viewport 1920×1080 + agentic count enforcement + FIPS-safe SAPISIDHASH proven live e2e** — `image t2i` [classic cohort, real 1376×768 JPEG] and `video t2v` veo-fast [`MEDIA_GENERATION_STATUS_SUCCESSFUL`, 11.5 MB `ftyp` mp4] both succeeded end-to-end at the new 1920×1080 viewport with every selector resolving [no drift]; SAPISIDHASH digest verified byte-identical [FIPS-safe `usedforsecurity=False`], auth unchanged). Prior: [v0.36.0](LIVE_VERIFICATION_v0.36.0.md) (**#316 diagnostic tooling live-verified against real Flow traffic** — `GFLOW_CLI_HAR_PATH` captured a real 54-entry HAR [real Flow domains, 34× 200s, and a genuine 401 the tool exists to diagnose]; `GFLOW_CLI_DEBUG_TRACEBACK`'s typed-error scoping confirmed live [console output identical with/without the flag on a `GFlowError`]; unhandled-path behavior covered by 6 new tests (30 total across both files) + SDD task review; #312 reference-entity-smuggling fix covered by its own dedicated e2e test). Prior: [v0.35.0](LIVE_VERIFICATION_v0.35.0.md) (**#305-follow-up multimodal reverse-engineering & storyboard tool proven live e2e** — `gflow tools run storyboard` successfully deconstructed a cyberpunk scene into a cohesive 4-panel sequence; `reverse-engineer` tool extracts frames from video streams/URLs using `claude-video`'s `watch.py` and produces structured prompt components using Gemini multimodal models; dynamic token budgeting and strict Pyright types verified via test suite). Prior: [v0.34.0](LIVE_VERIFICATION_v0.34.0.md) (**#299 `--ui-mode` gate proven live, ZERO credits** — drove `get_ui_driver` directly over 4 real editor loads, never generated: bidirectional switch works [classic→agentic via `_force_agent_mode`, agentic→classic via `_exit_agent_mode`, each DOM-reverified], `agentic`-when-already-agentic is idempotent, and a timed-out toggle → **exit-28 fail-fast before submission**; deprecation behavior-change [`prefer_classic`→exit 28] confirmed). Prior: [v0.33.0](LIVE_VERIFICATION_v0.33.0.md) (**#287-follow-up picker fix proven live on the original repro** — the v0.32.1-failing `i2v <uuid> --project <crowded>` command now exits 0 with a real 3.0 MB `ftyp` mp4, `frame_ref_attached` + `video_saved`, zero uploads; **#241 jitter live-verified on both paths** — flag `--jitter 4-6` → `batch_jitter_sleep seconds=4.98`, and the new 0.5–1.5 s default → `seconds=1.47`, each firing exactly once between two t2i submissions; environment note: the denon82 cohort is now natively agentic and round-2 generations hit the pre-existing #281 `MediaAttributionError`, not a regression). Prior: [v0.32.1](LIVE_VERIFICATION_v0.32.1.md) (**#293 teardown fix live-verified credit-free** — error-path aborts leave ZERO chrome.exe holding the profile [3× leak reproduced pre-fix same day]; force-close fallback + ProfileLockedError translation unit-pinned; #283 wave logic fixes mock-verified to exact call counts). Prior: [v0.32.0](LIVE_VERIFICATION_v0.32.0.md) (**#287 UUID i2v frames proven live e2e** — an in-project asset selected by media UUID in the frame-slot dialog [frame_ref_attached, startImage bound on the wire, ZERO upload events] produced a real 720×1280 interpolation, resolving the #237 negative prior; foreign UUID → exit 9 pre-generation with screenshot; **#288 duration fail-fast proven live** — exit 23 pre-submit saved a 10-credit generation, and the debug screenshot confirmed the duration control is ABSENT from the cohort's settings popover [locale hypothesis refuted]; upload-400 exit-27 repro deferred-with-reason — the original rejected JPEG no longer exists). Prior: [v0.31.0](LIVE_VERIFICATION_v0.31.0.md) (**#281 wrong-media defenses live-verified in BOTH directions, credit-free** — correct attribution downloads with real wire metadata [seed, 768×1376]; the incident-class lazy-render ambiguity reproduced live and hard-stopped with `MediaAttributionError` exit 26 naming every candidate UUID, no file written; **#282 two-UUID-ref i2i proven e2e** — both freshly generated portrait UUIDs picker-selected into one scene with both canonical identities visually transferred). Prior: [v0.30.0](LIVE_VERIFICATION_v0.30.0.md) (**agentic-cohort image path + both fixes live-verified credit-free** — native 768×1376 stills, i2i-chain + canonical-ref identity hold; the character-create `DataIntegrityError` and the `prefer_classic` WARNING were observed live then fixed [recorder idempotent + INFO log]; MCP video-param feature deferred-with-reason on Veo credits, per the stills-only goal). Prior: [v0.29.0](LIVE_VERIFICATION_v0.29.0.md) (**persistent `gflow instructions` CRUD proven live e2e GREEN, credit-free** — 11-command sequence on a fresh project: add incl. `--ref <image-UUID>` attach, list/enable/disable, master toggle both ways, TOML `apply` destructive full-sync with `enabled=false` honored, `rm` with server card-id preserved across mutations; movie brief-sync code-path-verified via the same primitives, deferred-with-reason on credits; MCP `gflow_instructions_*` tools are thin adapters over the live-verified primitives). Prior: [v0.28.0](LIVE_VERIFICATION_v0.28.0.md) (**agent instructions `-i` now steer agentic generation — crayon e2e GREEN**: a style-neutral prompt + an enabled "crayon" card produced an unmistakable crayon drawing through the real transport; root causes were conversational phrasing + the `project_brief.enabled` master switch). Prior: [v0.27.1](LIVE_VERIFICATION_v0.27.1.md) (**v0.27.0 release follow-up fixes and documentation sync**). Prior: [v0.27.0](LIVE_VERIFICATION_v0.27.0.md) (**`[style]` block with named variants + prompt-aware resume — credit-free CLI verification**: real `movie run --dry-run` 3-way ledger proving resolved-style display, `skip (done)` on matching `style_hash`, and `re-run (style changed)` after a style edit; composition is local, wire path untouched, so no Veo credits spent — first credited styled run will confirm visually). Prior: [v0.26.0](LIVE_VERIFICATION_v0.26.0.md) (**image i2i by generated-image UUID proven live e2e GREEN** — the existing asset is *selected in place* by its media UUID, no duplicate upload, producing an i2i output that references it; plus generated-image `display_name` capture, credited @C1ph3r404). Prior: [v0.25.0](LIVE_VERIFICATION_v0.25.0.md) (**#237 remote-UUID i2v proven live e2e GREEN** — a real 8s 720×1280 interpolation from a generated image's UUID, after the picker-search attach was reworked to local upload; #240 home-`.env` matrix live; plus two silent-failure guards root-caused live: video-as-image download rejection and rejected-upload fail-loud). Prior: [v0.24.0](LIVE_VERIFICATION_v0.24.0.md) (--project parity across CLI + MCP — automated coverage; live gen auth-gated). Prior: [v0.23.0](LIVE_VERIFICATION_v0.23.0.md) (MCP generation wiring proven live end-to-end — tool→worker→real Flow REST→structured-error translation; final image-write blocked by an expired session, environmental. #222 macOS fix reporter-verified e2e on Apple Silicon). Prior: [v0.22.0](LIVE_VERIFICATION_v0.22.0.md) (Tools framework — automated/CI coverage complete; credit/key-gated live feature run is a pending owner gate, see the doc) · [v0.21.0](LIVE_VERIFICATION_v0.21.0.md) (MCP server over stdio + HTTP/SSE — credit-free protocol handshake; 4 tools / 2 prompts / 3 resources confirmed on stdout) · [v0.20.1](LIVE_VERIFICATION_v0.20.1.md) · [v0.20.0](LIVE_VERIFICATION_v0.20.0.md) · [v0.19.0](LIVE_VERIFICATION_v0.19.0.md) · [v0.18.0](LIVE_VERIFICATION_v0.18.0.md) · [v0.17.0](LIVE_VERIFICATION_v0.17.0.md) · [v0.16.0](LIVE_VERIFICATION_v0.16.0.md) · [v0.13.0](LIVE_VERIFICATION_v0.13.0.md) · [v0.12.0](LIVE_VERIFICATION_v0.12.0.md) · [v0.11.0](LIVE_VERIFICATION_v0.11.0.md) · [v0.10.0](LIVE_VERIFICATION_v0.10.0.md) · [v0.9.1](LIVE_VERIFICATION_v0.9.1.md) · [v0.9.0](LIVE_VERIFICATION_v0.9.0.md) · [v0.8.1](LIVE_VERIFICATION_v0.8.1.md) · [v0.7.0](LIVE_VERIFICATION_v0.7.0.md)
|
|
140
139
|
**"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
|
|
141
140
|
**"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
|
|
142
141
|
**"What was live-verified for the data layer (PR #58)?"** → [LIVE_VERIFICATION_data_layer](LIVE_VERIFICATION_data_layer.md) — 1 Imagen + 1 Veo credit on denon82, 6-layer ledger (file + magic + Pillow + DB rows + CLI round-trip + structlog)
|