gflow-cli 0.66.1__tar.gz → 0.67.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.66.1 → gflow_cli-0.67.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.env.template +8 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/ci.yml +3 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/AGENTS.md +3 -2
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/CHANGELOG.md +147 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/KNOWN_ISSUES.md +93 -36
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/PKG-INFO +3 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/README.md +2 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +25 -0
- {gflow_cli-0.66.1/website → gflow_cli-0.67.0}/docs/ARCHITECTURE.md +2 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/CONFIGURATION.md +10 -0
- {gflow_cli-0.66.1/website → gflow_cli-0.67.0}/docs/E2E_TESTING.md +21 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/INDEX.md +9 -3
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.66.1.md +33 -2
- gflow_cli-0.67.0/docs/LIVE_VERIFICATION_v0.66.2.md +221 -0
- gflow_cli-0.67.0/docs/LIVE_VERIFICATION_v0.66.3.md +97 -0
- gflow_cli-0.67.0/docs/LIVE_VERIFICATION_v0.67.0.md +118 -0
- {gflow_cli-0.66.1/website → gflow_cli-0.67.0}/docs/MCP.md +5 -2
- {gflow_cli-0.66.1/website → gflow_cli-0.67.0}/docs/MOVIE.md +8 -10
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/PROJECT_STATUS.md +174 -54
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/USAGE.md +29 -28
- gflow_cli-0.67.0/docs/superpowers/memory/README.md +43 -0
- gflow_cli-0.67.0/docs/superpowers/memory/agents-md-vs-llms-txt.md +20 -0
- gflow_cli-0.67.0/docs/superpowers/memory/background-e2e-pytest-pattern.md +42 -0
- gflow_cli-0.67.0/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +29 -0
- gflow_cli-0.67.0/docs/superpowers/memory/credit-free-route-abort-verification.md +43 -0
- gflow_cli-0.67.0/docs/superpowers/memory/data-layer-overview.md +17 -0
- gflow_cli-0.67.0/docs/superpowers/memory/data-layer-test-pollution-trap.md +23 -0
- gflow_cli-0.67.0/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +32 -0
- gflow_cli-0.67.0/docs/superpowers/memory/draft-pr-merge-trap.md +32 -0
- gflow_cli-0.67.0/docs/superpowers/memory/exit-code-16-data-store.md +21 -0
- gflow_cli-0.67.0/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +46 -0
- gflow_cli-0.67.0/docs/superpowers/memory/flow-credits-videos-only.md +13 -0
- gflow_cli-0.67.0/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +26 -0
- gflow_cli-0.67.0/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +58 -0
- gflow_cli-0.67.0/docs/superpowers/memory/force-color-breaks-cli-tests.md +29 -0
- gflow_cli-0.67.0/docs/superpowers/memory/full-test-suite-ooms.md +21 -0
- gflow_cli-0.67.0/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +27 -0
- gflow_cli-0.67.0/docs/superpowers/memory/image-video-mode-switch-symmetry.md +15 -0
- gflow_cli-0.67.0/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +35 -0
- gflow_cli-0.67.0/docs/superpowers/memory/memory-is-working-dir-keyed.md +44 -0
- gflow_cli-0.67.0/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +46 -0
- gflow_cli-0.67.0/docs/superpowers/memory/on-started-callback-recorder-safety.md +15 -0
- gflow_cli-0.67.0/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +26 -0
- gflow_cli-0.67.0/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +35 -0
- gflow_cli-0.67.0/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +27 -0
- gflow_cli-0.67.0/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +26 -0
- gflow_cli-0.67.0/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +48 -0
- gflow_cli-0.67.0/docs/superpowers/memory/pypi-readme-staleness-fix.md +31 -0
- gflow_cli-0.67.0/docs/superpowers/memory/pypi-rejected-filename-reusable.md +28 -0
- gflow_cli-0.67.0/docs/superpowers/memory/readme-hybrid-router-pattern.md +26 -0
- gflow_cli-0.67.0/docs/superpowers/memory/real-browser-auth-mandatory.md +10 -0
- gflow_cli-0.67.0/docs/superpowers/memory/release-back-merge-gap-recovery.md +45 -0
- gflow_cli-0.67.0/docs/superpowers/memory/release-signing.md +41 -0
- gflow_cli-0.67.0/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +21 -0
- gflow_cli-0.67.0/docs/superpowers/memory/rest-transports-drop-ui-fields.md +23 -0
- gflow_cli-0.67.0/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +20 -0
- gflow_cli-0.67.0/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +18 -0
- gflow_cli-0.67.0/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +11 -0
- gflow_cli-0.67.0/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +15 -0
- gflow_cli-0.67.0/docs/superpowers/memory/sonarcloud-setup.md +26 -0
- gflow_cli-0.67.0/docs/superpowers/memory/stale-test-discovery.md +17 -0
- gflow_cli-0.67.0/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +17 -0
- gflow_cli-0.67.0/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +18 -0
- gflow_cli-0.67.0/docs/superpowers/memory/verification-ledger-5-layer.md +22 -0
- gflow_cli-0.67.0/docs/superpowers/memory/video-model-capability-matrix.md +148 -0
- gflow_cli-0.67.0/docs/superpowers/memory/wheel-build-sanity-gate.md +25 -0
- gflow_cli-0.67.0/docs/superpowers/memory/windows-dev-quirks.md +37 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +1 -1
- gflow_cli-0.67.0/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +165 -0
- gflow_cli-0.67.0/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +142 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/llms.txt +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/pyproject.toml +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/pr_triage_autopilot.py +105 -6
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/run_sandboxed_review.sh +8 -8
- gflow_cli-0.67.0/scripts/ci/check_council_memory.py +190 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_video_model_capability_matrix.py +72 -11
- gflow_cli-0.67.0/scripts/dev/measure_html_lang_settle.py +81 -0
- gflow_cli-0.67.0/scripts/dev/measure_migrated_host_flip.py +152 -0
- gflow_cli-0.67.0/scripts/dev/spike_migrated_duration_by_model.py +106 -0
- gflow_cli-0.67.0/scripts/dev/spike_migrated_editor_dom_inventory.py +232 -0
- gflow_cli-0.67.0/scripts/dev/spike_migrated_host_trigger.py +183 -0
- gflow_cli-0.67.0/scripts/dev/spike_migrated_submit_capture.py +462 -0
- gflow_cli-0.67.0/scripts/dev/spike_migration_flag_bootstrap.py +256 -0
- gflow_cli-0.67.0/scripts/dev/verify_lang_settle_fix.py +75 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/check/SKILL.md +2 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/gflow-cli/SKILL.md +2 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/pr-council-review/SKILL.md +46 -21
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/client.py +122 -16
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/_common.py +59 -3
- gflow_cli-0.67.0/src/gflow_cli/api/transports/batchexecute.py +185 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/drivers/factory.py +35 -21
- gflow_cli-0.67.0/src/gflow_cli/api/transports/migrated_composer.py +581 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/mode_control.py +11 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/ui_automation.py +3 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/ui_automation_video.py +59 -8
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/video.py +37 -56
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/chain.py +9 -10
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/chain_manifest.py +4 -5
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_movie.py +2 -3
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_video.py +24 -23
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/config.py +11 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/errors.py +31 -24
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/tools.py +30 -20
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/movie_manifest.py +8 -8
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/profile_store.py +5 -3
- gflow_cli-0.67.0/tests/api/test_client_locale_cache.py +441 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_routes_locale.py +25 -5
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_video.py +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_video_request.py +32 -10
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/drivers/test_ui_mode.py +6 -5
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_agentic_cohort_detection.py +9 -4
- gflow_cli-0.67.0/tests/api/transports/test_batchexecute.py +190 -0
- gflow_cli-0.67.0/tests/api/transports/test_migrated_composer.py +762 -0
- gflow_cli-0.67.0/tests/api/transports/test_migrated_dispatch.py +231 -0
- gflow_cli-0.67.0/tests/api/transports/test_migrated_host_gate.py +255 -0
- gflow_cli-0.67.0/tests/api/transports/test_migrated_route.py +69 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/autopilot/test_pr_triage_autopilot.py +231 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_models.py +2 -4
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_video.py +40 -27
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_video_chain.py +7 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_movie_manifest.py +12 -7
- gflow_cli-0.67.0/tests/e2e/test_migrated_host_e2e.py +146 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +1 -1
- gflow_cli-0.67.0/tests/features/latched_locale_recovery.feature +19 -0
- gflow_cli-0.67.0/tests/features/migrated_driver.feature +31 -0
- gflow_cli-0.67.0/tests/features/migrated_host_gate.feature +23 -0
- gflow_cli-0.67.0/tests/features/test_migrated_driver_steps.py +167 -0
- gflow_cli-0.67.0/tests/features/test_migrated_host_gate_steps.py +215 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_server.py +29 -16
- gflow_cli-0.67.0/tests/scripts/test_capture_video_model_capability_matrix.py +117 -0
- gflow_cli-0.67.0/tests/scripts/test_check_council_memory.py +183 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_chain.py +14 -11
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_daemon.py +39 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/uv.lock +1 -1
- {gflow_cli-0.66.1 → gflow_cli-0.67.0/website}/docs/ARCHITECTURE.md +2 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/CONFIGURATION.md +10 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0/website}/docs/E2E_TESTING.md +21 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/KNOWN_ISSUES.md +93 -36
- {gflow_cli-0.66.1 → gflow_cli-0.67.0/website}/docs/MCP.md +5 -2
- {gflow_cli-0.66.1 → gflow_cli-0.67.0/website}/docs/MOVIE.md +8 -10
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/USAGE.md +29 -28
- gflow_cli-0.66.1/tests/api/test_client_locale_cache.py +0 -204
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.gitattributes +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.gitignore +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/.secrets.baseline +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/CLAUDE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/LICENSE +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/RELEASE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/ROADMAP.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docker-compose.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/eval/pr_triage_eval.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/eval/pr_triage_fixtures.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/index.html +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/Dockerfile.triage +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/entrypoint.sh +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/package-lock.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/package.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/autopilot/pr_triage_gate.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/README.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/sonar-project.properties +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_config.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_media.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/AUTHENTICATION.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/index.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/requirements.in +0 -0
- {gflow_cli-0.66.1 → gflow_cli-0.67.0}/website/requirements.txt +0 -0
|
@@ -181,6 +181,14 @@
|
|
|
181
181
|
# reached. -i instructions force agentic automatically. See docs/CONFIGURATION.md.
|
|
182
182
|
# GFLOW_CLI_UI_MODE=auto
|
|
183
183
|
|
|
184
|
+
# Which Flow frontend gflow drives (#639). auto (default): flow.google.com is the
|
|
185
|
+
# default host for what it can serve today (video t2v with --project) on every
|
|
186
|
+
# account; requests it cannot serve yet keep the labs driver on an unmoved
|
|
187
|
+
# account, and a moved account gets the migrated composer for everything ported.
|
|
188
|
+
# flow.google.com: force the migrated composer for everything.
|
|
189
|
+
# labs.google: never use it — a moved account fails with exit 36 (kill switch).
|
|
190
|
+
# GFLOW_CLI_FLOW_HOST=auto
|
|
191
|
+
|
|
184
192
|
# DEPRECATED — use GFLOW_CLI_UI_MODE=classic. true maps to ui_mode=classic, but the
|
|
185
193
|
# old silent agentic fallback is gone: a classic-required run now aborts (exit 28).
|
|
186
194
|
# GFLOW_CLI_PREFER_CLASSIC=false
|
|
@@ -196,6 +196,9 @@ jobs:
|
|
|
196
196
|
- name: Website docs mirror in sync (regenerate-and-diff)
|
|
197
197
|
run: uv run python scripts/ci/generate_website_docs.py --check
|
|
198
198
|
|
|
199
|
+
- name: Council memory (every cited slug resolves, every file is cited)
|
|
200
|
+
run: uv run python scripts/ci/check_council_memory.py
|
|
201
|
+
|
|
199
202
|
- name: Lint
|
|
200
203
|
run: uv run ruff check src tests
|
|
201
204
|
|
|
@@ -41,7 +41,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
41
41
|
|
|
42
42
|
## Project at a glance
|
|
43
43
|
|
|
44
|
-
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com
|
|
44
|
+
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video today; `GFLOW_CLI_FLOW_HOST`).
|
|
45
45
|
- Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
|
|
46
46
|
- Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.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`.
|
|
47
47
|
- Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; 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 doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
@@ -76,6 +76,7 @@ uv run python scripts/ci/check_repo_hygiene.py
|
|
|
76
76
|
uv run python scripts/ci/check_doc_links.py
|
|
77
77
|
uv run python scripts/ci/check_website_docs_pii.py
|
|
78
78
|
uv run python scripts/ci/generate_website_docs.py --check
|
|
79
|
+
uv run python scripts/ci/check_council_memory.py
|
|
79
80
|
uv run ruff check src tests
|
|
80
81
|
uv run ruff format --check src tests
|
|
81
82
|
uv run pyright src
|
|
@@ -101,7 +102,7 @@ the five other mirror axes), which no command here can check and no CI gate can
|
|
|
101
102
|
|
|
102
103
|
- Type hints everywhere; `pyright` strict on `src/gflow_cli`.
|
|
103
104
|
- Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
|
|
104
|
-
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–
|
|
105
|
+
- Errors as RFC 9457 Problem Details with stable per-class exit codes (3–36, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
|
|
105
106
|
- 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
|
|
106
107
|
- **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
|
|
107
108
|
- **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
|
|
@@ -7,6 +7,149 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.67.0] — 2026-09-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Text-to-video on Flow's migrated `flow.google.com` host** (#639). An account
|
|
15
|
+
Google has moved off labs.google no longer exits 36 on `gflow video t2v`: the new
|
|
16
|
+
migrated composer drives the Angular editor (option-group radios, model menu,
|
|
17
|
+
`contenteditable` composer, `arrow_forward` submit) and then *observes* the app's
|
|
18
|
+
own `batchexecute` replies — `YhhmEf` submit, `jwpduf` status, `as29s` result —
|
|
19
|
+
before downloading the clip. Under the default
|
|
20
|
+
`GFLOW_CLI_FLOW_HOST=auto`, flow.google.com is now the **default host for every
|
|
21
|
+
request it can serve** — t2v with `--project`, on moved and unmoved accounts
|
|
22
|
+
alike (the new host serves both); what it cannot serve yet keeps the labs
|
|
23
|
+
driver on an unmoved account. `flow.google.com` forces it for everything,
|
|
24
|
+
`labs.google` is the kill switch. `--project` is required on
|
|
25
|
+
that host for now; everything except t2v still exits 36 there. Recon with two
|
|
26
|
+
real generations: `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Exit 36 (`FlowHostMigratedError`) is no longer retryable** (#639). Two $0 spikes
|
|
31
|
+
settled the mechanism: labs.google serves a normal 200 to a fully authenticated
|
|
32
|
+
session, then the app itself runs `location.replace('https://flow.google.com' +
|
|
33
|
+
path)` from a `useEffect`, gated on a server-assigned per-account config boolean.
|
|
34
|
+
It is a one-way rollout — 5/5 and 7/7 on a flagged account — not the per-page-load
|
|
35
|
+
flap the error text claimed, so once an account is flagged a retry never lands the
|
|
36
|
+
old frontend. The remediation, the `_mode_switch_error` fallback, `docs/USAGE.md`,
|
|
37
|
+
`docs/MCP.md`, `KNOWN_ISSUES.md` and `docs/PROJECT_STATUS.md` no longer invite a
|
|
38
|
+
retry, and the MCP, worker and `--json` envelopes carry `retryable: false`.
|
|
39
|
+
Detection is unchanged from v0.66.2: Playwright updates `page.url` in the same
|
|
40
|
+
tick it emits the hop's `framenavigated`, so re-checking it wherever the run is
|
|
41
|
+
about to spend time — the shape the reporter measured at 4.1 s — was already right
|
|
42
|
+
(maintainer A/B on the same machine and profile: 16.0 s vs 16.6 s on unmodified
|
|
43
|
+
`develop`, Chrome launch included).
|
|
44
|
+
|
|
45
|
+
- **`--duration` now accepts 4s/6s/8s on the Veo 3.1 models** (#650, @stgmt); `10`
|
|
46
|
+
stays `omni-flash`-only. Flow's duration control turns out to be account/cohort-
|
|
47
|
+
dependent — some accounts render the row for Veo, some render none, on the same
|
|
48
|
+
frontend — so the static table that refused it everywhere was wrong for part of
|
|
49
|
+
the userbase. `supports_duration()` is gone; one shared
|
|
50
|
+
`validate_duration_for_model()` now backs the DTO, CLI, chain, movie manifest and
|
|
51
|
+
MCP surfaces. On an account **without** the control the run now reaches the browser
|
|
52
|
+
and aborts pre-submit with no credits spent — exit 23 on the labs driver, exit 11
|
|
53
|
+
on the migrated `flow.google.com` host, where the maintainer cohort renders the
|
|
54
|
+
duration row for Omni 1.1 Flash only (measured 2026-09-05) — instead of refusing
|
|
55
|
+
instantly at the CLI edge — a deliberate trade, since a static per-model table
|
|
56
|
+
cannot express a per-account capability.
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
|
|
60
|
+
- **`--model` on the migrated host selected the model and then lost the settings pane**
|
|
61
|
+
(#665). After the model menu — a second overlay — opened and closed, the driver
|
|
62
|
+
resolved `.cdk-overlay-pane.last` to the detached menu pane, so every axis after the
|
|
63
|
+
switch read "0 option groups". The pane is now the overlay that contains the option
|
|
64
|
+
groups; a regression test keeps a stale menu pane as the last overlay.
|
|
65
|
+
- **MCP `gflow_generate_video` accepted any `duration` when `model` was omitted**
|
|
66
|
+
(#659): `duration=99` queued and burned a browser run. The tool now validates the
|
|
67
|
+
value against the supported set regardless of model, like the CLI's choice list.
|
|
68
|
+
|
|
69
|
+
## [0.66.3] — 2026-09-03
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- **`<html lang>` was read before the app set it, so every account whose URL could not answer
|
|
74
|
+
resolved to `en` ([#651](https://github.com/ffroliva/gflow-cli/issues/651)).** Flow serves an
|
|
75
|
+
**`en` shell** and rewrites `lang` during hydration. The single early read added by
|
|
76
|
+
[#643](https://github.com/ffroliva/gflow-cli/issues/643) therefore returned the shell value —
|
|
77
|
+
and the accounts it hit are exactly the ones #643 was written for: those where the URL carries
|
|
78
|
+
no locale segment. Reported by
|
|
79
|
+
[@maipmacrothorax-75](https://github.com/maipmacrothorax-75) on a pt-BR account resolving `en`
|
|
80
|
+
while both pages served `<html lang="pt">`, with the mechanism offered explicitly as a guess.
|
|
81
|
+
|
|
82
|
+
The guess is confirmed, and it reproduces on the **old** host — so this was never a migration
|
|
83
|
+
bug. Measured on a pt account, two consecutive loads:
|
|
84
|
+
|
|
85
|
+
| t (ms) | `lang` | `readyState` |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| 887 | `en` | interactive |
|
|
88
|
+
| **1510** | `en` | **complete** |
|
|
89
|
+
| 2092 | `en` | complete |
|
|
90
|
+
| **2488** | **`pt`** | complete |
|
|
91
|
+
|
|
92
|
+
**`readyState` is not a usable signal** — it reaches `complete` a full second *before* the
|
|
93
|
+
flip, so the obvious "wait for complete, then read" would have shipped the same bug with more
|
|
94
|
+
code. The DOM node count oscillates (136 → 300 → 249 → 251) and does not discriminate either.
|
|
95
|
+
Nothing cheap predicts the flip, so `_resolve_account_locale` now **observes** it: read once,
|
|
96
|
+
bounded-wait for the value to change, re-read.
|
|
97
|
+
|
|
98
|
+
A timeout is an **answer**, not a failure — either the account's locale genuinely equals the
|
|
99
|
+
shell default, or the page never hydrated in the window. Both leave the first read as the best
|
|
100
|
+
available answer, which is exactly the previous behaviour, so the branch can never be worse
|
|
101
|
+
than what it replaces. It is logged as `client.account_locale_lang_unchanged` so the field can
|
|
102
|
+
tell the two apart. Cost: an account whose locale **is** the shell default pays the 4 s bound
|
|
103
|
+
once per process.
|
|
104
|
+
|
|
105
|
+
## [0.66.2] — 2026-09-03
|
|
106
|
+
|
|
107
|
+
### Fixed
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
- **v0.66.1's migrated-origin fast-fail never fired on a real run
|
|
111
|
+
([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** The guard read `page.url` once,
|
|
112
|
+
at `get_ui_driver` entry — but `routes.project_editor_url` only ever builds a `labs.google`
|
|
113
|
+
URL and the hop to `flow.google.com` is a *post-`goto`* redirect that neither settle path
|
|
114
|
+
waits for (no locale → `_settle_if_redirecting` returns immediately; a known locale →
|
|
115
|
+
`await_url_settled` short-circuits because the labs URL already matches the localised shape).
|
|
116
|
+
So the guard classified a pre-redirect URL, declined, and the run paid ~54 s before failing
|
|
117
|
+
anyway through the slow selector-probe path. Measured by the reporter on three consecutive
|
|
118
|
+
v0.66.1 runs: **57.0 / 57.1 / 58.3 s**, with `ui_driver.migrated_host_bail` absent from the
|
|
119
|
+
timeline entirely. The host check is now a shared `raise_if_migrated` helper called at the
|
|
120
|
+
three points the run is *about to spend time* — `get_ui_driver` entry, each `detect_ui_mode`
|
|
121
|
+
poll tick, and `_exit_agent_mode` once the media panel is found absent — so it adds no wait
|
|
122
|
+
and no navigation to the old host, and aborts as soon as the redirect is observable. The
|
|
123
|
+
event now names its call site, so the fast path is visible in a field timeline instead of
|
|
124
|
+
inferred. Two blanket `except Exception` handlers that would have demoted the abort to a
|
|
125
|
+
warning now re-raise it.
|
|
126
|
+
|
|
127
|
+
- **A `NOT_REDIRECTED` locale cache was an absorbing state, which made the #643 `<html lang>`
|
|
128
|
+
recovery unreachable on exactly the profiles that needed it
|
|
129
|
+
([#643](https://github.com/ffroliva/gflow-cli/issues/643)).** `_bootstrap_and_resolve_locale`
|
|
130
|
+
returned *before* `_resolve_account_locale` — the only site of that recovery and the only
|
|
131
|
+
caller of `next_locale_state` — so nothing could ever move a latched profile off the state.
|
|
132
|
+
Every profile that saw two migrated loads on ≤0.66.0 latched this way. `NOT_REDIRECTED` now
|
|
133
|
+
skips the settle only, and still reads the locale: measured 56/56 on a latched profile whose
|
|
134
|
+
page declares `lang="en"` on every load. The 4 s settle stays skipped — deleting the early
|
|
135
|
+
return outright was rejected, because on that account the cached "not redirected" is a true
|
|
136
|
+
observation.
|
|
137
|
+
|
|
138
|
+
- **A `<html lang>` locale was treated as evidence that Flow redirects the account, which
|
|
139
|
+
switched the URL settle back on permanently ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).**
|
|
140
|
+
Shipped in v0.66.1 and present on `develop`: #643's `<html lang>` fallback returns a segment for
|
|
141
|
+
an account Flow serves **bare** and never redirects, and `next_locale_state` recorded it as the
|
|
142
|
+
cached state. Every later bootstrap then saw `cached != NOT_REDIRECTED`, settled, and burned the
|
|
143
|
+
full 4 s `URL_SETTLE_TIMEOUT_MS` waiting for a redirect that never comes — the exact cost #587
|
|
144
|
+
exists to remove, on any non-redirecting account with a `lang` attribute. Only a **URL-derived**
|
|
145
|
+
segment is now folded into that cache; the lang-derived one is used in-process to build URLs and
|
|
146
|
+
never persisted. Measured on a real profile: warm bootstrap **7.41 s → 2.66 s**, with the locale
|
|
147
|
+
still recovered.
|
|
148
|
+
|
|
149
|
+
- **`docs/MCP.md`'s retryable-class list was incomplete**, which would have told an MCP agent not
|
|
150
|
+
to auto-retry failures the envelope marks `retryable: true`. It omitted `FlowHostMigratedError`,
|
|
151
|
+
`UiModeUnavailableError` and `SyncPartialError`; it now matches `errors.RETRYABLE_ERRORS`.
|
|
152
|
+
|
|
10
153
|
## [0.66.1] — 2026-09-03
|
|
11
154
|
|
|
12
155
|
### Fixed
|
|
@@ -3737,7 +3880,10 @@ shell-script template that branches on these codes.
|
|
|
3737
3880
|
|
|
3738
3881
|
First skeleton. Not functional end-to-end yet.
|
|
3739
3882
|
|
|
3740
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
3883
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...HEAD
|
|
3884
|
+
[0.67.0]: https://github.com/ffroliva/gflow-cli/compare/v0.66.3...v0.67.0
|
|
3885
|
+
[0.66.3]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...v0.66.3
|
|
3886
|
+
[0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
|
|
3741
3887
|
[0.66.1]: https://github.com/ffroliva/gflow-cli/compare/v0.66.0...v0.66.1
|
|
3742
3888
|
[0.66.0]: https://github.com/ffroliva/gflow-cli/compare/v0.65.0...v0.66.0
|
|
3743
3889
|
[0.65.0]: https://github.com/ffroliva/gflow-cli/compare/v0.64.0...v0.65.0
|
|
@@ -14,9 +14,9 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
|
|
|
14
14
|
|
|
15
15
|
## Open
|
|
16
16
|
|
|
17
|
-
### Flow is migrating to `flow.google.com`; the migrated frontend
|
|
17
|
+
### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v (rest of the matrix pending)
|
|
18
18
|
|
|
19
|
-
- **Status:** Open · **Severity:** High
|
|
19
|
+
- **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v` now runs on the migrated host (with `--project`); `image`, i2v/r2v, characters, scenes, extend, instructions and tools are not ported yet and still exit 36
|
|
20
20
|
- **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
|
|
21
21
|
- **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.
|
|
22
22
|
|
|
@@ -27,9 +27,10 @@ contains **zero `<i>` elements**. Every gflow selector anchors on Material
|
|
|
27
27
|
Symbols ligatures (`i.google-symbols:text-is(...)`), so cohort detection and
|
|
28
28
|
every mode control miss at once.
|
|
29
29
|
|
|
30
|
-
**
|
|
31
|
-
on the old host on one navigation and the migrated one on the
|
|
32
|
-
|
|
30
|
+
**v0.66.0 read the rollout as flapping per page load** — the same account, profile
|
|
31
|
+
and project landing on the old host on one navigation and the migrated one on the
|
|
32
|
+
next, minutes apart. Those two captures straddled the account's one-time switch
|
|
33
|
+
(see the 2026-09-04 note under Workaround). Measured on one account ~35 minutes apart:
|
|
33
34
|
|
|
34
35
|
```
|
|
35
36
|
old host labs.google/fx/<locale>/tools/flow/... i=55 i.google-symbols=49 crop_* present -> exit 0
|
|
@@ -44,19 +45,47 @@ This is **not** selector rot, not [#493](https://github.com/ffroliva/gflow-cli/i
|
|
|
44
45
|
and not the agentic cohort — the agentic indicators are absent too. It is a
|
|
45
46
|
different origin serving different markup.
|
|
46
47
|
|
|
47
|
-
**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
**What works now — text-to-video on the migrated host.** `gflow video t2v … --project <id>`
|
|
49
|
+
drives the migrated editor directly (settings through its option groups, prompt,
|
|
50
|
+
submit, then it observes the app's own `batchexecute` status replies and downloads
|
|
51
|
+
the clip). Two real clips were generated this way on 2026-09-05 — spike
|
|
52
|
+
`docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`. Routing
|
|
53
|
+
(`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
|
|
54
|
+
command on every account — moved or not; `flow.google.com` forces it for
|
|
55
|
+
everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
|
|
56
|
+
migrated editor is not ported), and only `t2v` — everything else still exits 36.
|
|
57
|
+
|
|
58
|
+
**Workaround for the rest:** none client-side. The handoff
|
|
59
|
+
is a per-account setting the labs.google app applies on every load (measured
|
|
60
|
+
5/5 and 7/7 with no flap, 2026-09-04 — spike
|
|
61
|
+
`docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md`), so
|
|
62
|
+
once the account is flagged, re-running will not land the old frontend. Earlier text here said the rollout
|
|
63
|
+
"flaps" and told you to retry; that observation straddled the account's one-time
|
|
64
|
+
switch and is withdrawn. The REST surface (`gflow project list`, `gflow data …`)
|
|
65
|
+
is unaffected. Automated callers now receive `retryable: false` so retry loops
|
|
66
|
+
stop instead of burning a doomed attempt each time.
|
|
67
|
+
|
|
68
|
+
**What gflow does today for the rest of the matrix:** recognises the migrated
|
|
69
|
+
origin — `page.url` is re-checked at every point the run is about to spend time,
|
|
70
|
+
which Playwright updates in the same tick as the hand-off navigation — and fails
|
|
71
|
+
with the distinct, non-retryable exit 36 instead of the misleading
|
|
55
72
|
`UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
|
|
56
73
|
accepts the migrated host, so a migrated load is no longer misread as a
|
|
57
|
-
logged-out session.
|
|
58
|
-
|
|
59
|
-
|
|
74
|
+
logged-out session. Text-to-video is driven (above); image, i2v/r2v, characters,
|
|
75
|
+
scenes, extend, instructions, tools and project creation are the remaining work
|
|
76
|
+
tracked here — no retry helps for those until each is ported.
|
|
77
|
+
|
|
78
|
+
> **v0.66.1's fast-fail did not fire in the field, and v0.66.2 is the correction.**
|
|
79
|
+
> The guard read `page.url` once, at `get_ui_driver` entry — before the hop to
|
|
80
|
+
> `flow.google.com` had landed, because `project_editor_url` only builds
|
|
81
|
+
> `labs.google` URLs and the redirect arrives *after* `page.goto` returns.
|
|
82
|
+
> Measured by the reporter on three consecutive v0.66.1 runs: exit 36 at **57.0 /
|
|
83
|
+
> 57.1 / 58.3 s**, through the slow selector-probe path. v0.66.2 re-checks the host
|
|
84
|
+
> at the points the run already blocks, so the abort costs the old host nothing and
|
|
85
|
+
> lands as soon as the redirect is observable. The same release stops a
|
|
86
|
+
> `NOT_REDIRECTED` locale cache from disabling the `<html lang>` recovery (#643),
|
|
87
|
+
> which had made that state unrecoverable on exactly the profiles it was written
|
|
88
|
+
> for.
|
|
60
89
|
|
|
61
90
|
---
|
|
62
91
|
|
|
@@ -255,31 +284,59 @@ listing endpoint (privacy-gated to `store` history mode), and `gflow doctor`
|
|
|
255
284
|
(#542) surfaces the affected-row count. Freshly generated rows whose caption
|
|
256
285
|
has not landed yet stay nameless until the next sync sweep.
|
|
257
286
|
|
|
258
|
-
### Video duration
|
|
259
|
-
|
|
260
|
-
- **Status:**
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
**Workaround:** omit `--duration`
|
|
287
|
+
### Video duration control is absent on some account cohorts
|
|
288
|
+
|
|
289
|
+
- **Status:** Mitigated — fail-fast shipped in
|
|
290
|
+
[#289](https://github.com/ffroliva/gflow-cli/pull/289).
|
|
291
|
+
[#288](https://github.com/ffroliva/gflow-cli/issues/288) and
|
|
292
|
+
[#451](https://github.com/ffroliva/gflow-cli/issues/451) are closed; the
|
|
293
|
+
Flow-side behaviour is unresolved and untracked upstream. gflow's own static
|
|
294
|
+
gate was relaxed in [#650](https://github.com/ffroliva/gflow-cli/pull/650).
|
|
295
|
+
- **Severity:** Medium · **Affected:** `gflow video` with an explicit
|
|
296
|
+
`--duration` (3/3 miss on a live 2026-07-11 run; re-confirmed by a $0
|
|
297
|
+
capability capture 2026-09-03)
|
|
298
|
+
|
|
299
|
+
**Workaround:** omit `--duration` and accept Flow's default clip length.
|
|
300
|
+
|
|
301
|
+
**What actually happens today.** gflow accepts `--duration 4`, `6` or `8` on the
|
|
302
|
+
Veo 3.1 models and `10` on `omni-flash` only — the CLI no longer refuses a
|
|
303
|
+
duration it cannot know your account supports. What it still cannot do is tell
|
|
304
|
+
your cohort apart before opening the browser, so on an account that renders no
|
|
305
|
+
duration row the run reaches Flow's settings popover and fails there — on the
|
|
306
|
+
labs driver as `UiSelectorDriftError` (exit 23) with a `debug_no_duration_tab.png`
|
|
307
|
+
screenshot, on the migrated `flow.google.com` host as `ConfigurationError` (exit 11)
|
|
308
|
+
naming the duration axis (the maintainer cohort renders the row for Omni 1.1 Flash
|
|
309
|
+
only there, measured 2026-09-05).
|
|
310
|
+
That abort is **pre-submit**, so no credits are spent — live-verified 2026-07-11
|
|
311
|
+
on the denon82 profile.
|
|
271
312
|
|
|
272
313
|
**Root cause (confirmed live 2026-07-11, screenshot evidence on #288): the
|
|
273
314
|
duration control is ABSENT from this cohort's settings popover** — the panel
|
|
274
315
|
renders mode tabs (Imagem/Video), sub-mode (Frames/Elementos), aspect
|
|
275
316
|
(9:16/16:9), count (1x–x4; labels renamed to xN since — see #404), and the
|
|
276
|
-
model dropdown (Veo 3.1 - Lite), and
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
317
|
+
model dropdown (Veo 3.1 - Lite), and nothing else. The earlier locale hypothesis
|
|
318
|
+
is refuted: the UI renders in Portuguese and the sibling count tabs (`1x`/`x2`)
|
|
319
|
+
match fine; there is simply no duration row to click.
|
|
320
|
+
|
|
321
|
+
**Updated 2026-09-04 — it is a cohort difference, not a removal.** A third
|
|
322
|
+
profile on the *same* `labs.google` frontend renders `4s/6s/8s` on all three
|
|
323
|
+
selectable Veo 3.1 models, at different credit prices, in a credit-free capture
|
|
324
|
+
whose count tabs came back on every model. (`veo_3_1_lite_lower_priority` missed
|
|
325
|
+
its picker, so it is unmeasured either way.) Some accounts have the control, some
|
|
326
|
+
do not; the cohort key — region, account age, experiment bucket — is unknown.
|
|
327
|
+
|
|
328
|
+
Because the gate is a static per-model table rather than a read of your session,
|
|
329
|
+
gflow cannot express that difference: it now allows `4/6/8` on every Veo 3.1
|
|
330
|
+
model, and an account without the control discovers this in the browser rather
|
|
331
|
+
than at the CLI edge. Trading an instant, wrong rejection for a slower, correct
|
|
332
|
+
attempt was the deliberate call in #650. A session-level capability probe would
|
|
333
|
+
remove the trade entirely and nobody has written one.
|
|
334
|
+
|
|
335
|
+
**Reporting.** If Flow's UI shows a duration row for a Veo model on your account,
|
|
336
|
+
that is useful — it narrows the cohort key. Attach the exact `--model` /
|
|
337
|
+
`--duration` invocation and the error text; a `--model omni-flash` run
|
|
338
|
+
additionally yields the probe name and `debug_no_duration_tab.png`. No tokens or
|
|
339
|
+
signed URLs.
|
|
283
340
|
|
|
284
341
|
### macOS: generation runs logged-out → HTTP 401, even with `--browser chrome`
|
|
285
342
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.67.0
|
|
4
4
|
Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
|
|
@@ -194,6 +194,8 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
194
194
|
|
|
195
195
|
**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).
|
|
196
196
|
|
|
197
|
+
**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`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
198
|
+
|
|
197
199
|
**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.
|
|
198
200
|
|
|
199
201
|
**How you can help:** if you have driven `aisandbox-pa.googleapis.com` from outside a real Chrome session, or you understand Google's anti-bot stack here, please open an issue. A working REST transport would unlock serverless deployments, true horizontal concurrency, and roughly 10x the project's reach. Details: [docs/ARCHITECTURE.md § Headed-browser dependency](docs/ARCHITECTURE.md#headed-browser-dependency--current-limitation).
|
|
@@ -123,6 +123,8 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
123
123
|
|
|
124
124
|
**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).
|
|
125
125
|
|
|
126
|
+
**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`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
127
|
+
|
|
126
128
|
**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.
|
|
127
129
|
|
|
128
130
|
**How you can help:** if you have driven `aisandbox-pa.googleapis.com` from outside a real Chrome session, or you understand Google's anti-bot stack here, please open an issue. A working REST transport would unlock serverless deployments, true horizontal concurrency, and roughly 10x the project's reach. Details: [docs/ARCHITECTURE.md § Headed-browser dependency](docs/ARCHITECTURE.md#headed-browser-dependency--current-limitation).
|
|
@@ -44,6 +44,31 @@ An **empty** directory is a valid deployment — D5 then reports that no memory
|
|
|
44
44
|
>
|
|
45
45
|
> The orchestrator validates the resolved path on the host and refuses to start with an actionable error if it is missing, rather than failing later inside the container.
|
|
46
46
|
|
|
47
|
+
> **The memory namespace is NOT synced to this host, and that is currently the
|
|
48
|
+
> autopilot's biggest blind spot.** Claude Code keys memory by working-directory
|
|
49
|
+
> path, not repo identity, so `/opt/gflow-cli` starts empty — see
|
|
50
|
+
> `docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md` (the one-way
|
|
51
|
+
> local-to-VPS sync it describes was never implemented). The orchestrator now logs
|
|
52
|
+
> a warning when the resolved directory holds no `*.md`, and D5 must report
|
|
53
|
+
> `UNAVAILABLE` rather than GREEN. On PR #650 it reported "no memory entry
|
|
54
|
+
> contradicts this PR" from an empty mount while the local store recorded that
|
|
55
|
+
> exact PR as REJECTED. Until a sync exists, read every autonomous D5 verdict as
|
|
56
|
+
> "not checked".
|
|
57
|
+
|
|
58
|
+
## 2b. What lands in the public PR comment
|
|
59
|
+
|
|
60
|
+
The container's stdout is **sliced** before posting: from the first `# PR #`
|
|
61
|
+
heading to the line before `SUMMARY_VERDICT:`. Everything else — the wrapper's
|
|
62
|
+
Docker/iptables progress, the agent's preamble, the machine marker — is dropped.
|
|
63
|
+
The wrapper logs operationally to **stderr**, which the orchestrator keeps for
|
|
64
|
+
`RuntimeError` context and the log file but never posts. Both halves exist
|
|
65
|
+
because a triage comment on PR #650 published the build steps, a raw Docker
|
|
66
|
+
network id, and the bridge subnet to an external contributor.
|
|
67
|
+
|
|
68
|
+
Adding a new operational `echo` to `run_sandboxed_review.sh`? Send it to `>&2`.
|
|
69
|
+
Anything on stdout outside the two markers is silently discarded from the
|
|
70
|
+
comment; anything between them is published verbatim.
|
|
71
|
+
|
|
47
72
|
---
|
|
48
73
|
|
|
49
74
|
## 3. Ephemeral Sandbox Firewall Hardening
|
|
@@ -435,6 +435,8 @@ We attempted three pure-HTTP transport strategies before settling on `ui_automat
|
|
|
435
435
|
|
|
436
436
|
All three now live as standalone modules under `src/gflow_cli/api/transports/experimental/` (`evaluate_fetch.py` / `bearer.py` / `sapisidhash.py`), preserved for reference and future iteration. None survives Google's anti-bot stack for mutation/generation endpoints, so the production path is `ui_automation`.
|
|
437
437
|
|
|
438
|
+
**The migrated `flow.google.com` host (#639, v0.67.0).** Google is moving accounts off `labs.google` onto `flow.google.com`, a rewritten frontend with a different widget toolkit and a `batchexecute` wire instead of `aisandbox-pa` REST. `src/gflow_cli/api/transports/migrated_composer.py` drives that editor for text-to-video — still through the same real-Chrome Playwright session — by operating the composer UI and then *observing* the app's own `batchexecute` replies (`YhhmEf` submit, `jwpduf` status, `as29s` result) before downloading the clip. `GFLOW_CLI_FLOW_HOST` routes between the two (`auto` = migrated host for every request it can serve, `--project` required there); the rest of the command matrix keeps `ui_automation` on unmoved accounts and exits 36 on moved ones. Recon: `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`.
|
|
439
|
+
|
|
438
440
|
**Standalone-only transports.** `bearer` and `sapisidhash` discard any caller-supplied Playwright page and launch their own browser under a fresh `ProfileLease`, so they are **standalone-only** — they cannot run inside a `FlowApiClient` that already holds the profile lease (the second acquire would self-lock with `ProfileLockedError`). Selecting either via `GFLOW_CLI_TRANSPORT` (or the Python API) while the client owns the profile now fails fast with a clear `ConfigurationError` naming the transport, rather than the opaque lock error. `evaluate_fetch` is exempt: it reuses the client's shared page and takes no second lease. The standalone-only set lives in `STANDALONE_ONLY_TRANSPORTS` (`api/transports/__init__.py`); to drive `bearer`/`sapisidhash`, run them outside an owning client.
|
|
439
441
|
|
|
440
442
|
### What this costs users
|
|
@@ -356,6 +356,16 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
|
|
|
356
356
|
**Video commands:** `gflow video t2v`/`i2v` joined the policy in [#299](https://github.com/ffroliva/gflow-cli/issues/299) PR-A. The video pipeline only has a classic driver, so `auto` ≡ `classic` there: both verify the classic editor pre-submit and abort with exit 28 if it is unreachable. An env-sourced `agentic` **degrades to classic with a logged warning** (so a value set for image workflows can't hard-fail your video runs); only an explicit agentic *request* errors — the `--ui-mode agentic` flag immediately at the CLI edge (exit 2), or the MCP `ui_mode="agentic"` param with a 400 envelope — because no agentic video driver exists yet. `video r2v` and `video chain` have no flag and follow the env-only path.
|
|
357
357
|
**Supersedes:** `GFLOW_CLI_PREFER_CLASSIC` and `GFLOW_CLI_FORCE_AGENT_UI` (below).
|
|
358
358
|
|
|
359
|
+
### `GFLOW_CLI_FLOW_HOST`
|
|
360
|
+
|
|
361
|
+
**What:** Which Flow frontend gflow drives. Google is moving accounts from `labs.google/fx/tools/flow` onto `flow.google.com` one at a time ([#639](https://github.com/ffroliva/gflow-cli/issues/639)); the two are the same product on different widget toolkits and different wire protocols, so each has its own driver.
|
|
362
|
+
**Values:**
|
|
363
|
+
- `auto` (default) — **`flow.google.com` is the default host for every request it can serve today** (`video t2v` with `--project`), on moved and unmoved accounts alike — the new host serves both. A request the new host cannot serve yet keeps the labs driver on an unmoved account; a moved account has no labs to fall back to: other modes exit 36, a missing `--project` or a labs-only model exit 11.
|
|
364
|
+
- `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).
|
|
365
|
+
- `labs.google` — never use the migrated composer; a moved account fails with exit 36 (kill switch).
|
|
366
|
+
**Default:** `auto`
|
|
367
|
+
**Scope today:** the migrated composer covers `gflow video t2v` with `--project <id>` (settings via the option groups, model picker, submit, status observed on the page's own `batchexecute` replies, download from the signed CDN URL). Image, i2v/r2v, characters, scenes, extend, instructions and tools are not ported yet and exit 36 on a moved account. MCP inherits the setting from the server/daemon environment, not per call.
|
|
368
|
+
|
|
359
369
|
### `GFLOW_CLI_PREFER_CLASSIC` *(deprecated — use `GFLOW_CLI_UI_MODE=classic`)*
|
|
360
370
|
|
|
361
371
|
**Deprecated** in favor of [`GFLOW_CLI_UI_MODE`](#gflow_cli_ui_mode). `true` now maps to `ui_mode=classic` (emits a `DeprecationWarning`). **Behavior change:** the old silent fallback to agentic when the toggle was unavailable is gone — a classic-required run now **aborts with exit 28** instead of producing an agentic-cohort result. `GFLOW_CLI_UI_MODE` (and `--ui-mode`) take precedence when both are set.
|
|
@@ -452,6 +452,27 @@ This work is tracked in the project backlog.
|
|
|
452
452
|
|
|
453
453
|
---
|
|
454
454
|
|
|
455
|
+
## Migrated host (`flow.google.com`) — `tests/e2e/test_migrated_host_e2e.py`
|
|
456
|
+
|
|
457
|
+
Google is moving accounts onto `flow.google.com` (#639). Under the default
|
|
458
|
+
`GFLOW_CLI_FLOW_HOST=auto` every `video t2v` with an existing project runs on the
|
|
459
|
+
new host, on moved and unmoved accounts alike, so these tests hold for any
|
|
460
|
+
logged-in profile. They need a project id on that host:
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
GFLOW_CLI_E2E_PROFILE=<profile> GFLOW_CLI_E2E_PROJECT=<project-uuid> \
|
|
464
|
+
uv run pytest -m e2e tests/e2e/test_migrated_host_e2e.py -v
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
| Test | Marker | Cost | Proves |
|
|
468
|
+
|---|---|---|---|
|
|
469
|
+
| `test_e2e_migrated_host_serves_this_account` | `e2e_auth` | 0 | a direct load of `flow.google.com/project/<id>` renders the migrated editor for this account |
|
|
470
|
+
| `test_e2e_kill_switch_keeps_exit_36_on_a_moved_account` | `e2e_auth` | 0 | `GFLOW_CLI_FLOW_HOST=labs.google` still yields the distinct exit 36 on a moved account (skips on an unmoved one) |
|
|
471
|
+
| `test_e2e_t2v_runs_on_flow_google_com_by_default` | `e2e_video` | 1 clip (12 credits measured) | `migrated.dispatch` → `submit_observed` → `result`, a real mp4 (`ftyp`), recorder-visible ids |
|
|
472
|
+
|
|
473
|
+
`GFLOW_CLI_E2E_FLOW_HOST` overrides the routing for the paid test (e.g.
|
|
474
|
+
`flow.google.com` to force it); `GFLOW_CLI_E2E_VIDEO_DURATION` applies as elsewhere.
|
|
475
|
+
|
|
455
476
|
## See also
|
|
456
477
|
|
|
457
478
|
- [CONTRIBUTING.md § Test categories](../CONTRIBUTING.md#test-categories)
|