gflow-cli 0.67.0__tar.gz → 0.68.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.67.0 → gflow_cli-0.68.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.env.template +4 -3
- gflow_cli-0.68.0/.github/PULL_REQUEST_TEMPLATE.md +35 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/AGENTS.md +2 -2
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CHANGELOG.md +56 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CLAUDE.md +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CONTRIBUTING.md +52 -4
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/PKG-INFO +2 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/README.md +1 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/RELEASE.md +7 -2
- {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/ARCHITECTURE.md +2 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AUTHENTICATION.md +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CONFIGURATION.md +4 -3
- {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/DEVELOPMENT.md +6 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/INDEX.md +5 -3
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.67.0.md +5 -2
- gflow_cli-0.68.0/docs/LIVE_VERIFICATION_v0.68.0.md +105 -0
- {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/MCP.md +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/PROJECT_STATUS.md +44 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/USAGE.md +67 -5
- {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/USER_GUIDE.md +3 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +9 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/windows-dev-quirks.md +1 -1
- gflow_cli-0.68.0/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +47 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/llms.txt +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/pyproject.toml +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/gflow-cli/SKILL.md +3 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/pr-council-review/SKILL.md +2 -2
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/migrated_composer.py +18 -3
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli.py +35 -2
- gflow_cli-0.68.0/src/gflow_cli/cli_update.py +78 -0
- gflow_cli-0.68.0/src/gflow_cli/update_check.py +335 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_composer.py +41 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_cli_parity.py +6 -0
- gflow_cli-0.68.0/tests/test_cli_update.py +145 -0
- gflow_cli-0.68.0/tests/test_update_check.py +522 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/uv.lock +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/ARCHITECTURE.md +2 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/AUTHENTICATION.md +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/CONFIGURATION.md +4 -3
- {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/DEVELOPMENT.md +6 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/MCP.md +1 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/USAGE.md +67 -5
- {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/USER_GUIDE.md +3 -1
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/installation.md +6 -1
- gflow_cli-0.67.0/.github/PULL_REQUEST_TEMPLATE.md +0 -22
- gflow_cli-0.67.0/src/gflow_cli/update_check.py +0 -151
- gflow_cli-0.67.0/tests/test_update_check.py +0 -266
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitattributes +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitignore +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.secrets.baseline +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/KNOWN_ISSUES.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/LICENSE +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/ROADMAP.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docker-compose.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/eval/pr_triage_eval.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/eval/pr_triage_fixtures.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/index.html +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/Dockerfile.triage +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/entrypoint.sh +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/package-lock.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/package.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/pr_triage_gate.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/README.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/sonar-project.properties +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/client.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/real_chrome.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/tools.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_real_chrome.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_browser_manager.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_config.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_media.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/KNOWN_ISSUES.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/index.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/requirements.in +0 -0
- {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/requirements.txt +0 -0
|
@@ -138,9 +138,10 @@
|
|
|
138
138
|
# Holders always run to completion; the waiter takes over on release (#478).
|
|
139
139
|
# GFLOW_CLI_LEASE_WAIT_SECONDS=0
|
|
140
140
|
|
|
141
|
-
# Once-a-day best-effort PyPI check
|
|
142
|
-
# gflow-cli exists (#479
|
|
143
|
-
# editable/source installs. Set to 0 to disable.
|
|
141
|
+
# Once-a-day best-effort PyPI check that shows an update banner on stderr when
|
|
142
|
+
# a newer gflow-cli exists (#479; one plain line when stderr is piped). Never
|
|
143
|
+
# blocks; skipped in CI and for editable/source installs. Set to 0 to disable.
|
|
144
|
+
# Upgrade with `gflow update`.
|
|
144
145
|
# GFLOW_CLI_UPDATE_CHECK=1
|
|
145
146
|
|
|
146
147
|
# Whether generation prompts (and the prompt-derived display names used as the
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- What changed and why? Link issues with "Fixes #123" when applicable. -->
|
|
4
|
+
|
|
5
|
+
## Lifecycle
|
|
6
|
+
|
|
7
|
+
<!-- The pipeline every PR is reviewed against: CONTRIBUTING.md § "The development lifecycle"
|
|
8
|
+
and AGENTS.md § "Standard Workflow Sequence". Tick what applies; strike what does not and say why. -->
|
|
9
|
+
|
|
10
|
+
- [ ] Issue triaged with `issue-assessment` (verdict + which surfaces reproduce it: CLI / MCP / both)
|
|
11
|
+
- [ ] `predict` verdict recorded (transport / auth / selector / schema changes only)
|
|
12
|
+
- [ ] `scenario` + `plan` written under `docs/superpowers/plans/<date>-<slug>/` and linked here
|
|
13
|
+
- [ ] `check` green, including the step 1b CLI↔MCP mirror sweep
|
|
14
|
+
- [ ] MCP twin added, or a reasoned exemption in `tests/mcp/test_cli_parity.py`
|
|
15
|
+
- [ ] Live-verified against real Flow where a generation path changed; what could NOT be verified is stated below
|
|
16
|
+
- [ ] Council review run (`pr-council-review` / `branch-review`) and must-fix items addressed
|
|
17
|
+
|
|
18
|
+
## Validation
|
|
19
|
+
|
|
20
|
+
<!-- List the focused commands you ran, plus any checks you could not run. -->
|
|
21
|
+
|
|
22
|
+
- [ ] Focused tests added or updated for behavior changes
|
|
23
|
+
- [ ] Documentation updated or explicitly marked not applicable
|
|
24
|
+
- [ ] `uv run python scripts/ci/check_doc_links.py`
|
|
25
|
+
- [ ] `uv run ruff check src tests`
|
|
26
|
+
- [ ] `uv run pyright src`
|
|
27
|
+
- [ ] Relevant pytest command:
|
|
28
|
+
|
|
29
|
+
## Contribution Checklist
|
|
30
|
+
|
|
31
|
+
- [ ] This PR targets `develop`, unless it is a release or emergency fix
|
|
32
|
+
- [ ] My commits use my real Git identity or GitHub noreply email
|
|
33
|
+
- [ ] External contribution commits include `Signed-off-by:` (`git commit -s`)
|
|
34
|
+
- [ ] I did not include secrets, cookies, account tokens, signed URLs, or private captured data
|
|
35
|
+
- [ ] I reviewed any AI-assisted changes before submitting
|
|
@@ -43,8 +43,8 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
43
43
|
|
|
44
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
|
-
- 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
|
-
- 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).
|
|
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`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
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 update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
48
48
|
- Works with any Google account that has Flow access. All generations bill against the user's own Google account.
|
|
49
49
|
|
|
50
50
|
## Headed-browser dependency (architectural reality)
|
|
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.68.0] — 2026-09-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`gflow update` — self-update in place.** Runs the package manager that
|
|
15
|
+
installed gflow-cli, read off the install itself rather than guessed from
|
|
16
|
+
`PATH`: `uv-receipt.toml` in the venv root → `uv tool upgrade gflow-cli`,
|
|
17
|
+
`pipx_metadata.json` → `pipx upgrade gflow-cli`, otherwise that venv's own
|
|
18
|
+
`python -m pip install --upgrade gflow-cli`. Asks PyPI first and runs nothing
|
|
19
|
+
when already current; if PyPI is unreachable the manager still runs. After an
|
|
20
|
+
upgrade it re-reads the venv's Playwright version and prints the
|
|
21
|
+
`playwright install chromium` hint only when it moved. `--check` reports
|
|
22
|
+
installed vs latest plus the command that would run; `--json` returns the
|
|
23
|
+
same as a document. The outcome is verified against the venv, not the
|
|
24
|
+
manager's exit code: on Windows the running `gflow.exe` launcher holds its
|
|
25
|
+
own file open, so `uv tool upgrade` installs the new wheel and then exits 1
|
|
26
|
+
copying the launcher — measured — and that is reported as an upgrade with a
|
|
27
|
+
note, because the launcher only points at the venv's python and keeps
|
|
28
|
+
working. Editable / local / VCS / source installs, a manager binary missing
|
|
29
|
+
from `PATH`, a `uv venv` with no `pip` module, and a manager run that leaves
|
|
30
|
+
the version unchanged all surface as `ConfigurationError` (exit 11) — except
|
|
31
|
+
the one honest no-op: PyPI unreachable, manager exit 0, nothing changed, which
|
|
32
|
+
is exit 0. Deliberately no MCP twin (a server must not replace its own code under a live
|
|
33
|
+
session) — recorded as a reasoned exemption in the parity test.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **The once-a-day update notice (#479) is now a banner.** On a terminal it is
|
|
38
|
+
a bordered panel on stderr naming the new version, `gflow update`, and the
|
|
39
|
+
release-notes link; when stderr is piped it stays one plain yellow line so
|
|
40
|
+
logs and `2>&1 | jq` pipelines see one line per event. Same cache, same
|
|
41
|
+
gates (`GFLOW_CLI_UPDATE_CHECK=0`, CI, non-index installs). The notice text
|
|
42
|
+
points at `gflow update` instead of listing three manager commands.
|
|
43
|
+
- **CONTRIBUTING.md now routes contributors — and their coding agents — through the
|
|
44
|
+
same lifecycle AGENTS.md defines.** A phase → skill → artifact table (issue
|
|
45
|
+
assessment, predict, scenario/plan, check with the step 1b mirror sweep,
|
|
46
|
+
live-verify, council review, sonar, known-issues) says what a PR is expected to
|
|
47
|
+
have gone through and what it leaves behind for the reviewer; the PR template
|
|
48
|
+
gains a matching *Lifecycle* checklist; the quality-gate list is now identical to
|
|
49
|
+
AGENTS.md's (it had drifted to six of nine commands).
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- **Migrated host: `video t2v` no longer fails on the submit-enable race (#670,
|
|
54
|
+
@ChandraLiuswanto).** The Angular composer on `flow.google.com` flips the
|
|
55
|
+
`arrow_forward` button from `disabled` roughly 100 ms after `insert_text`
|
|
56
|
+
lands, and the composer read it synchronously, so a fully migrated account got
|
|
57
|
+
`UiSelectorDriftError` ("missing or disabled after the prompt was typed",
|
|
58
|
+
exit 23) on every run before anything was submitted. The composer now waits
|
|
59
|
+
up to 5 s (100 ms polls) for the button to enable; a button that never
|
|
60
|
+
enables is still selector drift, now worded as "stayed disabled for 5s".
|
|
61
|
+
Measured on a moved account: `insert_text` → enabled at the 107 ms sample;
|
|
62
|
+
with the wait, veo-lite t2v completed in 62 s.
|
|
63
|
+
|
|
10
64
|
## [0.67.0] — 2026-09-05
|
|
11
65
|
|
|
12
66
|
### Added
|
|
@@ -3880,7 +3934,8 @@ shell-script template that branches on these codes.
|
|
|
3880
3934
|
|
|
3881
3935
|
First skeleton. Not functional end-to-end yet.
|
|
3882
3936
|
|
|
3883
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
3937
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...HEAD
|
|
3938
|
+
[0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
|
|
3884
3939
|
[0.67.0]: https://github.com/ffroliva/gflow-cli/compare/v0.66.3...v0.67.0
|
|
3885
3940
|
[0.66.3]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...v0.66.3
|
|
3886
3941
|
[0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
|
|
@@ -27,7 +27,7 @@ it yet" is not a reachable state.
|
|
|
27
27
|
## On every session start
|
|
28
28
|
|
|
29
29
|
1. Read **[docs/INDEX.md](docs/INDEX.md)** — routing layer for all project docs and
|
|
30
|
-
commands. Deliberately *not* imported: at
|
|
30
|
+
commands. Deliberately *not* imported: at ~47 KB it is a lookup table, not a rule set,
|
|
31
31
|
and AGENTS.md points into it. Read it when you need to find a doc.
|
|
32
32
|
2. Pull deeper context on demand:
|
|
33
33
|
- Current task / where we left off → `/gflow:status`
|
|
@@ -2,6 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
Thanks for considering a contribution! The repo is public and PRs are welcome. Pre-1.0 means APIs may shift between minor versions; check [PLAN.md](PLAN.md) for the active phase before starting a non-trivial change.
|
|
4
4
|
|
|
5
|
+
## The development lifecycle — how a PR gets in without back-and-forth
|
|
6
|
+
|
|
7
|
+
This project is developed through a fixed pipeline, and every PR is reviewed against it.
|
|
8
|
+
The pipeline is written down once, in [AGENTS.md](AGENTS.md) — the **Skill Routing**
|
|
9
|
+
table (which skill to load for which situation) and the **Standard Workflow Sequence**
|
|
10
|
+
(the ten phases, their artifacts, and the gates between them). The skills themselves are
|
|
11
|
+
plain Markdown under [`skills/<name>/SKILL.md`](skills/): agent-agnostic by design, so
|
|
12
|
+
Claude Code (`/gflow:<name>`), Codex (`$gflow:<name>`), Cursor, Aider, Antigravity, or a
|
|
13
|
+
human reading the file all follow the same protocol.
|
|
14
|
+
|
|
15
|
+
**If you use a coding agent, point it at [AGENTS.md](AGENTS.md) first.** Most tools
|
|
16
|
+
auto-discover it; if yours does not, paste the Skill Routing table into its context. A PR
|
|
17
|
+
whose agent skipped the pipeline is the single biggest source of review churn here.
|
|
18
|
+
|
|
19
|
+
What a contributor PR is expected to have gone through, phase by phase:
|
|
20
|
+
|
|
21
|
+
| Phase | Skill (`skills/<name>/SKILL.md`) | What it leaves behind for the reviewer |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Touching a GitHub issue | [`issue-assessment`](skills/issue-assessment/SKILL.md) | A verdict (CONFIRMED / LIKELY / NEEDS-INFO …) and which surfaces reproduce it — CLI, MCP, or both |
|
|
24
|
+
| Transport / auth / selector / schema change | [`predict`](skills/predict/SKILL.md) | A GO / CAUTION / STOP verdict **before** code exists; STOP means open an issue instead |
|
|
25
|
+
| Any feature | [`scenario`](skills/scenario/SKILL.md) → [`plan`](skills/plan/SKILL.md) | `docs/superpowers/plans/<date>-<slug>/SCENARIO.md` + `PLAN.md` — the edge-case table and the task list; link them from the PR (they live on the branch and in the PR's history; at release the durable facts are folded into `docs/superpowers/memory/` and the plan dir is removed) |
|
|
26
|
+
| Every commit | [`check`](skills/check/SKILL.md) | The Impeccable Routine green (it is the exact CI gate), plus the **step 1b** CLI↔MCP mirror sweep no CI gate can see |
|
|
27
|
+
| Anything on a generation path | [`live-verify`](skills/live-verify/SKILL.md) | Evidence against real Flow, not just green offline tests — this project drives a black box; say plainly what you could **not** verify |
|
|
28
|
+
| Opening the PR | [`pr-council-review`](skills/pr-council-review/SKILL.md) / [`branch-review`](.claude/commands/gflow/branch-review.md) | The multi-dimension council (correctness, quality, security, tests, memory, YAGNI, parity …); maintainers run it on every PR, so running it yourself first removes a round trip |
|
|
29
|
+
| Red SonarCloud check | [`sonar`](skills/sonar/SKILL.md) | Zero new issues — the gate measures *new* code |
|
|
30
|
+
| Auth or reCAPTCHA | [`known-issues`](skills/known-issues/SKILL.md) | Known-broken surfaces have documented workarounds; rediscovering them costs days |
|
|
31
|
+
|
|
32
|
+
Three rules the pipeline enforces that catch first-time contributors most often:
|
|
33
|
+
|
|
34
|
+
1. **Ship each capability twice, or say why not.** Every CLI command has an MCP twin or a
|
|
35
|
+
reasoned exemption in `tests/mcp/test_cli_parity.py` — and options, payload keys and tool
|
|
36
|
+
docstrings must stay mirrored (AGENTS.md § *MCP & CLI Schema Symmetry*).
|
|
37
|
+
2. **Locale-invariant selectors only.** No `has-text(...)` on Flow's DOM, ever
|
|
38
|
+
(AGENTS.md § *Locale-Invariance Discipline*).
|
|
39
|
+
3. **Verified beats claimed.** If a fix cannot be verified on the affected surface in your
|
|
40
|
+
environment, the PR says so and uses `Refs #N`, not a green checkbox.
|
|
41
|
+
|
|
42
|
+
The PR template's *Lifecycle* checklist mirrors this table. Tick what applies, strike what
|
|
43
|
+
does not, and say why — a reviewer can then start from your evidence instead of re-deriving it.
|
|
44
|
+
|
|
5
45
|
## Development setup
|
|
6
46
|
|
|
7
47
|
```bash
|
|
@@ -96,16 +136,24 @@ cost table, and run commands.
|
|
|
96
136
|
|
|
97
137
|
## Quality gates (run before commit)
|
|
98
138
|
|
|
139
|
+
Prefer the skill — [`skills/check/SKILL.md`](skills/check/SKILL.md) (`/gflow:check` in
|
|
140
|
+
Claude Code, `$gflow:check` in Codex) — because it also carries the step 1b CLI↔MCP mirror
|
|
141
|
+
sweep that no command below can check. The mechanical subset it runs, in order:
|
|
142
|
+
|
|
99
143
|
```bash
|
|
100
|
-
uv run python scripts/ci/check_repo_hygiene.py
|
|
101
|
-
uv run python scripts/ci/check_doc_links.py
|
|
144
|
+
uv run python scripts/ci/check_repo_hygiene.py # artefact + path hygiene
|
|
145
|
+
uv run python scripts/ci/check_doc_links.py # internal Markdown links
|
|
146
|
+
uv run python scripts/ci/check_website_docs_pii.py # no private identifiers in website/docs
|
|
147
|
+
uv run python scripts/ci/generate_website_docs.py --check # website mirror in sync
|
|
148
|
+
uv run python scripts/ci/check_council_memory.py # council memory slugs resolve both ways
|
|
102
149
|
uv run ruff check src tests # lint
|
|
103
|
-
uv run ruff format src tests
|
|
150
|
+
uv run ruff format --check src tests # formatting
|
|
104
151
|
uv run pyright src # type-check (strict on src/gflow_cli/)
|
|
105
152
|
uv run pytest -q --cov=gflow_cli # tests + coverage
|
|
106
153
|
```
|
|
107
154
|
|
|
108
|
-
CI runs all
|
|
155
|
+
CI runs all of them on every push (this list is kept identical to AGENTS.md's; a shorter
|
|
156
|
+
copy once shipped a stale website mirror to a green local run and a red CI). Documentation is part of the merge gate: update
|
|
109
157
|
the relevant docs for behavior, workflow, configuration, architecture, or
|
|
110
158
|
operator-facing changes. If no documentation change is needed, state that in
|
|
111
159
|
the PR validation checklist.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.68.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
|
|
@@ -112,6 +112,7 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
|
|
|
112
112
|
# 1 · Install (uv recommended; also: pip install gflow-cli)
|
|
113
113
|
uv tool install gflow-cli
|
|
114
114
|
uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
115
|
+
# later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
|
|
115
116
|
|
|
116
117
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
117
118
|
gflow auth login --browser chrome
|
|
@@ -41,6 +41,7 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
|
|
|
41
41
|
# 1 · Install (uv recommended; also: pip install gflow-cli)
|
|
42
42
|
uv tool install gflow-cli
|
|
43
43
|
uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
|
|
44
|
+
# later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
|
|
44
45
|
|
|
45
46
|
# 2 · Authenticate (one-time, opens a real Chrome window)
|
|
46
47
|
gflow auth login --browser chrome
|
|
@@ -60,9 +60,13 @@ python -m pip install --pre gflow-cli
|
|
|
60
60
|
git branch --show-current
|
|
61
61
|
git rev-list HEAD..origin/main
|
|
62
62
|
```
|
|
63
|
-
3. Run quality gates:
|
|
63
|
+
3. Run quality gates (`/gflow:check` — the same nine commands AGENTS.md lists):
|
|
64
64
|
```bash
|
|
65
65
|
uv run python scripts/ci/check_repo_hygiene.py
|
|
66
|
+
uv run python scripts/ci/check_doc_links.py
|
|
67
|
+
uv run python scripts/ci/check_website_docs_pii.py
|
|
68
|
+
uv run python scripts/ci/generate_website_docs.py --check
|
|
69
|
+
uv run python scripts/ci/check_council_memory.py
|
|
66
70
|
uv run ruff check src tests
|
|
67
71
|
uv run ruff format --check src tests
|
|
68
72
|
uv run pyright src
|
|
@@ -87,12 +91,13 @@ python -m pip install --pre gflow-cli
|
|
|
87
91
|
- `pyproject.toml`
|
|
88
92
|
- `.codex-plugin/plugin.json`
|
|
89
93
|
- `src/gflow_cli/__init__.py`
|
|
94
|
+
- `uv.lock` (run `uv lock` — the editable package version is pinned there)
|
|
90
95
|
- any tests that assert the package version
|
|
91
96
|
7. Move user-visible changes from `CHANGELOG.md` `[Unreleased]` into a dated
|
|
92
97
|
release section.
|
|
93
98
|
8. Commit the release prep:
|
|
94
99
|
```bash
|
|
95
|
-
git add pyproject.toml .codex-plugin/plugin.json src/gflow_cli/__init__.py CHANGELOG.md tests docs
|
|
100
|
+
git add pyproject.toml .codex-plugin/plugin.json src/gflow_cli/__init__.py uv.lock CHANGELOG.md tests docs
|
|
96
101
|
git commit -m "chore(release): vX.Y.Z"
|
|
97
102
|
```
|
|
98
103
|
9. Tag and push. **Must be a signed annotated tag** (`-s`) — `.github/workflows/release.yml` rejects unsigned or lightweight tags. Requires a GPG or SSH signing key registered with your GitHub account.
|
|
@@ -118,7 +118,8 @@ When the project converges on the hexagonal target above, modules graduate to la
|
|
|
118
118
|
> `chain*.py`, `composition.py`, `config.py`, `diagnostics.py`, `errors.py`,
|
|
119
119
|
> `image_batch.py`, `json_output.py`, `media.py`, `movie_manifest.py`,
|
|
120
120
|
> `observability.py`, `paths.py`, `profile_lease.py`, `profile_store.py`,
|
|
121
|
-
> `storage.py`, `update_check.py
|
|
121
|
+
> `storage.py`, `update_check.py` (the once-a-day notice and `gflow update`'s
|
|
122
|
+
> `run_update`; its Click surface is `cli_update.py`), and `winsec.py` (inventory refreshed for
|
|
122
123
|
> v0.56.0, #507 — it had drifted a dozen modules behind).
|
|
123
124
|
> The DDD layout below was deferred indefinitely; converge toward it incrementally
|
|
124
125
|
> if/when a second `Provider` justifies the split (`gflow serve` shipped as a
|
|
@@ -391,7 +391,7 @@ but the installed Playwright bundled Chromium is older (149.x). ...
|
|
|
391
391
|
```
|
|
392
392
|
|
|
393
393
|
Remedies: upgrade so the bundled Chromium is at least the profile's version
|
|
394
|
-
(`
|
|
394
|
+
(`gflow update`, then `playwright install chromium`), or re-create
|
|
395
395
|
the profile with `gflow auth login` — login is deliberately *not* guarded, it
|
|
396
396
|
re-mints the session and rewrites the profile, making it the recovery path.
|
|
397
397
|
The guard is best-effort: profiles under the `chrome` strategy (real Google
|
|
@@ -274,10 +274,11 @@ GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
|
|
|
274
274
|
|
|
275
275
|
### `GFLOW_CLI_UPDATE_CHECK`
|
|
276
276
|
|
|
277
|
-
**What:** Once-a-day best-effort PyPI check that
|
|
277
|
+
**What:** Once-a-day best-effort PyPI check that shows an update banner on stderr when a newer gflow-cli exists — a bordered panel with the new version, `gflow update`, and the release-notes link when stderr is a terminal; one plain yellow line when piped. The notice is always served from a local cache (`<GFLOW_CLI_HOME>/update_check.json`); a stale cache refreshes on a background daemon thread whose result feeds the *next* invocation — the check never blocks or fails a command, and a failed poll still counts toward the once-a-day cap. `gflow update` / `gflow update --check` refresh the same cache synchronously.
|
|
278
278
|
**Values:** `1` (default) | `0` to disable
|
|
279
|
-
**Skipped automatically:** in CI (`CI`
|
|
280
|
-
**
|
|
279
|
+
**Skipped automatically:** in CI (`CI` set to anything but `0` / `false`) and for editable/local-source installs (PEP 610 `direct_url.json` detection) — "upgrade" advice is wrong there.
|
|
280
|
+
**Upgrading:** [`gflow update`](USAGE.md#gflow-update) runs the installer that put gflow-cli here (`uv tool` / `pipx` / the venv's own `pip`).
|
|
281
|
+
**Shipped in:** #479 (notice); `gflow update` + banner in #668.
|
|
281
282
|
|
|
282
283
|
### `GFLOW_CLI_LEASE_WAIT_SECONDS`
|
|
283
284
|
|
|
@@ -63,13 +63,18 @@ Types mirror Conventional Commits: `feature`, `fix`, `docs`, `chore`, `refactor`
|
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
65
|
uv run python scripts/ci/check_repo_hygiene.py
|
|
66
|
+
uv run python scripts/ci/check_doc_links.py
|
|
67
|
+
uv run python scripts/ci/check_website_docs_pii.py
|
|
68
|
+
uv run python scripts/ci/generate_website_docs.py --check
|
|
69
|
+
uv run python scripts/ci/check_council_memory.py
|
|
66
70
|
uv run ruff check src tests
|
|
67
71
|
uv run ruff format --check src tests
|
|
68
72
|
uv run pyright src
|
|
69
73
|
uv run python -m pytest -q --cov=gflow_cli
|
|
70
74
|
```
|
|
71
75
|
|
|
72
|
-
CI runs the same
|
|
76
|
+
CI runs the same nine on every push (this list is kept identical to AGENTS.md's —
|
|
77
|
+
`/gflow:check` runs it plus the CLI↔MCP mirror sweep). Do not bypass with `--no-verify`.
|
|
73
78
|
Project pytest defaults exclude `e2e` and `live`; run those credit-spending
|
|
74
79
|
tests only with an explicit marker expression and profile/env setup.
|
|
75
80
|
Local agents running inside an MCP/context sandbox may need to split the
|
|
@@ -19,7 +19,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
|
|
|
19
19
|
| [KNOWN_ISSUES](../KNOWN_ISSUES.md) | Open / mitigated / resolved issues with workarounds | Before opening a bug report; when something feels off |
|
|
20
20
|
| [DISCLAIMER](../DISCLAIMER.md) | Legal scope, takedown policy, prohibited uses | Before deploying anywhere non-trivial |
|
|
21
21
|
| [LICENSE](../LICENSE) | MIT license text | Always |
|
|
22
|
-
| [CONTRIBUTING](../CONTRIBUTING.md) | TDD workflow, test categories, coverage targets | Before opening a PR |
|
|
22
|
+
| [CONTRIBUTING](../CONTRIBUTING.md) | The development lifecycle a PR is reviewed against (phase → skill → artifact), TDD workflow, test categories, coverage targets | Before opening a PR — and before pointing a coding agent at the repo |
|
|
23
23
|
| **[docs/DEVELOPMENT.md](DEVELOPMENT.md)** | Branching model, PR protocol, e2e gate, version bump protocol, AI-assisted workflow | Understanding the end-to-end dev process |
|
|
24
24
|
| **[docs/E2E_TESTING.md](E2E_TESTING.md)** | Layer model, cost sub-markers, run commands, isolation patterns, roadmap to contract/replay layer | Running or extending e2e tests; cost control |
|
|
25
25
|
| **[docs/AGENT_UI_E2E.md](AGENT_UI_E2E.md)** | Deterministic e2e runbook for the Agentic UI image path (force-agent trigger, validation ledger) | Live-verifying Agentic-UI features |
|
|
@@ -144,7 +144,8 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
144
144
|
**"What's the standard way to import gflow errors in my code?"** → [USAGE § Programmatic use](USAGE.md#programmatic-use)
|
|
145
145
|
**"gflow refuses to open my profile after a downgrade (exit 11, 'written by a newer Chromium')"** → [AUTHENTICATION § Chromium downgrade guard](AUTHENTICATION.md#chromium-downgrade-guard)
|
|
146
146
|
**"Two gflow runs on the same profile — can the second one wait instead of failing (exit 11)?"** → [CONFIGURATION § GFLOW_CLI_LEASE_WAIT_SECONDS](CONFIGURATION.md#gflow_cli_lease_wait_seconds) (v0.56.0 opt-in bounded wait)
|
|
147
|
-
**"How do I silence the 'newer version on PyPI' stderr
|
|
147
|
+
**"How do I silence the 'newer version on PyPI' stderr banner?"** → [CONFIGURATION § GFLOW_CLI_UPDATE_CHECK](CONFIGURATION.md#gflow_cli_update_check) (`0` disables; auto-skipped in CI and for editable installs)
|
|
148
|
+
**"How do I upgrade gflow-cli?"** → [USAGE § `gflow update`](USAGE.md#gflow-update) (`gflow update` runs the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs are refused with exit 11)
|
|
148
149
|
**"How do I run the MCP server so an agent can't spend credits?"** → [CONFIGURATION § GFLOW_MCP_NO_SPEND](CONFIGURATION.md#gflow_mcp_no_spend) + [MCP § Option A2](MCP.md#option-a2-read-only-server) (`gflow mcp run --no-spend` / `GFLOW_MCP_NO_SPEND=1`; v0.57.0 — both generate tools go unregistered, not merely refused)
|
|
149
150
|
**"Which Flow UI arm does a run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (`auto` ≡ `classic` for **both** images and video — video since v0.57.0/#299, images since #595; unreachable classic aborts pre-submit with exit 28, $0; explicit `agentic` on video exits 2)
|
|
150
151
|
**"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v` with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On a moved account everything except `t2v` exits 36, non-retryable, and `t2v` without `--project` exits 11) · recon: [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md)
|
|
@@ -156,13 +157,14 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
|
|
|
156
157
|
**"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
|
|
157
158
|
**"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
|
|
158
159
|
**"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
|
|
159
|
-
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
|
|
160
|
+
**What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
|
|
160
161
|
**"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
|
|
161
162
|
**"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
|
|
162
163
|
**"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of what was then read as a flapping rollout** (superseded 2026-09-04: the handoff is a one-way per-account flag and exit 36 is non-retryable since). On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true` (then; `false` since 2026-09-04), `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.
|
|
163
164
|
|
|
164
165
|
**"What was live-verified for v0.66.0?"** → [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — **#639 Flow's `flow.google.com` migration, verified 2026-09-03 on profile `ffroliva` at ZERO credits.** The maintainer's own account turned out to be inside the rollout, so the fix was proven against the real migrated frontend rather than a reconstructed DOM: a read-only probe of `flow.google.com/project/<id>` measured `i_total: 0` (independently reproducing the reporter's central measurement) and drove the production functions against the live page — `flow_host_kind: "migrated"`, `_check_logged_in: true` (it was `false` before the fix, i.e. a valid session read as logged-out), and `_mode_switch_error` returning `FlowHostMigratedError` / exit 36 / `retryable: true` (then; `false` since 2026-09-04). What read as a flap on ONE account was its one-time switch: a credit-free `image t2i` minutes earlier landed on the OLD host and completed exit 0 with a real 768x1376 JPEG (`ffd8ffe0`, 401,939 bytes, Pillow dims matching the API claim), proving the rewritten host gate does not regress the old path. Also recorded: the migrated URL **drops `/fx/tools/flow` entirely** — it is `/project/<id>` — which is why a substring gate on `labs.google` could never match it; and the migrated composer is not control-less but exposes **no `data-testid`, zero ligature `<i>`, and 13 `button[aria-label]`** (`Settings trigger`, `Start generation`, …), recorded as recon for the follow-up WITH the caveat that `aria-label` is translated and therefore Tier-2 at best under the locale-invariance rule. One item is recorded as NOT verified rather than omitted: gflow **driving** the migrated frontend, which is out of scope and keeps #639 open. Verification also hit pre-existing [#561](https://github.com/ffroliva/gflow-cli/issues/561) (401 on `project.createProject`), A/B'd against unmodified `develop` to prove it was not this change, then routed around with an existing `--project`.
|
|
165
166
|
|
|
167
|
+
**"What was live-verified for v0.68.0?"** → [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) — **`gflow update` against the real package managers and the real PyPI index, run from the installed `gflow.exe` itself.** A wheel lowered to 0.60.1 was installed through `uv tool` and through `pipx`, the pin removed, and `gflow update` upgraded each to PyPI 0.67.0: exit 0 both times. The uv run is the one that shaped the code — uv installed the wheel and *then* exited 1 copying `gflow.exe` over the running launcher (os error 32, which can be neither overwritten nor renamed), so the command reads the venv's installed version back instead of trusting the manager's exit code and reports the stale launcher as a note. `--check --json` changed nothing and returned the documented keys; the piped-stderr notice printed as one line. NOT verified: plain-venv `pip` on Windows, macOS/Linux for any manager, a real interactive-terminal screenshot of the panel, and the first genuine banner (0.68.0 is the first release after the change).
|
|
166
168
|
**"What was live-verified for v0.67.0?"** → [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) — **the migrated `flow.google.com` driver, on both maintainer accounts.** `gflow video t2v --project <id>` on the moved account under the default route: exit 0 in 49.9 s, mp4 `ftyp`, byte-exact with the size the backend reported, recorder row; on the unmoved Portuguese-locale account forced onto the host: exit 0 in 50.5 s — the locale-invariance proof (no text label is matched). #650 on the new host: `--model veo-fast --duration 6` aborts pre-submit with exit 11 at zero credits (this cohort renders the duration row for Omni only). Three defects were found by the runs and fixed before the record (status 3 arrives before the URL record; the labs media redirect 404s for migrated ids; `DETAILS[10]` is the poster JPEG). NOT verified: the positive Veo 4/6/8 path (cohort-external), model selection beyond the exit-11 abort, count>1, 9:16, 360p, the kill switch live, the MCP queued path live, any backend failure status.
|
|
167
169
|
**"What was live-verified for v0.66.3?"** → [LIVE_VERIFICATION_v0.66.3](LIVE_VERIFICATION_v0.66.3.md) — the `<html lang>` hydration race, with the negative result that chose the design: **`readyState` reaches `complete` a full second BEFORE the attribute flips**, so "wait for complete, then read" would have shipped the same bug. Component and end-to-end measurements are reported separately on purpose. NOT verified: the migrated origin (fix proven on the old host, where the race also occurs) and the 4 s bound against a cold first load.
|
|
168
170
|
|
|
@@ -102,8 +102,11 @@ control … 0 option groups"); fixed in the same change and pinned by
|
|
|
102
102
|
|
|
103
103
|
## Post-tag evidence
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
- Signed tag `v0.67.0` (SSH signature, `git tag -v` good) on `f92978e`, pushed 2026-09-05.
|
|
106
|
+
- Release workflow run [33955032750](https://github.com/ffroliva/gflow-cli/actions/runs/33955032750) — `completed / success`.
|
|
107
|
+
- GitHub Release: <https://github.com/ffroliva/gflow-cli/releases/tag/v0.67.0> (published 2026-09-05T08:22:07Z, 5 assets, not a prerelease).
|
|
108
|
+
- PyPI: `pip index versions gflow-cli` → `gflow-cli (0.67.0)`.
|
|
109
|
+
- Release PR: [#667](https://github.com/ffroliva/gflow-cli/pull/667) `chore/release-v0.67.0 → main`, merged with a merge commit, then back-merged into `develop`.
|
|
107
110
|
|
|
108
111
|
## NOT verified (recorded, not omitted)
|
|
109
112
|
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Live verification — v0.68.0 (pre-release evidence, 2026-09-05)
|
|
2
|
+
|
|
3
|
+
**Feature:** `gflow update` — self-update through the installer that put gflow-cli here
|
|
4
|
+
(`src/gflow_cli/update_check.py::run_update`, `src/gflow_cli/cli_update.py`) — and the #479
|
|
5
|
+
once-a-day notice rendered as a stderr banner (`src/gflow_cli/cli.py::_print_update_notice`).
|
|
6
|
+
PR [#668](https://github.com/ffroliva/gflow-cli/pull/668). The implementation plan and
|
|
7
|
+
scenario table were folded into project memory at release time
|
|
8
|
+
(`docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md`), per the doc-review
|
|
9
|
+
skill; this file keeps the measurements.
|
|
10
|
+
|
|
11
|
+
This feature touches no Flow transport, so "live" here means **against the real package
|
|
12
|
+
managers and the real PyPI index, from the installed `gflow.exe` itself** — the surface a
|
|
13
|
+
user actually runs — not against mocks. Nothing in this verification spent credits or
|
|
14
|
+
touched a Flow account.
|
|
15
|
+
|
|
16
|
+
## Method
|
|
17
|
+
|
|
18
|
+
A wheel was built from the merged branch with the version lowered to **0.60.1**, installed
|
|
19
|
+
through each manager into a scratch tool directory (`UV_TOOL_DIR` / `PIPX_HOME`, via
|
|
20
|
+
`--find-links` — no `direct_url.json`, so it counts as an index install), the install-time
|
|
21
|
+
pin removed from the receipt / metadata, and `gflow update` run **from that install's own
|
|
22
|
+
`gflow.exe`**, upgrading it to the real PyPI **0.67.0**. Windows 11 Pro, uv 0.8.16,
|
|
23
|
+
pipx 1.8 (`pipx[uv]`).
|
|
24
|
+
|
|
25
|
+
## Runs
|
|
26
|
+
|
|
27
|
+
| # | Manager | Command | Exit | Manager exit | Venv after (`gflow --version` through the old launcher) |
|
|
28
|
+
|---|---|---|---|---|---|
|
|
29
|
+
| 1 | `uv tool` | `gflow update --check --json` | **0** | — | unchanged (0.60.1); JSON `update_available: true`, `command: ["uv","tool","upgrade","gflow-cli"]`, `upgraded: false` |
|
|
30
|
+
| 2 | `uv tool` | `gflow update` | **0** | **1** — `Updated gflow-cli v0.60.1 -> v0.67.0` then `failed to copy … gflow.exe … used by another process (os error 32)` | **0.67.0** |
|
|
31
|
+
| 3 | `pipx` | `gflow update` | **0** | 0 — `upgraded package gflow-cli from 0.60.1 to 0.67.0` | **0.67.0** |
|
|
32
|
+
|
|
33
|
+
Run 2's text output, verbatim shape:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Upgraded gflow-cli 0.60.1 -> 0.67.0 via uv.
|
|
37
|
+
Restart any running `gflow serve` / MCP server to pick it up.
|
|
38
|
+
`uv tool upgrade gflow-cli` exited 1 AFTER installing 0.67.0 — see its output above. On Windows
|
|
39
|
+
this is the running `gflow.exe` launcher, which cannot be replaced while in use; it keeps
|
|
40
|
+
working, and the next update from another shell refreshes it.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Five-layer ledger
|
|
44
|
+
|
|
45
|
+
| Layer | Evidence |
|
|
46
|
+
|---|---|
|
|
47
|
+
| 1 · Artifact count | One upgraded venv per manager (2/2); one `--check` report that changed nothing (`uv-receipt.toml` and `Lib/site-packages` untouched, verified by re-running `--version`) |
|
|
48
|
+
| 2 · Magic / identity | `gflow_cli-0.67.0.dist-info` present in both venvs after the run; `gflow_cli-0.60.1.dist-info` gone |
|
|
49
|
+
| 3 · Shape | `--check --json` document carries exactly `{status, installed, latest, update_available, installer, command, upgraded, notes}`; the notes tuple holds the one launcher note on run 2 and nothing on run 3 |
|
|
50
|
+
| 4 · Structlog invariants | `update.installer_detected installer=uv` / `=pipx`, `update.command_finished returncode=1 after=0.67.0` (run 2) and `returncode=0 after=0.67.0` (run 3); the piped-stderr form of the #479 notice printed as **one line** before the command ran (`A newer gflow-cli is available: 0.67.0 (installed 0.60.1). Run \`gflow update\` to upgrade. …`) |
|
|
51
|
+
| 5 · User-confirmable | `gflow --version` → `gflow, version 0.67.0` from the very launcher that was running during the upgrade |
|
|
52
|
+
|
|
53
|
+
## What the runs changed in the code
|
|
54
|
+
|
|
55
|
+
1. **A running uv trampoline can be neither overwritten nor renamed.** `os.replace` and
|
|
56
|
+
`mv` on a running `gflow.exe` both fail (error 32 / "Device or resource busy", measured
|
|
57
|
+
against `gflow serve`). The first design — rename the launcher aside, restore on failure
|
|
58
|
+
— moved the idle `flow.exe` and never the one that mattered; it was deleted.
|
|
59
|
+
2. **The manager's exit code is not the outcome.** uv had already installed the wheel when
|
|
60
|
+
it exited 1. `run_update` re-reads `importlib.metadata.version("gflow-cli")` from a fresh
|
|
61
|
+
interpreter after the run and reports that (run 2: exit 0 with a note; a zero exit with an
|
|
62
|
+
unmoved version is exit 11).
|
|
63
|
+
3. `uv tool upgrade` honours an install-time pin silently, and uv's wheel cache is keyed by
|
|
64
|
+
filename — both bit the test harness before they could bite a user, and both are recorded
|
|
65
|
+
in the published memory slug.
|
|
66
|
+
|
|
67
|
+
## Banner
|
|
68
|
+
|
|
69
|
+
- Piped stderr (subprocess capture): one plain line — layer 4 above, measured on runs 2/3.
|
|
70
|
+
- Terminal: the bordered panel was rendered through the same `Panel` call with a forced
|
|
71
|
+
terminal console and read back (title `Update available`, version line, `gflow update`
|
|
72
|
+
line, release-notes URL, silence hint); the `sys.stderr.isatty()` gate is unit-tested on
|
|
73
|
+
both branches (`tests/test_cli_update.py`). A real interactive-terminal screenshot was
|
|
74
|
+
**not** taken this cycle.
|
|
75
|
+
|
|
76
|
+
## Pre-tag gates (filled before signing)
|
|
77
|
+
|
|
78
|
+
| Gate | Result |
|
|
79
|
+
|---|---|
|
|
80
|
+
| Impeccable Routine on `develop` at 9525cb5 (hygiene, doc links, website PII, website mirror, council memory, ruff, format, pyright) | all green |
|
|
81
|
+
| Offline pytest (`not live and not e2e and not smoke`) on 9525cb5 | 3849 passed, 24 skipped, 1 failed in 6:54 — `tests/features/test_incident_diagnostics_steps.py::test_remote_errors_do_not_expose_local_incident_paths`, a file untouched since July that passes in isolation (1.25 s); a second session was running pytest in the same checkout during the sweep. The release PR's CI run is the authority for the full suite |
|
|
82
|
+
| Branch council on PR #668 (9 dimensions) | D1/D4/D5/D9 YELLOW → all must-fix applied in a7b95ff; D3/D8/D14/D15 GREEN; D2 did not return |
|
|
83
|
+
| PR #668 CI (15 checks incl. SonarCloud) | green on b8b59a3 |
|
|
84
|
+
| Manager runs (this file) | uv: exit 0 + note; pipx: exit 0 |
|
|
85
|
+
| `/gflow:doc-review` mechanical pass (sections 1–7) | PASS — version refs, INDEX cue, evidence file, doc links, website PII + mirror, skill files, CHANGELOG footer, memory index |
|
|
86
|
+
| `/gflow:doc-review` council (3 auditors) | Completeness YELLOW, Cross-reference YELLOW, Drift GREEN. 0 Tier 1. Tier 2 fixed in aedeaaa (llms.txt names `gflow update`; ARCHITECTURE inventory; USER_GUIDE upgrade hop; CI / cache-refresh wording; CONTRIBUTING plan-consolidation note) and in the follow-up doc commit (five-command gate lists in DEVELOPMENT.md and RELEASE.md aligned to the nine; `uv.lock` in RELEASE.md's bump list; NOT-verified lists aligned; CLAUDE.md INDEX size). Tier 3 deferred: `gflow doctor` absent from llms.txt before this pass (now added), verdict-name abbreviations in CONTRIBUTING. Council reports at `tmp/council/0{1,2,3}-*.md` (local-only) |
|
|
87
|
+
|
|
88
|
+
## Post-tag evidence
|
|
89
|
+
|
|
90
|
+
To be appended after the tag push: release workflow run URL, `gh release view v0.68.0`,
|
|
91
|
+
PyPI page, and one `pip index versions gflow-cli` read showing 0.68.0.
|
|
92
|
+
|
|
93
|
+
## NOT verified this cycle (recorded, not omitted)
|
|
94
|
+
|
|
95
|
+
- **Plain-venv `pip` on Windows** — no venv on this machine runs `gflow.exe` from a pip
|
|
96
|
+
install; pip removes `Scripts/gflow.exe` and is likely to hit the same lock. The
|
|
97
|
+
`uv venv`-without-`pip` refusal is unit-tested only.
|
|
98
|
+
- **macOS / Linux for any manager** — POSIX allows replacing a running binary, so the
|
|
99
|
+
manager should exit 0 there; same code path, same venv-is-truth check. LIKELY, not
|
|
100
|
+
CONFIRMED.
|
|
101
|
+
- **A real interactive-terminal screenshot of the panel** — rendered through a forced
|
|
102
|
+
terminal console and read back (see "Banner" above), not photographed on a live tty.
|
|
103
|
+
- **A real newer release on PyPI** for the banner from a normal install — 0.68.0 is the
|
|
104
|
+
first release after the change, so the first genuine banner a user sees will be for
|
|
105
|
+
0.68.1 or later. The #479 mechanism itself was live-verified at v0.56.0.
|
|
@@ -94,7 +94,7 @@ The server registers three protocol surfaces:
|
|
|
94
94
|
* `gflow_instructions_toggle_mode(project, enabled, profile)`: Flips the brief-level master switch; cards are left untouched.
|
|
95
95
|
* `gflow_instructions_apply(project, cards, profile)`: Declarative **full-sync** — REPLACES all cards with the given set (destructive; same entry shape as the CLI `instructions apply` file).
|
|
96
96
|
|
|
97
|
-
CLI↔MCP parity is enforced programmatically: `tests/mcp/test_cli_parity.py` walks every CLI leaf command and fails when one has neither a mapped MCP tool nor an explicit exemption with a stated reason. Note the deliberate asymmetry: `gflow_generate_video` has **no** `instructions` param (unlike `gflow_generate_image`) because the video pipeline (`GenerateVideoRequest` / the worker) has no instructions support — agentic-video is a typed divergence, and a dead parameter would be silently dropped. Both `gflow_generate_image` and `gflow_generate_video` support an `output` parameter mirroring the CLI `-o`/`--output` flag (#414, #415), decoding explicit output destinations in the worker daemon.
|
|
97
|
+
CLI↔MCP parity is enforced programmatically: `tests/mcp/test_cli_parity.py` walks every CLI leaf command and fails when one has neither a mapped MCP tool nor an explicit exemption with a stated reason. Note the deliberate asymmetry: `gflow_generate_video` has **no** `instructions` param (unlike `gflow_generate_image`) because the video pipeline (`GenerateVideoRequest` / the worker) has no instructions support — agentic-video is a typed divergence, and a dead parameter would be silently dropped. Both `gflow_generate_image` and `gflow_generate_video` support an `output` parameter mirroring the CLI `-o`/`--output` flag (#414, #415), decoding explicit output destinations in the worker daemon. `gflow update` is a considered exemption, not a backlog item: the package manager would replace the venv under a live `gflow mcp run` and write its output onto the JSON-RPC stdout channel — the operator runs it and restarts the server. A read-only twin of `gflow update --check` would be harmless; it is the upgrade path if agents ever need version awareness beyond the `initialize` handshake.
|
|
98
98
|
|
|
99
99
|
### Prompts (Orchestration templates)
|
|
100
100
|
* `expand_prompt`: Helps the agent structure simple ideas into Google's official 5-component prompt formula (Subject + Action + Location + Composition + Style) before sending them to the generation tools.
|