gflow-cli 0.87.0__tar.gz → 0.88.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.87.0 → gflow_cli-0.88.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.env.template +10 -5
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/AGENTS.md +2 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/CHANGELOG.md +140 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/KNOWN_ISSUES.md +46 -22
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/PKG-INFO +4 -3
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/PLAN.md +1 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/README.md +3 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker/Dockerfile +1 -1
- {gflow_cli-0.87.0/website → gflow_cli-0.88.0}/docs/ACCOUNT_SAFETY.md +8 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/AUTHENTICATION.md +15 -6
- {gflow_cli-0.87.0/website → gflow_cli-0.88.0}/docs/CONFIGURATION.md +55 -18
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/E2E_TESTING.md +3 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/INDEX.md +2 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.87.0.md +13 -6
- gflow_cli-0.88.0/docs/LIVE_VERIFICATION_v0.87.1.md +62 -0
- gflow_cli-0.88.0/docs/LIVE_VERIFICATION_v0.88.0.md +55 -0
- {gflow_cli-0.87.0/website → gflow_cli-0.88.0}/docs/MCP.md +37 -15
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/PROJECT_STATUS.md +51 -3
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/USAGE.md +53 -25
- {gflow_cli-0.87.0/website → gflow_cli-0.88.0}/docs/USER_GUIDE.md +7 -11
- gflow_cli-0.88.0/docs/superpowers/spikes/2026-10-18-rpc-response-body-readback.md +42 -0
- gflow_cli-0.88.0/docs/superpowers/spikes/2026-10-22-credits-balance-on-nzlxg.md +115 -0
- gflow_cli-0.88.0/docs/superpowers/spikes/2026-10-22-image-upscale-lost-body.md +54 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/llms.txt +4 -4
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/gflow-cli/SKILL.md +7 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/pyproject.toml +1 -1
- gflow_cli-0.88.0/scripts/dev/spike_credits_balance_carrier.py +304 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_credits_migrated_surface.py +4 -17
- gflow_cli-0.88.0/scripts/dev/spike_upscale_lost_body.py +222 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/server.json +2 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/gflow-cli/SKILL.md +7 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/client.py +48 -23
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/dto.py +16 -32
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/routes.py +0 -5
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/migrated_composer.py +333 -22
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/migrated_upscale.py +87 -35
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/migrated_video_upscale.py +5 -49
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/ui_automation.py +6 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/cookies.py +3 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/internal_chromium.py +64 -17
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/real_chrome.py +23 -34
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/renew.py +8 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/verification.py +11 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/browser_manager.py +10 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli.py +3 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_credits.py +8 -4
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_data.py +12 -9
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_image.py +95 -10
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/config.py +53 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/recorder.py +78 -9
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/redaction.py +7 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/repository.py +12 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/errors.py +20 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/image_batch.py +75 -13
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/tools.py +23 -10
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/observability.py +13 -6
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/credits.py +15 -63
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/doctor.py +18 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/worker/daemon.py +38 -16
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/_upscale_fakes.py +2 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_aisandbox_auth_remediation.py +1 -1
- gflow_cli-0.88.0/tests/api/test_credits.py +169 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_migrated_upscale.py +48 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_composer.py +72 -0
- gflow_cli-0.88.0/tests/api/transports/test_migrated_project.py +644 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/strategies/test_strategies.py +111 -23
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_real_chrome.py +18 -18
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_verification.py +21 -20
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_data_sync.py +18 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_recorder.py +30 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_repository.py +73 -2
- gflow_cli-0.88.0/tests/e2e/test_browser_proxy_e2e.py +231 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_credits_mcp_e2e.py +4 -45
- gflow_cli-0.88.0/tests/e2e/test_credits_on_flow_bdd.py +98 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_credits_refresh_e2e.py +5 -4
- gflow_cli-0.88.0/tests/e2e/test_image_download_failure_records_bdd.py +177 -0
- gflow_cli-0.88.0/tests/e2e/test_migrated_rpc_readback_bdd.py +114 -0
- gflow_cli-0.88.0/tests/e2e/test_project_create_slow_link_e2e.py +154 -0
- gflow_cli-0.88.0/tests/features/credits_on_flow.feature +12 -0
- gflow_cli-0.88.0/tests/features/image_download_failure_records.feature +18 -0
- gflow_cli-0.88.0/tests/features/migrated_rpc_readback.feature +6 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_asset_tagging_steps.py +3 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/doctor_env.py +1 -0
- gflow_cli-0.88.0/tests/fixtures/settings_mock.py +10 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_credits.py +33 -231
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_doctor.py +29 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_batch_recording.py +6 -2
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_batch_ref_wiring.py +37 -0
- gflow_cli-0.88.0/tests/test_browser_proxy.py +323 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_config.py +34 -28
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_errors.py +15 -0
- gflow_cli-0.88.0/tests/test_image_download_failure_records.py +367 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_observability.py +44 -4
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_daemon.py +33 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/uv.lock +4 -4
- {gflow_cli-0.87.0 → gflow_cli-0.88.0/website}/docs/ACCOUNT_SAFETY.md +8 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/AUTHENTICATION.md +15 -6
- {gflow_cli-0.87.0 → gflow_cli-0.88.0/website}/docs/CONFIGURATION.md +55 -18
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/E2E_TESTING.md +3 -1
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/KNOWN_ISSUES.md +46 -22
- {gflow_cli-0.87.0 → gflow_cli-0.88.0/website}/docs/MCP.md +37 -15
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/USAGE.md +53 -25
- {gflow_cli-0.87.0 → gflow_cli-0.88.0/website}/docs/USER_GUIDE.md +7 -11
- gflow_cli-0.87.0/src/gflow_cli/api/credits.py +0 -146
- gflow_cli-0.87.0/tests/api/test_credits.py +0 -51
- gflow_cli-0.87.0/tests/api/test_credits_http.py +0 -250
- gflow_cli-0.87.0/tests/api/transports/test_migrated_project.py +0 -213
- gflow_cli-0.87.0/tests/e2e/test_credits_e2e.py +0 -82
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.claude-plugin/marketplace.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.gitattributes +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/mcp-registry.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/sponsors.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.gitignore +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/.secrets.baseline +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/CLAUDE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/LICENSE +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/RELEASE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/ROADMAP.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker/Dockerfile.test +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker/docker-compose.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker/dockerignore.example +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docker-compose.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/CONTAINER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/DISTRIBUTION.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.77.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.77.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.78.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.79.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.79.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.80.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.81.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.82.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.82.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.83.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.83.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.83.2.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.84.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.85.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.86.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/MARKETPLACES.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/SPONSORS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/content-policy-text-scan-false-positives-on-page-chrome.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/drive-the-page-dont-replay-the-rpc.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/migrated-refusal-is-a-dom-card-not-a-wire-record.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/ASSESSMENT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PREDICT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PREDICT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PLAN.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PREDICT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/SCENARIO.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-15-agent-only-composer-drive-surface.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-17-stranded-clip-recovery.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-19-migrated-video-extend-wire.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-20-warm-client-premint-on-about-blank.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-22-playwright-max-retries-econnreset.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-23-about-cta-leads-to-google-reauth.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-27-stealth-fingerprint-delta.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-09-30-migrated-upscale-wire.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-01-batch-ref-dropped.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-01-recaptcha-error-shape.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-06-948-record-slot3-null.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-08-nano-banana-21-replaced-2.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-10-duration-locale-and-notice-only-cookie-bar.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-13-migrated-image-character-mention.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-14-labs-nextauth-silent-refresh.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-17-agent-only-cohort-profiles.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-17-migrated-extend-ui-path.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-19-earlier-run-ref-in-place.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-19-fourth-ref-caret.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-19-minio-replacement.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-20-migrated-upload-reply-body-eviction.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-21-migrated-submit-reply-body-loss.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/docs/superpowers/spikes/2026-10-22-labs-session-oracle-gone.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/glama.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/hatch_build.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/index.html +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/mempalace.yaml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/.mcp.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/composition.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_fork_pr_ci.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/generate_plugin_skills.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/ci/update_sponsors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/acceptance/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/acceptance/bench.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/acceptance/domain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/acceptance/judge.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/acceptance/settings.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/cleanup.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_948_project_records.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_948_submit_envelope.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_963_duration_locale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_995_earlier_run_ref.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_997_fourth_ref_caret.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_about_cta_recovery.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_confirm_radios.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_only_cohort_profiles.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_only_composer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_only_video_ready.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_only_video_tile.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_agent_settings_defaults.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_batch_ref_dropped.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_batch_ref_existing_media.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_create_project_401.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_gif_export_delivery.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_host_lane.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_model_attribution.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_submit_references.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_labs_nextauth_refresh.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_mention_existing_media.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_aspect_radios.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_create_project.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_end_frame.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_extend_ui_path.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_refusal_envelope.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_submit_body_loss.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_upload_body_eviction.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_mint_on_about_blank.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_nano_banana_21_wire.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_networkidle_bootstrap_cost.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_offscreen_window.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_picker_chip_removal.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_picker_entity_marker.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_playwright_max_retries.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_project_media_status.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_recaptcha_error_shape.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_recover_stranded_clip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_ref_gate.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_s3_test_backend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_session_oracle.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_stealth_fingerprint_delta.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_upload_token_join.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_upscale_menu_anchors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_video_workflow_id.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/spike_warm_client_unported_form.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/README.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/spike/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/sonar-project.properties +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/agent_only_composer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/migrated_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/migrated_recover.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_docs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/docs_catalog.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/media_recovery.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_bootstrap_chooser.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_project_host.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_client_window_position.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_image_capability_and_cookie_bar.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_migrated_video_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_upload_reference.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/_ogiz0b.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_agent_only_composer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_agent_only_composer_driver.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_click_attribution.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ligature_carrier.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_existing_refs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_images.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_mention_order.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_r2v.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_recover.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_signed_media_retry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_account_autoselect.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_renew.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_auth_renew.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_docs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_cli_video_upscale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_docs_catalog_real_docs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/cli/test_video_recording_busy.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/data/test_store_transaction_errors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_agent_only_composer_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_auth_renew_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_auth_status_mcp_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_blocking_dialog_dismissal_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_data_download_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_earlier_run_ref_in_place_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_frame_picker_binding_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_login_identity_recheck_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_manifest_refs_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_mention_chip_order_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_image_character_mention_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_locale_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_refusal_live_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_submit_body_loss_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_migrated_upscale_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_project_create_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_recaptcha_error_shape_bdd.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_retired_labs_route_diagnosis_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_t2i_batch_project_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_video_extend_migrated_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/agent_only_composer_live.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/blocking_dialog_dismissal.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/click_attribution.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/credits.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/earlier_run_ref_in_place.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/frame_picker_binding.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/landing_state_diagnosis.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/manifest_refs_live.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/mention_chip_order.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_host_images.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_image_character_mention.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_refusal_envelope.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_refusal_live.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_submit_body_loss.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/migrated_video_submit_body_loss.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/recaptcha_error_shape.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_e2e_binding_guard.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_migrated_host_images_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_migrated_refusal_envelope_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/test_docs_ships_in_wheel.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/test_migrated_video_storage_s3.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_download_error_envelope.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_mcp_profile_contention.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_serve_auth.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/mcp/test_upscale_tool.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_cleanup.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_frame_acceptance.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_spike_page_pool.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_spike_profile_lease.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_update_sponsors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_media_recovery.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_about_landing_guard.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_batch_outcomes.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_config_agent_confirm.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_dockerfile_version_pin.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_glama_build_spec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_manifest_refs.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_media.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_plugin_manifests.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_release_version_sites.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_rich_markup_safety.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_server_json.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_codec_image_ref_project.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/SPONSORS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/index.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/requirements.in +0 -0
- {gflow_cli-0.87.0 → gflow_cli-0.88.0}/website/requirements.txt +0 -0
|
@@ -116,11 +116,8 @@
|
|
|
116
116
|
# Runtime tuning
|
|
117
117
|
# -----------------------------------------------------------------------------
|
|
118
118
|
|
|
119
|
-
#
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
-
# Logging level — DEBUG | INFO | WARNING | ERROR
|
|
123
|
-
# GFLOW_CLI_LOG_LEVEL=INFO
|
|
119
|
+
# Logging level — DEBUG | INFO | WARNING | ERROR (default WARNING; INFO shows progress events)
|
|
120
|
+
# GFLOW_CLI_LOG_LEVEL=WARNING
|
|
124
121
|
|
|
125
122
|
# Log format — auto | text | json
|
|
126
123
|
# auto = text on TTY, json when piped (default)
|
|
@@ -173,6 +170,14 @@
|
|
|
173
170
|
# `gflow auth login --profile <name>` rather than making this window visible.
|
|
174
171
|
# GFLOW_CLI_BROWSER_WINDOW_POSITION=-30000,-30000
|
|
175
172
|
|
|
173
|
+
# Proxy for every browser gflow launches (generation, auth login/renew/status), #1036.
|
|
174
|
+
# Opt-in; unset, the browser connects as before (on Windows, via the system proxy).
|
|
175
|
+
# Accepts http://host:port, https://host:port or socks5://host:port. No user:pass@:
|
|
176
|
+
# Flow does not load through proxy credentials, so let a local client (Clash, v2ray)
|
|
177
|
+
# hold them. gflow's own HTTP calls follow HTTPS_PROXY instead, never this: point both
|
|
178
|
+
# at the same proxy, and sign in through it. Validated at startup (exit 11).
|
|
179
|
+
# GFLOW_CLI_BROWSER_PROXY=http://127.0.0.1:7897
|
|
180
|
+
|
|
176
181
|
# Browser automation engine — playwright (default) | patchright
|
|
177
182
|
# patchright is an OPT-IN, drop-in patched Playwright (Chromium) that avoids the
|
|
178
183
|
# Runtime.enable CDP leak for stronger reCAPTCHA-Enterprise evasion on the HEADED
|
|
@@ -47,7 +47,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
47
47
|
- Python CLI and MCP server 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` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image with `@Character` mentions by name, and a single-segment `video extend`, today — an agent-only composer, #799, takes text-to-image and text-to-video only; `GFLOW_CLI_FLOW_HOST`).
|
|
48
48
|
- Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
|
|
49
49
|
- 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_credits.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`, `cli_doctor.py`, `cli_docs.py`, `docs_catalog.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
50
|
-
- Command surface: `gflow auth` (login/status/renew/list/use/logout — `renew` refreshes saved sessions headlessly, no sign-in), `gflow credits` (user/list — Veo balance; read
|
|
50
|
+
- Command surface: `gflow auth` (login/status/renew/list/use/logout — `renew` refreshes saved sessions headlessly, no sign-in), `gflow credits` (user/list — Veo balance; read from flow.google.com's own balance reply in the profile's browser, #795; read-only unless `--refresh`, which renews signed-out sessions first), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend/upscale — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; `upscale` exports to 1080p, 720p, or 270p GIF; 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 docs` (browse the bundled documentation — bare lists every topic, `gflow docs <topic>` prints one as Markdown, `gflow docs --search TERM` searches all of them; there are **no** `list`/`print`/`search` subcommands — read-only, offline, deliberately no MCP twin), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run` (JSON image-batch config; a row may generate from an earlier row with `"ref": "batch:N"`, referenced in place, no upload, or from a local image file, uploaded once per run), `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
51
51
|
- Works with any Google account that has Flow access. All generations bill against the user's own Google account.
|
|
52
52
|
|
|
53
53
|
## Headed-browser dependency (architectural reality)
|
|
@@ -102,7 +102,7 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
102
102
|
- Documentation is a first-class deliverable. Every behavior, workflow, config, or operator-facing change must update the relevant docs or state why no docs changed in the PR/checklist. `scripts/ci/check_doc_links.py` is a merge gate.
|
|
103
103
|
- **A PR is not done until its SonarCloud gate is green (zero new issues).** The nine gates above are local/pre-commit; SonarCloud is server-side and runs in CI (`sonar.qualitygate.wait=true` → a red gate turns the `SonarCloud analysis` check red). Before calling a PR merge-ready, verify it with `/gflow:sonar <N>` (it is skipped on fork PRs — maintainer-checked there).
|
|
104
104
|
- **E2E is the decisive layer, and it is required for every behavior change that touches a Flow surface.** Run the `tests/e2e/` test that covers the change, or write one — offline-green proves only that *our* code does what we think, never that Flow still behaves as captured. `/gflow:live-verify` does **not** satisfy this: it drives CLI commands by hand into a gitignored note and never runs `pytest -m e2e`. The two are complementary — an e2e test is a re-runnable regression, a live-verify ledger is a narrative record. A change touching no Flow surface at all (docs, help text, exit-code plumbing) is out of scope — say so explicitly rather than leaving it blank. Anything else follows the **Iron Law** above: run it, or name the external blocker that stops you. "A maintainer will run it" is a handoff, not a verification, and is only available once the blocker is named.
|
|
105
|
-
- E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), the migrated refusal e2e (`e2e_image`, opt in with `GFLOW_CLI_E2E_RUN_REFUSAL=1` — it sends one corrupted reCAPTCHA token, so run it on a probe profile), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
|
|
105
|
+
- E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), the migrated refusal e2e (`e2e_image`, opt in with `GFLOW_CLI_E2E_RUN_REFUSAL=1` — it sends one corrupted reCAPTCHA token, so run it on a probe profile), the slow-link project create (`e2e_auth`, opt in with `GFLOW_CLI_E2E_RUN_SLOW_LINK=1` — each test leaves an empty project), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
|
|
106
106
|
- Live tests (`@pytest.mark.live`) opt in via `GFLOW_LIVE=1`.
|
|
107
107
|
|
|
108
108
|
## Code style
|
|
@@ -7,6 +7,143 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.88.0] — 2026-10-22
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`GFLOW_CLI_BROWSER_PROXY` routes the browser through a proxy**
|
|
15
|
+
([#1036](https://github.com/ffroliva/gflow-cli/issues/1036), reported by @error-Sench).
|
|
16
|
+
On a network where Google is reachable only through a local proxy (Clash on
|
|
17
|
+
`127.0.0.1:7897`, say), gflow's HTTP calls followed `HTTPS_PROXY` but the browser it
|
|
18
|
+
launches did not, so every page step timed out. The new setting takes
|
|
19
|
+
`http://`, `https://` or `socks5://host:port` and applies to every browser launch:
|
|
20
|
+
generation over the CLI and MCP, `auth login`, `auth renew` and the `auth status`
|
|
21
|
+
check. Opt-in: unset changes nothing, and it is never derived from `HTTPS_PROXY`. A bad
|
|
22
|
+
value fails at startup (exit 11), and so do proxy credentials (`user:pass@`): measured,
|
|
23
|
+
Flow never loads through Playwright's proxy authentication, so a local client such as
|
|
24
|
+
Clash should hold them. A dead proxy stops a generation run at its first page load with
|
|
25
|
+
a hint naming the setting (exit 11). `gflow doctor` reports the proxy, and credentials
|
|
26
|
+
inside any URL are now redacted from error details.
|
|
27
|
+
`docs/ACCOUNT_SAFETY.md` now says: no IP rotation, no proxy unless you set one, and sign
|
|
28
|
+
in through the proxy you generate through.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **A project create on a slow link no longer fails while Flow makes the project, and
|
|
33
|
+
never invites the retry that duplicates it**
|
|
34
|
+
([#1037](https://github.com/ffroliva/gflow-cli/issues/1037)). On flow.google.com a create
|
|
35
|
+
whose reply took over 30 s (measured: 40 s through a slow proxy) ended as exit 9
|
|
36
|
+
`TransportTimeoutError`, flagged retryable, while Flow went on to create the project, so
|
|
37
|
+
a retry made a second one. The create and rename replies now wait up to 120 s. Selector
|
|
38
|
+
waits stay at 30 s, so a moved frontend still fails fast. If the reply is still late or
|
|
39
|
+
lost, gflow takes the id from Flow's navigation to the new project and checks it. If it
|
|
40
|
+
cannot prove the outcome, it now ends with exit 7 (`RpcResponseUnavailableError`,
|
|
41
|
+
`retryable: false` in `--json` and on the MCP queue) and tells you to look for the
|
|
42
|
+
project and pass `--project <id>`, instead of a retryable timeout. A rename whose reply
|
|
43
|
+
is lost is settled by reading the saved title back. Builds on #992's lost-body recovery.
|
|
44
|
+
|
|
45
|
+
- **Commands no longer print about ten info log lines before their result, and
|
|
46
|
+
`GFLOW_CLI_LOG_LEVEL` works** ([#1041](https://github.com/ffroliva/gflow-cli/issues/1041)).
|
|
47
|
+
Every command logged at `INFO` to stderr regardless of `GFLOW_CLI_LOG_LEVEL`, which was
|
|
48
|
+
documented but read by nothing. The default is now `WARNING`, so a command prints its
|
|
49
|
+
result plus warnings and errors. `GFLOW_CLI_LOG_LEVEL=INFO` restores the old output, and
|
|
50
|
+
`-v` still shows everything. A long-running `gflow mcp run` / `gflow serve` now also logs
|
|
51
|
+
only warnings by default (uvicorn's own startup and access lines under `serve` are
|
|
52
|
+
separate); set `INFO` there to keep progress events. `gflow data sync` now echoes its
|
|
53
|
+
per-project progress itself unless INFO text logs already narrate it. `--json` stdout is
|
|
54
|
+
unchanged (it was already only the result).
|
|
55
|
+
- **A generated image whose download fails is no longer lost**
|
|
56
|
+
([#1035](https://github.com/ffroliva/gflow-cli/issues/1035), reported by @error-Sench).
|
|
57
|
+
Flow generated the image and spent the quota, then a failed local write (for example an
|
|
58
|
+
`--out` directory gflow cannot write to) left only a FAILED row with no project and no
|
|
59
|
+
asset, and the media id went with the traceback. `image t2i`, `image i2i`, `image batch`,
|
|
60
|
+
`gflow run` and the MCP `gflow_generate_image` tool now keep the media id in the catalog,
|
|
61
|
+
with no local copy, under one FAILED operation in its project. `image t2i` and `image i2i`
|
|
62
|
+
also print the media id(s) and the project URL on stderr; `image batch` and `gflow run`
|
|
63
|
+
only log them (the row is marked failed in their summary). The MCP failed reply carries
|
|
64
|
+
`flow_media_id` and `flow_project_id`. Exit codes are unchanged (a write refused by the OS
|
|
65
|
+
is still exit 1). A download interrupted with Ctrl-C leaves the operation STARTED, which
|
|
66
|
+
`gflow doctor` reports as stuck after 24 h. `gflow data download` stays video-only, so the
|
|
67
|
+
image is recovered from the Flow project.
|
|
68
|
+
|
|
69
|
+
- **`gflow auth login --browser internal` no longer waits until its timeout**
|
|
70
|
+
([#1026](https://github.com/ffroliva/gflow-cli/issues/1026)). With labs.google's session
|
|
71
|
+
URL answering 410 (#1023), a bundled-Chromium login (`--browser internal`, or
|
|
72
|
+
`--browser auto` on a machine without Chrome) never saw a signed-in session and waited
|
|
73
|
+
until its timeout. It now ends the wait once the flow.google.com session cookies appear,
|
|
74
|
+
then verifies the saved profile with the same server-attested check `--browser chrome`
|
|
75
|
+
and `auth status` use, so a sign-in that did not complete says why instead of timing
|
|
76
|
+
out. Generation still needs a `--browser chrome` profile. Verified live on Windows
|
|
77
|
+
(2026-10-22: a fresh bundled-Chromium sign-in finished on its own and `auth status`
|
|
78
|
+
reported the session verified). Not measured on macOS, where the saved-cookie read is
|
|
79
|
+
expected to fail; the login then ends with "re-run with `--browser chrome`".
|
|
80
|
+
- **flow.google.com: a write whose reply Chrome lost is read back, not called a failure**
|
|
81
|
+
([#1009](https://github.com/ffroliva/gflow-cli/issues/1009), PR
|
|
82
|
+
[#992](https://github.com/ffroliva/gflow-cli/pull/992) by @L1meSn0w). Chrome sometimes
|
|
83
|
+
cannot hand over a reply body (`Network.getResponseBody: No data found`, 2 of 45 real
|
|
84
|
+
uploads in our spike) although Flow saved the write. A local upload was reported as a
|
|
85
|
+
rejected file, and a project create or rename as a timeout. gflow now opens the project
|
|
86
|
+
in a second tab and checks it: the new project's id from the page it navigated to, the
|
|
87
|
+
saved title, or exactly one tile with the run's unique file name and a media id. Nothing
|
|
88
|
+
is submitted twice. If that check cannot prove the outcome, the command exits 7 with
|
|
89
|
+
`RpcResponseUnavailableError`, which is not retryable. Renaming a project to the title it
|
|
90
|
+
already has no longer waits for a reply Flow never sends.
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
|
|
94
|
+
- **A lost upload reply now exits 7 (`RpcResponseUnavailableError`) instead of 27**
|
|
95
|
+
([#1009](https://github.com/ffroliva/gflow-cli/issues/1009)). Exit 27 still means Flow
|
|
96
|
+
answered and refused the file. Exit 7 here means the outcome is unknown: the upload may
|
|
97
|
+
have saved, so check the project before re-running. Scripts that branch on 27 for a lost
|
|
98
|
+
upload should branch on 7.
|
|
99
|
+
|
|
100
|
+
### Removed
|
|
101
|
+
|
|
102
|
+
- **`GFLOW_CLI_TIMEOUT_SECONDS`** ([#1037](https://github.com/ffroliva/gflow-cli/issues/1037)).
|
|
103
|
+
It was documented as a per-request HTTP timeout and elsewhere as a chain link ceiling, but
|
|
104
|
+
nothing read it. An `.env` file or environment that still sets it keeps loading; the
|
|
105
|
+
value is ignored, as it always was.
|
|
106
|
+
|
|
107
|
+
## [0.87.1] — 2026-10-22
|
|
108
|
+
|
|
109
|
+
### Security
|
|
110
|
+
|
|
111
|
+
- **Locked `opentelemetry-api` 1.45.1 (CVE-2026-114603).** Transitive only, via `fastapi`
|
|
112
|
+
and `mcp`; no gflow code imports it. The advisory turned the `pip-audit` gate red on every
|
|
113
|
+
open PR.
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- **`gflow credits` reads a balance again** ([#795](https://github.com/ffroliva/gflow-cli/issues/795)).
|
|
118
|
+
Since 2026-10-22 it failed on every account, because its token came from labs.google's session
|
|
119
|
+
URL, which now answers HTTP 410. `credits user`, `credits list` and the MCP tool
|
|
120
|
+
`gflow_get_credits` now open flow.google.com in the profile's browser and read the balance from
|
|
121
|
+
the app's own `nzlxg` reply. That is the number in Flow's account menu: it matched in 5/5 reads,
|
|
122
|
+
one of them after a 10-credit spend. It costs one browser launch per profile, nothing is
|
|
123
|
+
clicked or spent, and a profile in use by another gflow process reports `ProfileLockedError`.
|
|
124
|
+
The JSON keys are unchanged, but `sku`, `service_tier`, `user_paygate_tier` and
|
|
125
|
+
`subscription_credits` are now always `null`, because flow.google.com does not report them.
|
|
126
|
+
A sign-in landing is exit 3 (`--refresh` renews it). An app that never fetches the balance is
|
|
127
|
+
exit 31 (`FlowAppError`), never an auth error. Measured on two accounts, neither on a paid plan; a paid plan may shape
|
|
128
|
+
the reply differently.
|
|
129
|
+
|
|
130
|
+
- **A video run into an existing `--project` no longer rewrites that project's title in
|
|
131
|
+
the local catalog** ([#1022](https://github.com/ffroliva/gflow-cli/issues/1022)).
|
|
132
|
+
`video t2v`/`i2v`/`r2v`/`extend` replaced the stored title with their `gflow-cli video`
|
|
133
|
+
placeholder, so `gflow data list projects` showed that for a project titled `my-project`
|
|
134
|
+
in Flow, and every run (images included) overwrote a project's `gflow-cli` source. Only
|
|
135
|
+
`gflow project create` and `rename` change a stored title now, and an empty title is no
|
|
136
|
+
longer kept as a real one. CLI and MCP share the fix. A title already overwritten is not
|
|
137
|
+
recoverable locally: run `gflow project rename <id> <title>` to restore it. Reported, with
|
|
138
|
+
the fix, by @error-Sench.
|
|
139
|
+
- **2K image upscale on flow.google.com no longer fails when Chrome loses Flow's reply**
|
|
140
|
+
([#1027](https://github.com/ffroliva/gflow-cli/issues/1027)). `gflow image upscale` and
|
|
141
|
+
the MCP upscale tool failed with `WireFormatError: Failed to parse SPrCad response ...
|
|
142
|
+
No data found for resource with given identifier` although Flow had upscaled the image.
|
|
143
|
+
Chrome dropped DevTools' copy of that reply on 6 of 12 measured upscales. The image is
|
|
144
|
+
now also taken from the file Flow's page builds for its own download, which held the same
|
|
145
|
+
bytes on 12 of 12. A refusal Flow does send still fails the run.
|
|
146
|
+
|
|
10
147
|
## [0.87.0] — 2026-10-22
|
|
11
148
|
|
|
12
149
|
### Security
|
|
@@ -6268,7 +6405,9 @@ shell-script template that branches on these codes.
|
|
|
6268
6405
|
|
|
6269
6406
|
First skeleton. Not functional end-to-end yet.
|
|
6270
6407
|
|
|
6271
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
6408
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.88.0...HEAD
|
|
6409
|
+
[0.88.0]: https://github.com/ffroliva/gflow-cli/compare/v0.87.1...v0.88.0
|
|
6410
|
+
[0.87.1]: https://github.com/ffroliva/gflow-cli/compare/v0.87.0...v0.87.1
|
|
6272
6411
|
[0.87.0]: https://github.com/ffroliva/gflow-cli/compare/v0.86.0...v0.87.0
|
|
6273
6412
|
[0.86.0]: https://github.com/ffroliva/gflow-cli/compare/v0.85.0...v0.86.0
|
|
6274
6413
|
[0.85.0]: https://github.com/ffroliva/gflow-cli/compare/v0.84.0...v0.85.0
|
|
@@ -130,7 +130,7 @@ is a per-account setting the labs.google app applies on every load (measured
|
|
|
130
130
|
once the account is flagged, re-running will not land the old frontend. Earlier text here said the rollout
|
|
131
131
|
"flaps" and told you to retry; that observation straddled the account's one-time
|
|
132
132
|
switch and is withdrawn. The REST surface (`gflow project list`, `gflow data …`)
|
|
133
|
-
is unaffected
|
|
133
|
+
is unaffected, and so is `gflow credits` since [#795](https://github.com/ffroliva/gflow-cli/issues/795): it reads the balance from flow.google.com, not from a `labs.google` token (see the quota entry below). Automated callers now receive `retryable: false` so retry loops
|
|
134
134
|
stop instead of burning a doomed attempt each time.
|
|
135
135
|
|
|
136
136
|
**What gflow does today for the rest of the matrix:** recognises the migrated
|
|
@@ -751,8 +751,9 @@ A profile that has just sat unused usually has rotated-out cookies, not a dead G
|
|
|
751
751
|
`auth renew` loads Flow in a headless browser, which rotates them with no prompt, then verifies
|
|
752
752
|
the result like `auth status`. Its labs.google step (measured 2026-10-14: 7 of 10 stale profiles
|
|
753
753
|
recovered a credits token) is a no-op since 2026-10-22, when labs' session URL started answering
|
|
754
|
-
HTTP 410 ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023))
|
|
755
|
-
|
|
754
|
+
HTTP 410 ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)). `credits --refresh` no
|
|
755
|
+
longer depends on it: since [#795](https://github.com/ffroliva/gflow-cli/issues/795) the balance
|
|
756
|
+
is read from flow.google.com, so a renewal that gets the profile back into Flow brings it back.
|
|
756
757
|
|
|
757
758
|
**Workaround, revoked session:**
|
|
758
759
|
```bash
|
|
@@ -842,6 +843,18 @@ The contrasting message, **`no upload request ever left the page`**, means somet
|
|
|
842
843
|
|
|
843
844
|
**What is known.** A healthy upload window issues **4** POSTs; a failing one issued **24** — the full project-load rpcid inventory, firing ~2.6 s after the request went out, which is just before the ~2.8 s successful uploads take to answer. That has the shape of the page re-initialising underneath the in-flight upload, but no navigation event was captured, so the cause is unconfirmed. Measured 2026-09-08, 1 failure in 4 runs on one funded account — enough for "intermittent", not enough for a rate.
|
|
844
845
|
|
|
846
|
+
### Chrome loses a reply body although Flow saved the write (migrated host)
|
|
847
|
+
|
|
848
|
+
- **Status:** Mitigated · **Severity:** Medium (intermittent; the write usually saved) · **Affects:** the migrated `flow.google.com` host, local uploads (`--initial-frame`, `--ref`, `i2i` files), project create and rename · **Tracked:** [#1009](https://github.com/ffroliva/gflow-cli/issues/1009)
|
|
849
|
+
|
|
850
|
+
Distinct from #719 above, where no reply arrives at all. Here the reply arrives, but Chrome cannot hand its body over: `Network.getResponseBody: No data found for resource with given identifier`. Our spike saw it on 2 of 45 real `maseQ` uploads, and a fresh reload found both uploads saved ([spike](docs/superpowers/spikes/2026-10-20-migrated-upload-reply-body-eviction.md)). Before the fix, gflow reported the upload as a refused file (exit 27).
|
|
851
|
+
|
|
852
|
+
A project create or rename whose reply is late, not lost, takes the same path: on a slow link a 40 s create used to end as a retryable exit 9 while Flow made the project, so a retry made a second one ([#1037](https://github.com/ffroliva/gflow-cli/issues/1037)). The reply wait is now 120 s, and past it gflow reads the new project's id from Flow's navigation to it.
|
|
853
|
+
|
|
854
|
+
**Mitigation:** gflow now opens the project in a second tab and reads the outcome back: the new project's id, the saved title, or exactly one tile with the run's unique file name and a media id. Nothing is submitted twice. The readback can take up to about two minutes on a slow page.
|
|
855
|
+
|
|
856
|
+
**If it cannot confirm the outcome**, the command exits **7** with `RpcResponseUnavailableError` (`retryable: false`). The write may have saved. Open the project on flow.google.com and look for the title or the file name in the error before you re-run, or you may get a duplicate project or upload. `gflow run` does not re-upload a reference file after this error in the same run.
|
|
857
|
+
|
|
845
858
|
### Flow's release-notes ("What's new") changelog popup blocks first-run UI automation
|
|
846
859
|
|
|
847
860
|
- **Status:** Mitigated · **Severity:** Medium · **Tracked:** [#26](https://github.com/ffroliva/gflow-cli/issues/26)
|
|
@@ -871,25 +884,33 @@ A block that survives dismissal now aborts pre-submit with exit 23 (probe `overl
|
|
|
871
884
|
|
|
872
885
|
---
|
|
873
886
|
|
|
874
|
-
### No in-CLI quota visibility —
|
|
887
|
+
### No in-CLI quota visibility — resolved (balance read from flow.google.com)
|
|
888
|
+
|
|
889
|
+
- **Status:** **Resolved** in v0.87.1 ([#795](https://github.com/ffroliva/gflow-cli/issues/795)); open on every account from 2026-10-22 until then
|
|
875
890
|
|
|
876
|
-
|
|
891
|
+
**Fixed.** `gflow credits` now opens flow.google.com in the profile's browser and reads the
|
|
892
|
+
balance from the app's own `nzlxg` reply, the number Flow's account menu shows (measured 5/5,
|
|
893
|
+
including after a spend:
|
|
894
|
+
[spike](docs/superpowers/spikes/2026-10-22-credits-balance-on-nzlxg.md)). It no longer needs a
|
|
895
|
+
labs.google token. It costs one browser launch per profile, and the tier fields (`sku`,
|
|
896
|
+
`service_tier`, `user_paygate_tier`, `subscription_credits`) are always `null`, because
|
|
897
|
+
flow.google.com does not report them. It was verified on two accounts, neither on a paid plan; a paid plan may put a different
|
|
898
|
+
balance in the field gflow reads, which would show a wrong number without an error. A page that never sends the reply fails with exit 31
|
|
899
|
+
(`FlowAppError`), never an auth error. The rest of this section is the history.
|
|
877
900
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
first way listed below. The rest of this section is the history of how it got there.
|
|
901
|
+
From 2026-10-22, labs.google's session URL, which minted the token below, answered HTTP 410
|
|
902
|
+
Gone for everyone ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)), so every
|
|
903
|
+
account failed the first way listed below until this fix.
|
|
882
904
|
|
|
883
905
|
Use `gflow credits user` for the selected profile or `gflow credits list` for all saved
|
|
884
|
-
profiles
|
|
885
|
-
session; `--json` provides a stable automation contract. The equivalent MCP surface is
|
|
906
|
+
profiles; `--json` provides a stable automation contract. The equivalent MCP surface is
|
|
886
907
|
`gflow_get_credits`. The reported balance funds Veo video generation; image generation consumes
|
|
887
908
|
separate per-model daily quotas.
|
|
888
909
|
|
|
889
|
-
**
|
|
890
|
-
credits endpoint
|
|
891
|
-
away in **two stages**, so `gflow credits user` / `list` and
|
|
892
|
-
of two ways:
|
|
910
|
+
**History: before the fix, accounts served from `flow.google.com` had no in-CLI quota
|
|
911
|
+
visibility.** The credits endpoint was reached with a token minted by `labs.google`, and the
|
|
912
|
+
move took that away in **two stages**, so `gflow credits user` / `list` and
|
|
913
|
+
`gflow_get_credits` failed in one of two ways:
|
|
893
914
|
|
|
894
915
|
- labs answers `200` with no `access_token` — it never mints one → *"the labs.google session
|
|
895
916
|
returned no access token"*.
|
|
@@ -910,8 +931,8 @@ hint. Fixed in v0.79.0 ([#803](https://github.com/ffroliva/gflow-cli/issues/803)
|
|
|
910
931
|
three remaining raise sites now states what was actually rejected, the 401 site names the route
|
|
911
932
|
that refused, and the class default no longer asserts a SAPISID failure at all.
|
|
912
933
|
|
|
913
|
-
Reading a balance on the migrated host is
|
|
914
|
-
(
|
|
934
|
+
Reading a balance on the migrated host is implemented since the #795 fix, from flow.google.com's
|
|
935
|
+
own `nzlxg` reply (see the top of this entry).
|
|
915
936
|
|
|
916
937
|
---
|
|
917
938
|
|
|
@@ -1512,7 +1533,7 @@ here, because the run gives up within 30 s (see [CONFIGURATION](docs/CONFIGURATI
|
|
|
1512
1533
|
|
|
1513
1534
|
### Auth verification depends on Google's NextAuth session endpoint
|
|
1514
1535
|
|
|
1515
|
-
- **Status:** Mitigated for real-Chrome profiles
|
|
1536
|
+
- **Status:** Mitigated for real-Chrome profiles and for `gflow credits` (#795); `--browser internal` logins fixed and live-verified on Windows (#1026) · **Severity:** Medium since 2026-10-22 · **Affects:** issue #15 fix onward · **Tracked:** issue #15, [#1023](https://github.com/ffroliva/gflow-cli/issues/1023), [#795](https://github.com/ffroliva/gflow-cli/issues/795)
|
|
1516
1537
|
|
|
1517
1538
|
`gflow auth login` verifies a real Flow sign-in by calling
|
|
1518
1539
|
`https://labs.google/fx/api/auth/session` (see `src/gflow_cli/auth/verification.py`)
|
|
@@ -1531,10 +1552,13 @@ without cookies ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023),
|
|
|
1531
1552
|
read as "no labs session": a profile without Google cookies is `NO_SESSION`, and one with
|
|
1532
1553
|
them is checked by the server-attested migrated-host probe (#791), which needs the Google
|
|
1533
1554
|
SSO and flow.google.com session cookies, then reads `myaccount.google.com`. **Still open:**
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
Chromium, also what `--browser auto` picks when Chrome is missing)
|
|
1537
|
-
|
|
1555
|
+
some access-token consumers that read the same URL are not ported. `gflow credits` is
|
|
1556
|
+
(#795: it reads flow.google.com's own balance reply). A login with `--browser internal` (bundled
|
|
1557
|
+
Chromium, also what `--browser auto` picks when Chrome is missing) runs the same on-disk
|
|
1558
|
+
check after the window closes ([#1026](https://github.com/ffroliva/gflow-cli/issues/1026));
|
|
1559
|
+
before that fix it waited until its timeout. A fresh bundled-Chromium sign-in passed that check
|
|
1560
|
+
on Windows (2026-10-22). On macOS the cookie read is expected to fail and is not measured, so
|
|
1561
|
+
use `--browser chrome` there.
|
|
1538
1562
|
|
|
1539
1563
|
Since PR #168 the production entry point is `verify_flow_profile`, which reads
|
|
1540
1564
|
the session cookie **directly from Chrome's SQLite store** via `browser_cookie3`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.88.0
|
|
4
4
|
Summary: CLI and MCP server for Google Flow — drive Veo text-to-video, image-to-video and Imagen image generation from the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
|
|
6
6
|
Project-URL: Documentation, https://ffroliva.github.io/gflow-cli/
|
|
@@ -140,11 +140,12 @@ uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
|
140
140
|
# later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
|
|
141
141
|
|
|
142
142
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
143
|
+
# Behind a proxy (e.g. Clash)? Set GFLOW_CLI_BROWSER_PROXY=http://127.0.0.1:7897 first (docs/CONFIGURATION.md)
|
|
143
144
|
gflow auth login --browser chrome
|
|
144
145
|
|
|
145
|
-
# Check the session (
|
|
146
|
+
# Check the session (spends nothing)
|
|
146
147
|
gflow auth status
|
|
147
|
-
|
|
148
|
+
gflow credits user # Veo credit balance (opens Flow in the browser; spends nothing)
|
|
148
149
|
|
|
149
150
|
# 3 · Generate
|
|
150
151
|
gflow image t2i "a hot air balloon over Tokyo at sunrise"
|
|
@@ -115,7 +115,7 @@ src/gflow_cli/
|
|
|
115
115
|
|
|
116
116
|
Documented in [docs/CONFIGURATION.md](docs/CONFIGURATION.md) and [.env.template](.env.template). Variables:
|
|
117
117
|
|
|
118
|
-
`GFLOW_CLI_HOME`, `GFLOW_CLI_OUTPUT_DIR`, `GFLOW_CLI_PROFILE`, `GFLOW_CLI_PROVIDER`, `GFLOW_CLI_LLM_BASE_URL`, `GFLOW_CLI_LLM_API_KEY`, `GFLOW_CLI_LLM_MODEL`, `
|
|
118
|
+
`GFLOW_CLI_HOME`, `GFLOW_CLI_OUTPUT_DIR`, `GFLOW_CLI_PROFILE`, `GFLOW_CLI_PROVIDER`, `GFLOW_CLI_LLM_BASE_URL`, `GFLOW_CLI_LLM_API_KEY`, `GFLOW_CLI_LLM_MODEL`, `GFLOW_CLI_LOG_LEVEL`, `GFLOW_CLI_LOG_FORMAT`, `GFLOW_CLI_CONCURRENCY`, `GFLOW_CLI_DB_PATH`, `GFLOW_CLI_HISTORY_PROMPTS`.
|
|
119
119
|
|
|
120
120
|
Default paths via `platformdirs`:
|
|
121
121
|
|
|
@@ -52,11 +52,12 @@ uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
|
52
52
|
# later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
|
|
53
53
|
|
|
54
54
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
55
|
+
# Behind a proxy (e.g. Clash)? Set GFLOW_CLI_BROWSER_PROXY=http://127.0.0.1:7897 first (docs/CONFIGURATION.md)
|
|
55
56
|
gflow auth login --browser chrome
|
|
56
57
|
|
|
57
|
-
# Check the session (
|
|
58
|
+
# Check the session (spends nothing)
|
|
58
59
|
gflow auth status
|
|
59
|
-
|
|
60
|
+
gflow credits user # Veo credit balance (opens Flow in the browser; spends nothing)
|
|
60
61
|
|
|
61
62
|
# 3 · Generate
|
|
62
63
|
gflow image t2i "a hot air balloon over Tokyo at sunrise"
|
|
@@ -45,7 +45,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
45
45
|
# Deliberately NOT pinned: google-chrome-stable. Chrome's apt repo keeps only the current
|
|
46
46
|
# build, so a pinned version stops resolving within weeks. The trade-off is that this
|
|
47
47
|
# layer caches indefinitely and a rebuild is what picks up a newer Chrome.
|
|
48
|
-
ARG GFLOW_VERSION=0.
|
|
48
|
+
ARG GFLOW_VERSION=0.88.0
|
|
49
49
|
RUN pip install --no-cache-dir "gflow-cli==${GFLOW_VERSION}"
|
|
50
50
|
|
|
51
51
|
VOLUME ["/data"]
|
|
@@ -73,7 +73,14 @@ auto-retry, because retrying only inflates per-profile heat.**
|
|
|
73
73
|
|
|
74
74
|
## What it deliberately does not do
|
|
75
75
|
|
|
76
|
-
- **No proxy
|
|
76
|
+
- **No IP rotation, and no proxy unless you set one.** By default your requests come from
|
|
77
|
+
your connection. [`GFLOW_CLI_BROWSER_PROXY`](CONFIGURATION.md#gflow_cli_browser_proxy)
|
|
78
|
+
routes the browser through **one** proxy you choose, for networks where Google is
|
|
79
|
+
reachable only that way. Google watches where a session comes from, so: sign in, renew
|
|
80
|
+
and generate through the **same** proxy; point `HTTPS_PROXY` at the same exit, so
|
|
81
|
+
gflow's own HTTP calls do not leave from a second IP; and remember that a shared or
|
|
82
|
+
commercial proxy IP carries other people's reputation, which can trigger "Confirm it's
|
|
83
|
+
you" checks or reCAPTCHA refusals on your account.
|
|
77
84
|
- **No fingerprint spoofing**, beyond the opt-in patched engine below. No canvas
|
|
78
85
|
noise, no UA lying, no timezone games.
|
|
79
86
|
- **No headless "unlock".** The patchright option is explicitly *not* one.
|
|
@@ -146,11 +146,13 @@ gflow auth login --profile work # named profile (creates if missing)
|
|
|
146
146
|
gflow auth login --browser chrome # force the chrome strategy (real Chrome + its profile marker)
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
> **
|
|
150
|
-
> 410 ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023))
|
|
151
|
-
> verified against Google's account page
|
|
152
|
-
> internal`, or `auto` on a machine without Chrome)
|
|
153
|
-
>
|
|
149
|
+
> **Prefer `--browser chrome`.** Since 2026-10-22 labs.google's session URL answers HTTP
|
|
150
|
+
> 410 ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)), so every login is
|
|
151
|
+
> verified against Google's account page with the profile's saved cookies. A
|
|
152
|
+
> bundled-Chromium login (`--browser internal`, or `auto` on a machine without Chrome) runs
|
|
153
|
+
> that check too ([#1026](https://github.com/ffroliva/gflow-cli/issues/1026)). It is verified
|
|
154
|
+
> on Windows; on macOS it is expected to fail (not measured), and generation needs a
|
|
155
|
+
> chrome-strategy profile.
|
|
154
156
|
|
|
155
157
|
Re-running this command refreshes an expired session: it reuses the existing profile dir,
|
|
156
158
|
so you typically just have to click "Continue as <you>" on the Google account chooser.
|
|
@@ -247,6 +249,12 @@ launched as a plain process with no automation flags and no debugging port, wher
|
|
|
247
249
|
the window once the Flow editor has loaded and `gflow` extracts the verified session from the
|
|
248
250
|
profile. There is no flag and no prompt for this — the fallback simply happens.
|
|
249
251
|
|
|
252
|
+
**Behind a proxy.** Set [`GFLOW_CLI_BROWSER_PROXY`](CONFIGURATION.md#gflow_cli_browser_proxy)
|
|
253
|
+
before `gflow auth login`, so you sign in from the same IP you will generate from. Both
|
|
254
|
+
login paths use it, including the Passive Capture fallback (as Chrome's
|
|
255
|
+
`--proxy-server` switch). Use a proxy without credentials, such as a local Clash on
|
|
256
|
+
`http://127.0.0.1:7897`.
|
|
257
|
+
|
|
250
258
|
**Privacy guard:** The `chrome` strategy strictly refuses to use any profile directory
|
|
251
259
|
outside `GFLOW_CLI_HOME`. This protects your primary system Chrome profile from
|
|
252
260
|
accidental interference or data corruption.
|
|
@@ -279,7 +287,8 @@ session reports `ACCESS_TOKEN_REFRESH_NEEDED`, and the page renews it through Go
|
|
|
279
287
|
prompt. This step mattered because `gflow credits` read its token from that labs session; since
|
|
280
288
|
2026-10-22 labs' session URL answers HTTP 410 for every account
|
|
281
289
|
([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)), so the step finds nothing to
|
|
282
|
-
renew
|
|
290
|
+
renew. `gflow credits` no longer needs it: it reads the balance from flow.google.com
|
|
291
|
+
([#795](https://github.com/ffroliva/gflow-cli/issues/795)).
|
|
283
292
|
The browser saves whatever cookies were rotated, and the
|
|
284
293
|
result is verified exactly like `gflow auth status`. It spends no credits.
|
|
285
294
|
|
|
@@ -250,12 +250,6 @@ Both generate tools are gated, not just video: image generation is only *empiric
|
|
|
250
250
|
GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
|
|
251
251
|
```
|
|
252
252
|
|
|
253
|
-
### `GFLOW_CLI_TIMEOUT_SECONDS`
|
|
254
|
-
|
|
255
|
-
**What:** Per-request HTTP timeout. Veo videos can take 60–180 s each.
|
|
256
|
-
**Default:** `600`
|
|
257
|
-
**Note:** This is a single-request ceiling; the *batch* timeout you experience is sum of all per-clip waits.
|
|
258
|
-
|
|
259
253
|
### `GFLOW_CLI_JITTER_RANGE`
|
|
260
254
|
|
|
261
255
|
**What:** Anti-bot pause between prompt submissions in multi-prompt image runs (`gflow image batch`, `gflow image t2i --prompts-file` / `--stdin` / multiple positional prompts, and `gflow run` image batches). Spaces out the *submission clicks* only — generations still run in parallel inside Flow.
|
|
@@ -267,16 +261,19 @@ GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
|
|
|
267
261
|
|
|
268
262
|
### `GFLOW_CLI_LOG_LEVEL`
|
|
269
263
|
|
|
270
|
-
**What:** Logging verbosity.
|
|
264
|
+
**What:** Logging verbosity. Logs go to stderr; stdout carries only the command's output.
|
|
271
265
|
**Values:** `DEBUG` | `INFO` | `WARNING` | `ERROR`
|
|
272
|
-
**Default:** `INFO`
|
|
266
|
+
**Default:** `WARNING` — a command prints its result plus any warnings and errors. Set `INFO`
|
|
267
|
+
to see progress events (engine, cookies, locale, page setup), for example on a long-running
|
|
268
|
+
`gflow mcp run` / `gflow serve`.
|
|
273
269
|
**CLI override:** `-v` / `--verbose` flag flips to `DEBUG`.
|
|
270
|
+
Until the #1041 fix this setting was ignored and every command logged at `INFO` ([#1041](https://github.com/ffroliva/gflow-cli/issues/1041)).
|
|
274
271
|
|
|
275
272
|
### `GFLOW_CLI_LOG_FORMAT`
|
|
276
273
|
|
|
277
274
|
**What:** Output format for log lines.
|
|
278
275
|
**Values:**
|
|
279
|
-
- `auto` (default) — text
|
|
276
|
+
- `auto` (default) — text when stderr is a terminal, JSON when stderr is piped/redirected
|
|
280
277
|
- `text` — always pretty (Rich-styled, colours)
|
|
281
278
|
- `json` — always machine-readable (one JSON object per line)
|
|
282
279
|
|
|
@@ -399,6 +396,49 @@ Measurement script: `scripts/dev/spike_offscreen_window.py`.
|
|
|
399
396
|
|
|
400
397
|
**Malformed values** (`100`, `1,2,3`, `a,b`) fail at startup with a validation error.
|
|
401
398
|
|
|
399
|
+
### `GFLOW_CLI_BROWSER_PROXY`
|
|
400
|
+
|
|
401
|
+
**What:** A proxy for every browser gflow launches: generation (CLI and MCP),
|
|
402
|
+
`gflow auth login`, `auth renew` and the session check behind `auth status`
|
|
403
|
+
([#1036](https://github.com/ffroliva/gflow-cli/issues/1036)).
|
|
404
|
+
**Values:** `http://host:port` | `https://host:port` | `socks5://host:port`; the port is
|
|
405
|
+
required, and credentials (`user:pass@`) are refused, see below
|
|
406
|
+
**Default:** unset. The browser then connects as it always has: on Windows that means
|
|
407
|
+
through the system proxy (Settings → Network → Proxy), if one is on.
|
|
408
|
+
|
|
409
|
+
Use it when Google is reachable only through a proxy, for example a local Clash or
|
|
410
|
+
v2ray client on `http://127.0.0.1:7897` with its *System Proxy* switch off.
|
|
411
|
+
|
|
412
|
+
**Two proxies, one exit.** gflow's own HTTP calls (httpx, the LLM client) follow
|
|
413
|
+
`HTTPS_PROXY`; the browser follows this setting and ignores `HTTPS_PROXY` (Chromium reads
|
|
414
|
+
proxy env vars only on Linux). gflow never copies one into the other. Point both at the
|
|
415
|
+
same proxy so Google sees one IP per session, and sign in through it. See
|
|
416
|
+
[ACCOUNT_SAFETY](ACCOUNT_SAFETY.md#what-it-deliberately-does-not-do).
|
|
417
|
+
|
|
418
|
+
| Situation | What happens |
|
|
419
|
+
|---|---|
|
|
420
|
+
| unset | no change from earlier versions |
|
|
421
|
+
| set | every browser launch routes through it; `gflow doctor` shows it |
|
|
422
|
+
| credentials (`user:pass@`), a missing host or port, a path or an unknown scheme | refused at startup, exit 11, naming the setting and never repeating the value |
|
|
423
|
+
| the proxy is down or refuses the tunnel | a generation run stops at its first page load, exit 11, with a hint naming this setting. `auth status` and `auth renew` report an unverified session instead (the usual "check your connection" wording), so check the proxy first |
|
|
424
|
+
|
|
425
|
+
**Why no credentials.** Through a proxy that asks for a password, the Flow page never
|
|
426
|
+
finishes loading: measured 2026-10-22 on Playwright 1.61 with bundled Chromium and
|
|
427
|
+
Chrome alike, the labs → flow.google.com navigation timed out at 45 s, while the same
|
|
428
|
+
proxy without a password loaded it in about a second (and plain sites loaded either way).
|
|
429
|
+
Run your proxy client locally and let it hold the upstream credentials; that is how
|
|
430
|
+
Clash and v2ray work by default. `tests/e2e/test_browser_proxy_e2e.py` re-measures this,
|
|
431
|
+
so the restriction can be lifted once Playwright handles it.
|
|
432
|
+
|
|
433
|
+
**Long-running servers** (`gflow mcp run`, `gflow serve`) read it once at start; restart
|
|
434
|
+
them after changing it. For MCP, set it in `$GFLOW_CLI_HOME/.env` or the client's `env`
|
|
435
|
+
block, since a client does not load a `.env` from your shell's directory
|
|
436
|
+
([MCP setup](MCP.md#4-setup-instructions)).
|
|
437
|
+
|
|
438
|
+
**Not supported:** a bypass list (Chromium already sends loopback addresses direct),
|
|
439
|
+
per-command `--proxy` flags (the setting covers one-off runs:
|
|
440
|
+
`GFLOW_CLI_BROWSER_PROXY=... gflow ...`), and the opt-in experimental transports.
|
|
441
|
+
|
|
402
442
|
### `GFLOW_CLI_BROWSER_ENGINE`
|
|
403
443
|
|
|
404
444
|
**What:** Selects the browser-automation engine backing the Playwright API.
|
|
@@ -534,10 +574,9 @@ For images, `--out DIR` writes flat as `<DIR>/<media_name>_<n>.png` — file pat
|
|
|
534
574
|
`gflow video chain` (last-frame I2V chaining — see
|
|
535
575
|
[USAGE § gflow video chain](USAGE.md#gflow-video-chain)) is configured entirely
|
|
536
576
|
by command-line flags; it adds **no new environment variables**. It reuses
|
|
537
|
-
`GFLOW_CLI_OUTPUT_DIR` (default output root), `GFLOW_CLI_PROFILE
|
|
538
|
-
`GFLOW_CLI_DB_PATH` (chain links are recorded for `--resume-from`)
|
|
539
|
-
|
|
540
|
-
each link in turn, so total wallclock is the sum of all link waits).
|
|
577
|
+
`GFLOW_CLI_OUTPUT_DIR` (default output root), `GFLOW_CLI_PROFILE`
|
|
578
|
+
and `GFLOW_CLI_DB_PATH` (chain links are recorded for `--resume-from`). The chain
|
|
579
|
+
waits for each link in turn, so total wallclock is the sum of all link waits.
|
|
541
580
|
|
|
542
581
|
| Flag | Default | Notes |
|
|
543
582
|
|---|---|---|
|
|
@@ -601,12 +640,10 @@ gflow image t2i "product photo on a white sweep"
|
|
|
601
640
|
|
|
602
641
|
See [EXTERNAL_STORAGE.md](EXTERNAL_STORAGE.md) for MinIO and GCS examples.
|
|
603
642
|
|
|
604
|
-
### "I'm running in CI — I want JSON logs
|
|
643
|
+
### "I'm running in CI — I want JSON logs"
|
|
605
644
|
|
|
606
645
|
```bash
|
|
607
|
-
GFLOW_CLI_LOG_FORMAT=json
|
|
608
|
-
GFLOW_CLI_TIMEOUT_SECONDS=300 \
|
|
609
|
-
gflow image batch ./manifest.tsv
|
|
646
|
+
GFLOW_CLI_LOG_FORMAT=json gflow image batch ./manifest.tsv
|
|
610
647
|
```
|
|
611
648
|
|
|
612
649
|
### "I want to test against the official Veo SDK"
|
|
@@ -631,10 +668,10 @@ gflow image t2i "test idea" --profile experiments
|
|
|
631
668
|
|
|
632
669
|
| Symptom | Likely cause | Fix |
|
|
633
670
|
|---|---|---|
|
|
634
|
-
| `ValidationError: GFLOW_CLI_TIMEOUT_SECONDS must be a positive integer` | Bad `.env` value | Set to a number ≥ 1 |
|
|
635
671
|
| `FileNotFoundError: $GFLOW_CLI_HOME/profile_default not found` | First run, no auth yet | `gflow auth login` |
|
|
636
672
|
| `AuthExpiredError` | Cookies expired or revoked | `gflow auth login --profile <name>` |
|
|
637
673
|
| A run stops on an account chooser, consent or verification screen (`FlowAccountChooserError`, exit 38) | Google wants a person to answer that screen | `gflow auth login --profile <name>` and clear it there; the login window is always visible. Making the generation window visible does not help: the run gives up within 30 s. See [`GFLOW_CLI_BROWSER_WINDOW_POSITION`](#gflow_cli_browser_window_position) |
|
|
674
|
+
| Every browser step times out, while `curl` and `HTTPS_PROXY` work | Google is reachable only through a proxy, and the browser ignores `HTTPS_PROXY` | Set [`GFLOW_CLI_BROWSER_PROXY`](#gflow_cli_browser_proxy) to the same proxy, then `gflow auth renew` |
|
|
638
675
|
| `ProfileAccessError` (exit code 11) | Chrome cannot write the profile directory (Windows access denied) | Grant write access to the whole profile directory, or use a writable profile. See [Profile-directory permissions](#profile-directory-permissions-at-browser-launch) |
|
|
639
676
|
| Output files don't appear where I expect | Flag > env > .env > default — check actual resolved path | `gflow image t2i ... --verbose` shows the resolved output path |
|
|
640
677
|
| `ProfileLockedError` (exit code 11) | Two concurrent calls against the same profile — the cross-process `ProfileLease` fails fast (never waits) on same-profile contention, whether the second holder is another `gflow` process, the `gflow serve` daemon, or an MCP call | Wait for the first call to finish, or use `--profile other` — different profiles run fully in parallel, each with its own lease |
|