gflow-cli 0.86.0__tar.gz → 0.87.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.86.0 → gflow_cli-0.87.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.env.template +5 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/ci.yml +34 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/scorecard.yml +2 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/AGENTS.md +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/CHANGELOG.md +136 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/KNOWN_ISSUES.md +26 -8
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/PKG-INFO +8 -7
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/README.md +5 -4
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker/Dockerfile +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker-compose.yml +11 -10
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/AUTHENTICATION.md +17 -7
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/CONFIGURATION.md +5 -5
- {gflow_cli-0.86.0/website → gflow_cli-0.87.0}/docs/DEBUGGING.md +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/E2E_TESTING.md +7 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/EXTERNAL_STORAGE.md +13 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/INDEX.md +2 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.86.0.md +6 -1
- gflow_cli-0.87.0/docs/LIVE_VERIFICATION_v0.87.0.md +85 -0
- {gflow_cli-0.86.0/website → gflow_cli-0.87.0}/docs/MCP.md +16 -6
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/PROJECT_STATUS.md +27 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/REFERENCE_STRATEGIES.md +10 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/USAGE.md +16 -12
- {gflow_cli-0.86.0/website → gflow_cli-0.87.0}/docs/USER_GUIDE.md +6 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +2 -1
- gflow_cli-0.87.0/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PLAN.md +10 -0
- gflow_cli-0.87.0/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PREDICT.md +24 -0
- gflow_cli-0.87.0/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/SCENARIO.md +14 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-19-earlier-run-ref-in-place.md +96 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-19-fourth-ref-caret.md +123 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-19-minio-replacement.md +45 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-20-migrated-upload-reply-body-eviction.md +94 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-21-migrated-submit-reply-body-loss.md +121 -0
- gflow_cli-0.87.0/docs/superpowers/spikes/2026-10-22-labs-session-oracle-gone.md +82 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/llms.txt +8 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/gflow-cli/SKILL.md +3 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/pyproject.toml +5 -5
- gflow_cli-0.87.0/scripts/dev/cleanup.py +287 -0
- gflow_cli-0.87.0/scripts/dev/spike_995_earlier_run_ref.py +178 -0
- gflow_cli-0.87.0/scripts/dev/spike_997_fourth_ref_caret.py +363 -0
- gflow_cli-0.87.0/scripts/dev/spike_migrated_submit_body_loss.py +230 -0
- gflow_cli-0.87.0/scripts/dev/spike_migrated_upload_body_eviction.py +235 -0
- gflow_cli-0.87.0/scripts/dev/spike_s3_test_backend.py +216 -0
- gflow_cli-0.87.0/scripts/dev/spike_session_oracle.py +188 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/server.json +2 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/gflow-cli/SKILL.md +3 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/release/SKILL.md +2 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/_retry.py +11 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/client.py +11 -7
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/image.py +17 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/agent_only_composer.py +9 -9
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/migrated_composer.py +111 -35
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/migrated_video_upscale.py +20 -21
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/ui_automation.py +6 -6
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/ui_automation_video.py +29 -8
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/renew.py +11 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/verification.py +12 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_credits.py +2 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_image.py +10 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/models.py +1 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/repository.py +2 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/errors.py +7 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/tools.py +24 -9
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/worker/codec.py +12 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_migrated_video_upscale.py +10 -6
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_agent_only_composer_driver.py +45 -8
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_composer.py +120 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_dispatch.py +79 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_existing_refs.py +4 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_images.py +27 -1
- gflow_cli-0.87.0/tests/api/transports/test_migrated_mention_order.py +119 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ui_automation_video.py +48 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/strategies/test_strategies.py +8 -6
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_real_chrome.py +10 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_renew.py +18 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_verification.py +98 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_image.py +40 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +74 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_auth_renew_e2e.py +15 -10
- gflow_cli-0.87.0/tests/e2e/test_auth_status_mcp_e2e.py +32 -0
- gflow_cli-0.87.0/tests/e2e/test_earlier_run_ref_in_place_bdd.py +193 -0
- gflow_cli-0.87.0/tests/e2e/test_mention_chip_order_bdd.py +148 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_host_e2e.py +21 -0
- gflow_cli-0.87.0/tests/e2e/test_migrated_submit_body_loss_bdd.py +150 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_video_t2v_e2e.py +89 -0
- gflow_cli-0.87.0/tests/features/earlier_run_ref_in_place.feature +19 -0
- gflow_cli-0.87.0/tests/features/mention_chip_order.feature +21 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_driver.feature +12 -0
- gflow_cli-0.87.0/tests/features/migrated_submit_body_loss.feature +11 -0
- gflow_cli-0.87.0/tests/features/migrated_video_submit_body_loss.feature +11 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_migrated_driver_steps.py +47 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/conftest.py +18 -19
- gflow_cli-0.87.0/tests/integration/constants.py +17 -0
- gflow_cli-0.87.0/tests/integration/test_migrated_video_storage_s3.py +53 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/test_storage_s3.py +19 -19
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/conftest.py +12 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_server.py +7 -2
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_tools_helpers.py +31 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_tools_wired.py +40 -0
- gflow_cli-0.87.0/tests/scripts/test_cleanup.py +449 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_spike_profile_lease.py +3 -0
- gflow_cli-0.87.0/tests/worker/test_codec_image_ref_project.py +47 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/uv.lock +398 -316
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/AUTHENTICATION.md +17 -7
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/CONFIGURATION.md +5 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0/website}/docs/DEBUGGING.md +1 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/E2E_TESTING.md +7 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/EXTERNAL_STORAGE.md +13 -5
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/KNOWN_ISSUES.md +26 -8
- {gflow_cli-0.86.0 → gflow_cli-0.87.0/website}/docs/MCP.md +16 -6
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/USAGE.md +16 -12
- {gflow_cli-0.86.0 → gflow_cli-0.87.0/website}/docs/USER_GUIDE.md +6 -1
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/requirements.txt +6 -6
- gflow_cli-0.86.0/tests/integration/constants.py +0 -13
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.claude-plugin/marketplace.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.gitattributes +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/mcp-registry.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/sponsors.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.gitignore +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/.secrets.baseline +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/CLAUDE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/LICENSE +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/RELEASE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/ROADMAP.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/conftest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker/Dockerfile.test +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker/docker-compose.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docker/dockerignore.example +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/CONTAINER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/DISTRIBUTION.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.77.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.77.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.78.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.79.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.79.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.80.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.81.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.82.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.82.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.83.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.83.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.83.2.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.84.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.85.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/MARKETPLACES.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/SPONSORS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/content-policy-text-scan-false-positives-on-page-chrome.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/drive-the-page-dont-replay-the-rpc.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/migrated-refusal-is-a-dom-card-not-a-wire-record.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/ASSESSMENT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PREDICT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PLAN.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PREDICT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/SCENARIO.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-15-agent-only-composer-drive-surface.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-17-stranded-clip-recovery.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-19-migrated-video-extend-wire.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-20-warm-client-premint-on-about-blank.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-22-playwright-max-retries-econnreset.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-23-about-cta-leads-to-google-reauth.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-27-stealth-fingerprint-delta.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-09-30-migrated-upscale-wire.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-01-batch-ref-dropped.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-01-recaptcha-error-shape.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-06-948-record-slot3-null.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-08-nano-banana-21-replaced-2.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-10-duration-locale-and-notice-only-cookie-bar.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-13-migrated-image-character-mention.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-14-labs-nextauth-silent-refresh.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-17-agent-only-cohort-profiles.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/docs/superpowers/spikes/2026-10-17-migrated-extend-ui-path.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/glama.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/hatch_build.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/index.html +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/mempalace.yaml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/.mcp.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/composition.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_fork_pr_ci.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/generate_plugin_skills.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/ci/update_sponsors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/acceptance/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/acceptance/bench.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/acceptance/domain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/acceptance/judge.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/acceptance/settings.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_948_project_records.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_948_submit_envelope.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_963_duration_locale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_about_cta_recovery.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_confirm_radios.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_only_cohort_profiles.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_only_composer.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_only_video_ready.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_only_video_tile.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_agent_settings_defaults.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_batch_ref_dropped.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_batch_ref_existing_media.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_create_project_401.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_gif_export_delivery.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_host_lane.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_model_attribution.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_submit_references.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_labs_nextauth_refresh.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_mention_existing_media.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_aspect_radios.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_create_project.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_end_frame.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_extend_ui_path.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_refusal_envelope.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_mint_on_about_blank.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_nano_banana_21_wire.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_networkidle_bootstrap_cost.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_offscreen_window.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_picker_chip_removal.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_picker_entity_marker.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_playwright_max_retries.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_project_media_status.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_recaptcha_error_shape.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_recover_stranded_clip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_ref_gate.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_stealth_fingerprint_delta.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_upload_token_join.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_upscale_menu_anchors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_video_workflow_id.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/spike_warm_client_unported_form.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/README.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/spike/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/sonar-project.properties +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/credits.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/migrated_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/migrated_recover.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/migrated_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_docs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/docs_catalog.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/media_recovery.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/_upscale_fakes.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_aisandbox_auth_remediation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_bootstrap_chooser.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_project_host.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_client_window_position.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_credits_http.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_image_capability_and_cookie_bar.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_migrated_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_upload_reference.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/_ogiz0b.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_agent_only_composer.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_click_attribution.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ligature_carrier.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_project.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_r2v.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_recover.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_signed_media_retry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_account_autoselect.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_auth_renew.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_docs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_cli_video_upscale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_docs_catalog_real_docs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/cli/test_video_recording_busy.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/conftest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/data/test_store_transaction_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_agent_only_composer_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_blocking_dialog_dismissal_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_credits_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_credits_refresh_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_data_download_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_frame_picker_binding_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_login_identity_recheck_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_manifest_refs_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_image_character_mention_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_locale_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_refusal_live_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_migrated_upscale_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_project_create_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_recaptcha_error_shape_bdd.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_retired_labs_route_diagnosis_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_t2i_batch_project_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_video_extend_migrated_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/agent_only_composer_live.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/blocking_dialog_dismissal.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/click_attribution.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/credits.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/frame_picker_binding.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/landing_state_diagnosis.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/manifest_refs_live.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_host_images.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_image_character_mention.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_refusal_envelope.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/migrated_refusal_live.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/recaptcha_error_shape.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_e2e_binding_guard.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_migrated_host_images_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_migrated_refusal_envelope_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/test_docs_ships_in_wheel.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_download_error_envelope.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_mcp_profile_contention.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_serve_auth.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/mcp/test_upscale_tool.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_frame_acceptance.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_spike_page_pool.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_update_sponsors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_media_recovery.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_about_landing_guard.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_batch_outcomes.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_batch_recording.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_batch_ref_wiring.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_config.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_config_agent_confirm.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_dockerfile_version_pin.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_glama_build_spec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_manifest_refs.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_media.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_plugin_manifests.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_release_version_sites.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_rich_markup_safety.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_server_json.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/ARCHITECTURE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/SPONSORS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/index.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.86.0 → gflow_cli-0.87.0}/website/requirements.in +0 -0
|
@@ -91,17 +91,17 @@
|
|
|
91
91
|
# Upload generated assets directly to a cloud bucket instead of saving local
|
|
92
92
|
# asset copies. Supported schemes:
|
|
93
93
|
# gs:// – Google Cloud Storage (requires: pip install 'gflow-cli[gcs]')
|
|
94
|
-
# s3:// – Amazon S3 or any S3-compatible store,
|
|
94
|
+
# s3:// – Amazon S3 or any S3-compatible store (RustFS, MinIO, ...)
|
|
95
95
|
# (requires: pip install 'gflow-cli[s3]')
|
|
96
96
|
#
|
|
97
97
|
# Examples:
|
|
98
98
|
# GFLOW_CLI_STORAGE_URI=gs://my-gcs-bucket/gflow/
|
|
99
99
|
# GFLOW_CLI_STORAGE_URI=s3://my-s3-bucket/gflow/
|
|
100
|
-
# GFLOW_CLI_STORAGE_URI=s3://gflow-test/gflow/ #
|
|
100
|
+
# GFLOW_CLI_STORAGE_URI=s3://gflow-test/gflow/ # local docker-compose stack (RustFS)
|
|
101
101
|
#
|
|
102
|
-
# For S3
|
|
103
|
-
# AWS_ACCESS_KEY_ID=
|
|
104
|
-
# AWS_SECRET_ACCESS_KEY=
|
|
102
|
+
# For S3-compatible stores you also need the standard AWS SDK env vars:
|
|
103
|
+
# AWS_ACCESS_KEY_ID=rustfsadmin
|
|
104
|
+
# AWS_SECRET_ACCESS_KEY=rustfsadmin
|
|
105
105
|
# AWS_ENDPOINT_URL=http://localhost:9000 # omit for real AWS
|
|
106
106
|
# AWS_DEFAULT_REGION=us-east-1
|
|
107
107
|
#
|
|
@@ -306,6 +306,40 @@ jobs:
|
|
|
306
306
|
# routine test consolidation.
|
|
307
307
|
run: uv run python scripts/ci/check_test_count.py pytest-lease.xml 10
|
|
308
308
|
|
|
309
|
+
# ── Storage container tests (S3 via RustFS, GCS via fake-gcs-server) ───────
|
|
310
|
+
# Nothing ran `-m containers` before this job, so the pinned MinIO image was
|
|
311
|
+
# deleted from Docker Hub and the S3 tests rotted unnoticed. A registry
|
|
312
|
+
# deletion or a broken backend now turns CI red. The count guard catches the
|
|
313
|
+
# other silent failure: every fixture `importorskip`s, so a missing dependency
|
|
314
|
+
# would skip all 12 tests and still exit 0.
|
|
315
|
+
storage-containers:
|
|
316
|
+
name: Storage container tests
|
|
317
|
+
runs-on: ubuntu-latest
|
|
318
|
+
timeout-minutes: 15
|
|
319
|
+
env:
|
|
320
|
+
PYTHONUTF8: "1"
|
|
321
|
+
steps:
|
|
322
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
323
|
+
with:
|
|
324
|
+
persist-credentials: false
|
|
325
|
+
|
|
326
|
+
- name: Install uv
|
|
327
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
328
|
+
|
|
329
|
+
- name: Set up Python
|
|
330
|
+
run: uv python install 3.13
|
|
331
|
+
|
|
332
|
+
- name: Install deps
|
|
333
|
+
run: uv sync --frozen --group containers
|
|
334
|
+
|
|
335
|
+
- name: Container tests
|
|
336
|
+
run: uv run --no-sync python -m pytest -m containers tests/integration/ -q --junitxml=pytest-containers.xml
|
|
337
|
+
|
|
338
|
+
# 9 S3 (incl. the #1003 migrated-clip upload) + 4 GCS. The expander-gateway
|
|
339
|
+
# tests share the marker but skip without an LLM endpoint; skips do not count.
|
|
340
|
+
- name: Test-count guard (all storage tests executed, none skipped)
|
|
341
|
+
run: uv run --no-sync python scripts/ci/check_test_count.py pytest-containers.xml 13
|
|
342
|
+
|
|
309
343
|
# ── SonarCloud analysis ───────────────────────────────────────────────────
|
|
310
344
|
sonar:
|
|
311
345
|
name: SonarCloud analysis
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
persist-credentials: false
|
|
32
32
|
|
|
33
33
|
- name: Run analysis
|
|
34
|
-
uses: ossf/scorecard-action@
|
|
34
|
+
uses: ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e # v2.5.0
|
|
35
35
|
with:
|
|
36
36
|
results_file: results.sarif
|
|
37
37
|
results_format: sarif
|
|
@@ -47,6 +47,6 @@ jobs:
|
|
|
47
47
|
retention-days: 5
|
|
48
48
|
|
|
49
49
|
- name: Upload to code-scanning
|
|
50
|
-
uses: github/codeql-action/upload-sarif@
|
|
50
|
+
uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4
|
|
51
51
|
with:
|
|
52
52
|
sarif_file: results.sarif
|
|
@@ -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-only unless `--refresh`, which renews expired 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).
|
|
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-only unless `--refresh`, which renews expired sessions first; since 2026-10-22 it cannot read a balance on any account, #795), `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)
|
|
@@ -7,6 +7,140 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.87.0] — 2026-10-22
|
|
11
|
+
|
|
12
|
+
### Security
|
|
13
|
+
|
|
14
|
+
- **Locked `aiohttp` 3.14.5 (CVE-2026-111063, CVE-2026-111064, GHSA-2g87-pp6c-29x5).**
|
|
15
|
+
Transitive only, via the `gcs` (`gcsfs`) and `s3` (`s3fs`/`aiobotocore`) extras; no gflow
|
|
16
|
+
code imports it. `yarl` moved to 1.25.1 with it. The advisories landed after the last
|
|
17
|
+
green CI and turned the `pip-audit` gate red on every open PR.
|
|
18
|
+
- **Pillow 13.0.0 (eight CVEs, CVE-2026-112395 … CVE-2026-112899) and `certifi`
|
|
19
|
+
2026.10.19 (PYSEC-2026-4320).** Pillow is a direct dependency (it writes the seed frame of
|
|
20
|
+
`gflow video chain` and reads image dimensions); its floor is now `>=13.0.0`. `certifi` is
|
|
21
|
+
transitive. Both advisories landed on 2026-10-21 and turned `pip-audit` red on every open PR.
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **flow.google.com: `image i2i --ref <uuid>` references an earlier image of the same
|
|
26
|
+
project in place** ([#995](https://github.com/ffroliva/gflow-cli/issues/995)). When the
|
|
27
|
+
local catalog records the image in the `--project` being generated in (and kept its Flow
|
|
28
|
+
caption), the ref is marked `in_project` and goes through the existing #913 picker path:
|
|
29
|
+
no upload, so a t2i → review → i2i pipeline split across invocations no longer needs
|
|
30
|
+
Flow's upload-terms confirmation. MCP image tasks behave the same (`ref_meta` now carries
|
|
31
|
+
the catalog's `flow_project_id`). Refs from another project, or without a recorded
|
|
32
|
+
caption, still exit 36. Behaviour change: a same-project image deleted in Flow since it
|
|
33
|
+
was catalogued now costs up to ~90 s of grid reloads and exits 32, instead of exiting 36
|
|
34
|
+
at once.
|
|
35
|
+
|
|
36
|
+
- `scripts/dev/cleanup.py` — sweeps what a release or takeover session leaves behind:
|
|
37
|
+
merged worktrees and branches, done `pr-<N>` fetch branches, merged same-repo origin
|
|
38
|
+
branches (`--remote`), stray `.env` copies, old `bt*` pytest basetemps, and dead agentctl
|
|
39
|
+
agents (reported only). Dry run unless `--apply`; never touches the main checkout, a dirty
|
|
40
|
+
worktree, an unmerged branch, `develop` or `main`. The release skill's final report runs it.
|
|
41
|
+
|
|
42
|
+
- **MCP generation results report the catalogued seed** ([#1013](https://github.com/ffroliva/gflow-cli/issues/1013)).
|
|
43
|
+
A completed `gflow_generate_image` / `gflow_generate_video` result now carries `seed`:
|
|
44
|
+
the value catalogued for its `flow_media_id` (`null` when none was recorded) — the MCP
|
|
45
|
+
twin of `gflow image t2i --json`'s `images[].seed`. On the classic image paths that is
|
|
46
|
+
the seed Flow chose; the agentic and agent-only arms observe no seed and record `0`;
|
|
47
|
+
for video it is whatever the CLI recorded from `--seed` (the MCP video tool takes no
|
|
48
|
+
seed, so over MCP it is `null`), never one read back from Flow. Reported by
|
|
49
|
+
@Chapax.
|
|
50
|
+
|
|
51
|
+
### Removed
|
|
52
|
+
|
|
53
|
+
- **Breaking for MCP callers: `gflow_generate_image` no longer takes `seed`**
|
|
54
|
+
([#1013](https://github.com/ffroliva/gflow-cli/issues/1013)). The image request never
|
|
55
|
+
carried it — Flow picks its own seed — yet the tool advertised it "for reproducibility"
|
|
56
|
+
and echoed it back in `params.seed`, so a caller could not tell it was dropped. The CLI's
|
|
57
|
+
`--seed` went from `image t2i` in v0.8.0 for the same reason. The parameter is gone from
|
|
58
|
+
the tool schema; a call that still passes `seed` is not rejected (the MCP server ignores
|
|
59
|
+
unknown arguments) and it is no longer echoed back — read the result's `seed` for the
|
|
60
|
+
value Flow chose (classic image paths). Reported by @Chapax.
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- **`gflow auth login --browser chrome` and `auth status` work again now that labs.google's
|
|
65
|
+
session URL answers HTTP 410 Gone** ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)).
|
|
66
|
+
Since 2026-10-22 every session check reported "Could not verify the Flow session",
|
|
67
|
+
and a first login rolled back its `chrome` marker. On a 410 gflow now verifies the
|
|
68
|
+
session against Google's account page with the profile's own cookies, the check it
|
|
69
|
+
already used for accounts labs never signed in (#791), and a profile with no Google
|
|
70
|
+
sign-in is reported as signed out rather than as a network problem. `auth renew` and
|
|
71
|
+
MCP `gflow_auth_status` use the same check. `gflow credits` still cannot read a balance:
|
|
72
|
+
it needs the labs token that URL no longer issues (#795). A login with bundled Chromium
|
|
73
|
+
(`--browser internal`, or `--browser auto` on a machine without Chrome) still cannot
|
|
74
|
+
finish and waits until its timeout ([#1026](https://github.com/ffroliva/gflow-cli/issues/1026)):
|
|
75
|
+
use `--browser chrome`.
|
|
76
|
+
- **flow.google.com: a run that fails after the submit click no longer invites a second
|
|
77
|
+
billed generation** ([#1010](https://github.com/ffroliva/gflow-cli/issues/1010)).
|
|
78
|
+
When Chrome lost the image submit reply's body, gflow silently submitted the image
|
|
79
|
+
again: one `--count 1` run left two images in the project and reported one. A lost
|
|
80
|
+
video submit reply, or any timeout after the click, was reported as a retryable exit 9
|
|
81
|
+
while Flow had already made and billed the clip. A failure after the click now makes no
|
|
82
|
+
second submit and reports exit 9 with `retryable: false`, a detail that names an
|
|
83
|
+
unreadable reply as unreadable, and a hint to check the project before re-running.
|
|
84
|
+
The image call now runs once on the labs.google composer too, since there gflow drives
|
|
85
|
+
the same browser page: a hiccup before the click is reported instead of retried.
|
|
86
|
+
- On Flow's agent-only composer, an image result's `model_name_type` echoed the requested
|
|
87
|
+
`--model`, so a `--model nano-pro` run that Flow rendered with Nano Banana 2.1 still
|
|
88
|
+
reported `GEM_PIX_2`. Nothing on that composer observes which model rendered, so it is
|
|
89
|
+
now `null`, as on the classic flow.google.com arm since #789. This fixes the attribution
|
|
90
|
+
half of [#1012](https://github.com/ffroliva/gflow-cli/issues/1012) only: the agent can
|
|
91
|
+
still render a model other than the requested one; that is not proven fixed (no
|
|
92
|
+
agent-only profile to test on). Reported by
|
|
93
|
+
@dev1abz.
|
|
94
|
+
|
|
95
|
+
- On flow.google.com, `gflow video upscale` (and its MCP twin) no longer reports a working
|
|
96
|
+
export as failed with `Failed to read a video export response: ... Network.getResponseBody
|
|
97
|
+
... No data found`. The export watcher read every `batchexecute` reply during the export
|
|
98
|
+
and treated any body Chrome had already evicted, usually an unrelated `as29s` poll, as a
|
|
99
|
+
failed export, while the 1080p file was being delivered. An unreadable reply is now
|
|
100
|
+
skipped; a real refusal of the export RPC still fails fast, and an export that never
|
|
101
|
+
arrives still times out. Fixes [#1014](https://github.com/ffroliva/gflow-cli/issues/1014).
|
|
102
|
+
Diagnosed and measured by @buiminhhieu-svg. Live-verified on flow.google.com: 3 of 3
|
|
103
|
+
exports passed, against 2 of 2 failing on the previous `develop`.
|
|
104
|
+
- On flow.google.com, a configured cloud `GFLOW_CLI_STORAGE_URI` (`s3://`, `gs://`) was
|
|
105
|
+
ignored for generated video: both composer arms wrote the clip to local disk while labs
|
|
106
|
+
uploaded it. Fixes [#1003](https://github.com/ffroliva/gflow-cli/issues/1003). Both hosts now
|
|
107
|
+
store a clip through the transport's one writer, so it lands at
|
|
108
|
+
`videos/<YYYY-MM-DD>/<media_id>.mp4` in the bucket on either host, and the result's
|
|
109
|
+
`local_path` is that cloud URI. The `gflow video` commands and MCP video tasks (through
|
|
110
|
+
the worker) share this transport path. Images, `video extend` and upscale already
|
|
111
|
+
honoured the setting on both hosts. A failed store (bad credentials, missing bucket)
|
|
112
|
+
now exits 6 with the media id and the free `gflow data download <media_id>` recovery,
|
|
113
|
+
and the catalog marks the billed clip generated, instead of surfacing a raw storage
|
|
114
|
+
exception. Proven offline and against a RustFS bucket. The paid live run has not been
|
|
115
|
+
done yet.
|
|
116
|
+
|
|
117
|
+
- On flow.google.com, `gflow video t2v`/`i2v`/`r2v` without `--out-dir` saved the clip to
|
|
118
|
+
the root of the working directory instead of the documented `tmp/`, and `gflow video chain`
|
|
119
|
+
saved its links to the working directory instead of `--out-dir` (or the configured output
|
|
120
|
+
directory). Both hosts now share one rule — per-call directory, then the client's output
|
|
121
|
+
directory, then `tmp/` — and the classic and
|
|
122
|
+
agent-only composers no longer fall back to the working directory. Reported by @ziyedbe.
|
|
123
|
+
Fixes #986.
|
|
124
|
+
- **On flow.google.com, the 4th `@` reference no longer lands between the 2nd and 3rd.**
|
|
125
|
+
Before each mention gflow clicked the centre of the prompt box; with three chips on the
|
|
126
|
+
line that centre is chip 2, so reference 4 was inserted behind it and the prompt read
|
|
127
|
+
1, 2, 4, 3 (measured 3/3 at 1280×720). gflow now moves the caret to the end of the prompt
|
|
128
|
+
before every `@` (image references in place, uploaded `--ref` files, and `@Character`
|
|
129
|
+
mentions alike), and a mention that does not land after the chips already there now
|
|
130
|
+
fails with exit 32 before anything is submitted, instead of passing silently. Thanks to
|
|
131
|
+
@Ltwoz for the diagnosis and the fix. Their other symptom — the 4th picker not opening at
|
|
132
|
+
all, on macOS — did not reproduce here and is not claimed fixed.
|
|
133
|
+
([#997](https://github.com/ffroliva/gflow-cli/issues/997))
|
|
134
|
+
- The S3 storage container tests and the `docker-compose.yml` local stack now run
|
|
135
|
+
**RustFS 1.0.3** (pinned by tag and digest) instead of MinIO. MinIO removed its community
|
|
136
|
+
images from Docker Hub in Sep 2026, so the old pin no longer pulled and the S3 tests could
|
|
137
|
+
not start. Nothing ran them, so nobody noticed. A new `Storage container tests` CI job runs
|
|
138
|
+
`pytest -m containers tests/integration/` (S3 via RustFS, GCS via fake-gcs-server) and
|
|
139
|
+
fails if fewer than all 12 storage tests execute. The local-stack credentials are now
|
|
140
|
+
`rustfsadmin`/`rustfsadmin`. Any S3-compatible store, MinIO included, still works as a
|
|
141
|
+
`GFLOW_CLI_STORAGE_URI` target. See
|
|
142
|
+
`docs/superpowers/spikes/2026-10-19-minio-replacement.md`.
|
|
143
|
+
|
|
10
144
|
## [0.86.0] — 2026-10-18
|
|
11
145
|
|
|
12
146
|
### Added
|
|
@@ -6134,7 +6268,8 @@ shell-script template that branches on these codes.
|
|
|
6134
6268
|
|
|
6135
6269
|
First skeleton. Not functional end-to-end yet.
|
|
6136
6270
|
|
|
6137
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
6271
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.87.0...HEAD
|
|
6272
|
+
[0.87.0]: https://github.com/ffroliva/gflow-cli/compare/v0.86.0...v0.87.0
|
|
6138
6273
|
[0.86.0]: https://github.com/ffroliva/gflow-cli/compare/v0.85.0...v0.86.0
|
|
6139
6274
|
[0.85.0]: https://github.com/ffroliva/gflow-cli/compare/v0.84.0...v0.85.0
|
|
6140
6275
|
[0.84.0]: https://github.com/ffroliva/gflow-cli/compare/v0.83.2...v0.84.0
|
|
@@ -47,7 +47,7 @@ close Chrome yourself. On the measured account, `/about` was gone on the next ru
|
|
|
47
47
|
|
|
48
48
|
### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
|
|
49
49
|
|
|
50
|
-
- **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, local-file `gflow image i2i`, and a **single-segment** `gflow video extend` (#882: Flow's own Extend control, driven from the clip editor) now run on the migrated host. Image mode supports Nano Banana 2.1 (`nano2`, which replaced Nano Banana 2 there, #958) / 2 Lite / Pro, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 — 3:4 appeared by 2026-09-17, #864), and count 1–4. Image prompts can tag a **character** with `@Name` / `--reference-entity` + `--reference-entity-name` since #723 (attached through the composer's `@` picker; an id without a name exits 36; video is unchanged). That matrix is the **classic** migrated composer's. On an **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gflow drives `image t2i` (all five aspects; count 1–4) and `video t2v` (one 9:16 or 16:9 clip) only — i2i, i2v, r2v and character references are refused there before anything is clicked. Image refs by UUID, video `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, chained extend (`-n > 1`, `--scene`/`--resume-from`, `--seed`, an `--aspect` other than the source clip's), instructions and tools are not ported yet and fail before submit. **`character create` worked on the migrated host until its labs `createEntity` route was retired:** measured 2026-10-14 on a profile served flow.google.com, it exits 7 with "Flow RPCs have been deprecated" (404). `character list` does NOT: it reads the retired labs `projectInitialData` route and exits 7, measured 2026-09-20 both on `auto` and with `GFLOW_CLI_FLOW_HOST=flow.google.com` (#875). Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, multi-segment `extend` (`-n > 1`, `--scene`/`--resume-from`, `--seed`), `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
|
|
50
|
+
- **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, local-file `gflow image i2i`, and a **single-segment** `gflow video extend` (#882: Flow's own Extend control, driven from the clip editor) now run on the migrated host. Image mode supports Nano Banana 2.1 (`nano2`, which replaced Nano Banana 2 there, #958) / 2 Lite / Pro, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 — 3:4 appeared by 2026-09-17, #864), and count 1–4. Image prompts can tag a **character** with `@Name` / `--reference-entity` + `--reference-entity-name` since #723 (attached through the composer's `@` picker; an id without a name exits 36; video is unchanged). That matrix is the **classic** migrated composer's. On an **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gflow drives `image t2i` (all five aspects; count 1–4) and `video t2v` (one 9:16 or 16:9 clip) only — i2i, i2v, r2v and character references are refused there before anything is clicked. Image refs by UUID (except one the local catalog records in the same `--project`, referenced in place since #995), video `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, chained extend (`-n > 1`, `--scene`/`--resume-from`, `--seed`, an `--aspect` other than the source clip's), instructions and tools are not ported yet and fail before submit. **`character create` worked on the migrated host until its labs `createEntity` route was retired:** measured 2026-10-14 on a profile served flow.google.com, it exits 7 with "Flow RPCs have been deprecated" (404). `character list` does NOT: it reads the retired labs `projectInitialData` route and exits 7, measured 2026-09-20 both on `auto` and with `GFLOW_CLI_FLOW_HOST=flow.google.com` (#875). Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, multi-segment `extend` (`-n > 1`, `--scene`/`--resume-from`, `--seed`), `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
|
|
51
51
|
- **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
|
|
52
52
|
- **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
|
|
53
53
|
- **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
|
|
@@ -745,12 +745,14 @@ When this happens, the next API call returns 401/403 and `gflow-cli` raises `Aut
|
|
|
745
745
|
**Workaround, stale session (the common case):**
|
|
746
746
|
```bash
|
|
747
747
|
gflow auth renew --profile <name> # or: gflow auth renew --all
|
|
748
|
-
gflow credits list --refresh # renews only the expired profiles, then reads them
|
|
749
748
|
```
|
|
750
749
|
|
|
751
|
-
A profile that has just sat unused has
|
|
752
|
-
`auth renew` loads Flow
|
|
753
|
-
|
|
750
|
+
A profile that has just sat unused usually has rotated-out cookies, not a dead Google session.
|
|
751
|
+
`auth renew` loads Flow in a headless browser, which rotates them with no prompt, then verifies
|
|
752
|
+
the result like `auth status`. Its labs.google step (measured 2026-10-14: 7 of 10 stale profiles
|
|
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)), so `credits --refresh`
|
|
755
|
+
cannot bring a balance back either ([#795](https://github.com/ffroliva/gflow-cli/issues/795)).
|
|
754
756
|
|
|
755
757
|
**Workaround, revoked session:**
|
|
756
758
|
```bash
|
|
@@ -869,9 +871,14 @@ A block that survives dismissal now aborts pre-submit with exit 23 (probe `overl
|
|
|
869
871
|
|
|
870
872
|
---
|
|
871
873
|
|
|
872
|
-
### No in-CLI quota visibility —
|
|
874
|
+
### No in-CLI quota visibility — open on every account since 2026-10-22
|
|
873
875
|
|
|
874
|
-
- **Status:**
|
|
876
|
+
- **Status:** **Open** on every account since 2026-10-22 (resolved 2026-09-05 for `labs.google` accounts, until labs' session URL went) · **Tracked:** [#795](https://github.com/ffroliva/gflow-cli/issues/795)
|
|
877
|
+
|
|
878
|
+
**Since 2026-10-22 no account can read a balance.** labs.google's session URL, which minted
|
|
879
|
+
the token below, answers HTTP 410 Gone for everyone
|
|
880
|
+
([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)), so every account now fails the
|
|
881
|
+
first way listed below. The rest of this section is the history of how it got there.
|
|
875
882
|
|
|
876
883
|
Use `gflow credits user` for the selected profile or `gflow credits list` for all saved
|
|
877
884
|
profiles. Both commands query Flow's current read-only credits endpoint with the saved browser
|
|
@@ -1505,7 +1512,7 @@ here, because the run gives up within 30 s (see [CONFIGURATION](docs/CONFIGURATI
|
|
|
1505
1512
|
|
|
1506
1513
|
### Auth verification depends on Google's NextAuth session endpoint
|
|
1507
1514
|
|
|
1508
|
-
- **Status:** Mitigated · **Severity:**
|
|
1515
|
+
- **Status:** Mitigated for real-Chrome profiles; **open** for `gflow credits` and for logins with `--browser internal` · **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)
|
|
1509
1516
|
|
|
1510
1517
|
`gflow auth login` verifies a real Flow sign-in by calling
|
|
1511
1518
|
`https://labs.google/fx/api/auth/session` (see `src/gflow_cli/auth/verification.py`)
|
|
@@ -1518,6 +1525,17 @@ success. The expected authenticated response shape is pinned by the
|
|
|
1518
1525
|
change surfaces there as a failing test. Start any investigation of a sudden
|
|
1519
1526
|
`gflow auth login` verification failure at that fixture and `verification.py`.
|
|
1520
1527
|
|
|
1528
|
+
**Since 2026-10-22 that endpoint answers HTTP 410 Gone** for every account, with or
|
|
1529
|
+
without cookies ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023),
|
|
1530
|
+
[spike](docs/superpowers/spikes/2026-10-22-labs-session-oracle-gone.md)). A 410 is now
|
|
1531
|
+
read as "no labs session": a profile without Google cookies is `NO_SESSION`, and one with
|
|
1532
|
+
them is checked by the server-attested migrated-host probe (#791), which needs the Google
|
|
1533
|
+
SSO and flow.google.com session cookies, then reads `myaccount.google.com`. **Still open:**
|
|
1534
|
+
the access-token consumers that read the same URL are not ported, so `gflow credits`
|
|
1535
|
+
cannot read a balance on any account (#795). And a login with `--browser internal` (bundled
|
|
1536
|
+
Chromium, also what `--browser auto` picks when Chrome is missing) cannot finish: it has no
|
|
1537
|
+
on-disk check to hand the verdict to, so it waits until its timeout. Use `--browser chrome`.
|
|
1538
|
+
|
|
1521
1539
|
Since PR #168 the production entry point is `verify_flow_profile`, which reads
|
|
1522
1540
|
the session cookie **directly from Chrome's SQLite store** via `browser_cookie3`
|
|
1523
1541
|
(a no-browser fast path) and only falls back to launching Playwright when that
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.87.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/
|
|
@@ -67,7 +67,7 @@ Requires-Dist: tenacity>=8.2
|
|
|
67
67
|
Requires-Dist: uvicorn[standard]>=0.34.0
|
|
68
68
|
Provides-Extra: chain
|
|
69
69
|
Requires-Dist: av>=12; extra == 'chain'
|
|
70
|
-
Requires-Dist: pillow>=
|
|
70
|
+
Requires-Dist: pillow>=13.0.0; extra == 'chain'
|
|
71
71
|
Provides-Extra: dev
|
|
72
72
|
Requires-Dist: av>=12; extra == 'dev'
|
|
73
73
|
Requires-Dist: numpy>=1.24; extra == 'dev'
|
|
@@ -75,7 +75,7 @@ Requires-Dist: pyright>=1.1.0; extra == 'dev'
|
|
|
75
75
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
76
76
|
Requires-Dist: pytest-xdist>=3.6; extra == 'dev'
|
|
77
77
|
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
78
|
-
Requires-Dist: ruff==0.17.
|
|
78
|
+
Requires-Dist: ruff==0.17.1; extra == 'dev'
|
|
79
79
|
Provides-Extra: gcs
|
|
80
80
|
Requires-Dist: gcsfs>=2024.2.0; extra == 'gcs'
|
|
81
81
|
Requires-Dist: universal-pathlib>=0.2.5; extra == 'gcs'
|
|
@@ -127,7 +127,7 @@ You have a Google account with Flow access, you have Veo credits, and you run re
|
|
|
127
127
|
- **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
|
|
128
128
|
- **Prompt tools.** `--tool creative-director` rewrites a terse prompt into a vivid one (Google's 5-component formula) before generating — on any command. Bring your own with [My Tools](docs/TOOLS.md).
|
|
129
129
|
- **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
|
|
130
|
-
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs. A stale session renews headlessly with `gflow auth renew
|
|
130
|
+
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs. A stale session renews headlessly with `gflow auth renew`.
|
|
131
131
|
|
|
132
132
|
Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
|
|
133
133
|
|
|
@@ -142,8 +142,9 @@ uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
|
142
142
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
143
143
|
gflow auth login --browser chrome
|
|
144
144
|
|
|
145
|
-
# Check the
|
|
146
|
-
gflow
|
|
145
|
+
# Check the session (no browser, no credits)
|
|
146
|
+
gflow auth status
|
|
147
|
+
# `gflow credits user` cannot read a balance at the moment (#795)
|
|
147
148
|
|
|
148
149
|
# 3 · Generate
|
|
149
150
|
gflow image t2i "a hot air balloon over Tokyo at sunrise"
|
|
@@ -243,7 +244,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
243
244
|
|
|
244
245
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
245
246
|
|
|
246
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, image-to-image from local files, and a single-segment `video extend`. Image generation supports Nano Banana 2.1 (`nano2`, [#958](https://github.com/ffroliva/gflow-cli/issues/958)) / 2 Lite / Pro, the five aspect ratios measured on that host (16:9, 4:3, 1:1, 3:4, 9:16), and counts 1–4; an existing project is required at the transport boundary. Images can tag a character by `@Name` ([#723](https://github.com/ffroliva/gflow-cli/issues/723)). An account served the **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gets text-to-image and text-to-video only. UUID media references, an entity id without a name, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
247
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, image-to-image from local files, and a single-segment `video extend`. Image generation supports Nano Banana 2.1 (`nano2`, [#958](https://github.com/ffroliva/gflow-cli/issues/958)) / 2 Lite / Pro, the five aspect ratios measured on that host (16:9, 4:3, 1:1, 3:4, 9:16), and counts 1–4; an existing project is required at the transport boundary. Images can tag a character by `@Name` ([#723](https://github.com/ffroliva/gflow-cli/issues/723)). An account served the **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gets text-to-image and text-to-video only. An image `--ref <uuid>` is referenced in place when the catalog records it in the same `--project` ([#995](https://github.com/ffroliva/gflow-cli/issues/995)). Other UUID media references, an entity id without a name, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
247
248
|
|
|
248
249
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
249
250
|
|
|
@@ -39,7 +39,7 @@ You have a Google account with Flow access, you have Veo credits, and you run re
|
|
|
39
39
|
- **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
|
|
40
40
|
- **Prompt tools.** `--tool creative-director` rewrites a terse prompt into a vivid one (Google's 5-component formula) before generating — on any command. Bring your own with [My Tools](docs/TOOLS.md).
|
|
41
41
|
- **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
|
|
42
|
-
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs. A stale session renews headlessly with `gflow auth renew
|
|
42
|
+
- **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs. A stale session renews headlessly with `gflow auth renew`.
|
|
43
43
|
|
|
44
44
|
Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
|
|
45
45
|
|
|
@@ -54,8 +54,9 @@ uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
|
54
54
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
55
55
|
gflow auth login --browser chrome
|
|
56
56
|
|
|
57
|
-
# Check the
|
|
58
|
-
gflow
|
|
57
|
+
# Check the session (no browser, no credits)
|
|
58
|
+
gflow auth status
|
|
59
|
+
# `gflow credits user` cannot read a balance at the moment (#795)
|
|
59
60
|
|
|
60
61
|
# 3 · Generate
|
|
61
62
|
gflow image t2i "a hot air balloon over Tokyo at sunrise"
|
|
@@ -155,7 +156,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
155
156
|
|
|
156
157
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
157
158
|
|
|
158
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, image-to-image from local files, and a single-segment `video extend`. Image generation supports Nano Banana 2.1 (`nano2`, [#958](https://github.com/ffroliva/gflow-cli/issues/958)) / 2 Lite / Pro, the five aspect ratios measured on that host (16:9, 4:3, 1:1, 3:4, 9:16), and counts 1–4; an existing project is required at the transport boundary. Images can tag a character by `@Name` ([#723](https://github.com/ffroliva/gflow-cli/issues/723)). An account served the **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gets text-to-image and text-to-video only. UUID media references, an entity id without a name, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
159
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, image-to-image from local files, and a single-segment `video extend`. Image generation supports Nano Banana 2.1 (`nano2`, [#958](https://github.com/ffroliva/gflow-cli/issues/958)) / 2 Lite / Pro, the five aspect ratios measured on that host (16:9, 4:3, 1:1, 3:4, 9:16), and counts 1–4; an existing project is required at the transport boundary. Images can tag a character by `@Name` ([#723](https://github.com/ffroliva/gflow-cli/issues/723)). An account served the **agent-only** composer ([#799](https://github.com/ffroliva/gflow-cli/issues/799)) gets text-to-image and text-to-video only. An image `--ref <uuid>` is referenced in place when the catalog records it in the same `--project` ([#995](https://github.com/ffroliva/gflow-cli/issues/995)). Other UUID media references, an entity id without a name, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
159
160
|
|
|
160
161
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
161
162
|
|
|
@@ -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.87.0
|
|
49
49
|
RUN pip install --no-cache-dir "gflow-cli==${GFLOW_VERSION}"
|
|
50
50
|
|
|
51
51
|
VOLUME ["/data"]
|
|
@@ -3,26 +3,27 @@
|
|
|
3
3
|
# Start: docker compose up -d
|
|
4
4
|
# Stop: docker compose down
|
|
5
5
|
#
|
|
6
|
-
# S3 credentials/bucket:
|
|
6
|
+
# S3 credentials/bucket: rustfsadmin / rustfsadmin → bucket "gflow-test"
|
|
7
7
|
# GCS emulator: set STORAGE_EMULATOR_HOST=http://localhost:4443
|
|
8
8
|
|
|
9
9
|
services:
|
|
10
|
-
# S3-compatible local storage — for testing the [s3] extra without real AWS.
|
|
10
|
+
# S3-compatible local storage (RustFS) — for testing the [s3] extra without real AWS.
|
|
11
|
+
# Replaces MinIO, whose community images were removed from Docker Hub in Sep 2026.
|
|
11
12
|
# Endpoint: http://localhost:9000
|
|
12
13
|
# Console: http://localhost:9001
|
|
13
|
-
|
|
14
|
-
image:
|
|
15
|
-
command: server /data --console-address ":9001"
|
|
14
|
+
rustfs:
|
|
15
|
+
image: rustfs/rustfs:1.0.3@sha256:9ca9559533b537d10482fe923288b676ad08f92a7069d9a17327fbae3cab688b
|
|
16
16
|
ports:
|
|
17
17
|
- "9000:9000"
|
|
18
18
|
- "9001:9001"
|
|
19
19
|
environment:
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY:-rustfsadmin}
|
|
21
|
+
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY:-rustfsadmin}
|
|
22
|
+
RUSTFS_CONSOLE_ENABLE: "true"
|
|
22
23
|
volumes:
|
|
23
|
-
-
|
|
24
|
+
- rustfs_data:/data
|
|
24
25
|
healthcheck:
|
|
25
|
-
test: ["CMD-SHELL", "
|
|
26
|
+
test: ["CMD-SHELL", "curl -fs http://localhost:9000/health || exit 1"]
|
|
26
27
|
interval: 5s
|
|
27
28
|
timeout: 5s
|
|
28
29
|
retries: 5
|
|
@@ -43,5 +44,5 @@ services:
|
|
|
43
44
|
retries: 5
|
|
44
45
|
|
|
45
46
|
volumes:
|
|
46
|
-
|
|
47
|
+
rustfs_data:
|
|
47
48
|
fake_gcs_data:
|
|
@@ -146,6 +146,12 @@ 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
|
+
> **Use `--browser chrome` for now.** Since 2026-10-22 labs.google's session URL answers HTTP
|
|
150
|
+
> 410 ([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)). A real-Chrome login is
|
|
151
|
+
> verified against Google's account page instead; a bundled-Chromium login (`--browser
|
|
152
|
+
> internal`, or `auto` on a machine without Chrome) has no such check yet, so it waits until
|
|
153
|
+
> its timeout ([#1026](https://github.com/ffroliva/gflow-cli/issues/1026)).
|
|
154
|
+
|
|
149
155
|
Re-running this command refreshes an expired session: it reuses the existing profile dir,
|
|
150
156
|
so you typically just have to click "Continue as <you>" on the Google account chooser.
|
|
151
157
|
|
|
@@ -270,8 +276,11 @@ weeks therefore drifts towards an expired session even though nothing about the
|
|
|
270
276
|
`auth renew` opens the profile in a hidden browser and loads Flow. It then loads
|
|
271
277
|
`labs.google/fx/` and waits up to 20 s for the labs app to sign in again on its own: a stale labs
|
|
272
278
|
session reports `ACCESS_TOKEN_REFRESH_NEEDED`, and the page renews it through Google without a
|
|
273
|
-
prompt. This step
|
|
274
|
-
|
|
279
|
+
prompt. This step mattered because `gflow credits` read its token from that labs session; since
|
|
280
|
+
2026-10-22 labs' session URL answers HTTP 410 for every account
|
|
281
|
+
([#1023](https://github.com/ffroliva/gflow-cli/issues/1023)), so the step finds nothing to
|
|
282
|
+
renew and `gflow credits` cannot read a balance ([#795](https://github.com/ffroliva/gflow-cli/issues/795)).
|
|
283
|
+
The browser saves whatever cookies were rotated, and the
|
|
275
284
|
result is verified exactly like `gflow auth status`. It spends no credits.
|
|
276
285
|
|
|
277
286
|
```bash
|
|
@@ -449,16 +458,17 @@ Run: gflow auth login --profile default
|
|
|
449
458
|
Two cases look the same at that point and are fixed differently:
|
|
450
459
|
|
|
451
460
|
- **Stale, not revoked.** This is the common one: the profile has simply not been opened for a
|
|
452
|
-
while. Google's cookies are still good
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
461
|
+
while. Google's cookies are still good but have not been rotated, and only a browser visit
|
|
462
|
+
rotates them. Run [`gflow auth renew`](#gflow-auth-renew). It renews the session headlessly
|
|
463
|
+
with no sign-in. (Until 2026-10-22 this case was labs' lapsed NextAuth token, and
|
|
464
|
+
`gflow credits --refresh` renewed it; labs' session URL is gone now, see #1023.)
|
|
456
465
|
- **Revoked.** A password change, a removed device, or Google asking to "Confirm it's you" cannot
|
|
457
466
|
be renewed from cookies. `auth renew` reports "could not be renewed" (or names Flow's public
|
|
458
467
|
`/about` page). Re-running `gflow auth login` refreshes the cookies in place, and no other state
|
|
459
468
|
is lost.
|
|
460
469
|
|
|
461
|
-
> **Renewal signs in headlessly
|
|
470
|
+
> **Renewal signs in headlessly** (until 2026-10-22; labs' session URL now answers 410, so
|
|
471
|
+
> this step finds nothing to renew). The labs re-sign-in runs Google's OAuth hop in a headless
|
|
462
472
|
> browser, which identifies itself as `HeadlessChrome` (only `navigator.webdriver` is hidden).
|
|
463
473
|
> Generation runs headed by default, so this is the one Google sign-in gflow does headless.
|
|
464
474
|
> It worked on 7 of 7 recoverable profiles on 2026-10-14. If Google ever starts challenging it,
|
|
@@ -103,14 +103,14 @@ Examples:
|
|
|
103
103
|
# Choose one:
|
|
104
104
|
export GFLOW_CLI_STORAGE_URI=gs://my-gcs-bucket/gflow/
|
|
105
105
|
export GFLOW_CLI_STORAGE_URI=s3://my-s3-bucket/gflow/
|
|
106
|
-
export GFLOW_CLI_STORAGE_URI=s3://gflow-test/dev/ #
|
|
106
|
+
export GFLOW_CLI_STORAGE_URI=s3://gflow-test/dev/ # local docker-compose stack (RustFS)
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
S3 and
|
|
109
|
+
S3 and S3-compatible stores use the standard AWS SDK environment variables:
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
export AWS_ACCESS_KEY_ID=
|
|
113
|
-
export AWS_SECRET_ACCESS_KEY=
|
|
112
|
+
export AWS_ACCESS_KEY_ID=rustfsadmin
|
|
113
|
+
export AWS_SECRET_ACCESS_KEY=rustfsadmin
|
|
114
114
|
export AWS_ENDPOINT_URL=http://localhost:9000 # omit for real AWS
|
|
115
115
|
export AWS_DEFAULT_REGION=us-east-1
|
|
116
116
|
```
|
|
@@ -431,7 +431,7 @@ Measurement script: `scripts/dev/spike_offscreen_window.py`.
|
|
|
431
431
|
- `flow.google.com` — force the migrated composer for everything, including what it cannot serve yet (those requests then exit 36/11 instead of falling back).
|
|
432
432
|
- `labs.google` — never use the migrated composer; where Flow serves `flow.google.com`, requests fail with exit 36 (kill switch).
|
|
433
433
|
**Default:** `auto`
|
|
434
|
-
**Scope today:** the migrated composer covers `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i`. Images support Nano Banana 2.1 (`nano2`, #958) / 2 Lite / Pro, all five aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16 — `3:4` was added to that host's radiogroup by 2026-09-17, #864) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. Local-file start+end frames (`--initial-frame` + `--end-frame`) are ported (#639). Image prompts may tag a character with `@Name` (or `--reference-entity` paired with `--reference-entity-name`; an id alone exits 36), attached through the composer's `@` picker (#723). `video extend` is ported for a single segment from a clip (one PROMPT; `-n` > 1, `--scene`/`--resume-from`, `--seed` and an `--aspect` other than the source's exit 36, and `-o` saves the new extension clip only, #882). Frames given by UUID/`@Name`, media references by UUID/`@Name`, character entities on video, Agent instructions, Imagen 4, scenes, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
|
|
434
|
+
**Scope today:** the migrated composer covers `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i`. Images support Nano Banana 2.1 (`nano2`, #958) / 2 Lite / Pro, all five aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16 — `3:4` was added to that host's radiogroup by 2026-09-17, #864) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. Local-file start+end frames (`--initial-frame` + `--end-frame`) are ported (#639). Image prompts may tag a character with `@Name` (or `--reference-entity` paired with `--reference-entity-name`; an id alone exits 36), attached through the composer's `@` picker (#723). `video extend` is ported for a single segment from a clip (one PROMPT; `-n` > 1, `--scene`/`--resume-from`, `--seed` and an `--aspect` other than the source's exit 36, and `-o` saves the new extension clip only, #882). Frames given by UUID/`@Name`, media references by UUID/`@Name` (except an image `--ref <uuid>` the catalog records in the same `--project`, #995), character entities on video, Agent instructions, Imagen 4, scenes, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
|
|
435
435
|
|
|
436
436
|
### `GFLOW_CLI_AGENT_CONFIRM`
|
|
437
437
|
|
|
@@ -258,7 +258,7 @@ First visible-and-clickable wins. Log:
|
|
|
258
258
|
| `AuthBrowserRejectedError` | 14 | Google's sign-in rejected the browser for advertising automation; only the `internal` strategy surfaces it | Re-run `gflow auth login` (default `auto` picks the `chrome` strategy, which retries on a no-automation path) |
|
|
259
259
|
| `AuthLoginTimeoutError` | 12 | User did not finish the OAuth flow in time | Run `gflow auth login` again; raise `GFLOW_CLI_AUTH_LOGIN_TIMEOUT` |
|
|
260
260
|
| `IdentityRecheckPendingError` | 12 | Login ended while Flow was still sending the account to `/about` because Google wants it to "Confirm it's you" (#902) | Run `gflow auth login` again, press the page's main button, and finish Google's check until the Flow app loads |
|
|
261
|
-
| `TransportTimeoutError` | 9 | A single API call exceeded its timeout | Retry; check Flow status |
|
|
261
|
+
| `TransportTimeoutError` | 9 | A single API call exceeded its timeout | Retry; check Flow status. When `retryable` is `false` the submit was already clicked (#1010): check the project in Flow before re-running |
|
|
262
262
|
| `WafRejectionError` | 10 | reCAPTCHA / WAF blocked the request (`PUBLIC_ERROR_UNUSUAL_ACTIVITY`) | Stop on that profile — each rejected request can raise its score. Wait hours or switch profile; see [ACCOUNT_SAFETY § When Google does push back](ACCOUNT_SAFETY.md#when-google-does-push-back) |
|
|
263
263
|
|
|
264
264
|
For health probes from a worker process, use
|
|
@@ -601,6 +601,13 @@ but on the migrated t2v and i2v tests an unset value sends **no** duration, so t
|
|
|
601
601
|
keeps the length it currently holds. Cohorts whose settings pane shows no duration row for the default model
|
|
602
602
|
refuse a forced length with a $0 exit 11 (#650, #948).
|
|
603
603
|
|
|
604
|
+
`tests/e2e/test_video_t2v_e2e.py::test_t2v_on_flow_google_com_uploads_to_the_configured_storage_uri`
|
|
605
|
+
(`e2e_video`, 1 clip, `GFLOW_CLI_E2E_RUN_VIDEO=1`) also needs
|
|
606
|
+
`GFLOW_CLI_E2E_STORAGE_URI`. Point it at a bucket you control, for example
|
|
607
|
+
`s3://gflow-test/gflow/` on the local RustFS stack with `AWS_ENDPOINT_URL`,
|
|
608
|
+
`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` exported. The test checks that a
|
|
609
|
+
flow.google.com clip lands in that bucket (#1003).
|
|
610
|
+
|
|
604
611
|
## See also
|
|
605
612
|
|
|
606
613
|
- [CONTRIBUTING.md § Test categories](../CONTRIBUTING.md#test-categories)
|