gflow-cli 0.71.1__tar.gz → 0.72.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.
Files changed (1054) hide show
  1. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.env.template +3 -2
  3. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/AGENTS.md +2 -2
  4. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/CHANGELOG.md +86 -1
  5. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/KNOWN_ISSUES.md +57 -16
  6. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/PKG-INFO +3 -3
  7. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/README.md +2 -2
  8. {gflow_cli-0.71.1/website → gflow_cli-0.72.0}/docs/ARCHITECTURE.md +7 -7
  9. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/AUTHENTICATION.md +28 -8
  10. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/CHARACTER_RECON.md +3 -1
  11. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/CONFIGURATION.md +2 -2
  12. {gflow_cli-0.71.1/website → gflow_cli-0.72.0}/docs/DEBUGGING.md +5 -4
  13. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/INDEX.md +2 -2
  14. gflow_cli-0.72.0/docs/LIVE_VERIFICATION_v0.72.0.md +217 -0
  15. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/MCP.md +1 -0
  16. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/PROJECT_STATUS.md +51 -0
  17. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/USAGE.md +19 -4
  18. {gflow_cli-0.71.1/website → gflow_cli-0.72.0}/docs/USER_GUIDE.md +10 -4
  19. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/medium_tutorial.md +3 -3
  20. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +20 -6
  21. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +29 -0
  22. gflow_cli-0.72.0/docs/superpowers/memory/real-browser-auth-mandatory.md +32 -0
  23. gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +131 -0
  24. gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +64 -0
  25. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/llms.txt +1 -1
  26. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/pyproject.toml +1 -1
  27. gflow_cli-0.72.0/scripts/dev/spike_migrated_image_submit.py +282 -0
  28. gflow_cli-0.72.0/scripts/dev/spike_playwright_chrome_login.py +272 -0
  29. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/gflow-cli/SKILL.md +5 -1
  30. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/SKILL.md +1 -1
  31. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/failure-modes.md +2 -2
  32. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/__init__.py +1 -1
  33. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/client.py +16 -40
  34. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/batchexecute.py +103 -0
  35. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/migrated_composer.py +335 -18
  36. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/ui_automation.py +67 -4
  37. gflow_cli-0.72.0/src/gflow_cli/auth/internal_chromium.py +322 -0
  38. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/real_chrome.py +205 -37
  39. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/browser_manager.py +16 -14
  40. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/config.py +3 -2
  41. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/errors.py +12 -7
  42. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/tools.py +2 -0
  43. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_composer.py +304 -3
  44. gflow_cli-0.72.0/tests/api/transports/test_migrated_images.py +361 -0
  45. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/auth/strategies/test_strategies.py +286 -5
  46. gflow_cli-0.72.0/tests/auth/test_real_chrome.py +744 -0
  47. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_error_handling.py +19 -4
  48. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/conftest.py +35 -0
  49. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_migrated_host_e2e.py +42 -27
  50. gflow_cli-0.72.0/tests/features/migrated_host_images.feature +21 -0
  51. gflow_cli-0.72.0/tests/features/test_migrated_host_images_steps.py +157 -0
  52. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_browser_manager.py +49 -13
  53. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_config.py +12 -2
  54. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/uv.lock +20 -10
  55. {gflow_cli-0.71.1 → gflow_cli-0.72.0/website}/docs/ARCHITECTURE.md +7 -7
  56. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/AUTHENTICATION.md +28 -8
  57. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/CONFIGURATION.md +2 -2
  58. {gflow_cli-0.71.1 → gflow_cli-0.72.0/website}/docs/DEBUGGING.md +5 -4
  59. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/KNOWN_ISSUES.md +57 -16
  60. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/MCP.md +1 -0
  61. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/USAGE.md +19 -4
  62. {gflow_cli-0.71.1 → gflow_cli-0.72.0/website}/docs/USER_GUIDE.md +10 -4
  63. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/onboarding-mockup.html +4 -4
  64. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/onboarding.md +3 -3
  65. gflow_cli-0.71.1/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -10
  66. gflow_cli-0.71.1/src/gflow_cli/auth/internal_chromium.py +0 -185
  67. gflow_cli-0.71.1/tests/auth/test_real_chrome.py +0 -145
  68. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.agents/plugins/marketplace.json +0 -0
  69. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/README.md +0 -0
  70. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/active.md +0 -0
  71. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/branch-review.md +0 -0
  72. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/changelog.md +0 -0
  73. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/check.md +0 -0
  74. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/doc-review.md +0 -0
  75. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  76. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  77. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/known-issues.md +0 -0
  78. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/live-verify.md +0 -0
  79. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/llm-council.md +0 -0
  80. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/next.md +0 -0
  81. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/plan.md +0 -0
  82. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  83. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/predict.md +0 -0
  84. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/release.md +0 -0
  85. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/scenario.md +0 -0
  86. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/sonar.md +0 -0
  87. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/spike.md +0 -0
  88. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.claude/commands/gflow/status.md +0 -0
  89. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.gitattributes +0 -0
  90. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/CODEOWNERS +0 -0
  91. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/FUNDING.yml +0 -0
  92. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  93. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/copilot-instructions.md +0 -0
  94. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/dependabot.yml +0 -0
  95. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/ci.yml +0 -0
  96. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/deps-watch.yml +0 -0
  97. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/external-pr-triage.yml +0 -0
  98. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/governance-advisory.yml +0 -0
  99. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/governance-benchmark.yml +0 -0
  100. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/labels.yml +0 -0
  101. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/main-base-guard.yml +0 -0
  102. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/pages.yml +0 -0
  103. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/release.yml +0 -0
  104. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/scorecard.yml +0 -0
  105. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/selector-probe.yml +0 -0
  106. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.github/workflows/star-history-watch.yml +0 -0
  107. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.gitignore +0 -0
  108. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.gitleaks.toml +0 -0
  109. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.pre-commit-config.yaml +0 -0
  110. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/.secrets.baseline +0 -0
  111. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/CLAUDE.md +0 -0
  112. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/CONFIGURATION.md +0 -0
  113. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/CONTRIBUTING.md +0 -0
  114. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/DISCLAIMER.md +0 -0
  115. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/LICENSE +0 -0
  116. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/PLAN.md +0 -0
  117. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/RELEASE.md +0 -0
  118. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/ROADMAP.md +0 -0
  119. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/conftest.py +0 -0
  120. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/deploy/logrotate-pr-triage +0 -0
  121. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docker-compose.yml +0 -0
  122. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/ACCOUNT_SAFETY.md +0 -0
  123. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/AGENT_GUIDE.md +0 -0
  124. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/AGENT_UI_E2E.md +0 -0
  125. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/AGENT_UI_RECON.md +0 -0
  126. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  127. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/CHARACTER.md +0 -0
  128. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/DATA_LAYER.md +0 -0
  129. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/DEMOS.md +0 -0
  130. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/DEVELOPMENT.md +0 -0
  131. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/E2E_TESTING.md +0 -0
  132. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/EXTERNAL_STORAGE.md +0 -0
  133. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/GITHUB.md +0 -0
  134. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  135. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  136. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/INSTRUCTIONS.md +0 -0
  137. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  138. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  139. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  140. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  141. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  142. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  143. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  144. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  145. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  146. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  147. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  148. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  149. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  150. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  151. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  152. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  153. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  154. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  155. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  156. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  157. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  158. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  159. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  160. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  161. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  162. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  163. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  164. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  165. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  166. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  167. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  168. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  169. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  170. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  171. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  172. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  173. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  174. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  175. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  176. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  177. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  178. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  179. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  180. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  181. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  182. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  183. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  184. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  185. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  186. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  187. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  188. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  189. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  190. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  191. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  192. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  193. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  194. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  195. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  196. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  197. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  198. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  199. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  200. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  201. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  202. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  203. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  204. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  205. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  206. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  207. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  208. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  209. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  210. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  211. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  212. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  213. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  214. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  215. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  216. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  217. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/MEDIA_LIBRARY.md +0 -0
  218. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/MOVIE.md +0 -0
  219. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/PROMPT_EXPANSION.md +0 -0
  220. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  221. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/SECURITY.md +0 -0
  222. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/TOOLS.md +0 -0
  223. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/assets/demo-split-pf.gif +0 -0
  224. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/assets/example-run.gif +0 -0
  225. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/assets/examples.webp +0 -0
  226. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/schemas/movie-handoff.schema.json +0 -0
  227. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/sonar-cleanup-tracker.md +0 -0
  228. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/README.md +0 -0
  229. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  230. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  231. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  232. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  233. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  234. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  235. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  236. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  237. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  238. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  239. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  240. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  241. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  242. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  243. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  244. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  245. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  246. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  247. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  248. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  249. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  250. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  251. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  252. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  253. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  254. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  255. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  256. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  257. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  258. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  259. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/release-signing.md +0 -0
  260. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  261. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  262. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  263. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  264. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  265. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  266. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  267. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  268. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  269. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  270. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  271. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  272. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  273. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  274. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  275. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  276. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  277. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  278. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  279. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  280. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  281. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  282. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  283. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  284. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  285. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  286. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  287. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  288. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  289. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  290. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  291. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  292. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  293. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  294. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  295. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  296. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  297. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  298. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  299. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  300. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  301. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  302. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  303. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  304. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  305. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  306. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  307. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  308. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  309. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  310. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  311. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  312. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  313. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  314. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  315. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  316. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  317. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  318. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  319. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  320. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  321. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  322. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  323. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  324. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  325. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  326. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  327. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  328. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  329. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  330. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  331. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  332. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  333. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  334. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  335. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  336. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  337. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  338. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  339. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  340. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  341. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  342. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  343. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  344. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  345. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  346. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  347. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  348. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  349. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  350. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  351. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  352. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/README.md +0 -0
  353. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/batch_from_config.py +0 -0
  354. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/multi_prompt_t2i.py +0 -0
  355. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/sample_config.json +0 -0
  356. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/sample_prompts.txt +0 -0
  357. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/single_image_t2i.py +0 -0
  358. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/examples/workflow_chain.py +0 -0
  359. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/index.html +0 -0
  360. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/README.md +0 -0
  361. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/01_upload_image.json +0 -0
  362. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  363. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  364. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/04_archive_workflow.json +0 -0
  365. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/05_createProject.json +0 -0
  366. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/06_batchGenerateImages.json +0 -0
  367. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  368. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  369. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  370. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  371. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  372. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/12_create_scene.json +0 -0
  373. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  374. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/14_get_scene_workflows.json +0 -0
  375. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  376. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/canary/register_task.ps1 +0 -0
  377. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/canary/run_canary.py +0 -0
  378. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_council_memory.py +0 -0
  379. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_doc_links.py +0 -0
  380. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_materiality.py +0 -0
  381. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_release_artifacts.py +0 -0
  382. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_repo_hygiene.py +0 -0
  383. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_test_count.py +0 -0
  384. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/check_website_docs_pii.py +0 -0
  385. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/ci/generate_website_docs.py +0 -0
  386. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/debug_editor.py +0 -0
  387. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/debug_gen_settings.py +0 -0
  388. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/debug_settings.py +0 -0
  389. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/_recording_client.py +0 -0
  390. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/_spike_common.py +0 -0
  391. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/acceptance/__init__.py +0 -0
  392. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/acceptance/bench.py +0 -0
  393. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/acceptance/domain.py +0 -0
  394. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/acceptance/judge.py +0 -0
  395. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/acceptance/settings.py +0 -0
  396. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/active_plan.py +0 -0
  397. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  398. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  399. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  400. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  401. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  402. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  403. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  404. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_locale_invariants.py +0 -0
  405. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  406. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  407. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  408. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  409. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  410. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  411. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  412. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  413. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_project_listing.py +0 -0
  414. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  415. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  416. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  417. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  418. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/character_create_spike.py +0 -0
  419. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/character_create_spike_v2.py +0 -0
  420. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/dump_character_selectors.js +0 -0
  421. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/README.md +0 -0
  422. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  423. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  424. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  425. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  426. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  427. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  428. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  429. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  430. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  431. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  432. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  433. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/incident_bundle_quality.py +0 -0
  434. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  435. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  436. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  437. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/make_project.py +0 -0
  438. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/materiality_backtest.py +0 -0
  439. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  440. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/measure_locale_probe.py +0 -0
  441. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  442. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/patch_character.py +0 -0
  443. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/skillopt/README.md +0 -0
  444. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/skillopt/harness.py +0 -0
  445. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/skillopt/tasks.json +0 -0
  446. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/sonar-local-scan.sh +0 -0
  447. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  448. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  449. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_changelog_capture.py +0 -0
  450. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  451. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  452. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  453. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  454. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  455. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  456. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  457. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  458. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  459. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  460. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  461. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_host_lane.py +0 -0
  462. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  463. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  464. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  465. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  466. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_incident_live.py +0 -0
  467. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  468. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  469. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  470. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  471. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  472. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  473. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_locale_poison.py +0 -0
  474. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  475. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  476. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  477. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  478. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  479. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  480. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  481. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  482. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  483. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  484. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  485. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  486. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  487. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  488. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  489. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  490. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  491. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  492. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  493. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  494. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  495. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  496. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  497. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  498. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_model_inventory.py +0 -0
  499. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  500. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  501. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  502. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  503. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  504. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  505. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_patch_entity.py +0 -0
  506. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_patchright.py +0 -0
  507. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_project_media_status.py +0 -0
  508. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  509. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  510. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  511. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/verify_language_agnostic.py +0 -0
  512. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  513. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/dev/verify_model_attribution.py +0 -0
  514. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/README.md +0 -0
  515. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/capture_flow_traffic.py +0 -0
  516. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  517. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/memory_profile.py +0 -0
  518. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/recaptcha_mint.py +0 -0
  519. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  520. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  521. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  522. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/probe/run_probe.py +0 -0
  523. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/probe/spike_auth_matrix.py +0 -0
  524. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/record_demo.ps1 +0 -0
  525. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/smoke_image.py +0 -0
  526. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/smoke_video_editor.py +0 -0
  527. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/smoke_worker_style.py +0 -0
  528. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/spike_waf_camoufox.py +0 -0
  529. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/scripts/verify_chrome_auth_viability.py +0 -0
  530. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/README.md +0 -0
  531. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/changelog/SKILL.md +0 -0
  532. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/check/SKILL.md +0 -0
  533. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/doc-review/SKILL.md +0 -0
  534. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/issue-assessment/SKILL.md +0 -0
  535. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/issue-resolve/SKILL.md +0 -0
  536. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/known-issues/SKILL.md +0 -0
  537. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/live-verify/SKILL.md +0 -0
  538. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/llm-council/SKILL.md +0 -0
  539. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/plan/SKILL.md +0 -0
  540. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/pr-council-review/SKILL.md +0 -0
  541. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/predict/SKILL.md +0 -0
  542. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/release/SKILL.md +0 -0
  543. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/scenario/SKILL.md +0 -0
  544. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/sonar/SKILL.md +0 -0
  545. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/spike/SKILL.md +0 -0
  546. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/status/SKILL.md +0 -0
  547. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/clip_qa.py +0 -0
  548. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/composition.md +0 -0
  549. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/consistency.md +0 -0
  550. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/skills/video-production/tasks.json +0 -0
  551. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/sonar-project.properties +0 -0
  552. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/__main__.py +0 -0
  553. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/_cli_helpers.py +0 -0
  554. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/__init__.py +0 -0
  555. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/_engine.py +0 -0
  556. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/_retry.py +0 -0
  557. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  558. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/character.py +0 -0
  559. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/credits.py +0 -0
  560. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/dto.py +0 -0
  561. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/extend_chain.py +0 -0
  562. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/image.py +0 -0
  563. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/image_upscale.py +0 -0
  564. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/recaptcha.py +0 -0
  565. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/routes.py +0 -0
  566. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/scene.py +0 -0
  567. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  568. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/_common.py +0 -0
  569. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  570. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/base.py +0 -0
  571. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  572. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  573. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  574. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  575. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  576. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  577. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  578. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  579. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  580. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  581. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  582. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/video.py +0 -0
  583. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/api/video_extend.py +0 -0
  584. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/__init__.py +0 -0
  585. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/base.py +0 -0
  586. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/cookies.py +0 -0
  587. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/factory.py +0 -0
  588. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/strategies.py +0 -0
  589. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/auth/verification.py +0 -0
  590. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/chain.py +0 -0
  591. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/chain_manifest.py +0 -0
  592. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli.py +0 -0
  593. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_character.py +0 -0
  594. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_credits.py +0 -0
  595. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_data.py +0 -0
  596. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_doctor.py +0 -0
  597. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_image.py +0 -0
  598. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_instructions.py +0 -0
  599. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_models.py +0 -0
  600. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_movie.py +0 -0
  601. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_project.py +0 -0
  602. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_run.py +0 -0
  603. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_scene.py +0 -0
  604. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_tools.py +0 -0
  605. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_update.py +0 -0
  606. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/cli_video.py +0 -0
  607. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/composition.py +0 -0
  608. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/__init__.py +0 -0
  609. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/chain_repo.py +0 -0
  610. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  611. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  612. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  613. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  614. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  615. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  616. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  617. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  618. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  619. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  620. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/models.py +0 -0
  621. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/queries.py +0 -0
  622. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/recorder.py +0 -0
  623. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/redaction.py +0 -0
  624. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/repository.py +0 -0
  625. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/data/store.py +0 -0
  626. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/diagnostics.py +0 -0
  627. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/exceptions.py +0 -0
  628. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/file_integrity.py +0 -0
  629. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  630. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  631. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  632. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  633. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/image_batch.py +0 -0
  634. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/json_output.py +0 -0
  635. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/__init__.py +0 -0
  636. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/prompts.py +0 -0
  637. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/resources.py +0 -0
  638. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/server.py +0 -0
  639. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/setup.py +0 -0
  640. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  641. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/media.py +0 -0
  642. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/movie_manifest.py +0 -0
  643. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/observability.py +0 -0
  644. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/paths.py +0 -0
  645. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/profile_lease.py +0 -0
  646. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/profile_store.py +0 -0
  647. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/redaction.py +0 -0
  648. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/__init__.py +0 -0
  649. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  650. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/character_create.py +0 -0
  651. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/credits.py +0 -0
  652. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/doctor.py +0 -0
  653. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/services/mentions.py +0 -0
  654. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/storage.py +0 -0
  655. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/__init__.py +0 -0
  656. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/banned.py +0 -0
  657. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  658. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  659. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  660. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  661. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/expander.py +0 -0
  662. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/invocation.py +0 -0
  663. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/loader.py +0 -0
  664. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/registry.py +0 -0
  665. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/runtime.py +0 -0
  666. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/tools/spec.py +0 -0
  667. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/ui/app.py +0 -0
  668. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/ui/server.py +0 -0
  669. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/update_check.py +0 -0
  670. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/winsec.py +0 -0
  671. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/worker/codec.py +0 -0
  672. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/worker/daemon.py +0 -0
  673. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/src/gflow_cli/worker/queue.py +0 -0
  674. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tasks/lessons.md +0 -0
  675. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/test_assets/sample_batch.json +0 -0
  676. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/test_assets/sample_batch.tsv +0 -0
  677. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/test_assets/sample_batch_invalid.tsv +0 -0
  678. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/__init__.py +0 -0
  679. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/__init__.py +0 -0
  680. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/fixtures/character_gen_response.json +0 -0
  681. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  682. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  683. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  684. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  685. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_bearer_redaction.py +0 -0
  686. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_character.py +0 -0
  687. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_character_readback_fallback.py +0 -0
  688. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client.py +0 -0
  689. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_character.py +0 -0
  690. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_delete_characters.py +0 -0
  691. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_errors.py +0 -0
  692. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_extend.py +0 -0
  693. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_generate_character.py +0 -0
  694. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_image.py +0 -0
  695. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_incidents.py +0 -0
  696. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_launch_kwargs.py +0 -0
  697. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_locale_cache.py +0 -0
  698. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_migrated_mint.py +0 -0
  699. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_patch_entity.py +0 -0
  700. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_scene.py +0 -0
  701. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_client_upscale.py +0 -0
  702. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_concurrency.py +0 -0
  703. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_credits.py +0 -0
  704. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_credits_http.py +0 -0
  705. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_dto.py +0 -0
  706. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_engine.py +0 -0
  707. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_extend_chain.py +0 -0
  708. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_image.py +0 -0
  709. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_image_dto.py +0 -0
  710. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_image_upscale.py +0 -0
  711. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  712. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_recaptcha.py +0 -0
  713. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_retry.py +0 -0
  714. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_routes.py +0 -0
  715. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_routes_character.py +0 -0
  716. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_routes_locale.py +0 -0
  717. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_routes_scene.py +0 -0
  718. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_sapisidhash_helper.py +0 -0
  719. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_scene_models.py +0 -0
  720. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_video.py +0 -0
  721. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_video_extend.py +0 -0
  722. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_video_request.py +0 -0
  723. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/test_video_status_poll.py +0 -0
  724. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/__init__.py +0 -0
  725. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/conftest.py +0 -0
  726. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/drivers/__init__.py +0 -0
  727. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  728. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_classic.py +0 -0
  729. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_factory.py +0 -0
  730. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  731. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  732. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_base.py +0 -0
  733. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_batchexecute.py +0 -0
  734. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_bearer.py +0 -0
  735. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_character_model_picker.py +0 -0
  736. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_common.py +0 -0
  737. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  738. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_factory.py +0 -0
  739. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_fingerprint.py +0 -0
  740. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  741. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_locale_navigation.py +0 -0
  742. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
  743. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  744. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  745. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_route.py +0 -0
  746. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_mode_control.py +0 -0
  747. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  748. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_navigation_settled.py +0 -0
  749. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  750. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  751. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_policy_400.py +0 -0
  752. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_sapisidhash.py +0 -0
  753. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  754. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_transport_timeout.py +0 -0
  755. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation.py +0 -0
  756. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  757. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  758. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  759. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  760. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  761. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/auth/strategies/test_factory.py +0 -0
  762. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/auth/test_cookies.py +0 -0
  763. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/auth/test_verification.py +0 -0
  764. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/auth/test_windows_acl.py +0 -0
  765. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/__init__.py +0 -0
  766. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_auth_status.py +0 -0
  767. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_auth_list.py +0 -0
  768. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_character.py +0 -0
  769. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_character_create.py +0 -0
  770. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_credits.py +0 -0
  771. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_data.py +0 -0
  772. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_data_errors.py +0 -0
  773. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  774. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_data_sync.py +0 -0
  775. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_doctor.py +0 -0
  776. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_image.py +0 -0
  777. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  778. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  779. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_image_upscale.py +0 -0
  780. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  781. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_instructions.py +0 -0
  782. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_models.py +0 -0
  783. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_movie.py +0 -0
  784. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_run.py +0 -0
  785. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_scene.py +0 -0
  786. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_tools.py +0 -0
  787. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_video.py +0 -0
  788. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_video_chain.py +0 -0
  789. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_cli_video_extend.py +0 -0
  790. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_failure_funnel.py +0 -0
  791. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_helpers.py +0 -0
  792. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_incident_output.py +0 -0
  793. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_movie_manifest.py +0 -0
  794. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  795. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_predictable_output.py +0 -0
  796. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  797. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  798. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_settings_validation.py +0 -0
  799. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  800. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/composition/test_character.py +0 -0
  801. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/composition/test_compose_prompt.py +0 -0
  802. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/composition/test_handoff.py +0 -0
  803. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/composition/test_style_variants.py +0 -0
  804. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/composition/test_style_variants_e2e.py +0 -0
  805. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/__init__.py +0 -0
  806. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_chain_repo.py +0 -0
  807. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_failure_recording.py +0 -0
  808. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_find_incomplete_character.py +0 -0
  809. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_models.py +0 -0
  810. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_null_columns_stay_null.py +0 -0
  811. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_packaging.py +0 -0
  812. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_recorder.py +0 -0
  813. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_recorder_character.py +0 -0
  814. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_redaction.py +0 -0
  815. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_repository.py +0 -0
  816. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_scene_persistence.py +0 -0
  817. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_settings_and_errors.py +0 -0
  818. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_store.py +0 -0
  819. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/data/test_store_migrations.py +0 -0
  820. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/dev/test_recording_client.py +0 -0
  821. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/__init__.py +0 -0
  822. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/conftest.py +0 -0
  823. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  824. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  825. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  826. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  827. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  828. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_chain_e2e.py +0 -0
  829. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_character_create_e2e.py +0 -0
  830. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  831. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  832. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  833. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_credits_e2e.py +0 -0
  834. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  835. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_daemon_e2e.py +0 -0
  836. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  837. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  838. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  839. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  840. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  841. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  842. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  843. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  844. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  845. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  846. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  847. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_json_output_e2e.py +0 -0
  848. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  849. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  850. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  851. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  852. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  853. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_scene_compose_live.py +0 -0
  854. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  855. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_tools_e2e.py +0 -0
  856. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_transports_e2e.py +0 -0
  857. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  858. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  859. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  860. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/__init__.py +0 -0
  861. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/asset_tagging.feature +0 -0
  862. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/auth.feature +0 -0
  863. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/auth_login.feature +0 -0
  864. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/character_create.feature +0 -0
  865. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/character_read.feature +0 -0
  866. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/conftest.py +0 -0
  867. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/credits.feature +0 -0
  868. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/duration_tab_drift.feature +0 -0
  869. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/entity_provenance.feature +0 -0
  870. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/image.feature +0 -0
  871. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/image_batch_references.feature +0 -0
  872. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/image_upscale.feature +0 -0
  873. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/incident_diagnostics.feature +0 -0
  874. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/instructions.feature +0 -0
  875. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/latched_locale_recovery.feature +0 -0
  876. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/locale_picker_include.feature +0 -0
  877. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/mcp_tasks.feature +0 -0
  878. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/media_picker_tiers.feature +0 -0
  879. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/migrated_driver.feature +0 -0
  880. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/migrated_host_gate.feature +0 -0
  881. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/migrated_i2v.feature +0 -0
  882. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/output_hardening.feature +0 -0
  883. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_asset_tagging_steps.py +0 -0
  884. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_auth_login_steps.py +0 -0
  885. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_auth_steps.py +0 -0
  886. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_character_create_steps.py +0 -0
  887. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_character_read_steps.py +0 -0
  888. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_credits_steps.py +0 -0
  889. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_image_steps.py +0 -0
  890. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_image_upscale_steps.py +0 -0
  891. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  892. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_instructions_steps.py +0 -0
  893. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  894. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  895. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  896. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_migrated_driver_steps.py +0 -0
  897. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  898. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_migrated_i2v_steps.py +0 -0
  899. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_output_hardening_steps.py +0 -0
  900. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_step_collision_guard.py +0 -0
  901. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  902. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/test_video_chain_steps.py +0 -0
  903. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/video_agent_ui.feature +0 -0
  904. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/features/video_chain.feature +0 -0
  905. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/__init__.py +0 -0
  906. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/changelog_modal_page.html +0 -0
  907. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/doctor_env.py +0 -0
  908. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/flow_model_inventory.json +0 -0
  909. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  910. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/listing_payload.py +0 -0
  911. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/fixtures/seeded_catalog.py +0 -0
  912. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/__init__.py +0 -0
  913. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/test_grading.py +0 -0
  914. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/test_model.py +0 -0
  915. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/test_model_governance.py +0 -0
  916. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/test_registry.py +0 -0
  917. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/flow_selectors/test_report.py +0 -0
  918. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/image_batch/__init__.py +0 -0
  919. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/image_batch/test_image_manifest.py +0 -0
  920. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/image_batch/test_jitter_config.py +0 -0
  921. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/image_batch/test_observability_events.py +0 -0
  922. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/__init__.py +0 -0
  923. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/conftest.py +0 -0
  924. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/constants.py +0 -0
  925. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/test_expander_gateway.py +0 -0
  926. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/test_storage_gcs.py +0 -0
  927. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/integration/test_storage_s3.py +0 -0
  928. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/__init__.py +0 -0
  929. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/conftest.py +0 -0
  930. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_auth_status_tool.py +0 -0
  931. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_character_tools.py +0 -0
  932. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_cli_parity.py +0 -0
  933. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_credits_tool.py +0 -0
  934. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_error_funnel.py +0 -0
  935. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_http_transport.py +0 -0
  936. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_known_issues_resource.py +0 -0
  937. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  938. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_no_spend.py +0 -0
  939. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  940. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  941. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_resources.py +0 -0
  942. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_server.py +0 -0
  943. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_setup.py +0 -0
  944. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_stdio_transport.py +0 -0
  945. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_tasks_extension.py +0 -0
  946. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_tools_helpers.py +0 -0
  947. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_tools_instructions.py +0 -0
  948. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/mcp/test_tools_wired.py +0 -0
  949. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  950. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_canary_classify.py +0 -0
  951. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_canary_reexec.py +0 -0
  952. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  953. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  954. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_council_memory.py +0 -0
  955. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_materiality.py +0 -0
  956. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  957. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  958. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_test_count.py +0 -0
  959. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  960. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_codex_plugin.py +0 -0
  961. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_extract_har_summary.py +0 -0
  962. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_frame_acceptance.py +0 -0
  963. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_generate_website_docs.py +0 -0
  964. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  965. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_materiality_backtest.py +0 -0
  966. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  967. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_spike_page_pool.py +0 -0
  968. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_spike_profile_lease.py +0 -0
  969. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/scripts/test_workflow_hardening.py +0 -0
  970. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/__init__.py +0 -0
  971. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_catalog_sync.py +0 -0
  972. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_character_create_redaction.py +0 -0
  973. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_character_create_saga.py +0 -0
  974. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  975. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_credits.py +0 -0
  976. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_doctor.py +0 -0
  977. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_media_attribution.py +0 -0
  978. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_mentions_observability.py +0 -0
  979. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_mentions_parse.py +0 -0
  980. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_mentions_resolve.py +0 -0
  981. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/services/test_resolve_and_apply.py +0 -0
  982. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/smoke/__init__.py +0 -0
  983. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  984. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/smoke/test_real_flow.py +0 -0
  985. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_auth.py +0 -0
  986. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_chain.py +0 -0
  987. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_chain_manifest.py +0 -0
  988. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_cli_data.py +0 -0
  989. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_cli_project.py +0 -0
  990. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_cli_update.py +0 -0
  991. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_conftest_isolation.py +0 -0
  992. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_data_queries.py +0 -0
  993. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_bundle.py +0 -0
  994. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_events.py +0 -0
  995. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_journal.py +0 -0
  996. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_recorder.py +0 -0
  997. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_retention.py +0 -0
  998. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_diagnostics_sanitize.py +0 -0
  999. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_documentation_gate.py +0 -0
  1000. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_duration_tab_drift.py +0 -0
  1001. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_entity_provenance.py +0 -0
  1002. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_errors.py +0 -0
  1003. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_errors_classification.py +0 -0
  1004. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_image_batch_references.py +0 -0
  1005. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_incident_generation_requests.py +0 -0
  1006. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_json_output.py +0 -0
  1007. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_marker_registry.py +0 -0
  1008. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_media.py +0 -0
  1009. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_observability.py +0 -0
  1010. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1011. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_paths.py +0 -0
  1012. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_playwright_pin.py +0 -0
  1013. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_profile_lease.py +0 -0
  1014. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_profile_lease_subprocess.py +0 -0
  1015. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_profile_store.py +0 -0
  1016. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_profile_store_locale.py +0 -0
  1017. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_project_list_urls.py +0 -0
  1018. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_self_documenting_errors.py +0 -0
  1019. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_smoke.py +0 -0
  1020. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/test_update_check.py +0 -0
  1021. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/__init__.py +0 -0
  1022. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_banned.py +0 -0
  1023. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_expander.py +0 -0
  1024. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_invocation.py +0 -0
  1025. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_loader.py +0 -0
  1026. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_registry.py +0 -0
  1027. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_runtime.py +0 -0
  1028. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/tools/test_spec.py +0 -0
  1029. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/ui/test_app.py +0 -0
  1030. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_codec.py +0 -0
  1031. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_daemon.py +0 -0
  1032. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1033. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_queue.py +0 -0
  1034. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1035. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1036. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1037. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/CHARACTER.md +0 -0
  1038. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/DATA_LAYER.md +0 -0
  1039. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/DEVELOPMENT.md +0 -0
  1040. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/E2E_TESTING.md +0 -0
  1041. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1042. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/INSTRUCTIONS.md +0 -0
  1043. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1044. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/MOVIE.md +0 -0
  1045. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1046. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/SECURITY.md +0 -0
  1047. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/TOOLS.md +0 -0
  1048. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/agents.md +0 -0
  1049. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/index.md +0 -0
  1050. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/installation.md +0 -0
  1051. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/docs/stylesheets/extra.css +0 -0
  1052. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/mkdocs.yml +0 -0
  1053. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/requirements.in +0 -0
  1054. {gflow_cli-0.71.1 → gflow_cli-0.72.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.71.1",
3
+ "version": "0.72.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -183,8 +183,9 @@
183
183
  # GFLOW_CLI_UI_MODE=auto
184
184
 
185
185
  # Which Flow frontend gflow drives (#639). auto (default): flow.google.com is the
186
- # default host for what it can serve today (video t2v, and video i2v from a local
187
- # --initial-frame, with --project) on every
186
+ # default host for what it can serve today (video t2v; video i2v from a local
187
+ # --initial-frame; video r2v from local --ref files; image t2i; and image i2i from
188
+ # local files — all with --project) on every
188
189
  # account; requests it cannot serve yet keep the labs driver on an unmoved
189
190
  # account, and a moved account gets the migrated composer for everything ported.
190
191
  # flow.google.com: force the migrated composer for everything.
@@ -42,7 +42,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
42
42
 
43
43
  ## Project at a glance
44
44
 
45
- - 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, image-to-video from a local `--initial-frame`, and reference-to-video from local `--ref` files, today; `GFLOW_CLI_FLOW_HOST`).
45
+ - 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, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image, today; `GFLOW_CLI_FLOW_HOST`).
46
46
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
47
47
  - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_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`.
48
48
  - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `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).
@@ -50,7 +50,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
50
50
 
51
51
  ## Headed-browser dependency (architectural reality)
52
52
 
53
- gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects Playwright's bundled Chromium and most headless approaches. This is the project's defining trade-off:
53
+ gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects browsers that advertise automation, and most headless approaches. This is the project's defining trade-off:
54
54
 
55
55
  - ✅ Works end-to-end against live Google accounts.
56
56
  - ❌ Requires a saved Chrome profile, a display server for one-time login, and ~150 MB for Chromium.
@@ -7,6 +7,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.72.0] — 2026-09-09
11
+
12
+ ### Added
13
+
14
+ - **`gflow image t2i` and local-file `i2i` now run on migrated `flow.google.com`
15
+ accounts** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The Angular
16
+ composer binds Image mode, Nano Banana 2 / Pro, the four aspect ratios measured on that
17
+ host (16:9, 4:3, 1:1, 9:16) and counts 1–4,
18
+ then observes the page-owned `ogiZ0b` `batchexecute` reply and returns the same
19
+ `GeneratedImage` contract as the labs driver. Local references reuse the measured
20
+ `maseQ` upload + mention path and are verified in the outgoing submit body before the
21
+ result is trusted. The migrated page owns reCAPTCHA minting, avoiding the root-grid
22
+ `RecaptchaError`; unsupported UUID/entity/instruction/Imagen-4 forms still fail before
23
+ submit rather than silently dropping options.
24
+
25
+ - **`gflow image batch` is refused on the migrated host instead of failing as selector
26
+ drift** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The batch path
27
+ drives labs selectors only; it now raises `FlowHostMigratedError` (exit 36) before any
28
+ submit, rather than running those selectors against `flow.google.com` and reporting
29
+ exit 23 — which told the user to file a frontend-drift bug about a frontend that was
30
+ behaving correctly.
31
+
32
+ ### Changed
33
+
34
+ - **`gflow auth login` closes the browser for you.** It drives your real Google Chrome
35
+ through Playwright, watches for the completed Flow sign-in, and closes the window itself —
36
+ the "now close Chrome" step is gone. Closing the window yourself still works and still
37
+ verifies; it is not an error. On a machine where Playwright cannot resolve a Chrome
38
+ channel, or where Google rejects the browser anyway, login falls back automatically to the
39
+ previous flow (Chrome as a plain subprocess, you close the window). **There is no new flag
40
+ and nothing to choose.**
41
+ ([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md))
42
+
43
+ ### Fixed
44
+
45
+ - **The second image in one session no longer falls back to the labs reCAPTCHA mint**
46
+ ([#673](https://github.com/ffroliva/gflow-cli/issues/673)). Every migrated image run
47
+ parks its page on `about:blank`, which routes as `labs` — so the page-owned-mint
48
+ capability, derived from `page.url`, answered `False` on the next call and sent it
49
+ back to minting on the pooled bootstrap page. The transport now latches the observed
50
+ host: `gflow image batch`, which runs every prompt through one `FlowApiClient`,
51
+ generated its first prompt and failed the rest with the exact `RecaptchaError` this
52
+ release exists to remove.
53
+ - **`--aspect 3:4` is refused on the migrated host rather than reported as selector
54
+ drift.** The composer's aspect radiogroup was enumerated there with four radios —
55
+ `crop_16_9`, `crop_landscape`, `crop_square`, `crop_9_16` — and no `crop_portrait`, so
56
+ a 3:4 request missed its selector and raised exit 23. It is now an unported form
57
+ (exit 36). The "all five aspect ratios" claim has been corrected to the four measured
58
+ wherever it appeared.
59
+ - **The exit-36 remediation no longer contradicts the error it accompanies.**
60
+ `FlowHostMigratedError._default_remediation` still described the migrated host as
61
+ driving only t2v and local-frame i2v, so an image refusal printed a `detail` saying
62
+ t2i/i2i are driven directly above a remediation saying they are not. Both it and the
63
+ class docstring now name the full ported matrix.
64
+ - **`gflow auth login --browser internal` launched a browser configuration measured as
65
+ rejected.** The bundled-Chromium path shipped with no anti-automation flags, which leaves
66
+ `navigator.webdriver` set. On 2026-09-08 a browser in that state — real Chrome with the
67
+ flags removed — was rejected at `/v3/signin/rejected` 17.5 s into the flow, while the same
68
+ browser *with* the flags signed in normally. Bundled Chromium was measured only in the
69
+ flagged configuration, so its unflagged rejection is inferred from the shared signal, not
70
+ observed directly. It now passes
71
+ `--disable-blink-features=AutomationControlled`, `ignore_default_args=["--enable-automation"]`
72
+ and `chromium_sandbox=True` — the last of which also removes Chrome's cosmetic *"You are
73
+ using an unsupported command-line flag"* banner — and signs in on the real OS window
74
+ instead of an emulated 1920×1080 viewport that pushed Google's sign-in form off-screen on
75
+ smaller or scaled displays.
76
+ - **Setting `CHROME_BINARY` no longer makes Playwright's `channel="chrome"` look resolvable
77
+ when it is not.** The availability check treated the variable as proof, passed, and then
78
+ failed at launch with *"Chromium distribution 'chrome' is not found"*. Playwright honours a
79
+ custom binary only via `executable_path=`, never via `channel=`, so the variable is now
80
+ ignored by that check (it still resolves a Chrome binary everywhere else).
81
+
82
+ ### Security
83
+
84
+ - **`httpx2` / `httpcore2` bumped to 2.12.0, clearing five newly published CVEs**
85
+ ([#766](https://github.com/ffroliva/gflow-cli/pull/766)). `httpcore2` CVE-2026-84381 and
86
+ `httpx2` CVE-2026-84378 / -84379 / -84380 / -84382, all against 2.9.1; both arrive
87
+ transitively through `mcp`. The advisories were published against an unchanged lockfile —
88
+ `Dependency audit (pip-audit)` went red on `develop` without any dependency change — so
89
+ this is not a regression introduced by a feature PR. `uvx pip-audit` on the exported
90
+ requirements now reports no known vulnerabilities. The bump also adds `httpx2-jsfetch`
91
+ 1.0 to the lock, marked `sys_platform == 'emscripten'` (Pyodide/WASM only); it is never
92
+ installed on any platform gflow supports.
93
+
10
94
  ## [0.71.1] — 2026-09-08
11
95
 
12
96
  ### Fixed
@@ -4580,7 +4664,8 @@ shell-script template that branches on these codes.
4580
4664
 
4581
4665
  First skeleton. Not functional end-to-end yet.
4582
4666
 
4583
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...HEAD
4667
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.72.0...HEAD
4668
+ [0.72.0]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...v0.72.0
4584
4669
  [0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
4585
4670
  [0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
4586
4671
  [0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
@@ -14,13 +14,13 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
14
14
 
15
15
  ## Open
16
16
 
17
- ### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v, i2v from a local start frame, and r2v from local reference files (rest of the matrix pending)
17
+ ### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
18
18
 
19
- - **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video, local-file image-to-video and local-file reference-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, references by `@Name` or `--reference-entity`, `image`, scenes, extend, instructions and tools are not ported yet and still exit 36. **`character` is NOT in that list any more** — `character create` was verified working on the migrated host in v0.70.0 and `character list` was re-verified there on 2026-09-07. This line claimed otherwise for a day, which is the dangerous direction for a stale doc to be stale in: a migrated user reading it concludes a working feature is impossible. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker's tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` have never had a probe run against them at all, so read them as *unported by gflow*, never as *impossible on the host*
19
+ - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, the four aspect ratios its radiogroup was enumerated with (16:9, 4:3, 1:1, 9:16), and count 1–4; `3:4` had no radio in that enumeration and is refused before submit rather than reported as selector drift. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video end frames, video refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
20
20
  - **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
21
21
  - **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
22
22
  - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
23
- - **The migrated composer DOES have an image mode** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): a code comment claimed, as "measured, not assumed", that it has none. Falsified 2026-09-07 — its settings overlay carries a `mode` radiogroup of `[imageImage, videocamVideo]`, present and hit-testable. Nothing was clicked on that axis and nothing was submitted, so this does **not** establish that `image` works on a moved account; it establishes only that the claim it cannot is unfounded. Read the remaining exit 36 as *gflow does not drive this yet*, never as *the host cannot do it*; see [the spike](docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md).
23
+ - **The migrated composer image path is now driven** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): the first probe established a hit-testable Image mode; the 2026-09-08 follow-up captured real T2I and local-file I2I submissions on `ogiZ0b`, including page-owned reCAPTCHA, upload ids, response records and signed JPEG downloads. See [the submit-wire spike](docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md).
24
24
  - **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in v0.69.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
25
25
 
26
26
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
@@ -48,7 +48,7 @@ This is **not** selector rot, not [#493](https://github.com/ffroliva/gflow-cli/i
48
48
  and not the agentic cohort — the agentic indicators are absent too. It is a
49
49
  different origin serving different markup.
50
50
 
51
- **What works now — text-to-video on the migrated host.** `gflow video t2v … --project <id>`
51
+ **What works now — generation on the migrated host.** `gflow video t2v … --project <id>`
52
52
  drives the migrated editor directly (settings through its option groups, prompt,
53
53
  submit, then it observes the app's own `batchexecute` status replies and downloads
54
54
  the clip). Two real clips were generated this way on 2026-09-05 — spike
@@ -56,10 +56,11 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
56
56
  (`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
57
57
  command on every account — moved or not; `flow.google.com` forces it for
58
58
  everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
59
- migrated editor is not ported), and only `t2v`, `i2v` from a local `--initial-frame` (no end frame,
59
+ migrated editor is not ported), and `t2v`, `i2v` from a local `--initial-frame` (no end frame,
60
60
  no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
61
61
  found by file name after gflow uploads it through the editor), and `r2v` from local `--ref` files
62
- (see the next paragraph) — everything else still exits 36.
62
+ (see the next paragraph), plus `image t2i` and local-file `image i2i` — unsupported
63
+ forms still exit 36.
63
64
 
64
65
  **`r2v` from local `--ref` files also runs there (2026-09-06).** Each file is uploaded
65
66
  through the same editor toolbar path i2v uses — so the app's own `maseQ` reply names the
@@ -73,6 +74,12 @@ References by `@Name` and character entities stay on labs, for the same reason a
73
74
  UUID does: the picker exposes no media id to anchor on. Capture:
74
75
  [2026-09-05-migrated-r2v-attach-surface](docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md).
75
76
 
77
+ **Images also run there (2026-09-08).** The driver selects Image mode, Nano Banana 2
78
+ or Pro, any supported aspect and count 1–4, then observes the page's own synchronous
79
+ `ogiZ0b` reply. Local I2I files use the existing `maseQ` upload and mention path; every
80
+ uploaded id must appear in the submit body before the result is trusted. UUID/entity
81
+ references, Agent instructions, and Imagen 4 remain pre-submit refusals on this host.
82
+
76
83
  **Models on the migrated host.** Its picker is driven for every tier the account's
77
84
  menu actually renders, `veo-lite-lp` included — matched by the `[Lower Priority]`
78
85
  tag alone, exactly as on labs.google. That entry was first captured on 2026-09-05
@@ -100,8 +107,9 @@ which Playwright updates in the same tick as the hand-off navigation — and fai
100
107
  with the distinct, non-retryable exit 36 instead of the misleading
101
108
  `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
102
109
  accepts the migrated host, so a migrated load is no longer misread as a
103
- logged-out session. Text-to-video is driven (above); image, i2v/r2v, characters,
104
- scenes, extend, instructions, tools and project creation are the remaining work
110
+ logged-out session. The generation forms listed above and characters are driven;
111
+ scenes, extend, instructions, tools, project creation, and the named reference/model
112
+ variants are the remaining work
105
113
  tracked here — no retry helps for those until each is ported.
106
114
 
107
115
  > **v0.66.1's fast-fail did not fire in the field, and v0.66.2 is the correction.**
@@ -1515,9 +1523,10 @@ End-to-end live-verified on the `ffroliva` profile across `9:16`, `16:9`, `1:1`,
1515
1523
 
1516
1524
  ### G12 "browser not secure" block — Google rejects automated sign-in
1517
1525
 
1518
- - **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2
1526
+ - **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2 · **Mitigation reimplemented + re-measured:** 2026-09-08
1519
1527
 
1520
- Google's sign-in flow (`accounts.google.com/v3/signin/rejected`) detected Playwright's bundled Chromium as an automated browser and refused the login with no user-facing error.
1528
+ Google's sign-in flow (`accounts.google.com/v3/signin/rejected`) rejects a browser that
1529
+ advertises itself as automated, and refuses the login with no user-facing error.
1521
1530
 
1522
1531
  **Root cause (timing race):** Without `--disable-blink-features=AutomationControlled`,
1523
1532
  Blink's C++ engine sets `navigator.webdriver = true` as a non-configurable, non-writable
@@ -1525,20 +1534,52 @@ native property at Chrome startup — before any JavaScript (including `add_init
1525
1534
  can run. The `Object.defineProperty` override silently fails. With the flag, the property
1526
1535
  is never set; the JS override then works as belt-and-suspenders.
1527
1536
 
1528
- **Resolution:** `v0.6.0a2` adds `RealChromeStrategy` — a new auth strategy that launches
1529
- the system's real Google Chrome via Playwright's `channel="chrome"` with stealth flags.
1537
+ **Resolution:** `gflow auth login` launches the system's real Google Chrome through
1538
+ Playwright's `channel="chrome"` with `chromium_sandbox=True`, `no_viewport=True`, and both
1539
+ stealth flags — `--disable-blink-features=AutomationControlled` and
1540
+ `ignore_default_args=["--enable-automation"]`. Because gflow owns that browser it also
1541
+ detects the completed Flow sign-in and closes the window itself; see
1542
+ [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md). When no Chrome channel resolves, or
1543
+ Google rejects the browser anyway, login falls back automatically to launching Chrome as a
1544
+ plain subprocess and waiting for you to close the window. There is no flag and no choice to
1545
+ make, and closing the window yourself works on either path.
1546
+
1547
+ > **This entry described that Playwright implementation long before it existed.**
1548
+ > It read *"`v0.6.0a2` adds `RealChromeStrategy` — launches the system's real Google Chrome
1549
+ > via Playwright's `channel="chrome"` with stealth flags."* `src/gflow_cli/auth/real_chrome.py`
1550
+ > was created at `eb0de133` (2026-07-19) as a bare `subprocess.Popen` passive capture, and
1551
+ > `git log -S'channel="chrome"' -- src/gflow_cli/auth/` returned **zero** commits until the
1552
+ > auto-close change. The paragraph above is the same shape restated deliberately as current
1553
+ > fact, not the same accident left standing.
1530
1554
 
1531
1555
  ```bash
1532
- # Bypass G12 block explicitly:
1556
+ # Ask for real Chrome explicitly:
1533
1557
  gflow auth login --browser chrome
1534
1558
 
1535
1559
  # Or rely on auto-detection (default behaviour; picks real Chrome if installed):
1536
1560
  gflow auth login
1537
1561
  ```
1538
1562
 
1539
- A cosmetic "You are using an unsupported command-line flag" notice may appear briefly in
1540
- the Chrome window — this is harmless and can be dismissed. It is the accepted trade-off
1541
- for bypassing G12.
1563
+ **The block is current Google behaviour — "Resolved" means the mitigation holds, not that
1564
+ Google stopped.** Re-measured 2026-09-08 across three throwaway *unauthenticated* profiles,
1565
+ each signed into by hand
1566
+ ([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md)): a
1567
+ browser advertising `navigator.webdriver === true` — real Chrome, no stealth flags — was
1568
+ rejected at `/v3/signin/rejected` **17.5 s** into the flow, while the same real Chrome
1569
+ *with* the flags reported `false`, never saw the rejection, and reached a Flow session
1570
+ cookie at 59.4 s. Playwright's bundled Chromium with the flags passed too, so the binary is
1571
+ not the discriminator; `navigator.webdriver` tracked the outcome in all three arms.
1572
+
1573
+ > **This is N=1 — do not read it as a capability claim.** One account, one Windows host, one
1574
+ > residential IP, one Chrome build (`Chrome/149.0.0.0`), one day. Google's sign-in risk
1575
+ > scoring varies with account age and IP reputation, so it does not predict CI, a VPS, or a
1576
+ > fresh account. Every arm ran headed, so it says nothing about headless in either
1577
+ > direction. Sign-in is also a different gate from generation's reCAPTCHA Enterprise check;
1578
+ > a result on one does not move the other.
1579
+
1580
+ The Chrome window no longer shows the "You are using an unsupported command-line flag"
1581
+ notice this entry used to warn about: that banner came from the `--no-sandbox` Playwright
1582
+ injects by default, and `chromium_sandbox=True` stops the injection.
1542
1583
 
1543
1584
  ---
1544
1585
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.71.1
3
+ Version: 0.72.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
@@ -130,7 +130,7 @@ gflow character create --project <id> --name "Aria" --face-prompt "..." --body-p
130
130
 
131
131
  Outputs land under `$GFLOW_CLI_OUTPUT_DIR`, or you can route them to S3, MinIO, or Google Cloud Storage with [`GFLOW_CLI_STORAGE_URI`](docs/EXTERNAL_STORAGE.md). The first call takes 30 to 90 seconds while Chromium warms up; later calls reuse the warm session.
132
132
 
133
- > **Why `--browser chrome`?** Google rejects Playwright's bundled Chromium. The CLI fails fast with a friendly error (`AuthBrowserRejectedError`, exit code 14) if you pick anything else.
133
+ > **Why `--browser chrome`?** It is the only strategy that marks the profile as a real-Chrome profile, which is what later generation runs open it with. The default `auto` picks it whenever Chrome is installed — see [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md).
134
134
 
135
135
  > **Installing from a local checkout?** `uv tool install <path>` **ignores `uv.lock`** and resolves dependencies from the `pyproject.toml` ranges, so it can hand you a Playwright build this project has never tested. Playwright ships the browser driver, and an untested minor can wedge a generation silently. Carry the locked version explicitly:
136
136
  >
@@ -198,7 +198,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
198
198
 
199
199
  **Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
200
200
 
201
- **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
201
+ **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, and image-to-image from local files. Image generation supports Nano Banana 2 / Pro, the four aspect ratios measured on that host (16:9, 4:3, 1:1, 9:16), and counts 1–4; an existing project is required at the transport boundary. UUID/entity references, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
202
202
 
203
203
  **What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
204
204
 
@@ -59,7 +59,7 @@ gflow character create --project <id> --name "Aria" --face-prompt "..." --body-p
59
59
 
60
60
  Outputs land under `$GFLOW_CLI_OUTPUT_DIR`, or you can route them to S3, MinIO, or Google Cloud Storage with [`GFLOW_CLI_STORAGE_URI`](docs/EXTERNAL_STORAGE.md). The first call takes 30 to 90 seconds while Chromium warms up; later calls reuse the warm session.
61
61
 
62
- > **Why `--browser chrome`?** Google rejects Playwright's bundled Chromium. The CLI fails fast with a friendly error (`AuthBrowserRejectedError`, exit code 14) if you pick anything else.
62
+ > **Why `--browser chrome`?** It is the only strategy that marks the profile as a real-Chrome profile, which is what later generation runs open it with. The default `auto` picks it whenever Chrome is installed — see [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md).
63
63
 
64
64
  > **Installing from a local checkout?** `uv tool install <path>` **ignores `uv.lock`** and resolves dependencies from the `pyproject.toml` ranges, so it can hand you a Playwright build this project has never tested. Playwright ships the browser driver, and an untested minor can wedge a generation silently. Carry the locked version explicitly:
65
65
  >
@@ -127,7 +127,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
127
127
 
128
128
  **Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
129
129
 
130
- **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
130
+ **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, and image-to-image from local files. Image generation supports Nano Banana 2 / Pro, the four aspect ratios measured on that host (16:9, 4:3, 1:1, 9:16), and counts 1–4; an existing project is required at the transport boundary. UUID/entity references, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
131
131
 
132
132
  **What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
133
133
 
@@ -79,7 +79,7 @@ src/gflow_cli/auth/
79
79
  └── strategies.py # (internal) shared Playwright helpers
80
80
  ```
81
81
 
82
- **Why:** Google's bot-detection ("G12 block") rejects Playwright's bundled Chromium during `gflow auth login`. Launching the user's installed Google Chrome with `--disable-blink-features=AutomationControlled` plus a JS `add_init_script` that overrides `navigator.webdriver` bypasses detection. Two strategies are needed because the setup (persistent-context flags, Chrome binary path, stealth init) differs fundamentally between them.
82
+ **Why two strategies:** Google's "G12 block" keys on a browser that *advertises* automation (`navigator.webdriver`), not on which binary runs. Both strategies therefore build their launch options from the same `login_launch_kwargs()` helper — `--disable-blink-features=AutomationControlled` plus `ignore_default_args=["--enable-automation"]` — and differ only by `channel="chrome"`. They stay separate classes for what those options do not carry: `name` supplies the `source=` label on the session probe (a caller-supplied `"chrome"`/`"internal"` log value, never read back from a response), only the `chrome` strategy writes the `.gflow_browser_strategy` marker that `channel_for_profile()` reads later, and `factory.py` is a name→type registry that `--browser auto|chrome|internal` routes through.
83
83
 
84
84
  **AuthStrategy Protocol** (`base.py`):
85
85
  ```python
@@ -94,10 +94,10 @@ class AuthStrategy(Protocol):
94
94
  - `mode="internal"` — explicit `InternalChromiumStrategy`.
95
95
 
96
96
  **RealChromeStrategy stealth design** (`real_chrome.py`):
97
- - Uses a **Passive Capture** pattern: launches system Chrome via `subprocess.Popen` without any automation flags or remote-debugging ports.
98
- - Provides a 100% clean browser process that Google's G12 block cannot detect.
99
- - The CLI blocks on `proc.wait()`, prompting the user to complete the sign-in and **close the browser completely**.
100
- - Post-close: performs a fast, headless `launch_persistent_context` probe to verify the `SAPISID` cookie was successfully captured.
97
+ - **Default — Playwright-owned Chrome.** Launches the system's real Google Chrome via Playwright's `channel="chrome"` with `chromium_sandbox=True`, `no_viewport=True`, `--disable-blink-features=AutomationControlled`, and `ignore_default_args=["--enable-automation"]`. What Google's G12 block keys on is a browser that *advertises* automation (`navigator.webdriver`), not the Playwright connection itself; with these flags the property is `false` and sign-in proceeds normally. See the G12 entry in [KNOWN_ISSUES.md](../KNOWN_ISSUES.md) for the 2026-09-08 measurement and its N=1 caveat.
98
+ - Because gflow owns that context, it polls the Flow session endpoint from it until the outcome is `AUTHENTICATED` and then **closes the browser itself** — the user is not asked to close anything. A user who closes the window anyway is routed to the same `verify_flow_profile` check, never to an error.
99
+ - **Automatic fallback — Passive Capture.** `login()` falls back on four conditions — a `headless=True` caller (the CLI exposes no such flag; this guards library callers), Playwright cannot resolve a Chrome channel (`browser_manager.is_playwright_chrome_channel_available()`), `launch_persistent_context` raises, or Google rejects the owned browser (`AuthBrowserRejectedError`, swallowed here rather than surfaced as exit 14) — and then silently falls back to the older shape: system Chrome via `subprocess.Popen` with no automation flags and no remote-debugging port, the CLI blocking on `proc.wait()` until the user closes the window. There is **no user-facing flag and no choice to make** — a Chromium-only host is never locked out of onboarding.
100
+ - Verification: both paths end in the same `verify_flow_profile` call after the browser is gone. That probe is **httpx-first** — it reads the profile's cookie store directly via `browser_cookie3` and only falls back to a headless `launch_persistent_context` when cookie decryption fails (DPAPI on Windows, keychain on macOS, libsecret on Linux). The default path additionally polls the same session contract *from the browser it owns*, which is what tells it when to close. Both write the `.gflow_browser_strategy = "chrome"` marker that `channel_for_profile()` later reads.
101
101
  - Privacy guard: raises `SecurityError` if the resolved `profile_dir` is outside `GFLOW_CLI_HOME` — protects the user's primary system Chrome profile from being used as a session store.
102
102
 
103
103
  **UiAutomationTransport (UI Mimicry)**:
@@ -424,7 +424,7 @@ This is the project's defining trade-off and the most valuable place an external
424
424
 
425
425
  Google's auth + reCAPTCHA stack on `aisandbox-pa.googleapis.com` rejects:
426
426
 
427
- 1. **Playwright's bundled Chromium** — flagged by Google's bot detection on first request. The CLI fails fast with `AuthBrowserRejectedError` (exit code 14) when this happens.
427
+ 1. **Browsers that advertise automation** — `navigator.webdriver = true` is what Google's bot detection flags, not the bundled binary itself; every launch path passes `--disable-blink-features=AutomationControlled` to keep it `false`. A sign-in that still lands on Google's rejection page raises `AuthBrowserRejectedError` (exit code 14) from the `internal` strategy; the `chrome` strategy retries on its no-automation subprocess path instead.
428
428
  2. **Headless browsers** — same fingerprinting trips during the OAuth-consent flow.
429
429
  3. **Bare HTTP clients** without the cookies + tokens minted by a real Chrome session — most endpoints return HTTP 401 or a reCAPTCHA challenge that can only be solved interactively.
430
430
 
@@ -436,7 +436,7 @@ We attempted three pure-HTTP transport strategies before settling on `ui_automat
436
436
 
437
437
  All three now live as standalone modules under `src/gflow_cli/api/transports/experimental/` (`evaluate_fetch.py` / `bearer.py` / `sapisidhash.py`), preserved for reference and future iteration. None survives Google's anti-bot stack for mutation/generation endpoints, so the production path is `ui_automation`.
438
438
 
439
- **The migrated `flow.google.com` host (#639, v0.67.0).** Google is moving accounts off `labs.google` onto `flow.google.com`, a rewritten frontend with a different widget toolkit and a `batchexecute` wire instead of `aisandbox-pa` REST. `src/gflow_cli/api/transports/migrated_composer.py` drives that editor for text-to-video, image-to-video from a local start frame, and reference-to-video from local `--ref` files (v0.70.0) — still through the same real-Chrome Playwright session — by operating the composer UI and then *observing* the app's own `batchexecute` replies (`YhhmEf`/`eb1hJf` submit, `jwpduf` status, `as29s` result) before downloading the clip. A start frame goes in through the editor's own Upload entry (the app's `maseQ` reply names the media id — `migrated.frame_uploaded`), is bound in the Frames picker by file name (`migrated.frame_bound`), and the submit *request* is inspected for that id and an i2v model key before the run is trusted (`WireFormatError` otherwise); a modal over a fresh editor is closed first (`migrated.dialog_dismissed`). `GFLOW_CLI_FLOW_HOST` routes between the two (`auto` = migrated host for every request it can serve, `--project` required there); the rest of the command matrix keeps `ui_automation` on unmoved accounts and exits 36 on moved ones. Recon: `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`.
439
+ **The migrated `flow.google.com` host (#639, v0.67.0).** Google is moving accounts off `labs.google` onto `flow.google.com`, a rewritten frontend with a different widget toolkit and a `batchexecute` wire instead of `aisandbox-pa` REST. `src/gflow_cli/api/transports/migrated_composer.py` drives that editor for text-to-video, local-file image-to-video/reference-to-video, text-to-image, and local-file image-to-image — still through the same real-Chrome Playwright session — by operating the composer UI and then *observing* the app's own replies. Video uses `YhhmEf`/`eb1hJf`/`MZZa6b` submit plus `jwpduf`/`as29s` status/result; image uses synchronous `ogiZ0b` replies carrying signed JPEG URLs. Local files go through the editor's own `maseQ` upload and the resulting media ids are asserted in the outgoing submit body before the run is trusted (`WireFormatError` otherwise). The migrated page owns image reCAPTCHA minting; the client skips the labs token path so moved accounts no longer fail with `RecaptchaError` on the root grid. `GFLOW_CLI_FLOW_HOST` routes between the two (`auto` keeps migrated images on moved accounts and uses labs for them on unmoved accounts; `--project` is required on the migrated path); unsupported UUID/entity/instruction/Imagen-4 image forms still fail before submit. Recon: `docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md`.
440
440
 
441
441
  **Standalone-only transports.** `bearer` and `sapisidhash` discard any caller-supplied Playwright page and launch their own browser under a fresh `ProfileLease`, so they are **standalone-only** — they cannot run inside a `FlowApiClient` that already holds the profile lease (the second acquire would self-lock with `ProfileLockedError`). Selecting either via `GFLOW_CLI_TRANSPORT` (or the Python API) while the client owns the profile now fails fast with a clear `ConfigurationError` naming the transport, rather than the opaque lock error. `evaluate_fetch` is exempt: it reuses the client's shared page and takes no second lease. The standalone-only set lives in `STANDALONE_ONLY_TRANSPORTS` (`api/transports/__init__.py`); to drive `bearer`/`sapisidhash`, run them outside an owning client.
442
442
 
@@ -143,7 +143,7 @@ for you to sign in. The CLI automatically detects success and persists the sessi
143
143
  ```bash
144
144
  gflow auth login # default profile, auto browser
145
145
  gflow auth login --profile work # named profile (creates if missing)
146
- gflow auth login --browser chrome # force real Chrome (bypasses G12 block)
146
+ gflow auth login --browser chrome # force the chrome strategy (real Chrome + its profile marker)
147
147
  ```
148
148
 
149
149
  Re-running this command refreshes an expired session: it reuses the existing profile dir,
@@ -179,17 +179,37 @@ and the profile keeps the name `default`.
179
179
  | Value | Browser used | When to use |
180
180
  |---|---|---|
181
181
  | `auto` (default) | Real Chrome if installed; falls back to internal | First choice for most users |
182
- | `chrome` | System Google Chrome (**Passive Capture**) | Required to bypass "G12" blocks |
182
+ | `chrome` | System Google Chrome, driven by Playwright (auto-closes) | Required for a chrome-strategy profile |
183
183
  | `internal` | Playwright's bundled Chromium | Fallback when Chrome isn't installed |
184
184
 
185
185
  Override with the env var: `GFLOW_CLI_AUTH_BROWSER=chrome gflow auth login`
186
186
 
187
- **Why `chrome` bypasses bot detection:** Playwright's default automation mode exposes
188
- `navigator.webdriver = true` as a non-configurable native property. Google detects this
189
- and redirects to `/v3/signin/rejected` (the "G12 block"). The `chrome` strategy
190
- implements **Passive Capture**: it launches your real system Chrome as a 100% standard
191
- process without any automation flags or debugging ports. You log in manually, close
192
- the window, and `gflow` extracts the verified session from the profile.
187
+ `internal` now launches with the same anti-automation flags as `chrome` (it previously did
188
+ not, which was the configuration Google rejects). It stays a fallback rather than a
189
+ recommendation: a profile created by `internal` carries no `chrome` strategy marker, so
190
+ generation later opens it with bundled Chromium instead of your real Chrome.
191
+
192
+ **Why `chrome` bypasses bot detection:** what Google rejects is a browser that *advertises*
193
+ automation. Blink sets `navigator.webdriver = true` as a non-configurable native property
194
+ unless `--disable-blink-features=AutomationControlled` is passed, and Google redirects that
195
+ browser to `/v3/signin/rejected` (the "G12 block"). The `chrome` strategy launches your real
196
+ system Chrome through Playwright with that flag plus
197
+ `ignore_default_args=["--enable-automation"]`, `chromium_sandbox=True`, and
198
+ `no_viewport=True`, so `navigator.webdriver` is `false` and the sign-in proceeds normally.
199
+ The block itself is still live — re-measured 2026-09-08; see the G12 entry in
200
+ [KNOWN_ISSUES.md](../KNOWN_ISSUES.md) for the numbers and their N=1 caveat.
201
+
202
+ **You don't close the browser — gflow does.** Because gflow owns that Chrome window, it
203
+ watches for the completed Flow sign-in and closes the window itself, then prints the
204
+ verified account. If you close the window yourself it still works: gflow verifies the
205
+ profile exactly the same way and does not treat a manual close as an error.
206
+
207
+ **Automatic fallback, with nothing to choose.** If Playwright can't resolve a Chrome channel
208
+ on this machine (a Chromium-only Linux box, for instance), or Google rejects the browser
209
+ anyway, `gflow auth login` falls back to the earlier **Passive Capture** flow: Chrome
210
+ launched as a plain process with no automation flags and no debugging port, where you close
211
+ the window once the Flow editor has loaded and `gflow` extracts the verified session from the
212
+ profile. There is no flag and no prompt for this — the fallback simply happens.
193
213
 
194
214
  **Privacy guard:** The `chrome` strategy strictly refuses to use any profile directory
195
215
  outside `GFLOW_CLI_HOME`. This protects your primary system Chrome profile from
@@ -207,7 +207,9 @@ With both fixed, the deep-linked editor binds reliably. See
207
207
  - `gflow character rm <id>` → entity delete (capture verb later).
208
208
  - Reuse: **`--character <id>` (repeatable → multi-reference)** on `gflow video` → adds
209
209
  `referenceEntities:[{entityId}]` to `video:batchAsyncGenerateVideoReferenceImages` (R2V mode, async + poll).
210
- Same flag on `gflow image` pending an image-path confirm.
210
+ Same flag on `gflow image` remains pending on the migrated host: local-file image
211
+ generation is confirmed, but character/entity binding is intentionally refused until
212
+ its migrated picker wire is captured.
211
213
 
212
214
  ## Reuse from PR #123 (kittinan)
213
215
 
@@ -361,11 +361,11 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
361
361
 
362
362
  **What:** Which Flow frontend gflow drives. Google is moving accounts from `labs.google/fx/tools/flow` onto `flow.google.com` one at a time ([#639](https://github.com/ffroliva/gflow-cli/issues/639)); the two are the same product on different widget toolkits and different wire protocols, so each has its own driver.
363
363
  **Values:**
364
- - `auto` (default) — **`flow.google.com` is the default host for every request it can serve today** (`video t2v`, `video i2v` from a local `--initial-frame` with no end frame, and `video r2v` from local `--ref` files — all with `--project`), on moved and unmoved accounts alike — the new host serves both. A request the new host cannot serve yet keeps the labs driver on an unmoved account; a moved account has no labs to fall back to: other modes exit 36, a missing `--project` or a labs-only model exit 11.
364
+ - `auto` (default) — **`flow.google.com` is the default host for every video request it can serve today** (`video t2v`, local-file `video i2v` and `video r2v`, all with `--project`) on moved and unmoved accounts. Image requests stay on labs for an unmoved account, while a moved account uses the migrated composer for `image t2i` and local-file `image i2i`. A request the new host cannot serve keeps the labs driver on an unmoved account; a moved account has no labs fallback and unsupported forms exit 36/11 before submit.
365
365
  - `flow.google.com` — force the migrated composer for everything, including what it cannot serve yet (those requests then exit 36/11 instead of falling back).
366
366
  - `labs.google` — never use the migrated composer; a moved account fails with exit 36 (kill switch).
367
367
  **Default:** `auto`
368
- **Scope today:** the migrated composer covers `gflow video t2v`, `gflow video i2v --initial-frame <local file>` and `gflow video r2v --ref <local file>`, each with `--project <id>` (settings via the option groups, model picker, local files uploaded through the editor's own Upload entry — bound in the Frames picker by file name for i2v, attached as `@` mentions in the prompt for r2v — submit, status observed on the page's own `batchexecute` replies, download from the signed CDN URL). An end frame, a frame given by UUID or `@Name`, references given by `@Name` or `--reference-entity`, image, characters, scenes, extend, instructions and tools are not ported yet and exit 36 on a moved account. MCP inherits the setting from the server/daemon environment, not per call.
368
+ **Scope today:** the migrated composer covers `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i`. Images support Nano Banana 2 / Pro, the four aspect ratios enumerated on that host (16:9, 4:3, 1:1, 9:16 — `3:4` was not present and is refused before submit) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. An end frame, UUID/name references, character entities, Agent instructions, Imagen 4, scenes, extend, instructions and tools are not ported yet and fail before submit on a moved account. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
369
369
 
370
370
  ### `GFLOW_CLI_PREFER_CLASSIC` *(deprecated — use `GFLOW_CLI_UI_MODE=classic`)*
371
371
 
@@ -13,7 +13,7 @@
13
13
  | `gflow image t2i` hangs ≥ 3 min then fails with `TimeoutError` | Re-run with `--verbose` and grep for `batch_response_seen` | [Listener log keys](#listener--http-layer-debugging) |
14
14
  | `aspect_ratio_set_failed` warning then wrong-aspect output | The aspect-tab selector cascade missed; capture a DOM snapshot of the gen-settings panel | [Inspecting Flow's live UI](#inspecting-flows-live-ui) |
15
15
  | `UnicodeEncodeError: 'charmap' codec can't encode` on Windows | Set `PYTHONUTF8=1` (PowerShell: `$env:PYTHONUTF8="1"`) before any `gflow` invocation | [Windows console](#windows-console-encoding) |
16
- | `AuthBrowserRejectedError` / exit 14 | Re-login with `--browser chrome` | [`AUTHENTICATION.md`](AUTHENTICATION.md), `/gflow:known-issues` |
16
+ | `AuthBrowserRejectedError` / exit 14 | Re-run `gflow auth login` (the `chrome` strategy retries automatically) | [`AUTHENTICATION.md`](AUTHENTICATION.md), `/gflow:known-issues` |
17
17
  | `BrowserSessionClosedError` / exit 15 in a long-lived worker | Recreate the `FlowApiClient` via its async context manager | [Lifecycle errors](#lifecycle--browser-state) |
18
18
  | Test suite OOMs / sandbox crashes | Run dirs separately (`tests/api`, `tests/auth tests/cli`, `tests/features`, then the rest with `--ignore`) | [Test suite memory](#test-suite-memory) |
19
19
  | New Flow UI label breaks a selector | Add a candidate to `_ASPECT_TAB_CANDIDATES` (or the relevant cascade) and live-verify | [Selector cascades](#selector-cascades) |
@@ -224,7 +224,7 @@ First visible-and-clickable wins. Log:
224
224
  |---|---|---|---|
225
225
  | `BrowserSessionClosedError` | 15 | Playwright page/context/browser was closed mid-call (translated from `TargetClosedError`) | Recreate `FlowApiClient` via `async with` |
226
226
  | `AuthExpiredError` | 3 | Session cookies no longer valid | `gflow auth login --profile <name>` |
227
- | `AuthBrowserRejectedError` | 14 | Google rejected Playwright's bundled Chromium | Re-login with `--browser chrome` |
227
+ | `AuthBrowserRejectedError` | 14 | Google's sign-in rejected the browser for advertising automation; only the `internal` strategy surfaces it | Re-run `gflow auth login` (default `auto` picks the `chrome` strategy, which retries on a no-automation path) |
228
228
  | `AuthLoginTimeoutError` | 12 | User did not finish the OAuth flow in time | Run `gflow auth login` again; raise `GFLOW_CLI_AUTH_LOGIN_TIMEOUT` |
229
229
  | `TransportTimeoutError` | 9 | A single API call exceeded its timeout | Retry; check Flow status |
230
230
  | `WafRejectionError` | 10 | reCAPTCHA / WAF blocked the request | Wait + retry; verify session is healthy |
@@ -317,8 +317,9 @@ remediations. The most-hit categories:
317
317
  ([selector-cascades](#selector-cascades))
318
318
  - **Session expiry on a long-running worker** → use `health_check()`
319
319
  + recreate on `BrowserSessionClosedError`
320
- - **reCAPTCHA score too low** → must use real Chrome
321
- (`--browser chrome`); never Playwright's bundled Chromium
320
+ - **reCAPTCHA score too low** (generation, *not* sign-in) → must use real Chrome
321
+ (`--browser chrome`). Sign-in is a separate question: the 2026-09-08 spike measured
322
+ `navigator.webdriver`, not the binary, as what Google's sign-in rejects.
322
323
 
323
324
  ## See also
324
325