gflow-cli 0.79.1__tar.gz → 0.81.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 (1200) hide show
  1. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.env.template +7 -0
  3. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/ci.yml +9 -7
  4. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/deps-watch.yml +1 -1
  5. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/governance-advisory.yml +1 -1
  6. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/governance-benchmark.yml +1 -1
  7. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/release.yml +1 -1
  8. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/scorecard.yml +1 -1
  9. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/selector-probe.yml +1 -1
  10. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/AGENTS.md +3 -2
  11. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/CHANGELOG.md +106 -1
  12. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/KNOWN_ISSUES.md +44 -3
  13. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/PKG-INFO +3 -2
  14. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker/Dockerfile +1 -1
  15. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/CONFIGURATION.md +66 -1
  16. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/DATA_LAYER.md +12 -2
  17. {gflow_cli-0.79.1/website → gflow_cli-0.81.0}/docs/DEBUGGING.md +2 -1
  18. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/E2E_TESTING.md +1 -0
  19. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/INDEX.md +1 -1
  20. gflow_cli-0.81.0/docs/LIVE_VERIFICATION_v0.80.0.md +105 -0
  21. gflow_cli-0.81.0/docs/LIVE_VERIFICATION_v0.81.0.md +84 -0
  22. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/MCP.md +2 -2
  23. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/PROJECT_STATUS.md +66 -0
  24. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/USAGE.md +24 -10
  25. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/content-policy-text-scan-false-positives-on-page-chrome.md +10 -0
  26. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +11 -7
  27. gflow_cli-0.81.0/docs/superpowers/memory/migrated-refusal-is-a-dom-card-not-a-wire-record.md +48 -0
  28. gflow_cli-0.81.0/docs/superpowers/spikes/2026-09-20-warm-client-premint-on-about-blank.md +65 -0
  29. gflow_cli-0.81.0/docs/superpowers/spikes/2026-09-23-about-cta-leads-to-google-reauth.md +129 -0
  30. gflow_cli-0.81.0/docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md +47 -0
  31. gflow_cli-0.81.0/docs/superpowers/spikes/2026-09-27-stealth-fingerprint-delta.md +51 -0
  32. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/llms.txt +1 -1
  33. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
  34. {gflow_cli-0.79.1 → gflow_cli-0.81.0/plugins/gflow}/skills/gflow-cli/SKILL.md +3 -3
  35. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/pyproject.toml +5 -3
  36. gflow_cli-0.81.0/scripts/dev/spike_about_cta_recovery.py +277 -0
  37. gflow_cli-0.81.0/scripts/dev/spike_migrated_refusal_envelope.py +202 -0
  38. gflow_cli-0.81.0/scripts/dev/spike_mint_on_about_blank.py +89 -0
  39. gflow_cli-0.81.0/scripts/dev/spike_offscreen_window.py +148 -0
  40. gflow_cli-0.81.0/scripts/dev/spike_stealth_fingerprint_delta.py +162 -0
  41. gflow_cli-0.81.0/scripts/dev/spike_warm_client_unported_form.py +125 -0
  42. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/server.json +2 -2
  43. {gflow_cli-0.79.1/plugins/gflow → gflow_cli-0.81.0}/skills/gflow-cli/SKILL.md +3 -3
  44. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/__init__.py +1 -1
  45. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/client.py +38 -25
  46. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/image.py +16 -0
  47. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/_common.py +3 -1
  48. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/batchexecute.py +64 -13
  49. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/migrated_composer.py +127 -20
  50. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/ui_automation.py +10 -50
  51. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/ui_automation_video.py +14 -0
  52. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/video.py +8 -0
  53. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/internal_chromium.py +75 -7
  54. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/real_chrome.py +14 -0
  55. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/browser_manager.py +9 -0
  56. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_data.py +2 -0
  57. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_run.py +2 -2
  58. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_video.py +25 -0
  59. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/config.py +12 -0
  60. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/queries.py +4 -0
  61. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/recorder.py +9 -2
  62. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/errors.py +52 -0
  63. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/image_batch.py +1 -1
  64. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/tools.py +13 -2
  65. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/worker/codec.py +2 -0
  66. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_launch_kwargs.py +1 -0
  67. gflow_cli-0.81.0/tests/api/test_client_window_position.py +43 -0
  68. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_concurrency.py +82 -0
  69. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_image.py +6 -0
  70. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_image_capability_and_cookie_bar.py +12 -5
  71. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_video.py +10 -0
  72. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_batchexecute.py +41 -0
  73. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_composer.py +26 -0
  74. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_images.py +34 -68
  75. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_signed_media_retry.py +10 -0
  76. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ui_automation.py +5 -3
  77. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ui_automation_video.py +24 -0
  78. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/strategies/test_strategies.py +145 -0
  79. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/test_real_chrome.py +35 -0
  80. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_failure_recording.py +55 -1
  81. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/dev/test_recording_client.py +1 -0
  82. gflow_cli-0.81.0/tests/e2e/test_login_identity_recheck_e2e.py +75 -0
  83. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_migrated_host_e2e.py +233 -1
  84. gflow_cli-0.81.0/tests/e2e/test_migrated_refusal_live_bdd.py +112 -0
  85. gflow_cli-0.81.0/tests/features/migrated_refusal_envelope.feature +26 -0
  86. gflow_cli-0.81.0/tests/features/migrated_refusal_live.feature +11 -0
  87. gflow_cli-0.81.0/tests/features/test_migrated_refusal_envelope_steps.py +114 -0
  88. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/test_model_governance.py +1 -6
  89. gflow_cli-0.81.0/tests/mcp/conftest.py +25 -0
  90. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_spike_profile_lease.py +11 -1
  91. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_cli_data.py +1 -0
  92. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_data_queries.py +8 -0
  93. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_plugin_manifests.py +7 -4
  94. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/uv.lock +71 -43
  95. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/CONFIGURATION.md +66 -1
  96. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/DATA_LAYER.md +12 -2
  97. {gflow_cli-0.79.1 → gflow_cli-0.81.0/website}/docs/DEBUGGING.md +2 -1
  98. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/E2E_TESTING.md +1 -0
  99. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/KNOWN_ISSUES.md +44 -3
  100. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/MCP.md +2 -2
  101. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/USAGE.md +24 -10
  102. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/requirements.txt +3 -3
  103. gflow_cli-0.79.1/docs/superpowers/memory/migrated-refusal-is-a-dom-card-not-a-wire-record.md +0 -50
  104. gflow_cli-0.79.1/tests/mcp/conftest.py +0 -15
  105. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.agents/plugins/marketplace.json +0 -0
  106. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/README.md +0 -0
  107. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/active.md +0 -0
  108. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/branch-review.md +0 -0
  109. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/changelog.md +0 -0
  110. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/check.md +0 -0
  111. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/doc-review.md +0 -0
  112. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  113. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  114. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/known-issues.md +0 -0
  115. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/live-verify.md +0 -0
  116. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/llm-council.md +0 -0
  117. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/next.md +0 -0
  118. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/plan.md +0 -0
  119. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  120. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/predict.md +0 -0
  121. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/release.md +0 -0
  122. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/scenario.md +0 -0
  123. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/sonar.md +0 -0
  124. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/spike.md +0 -0
  125. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude/commands/gflow/status.md +0 -0
  126. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.claude-plugin/marketplace.json +0 -0
  127. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.gitattributes +0 -0
  128. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/CODEOWNERS +0 -0
  129. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/FUNDING.yml +0 -0
  130. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  131. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/copilot-instructions.md +0 -0
  132. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/dependabot.yml +0 -0
  133. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/external-pr-triage.yml +0 -0
  134. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/labels.yml +0 -0
  135. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/main-base-guard.yml +0 -0
  136. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/mcp-registry.yml +0 -0
  137. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/pages.yml +0 -0
  138. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/sponsors.yml +0 -0
  139. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.github/workflows/star-history-watch.yml +0 -0
  140. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.gitignore +0 -0
  141. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.gitleaks.toml +0 -0
  142. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.pre-commit-config.yaml +0 -0
  143. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/.secrets.baseline +0 -0
  144. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/CLAUDE.md +0 -0
  145. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/CONFIGURATION.md +0 -0
  146. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/CONTRIBUTING.md +0 -0
  147. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/DISCLAIMER.md +0 -0
  148. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/LICENSE +0 -0
  149. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/PLAN.md +0 -0
  150. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/README.md +0 -0
  151. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/RELEASE.md +0 -0
  152. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/ROADMAP.md +0 -0
  153. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/conftest.py +0 -0
  154. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/deploy/logrotate-pr-triage +0 -0
  155. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker/Dockerfile.test +0 -0
  156. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker/README.md +0 -0
  157. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker/docker-compose.yml +0 -0
  158. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker/dockerignore.example +0 -0
  159. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docker-compose.yml +0 -0
  160. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/ACCOUNT_SAFETY.md +0 -0
  161. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/AGENT_GUIDE.md +0 -0
  162. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/AGENT_UI_E2E.md +0 -0
  163. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/AGENT_UI_RECON.md +0 -0
  164. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/ARCHITECTURE.md +0 -0
  165. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  166. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/AUTHENTICATION.md +0 -0
  167. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/CHARACTER.md +0 -0
  168. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/CHARACTER_RECON.md +0 -0
  169. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/CONTAINER.md +0 -0
  170. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/DEMOS.md +0 -0
  171. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/DEVELOPMENT.md +0 -0
  172. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/DISTRIBUTION.md +0 -0
  173. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/EXTERNAL_STORAGE.md +0 -0
  174. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/GITHUB.md +0 -0
  175. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  176. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  177. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/INSTRUCTIONS.md +0 -0
  178. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  179. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  180. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  181. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  182. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  183. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  184. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  185. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  186. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  187. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  188. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  189. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  190. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  191. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  192. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  193. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  194. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  195. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  196. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  197. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  198. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  199. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  200. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  201. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  202. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  203. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  204. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  205. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  206. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  207. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  208. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  209. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  210. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  211. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  212. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  213. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  214. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  215. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  216. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  217. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  218. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  219. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  220. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  221. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  222. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  223. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  224. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  225. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  226. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  227. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  228. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  229. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  230. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  231. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  232. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  233. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  234. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  235. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  236. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  237. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  238. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  239. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  240. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  241. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  242. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  243. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  244. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  245. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  246. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  247. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  248. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  249. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  250. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  251. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  252. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  253. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  254. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
  255. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
  256. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
  257. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
  258. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
  259. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
  260. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
  261. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.77.0.md +0 -0
  262. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.77.1.md +0 -0
  263. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.78.0.md +0 -0
  264. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.79.0.md +0 -0
  265. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.79.1.md +0 -0
  266. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  267. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  268. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  269. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  270. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/MARKETPLACES.md +0 -0
  271. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/MEDIA_LIBRARY.md +0 -0
  272. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/MOVIE.md +0 -0
  273. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/PROMPT_EXPANSION.md +0 -0
  274. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  275. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/SECURITY.md +0 -0
  276. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/SPONSORS.md +0 -0
  277. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/TOOLS.md +0 -0
  278. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/USER_GUIDE.md +0 -0
  279. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/assets/demo-split-pf.gif +0 -0
  280. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/assets/example-run.gif +0 -0
  281. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/assets/examples.webp +0 -0
  282. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/medium_tutorial.md +0 -0
  283. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/schemas/movie-handoff.schema.json +0 -0
  284. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/sonar-cleanup-tracker.md +0 -0
  285. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/README.md +0 -0
  286. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  287. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  288. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  289. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  290. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  291. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  292. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  293. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  294. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  295. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  296. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  297. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  298. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  299. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  300. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  301. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  302. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  303. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  304. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  305. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  306. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  307. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  308. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  309. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  310. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  311. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  312. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  313. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  314. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  315. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  316. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  317. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  318. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/release-signing.md +0 -0
  319. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  320. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  321. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  322. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  323. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  324. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  325. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  326. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  327. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  328. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  329. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  330. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  331. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  332. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  333. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  334. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  335. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  336. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  337. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  338. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  339. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  340. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  341. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  342. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  343. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  344. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  345. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  346. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  347. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  348. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  349. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  350. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  351. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  352. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  353. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  354. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  355. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  356. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  357. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  358. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  359. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  360. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  361. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  362. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  363. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  364. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  365. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  366. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  367. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  368. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  369. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  370. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  371. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  372. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  373. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  374. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  375. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  376. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  377. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  378. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  379. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
  380. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +0 -0
  381. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +0 -0
  382. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +0 -0
  383. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  384. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  385. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  386. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  387. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  388. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  389. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  390. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  391. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  392. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  393. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  394. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  395. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  396. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  397. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  398. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  399. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  400. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  401. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  402. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  403. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  404. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  405. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  406. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  407. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  408. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  409. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  410. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  411. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  412. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
  413. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  414. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
  415. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  416. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  417. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
  418. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
  419. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
  420. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
  421. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
  422. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
  423. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
  424. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
  425. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
  426. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
  427. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
  428. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
  429. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
  430. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +0 -0
  431. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +0 -0
  432. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +0 -0
  433. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-17-stranded-clip-recovery.md +0 -0
  434. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/docs/superpowers/spikes/2026-09-22-playwright-max-retries-econnreset.md +0 -0
  435. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/README.md +0 -0
  436. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/batch_from_config.py +0 -0
  437. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/multi_prompt_t2i.py +0 -0
  438. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/sample_config.json +0 -0
  439. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/sample_prompts.txt +0 -0
  440. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/single_image_t2i.py +0 -0
  441. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/examples/workflow_chain.py +0 -0
  442. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/glama.json +0 -0
  443. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/hatch_build.py +0 -0
  444. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/index.html +0 -0
  445. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/mempalace.yaml +0 -0
  446. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/README.md +0 -0
  447. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/.mcp.json +0 -0
  448. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/SKILL.md +0 -0
  449. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
  450. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/composition.md +0 -0
  451. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
  452. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
  453. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
  454. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/README.md +0 -0
  455. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/01_upload_image.json +0 -0
  456. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  457. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  458. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/04_archive_workflow.json +0 -0
  459. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/05_createProject.json +0 -0
  460. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/06_batchGenerateImages.json +0 -0
  461. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  462. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  463. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  464. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  465. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  466. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/12_create_scene.json +0 -0
  467. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  468. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/14_get_scene_workflows.json +0 -0
  469. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  470. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/canary/register_task.ps1 +0 -0
  471. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/canary/run_canary.py +0 -0
  472. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_council_memory.py +0 -0
  473. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_doc_links.py +0 -0
  474. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_fork_pr_ci.py +0 -0
  475. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_materiality.py +0 -0
  476. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_release_artifacts.py +0 -0
  477. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_repo_hygiene.py +0 -0
  478. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_test_count.py +0 -0
  479. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/check_website_docs_pii.py +0 -0
  480. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/generate_plugin_skills.py +0 -0
  481. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/generate_website_docs.py +0 -0
  482. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/ci/update_sponsors.py +0 -0
  483. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/debug_editor.py +0 -0
  484. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/debug_gen_settings.py +0 -0
  485. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/debug_settings.py +0 -0
  486. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/_recording_client.py +0 -0
  487. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/_spike_common.py +0 -0
  488. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/acceptance/__init__.py +0 -0
  489. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/acceptance/bench.py +0 -0
  490. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/acceptance/domain.py +0 -0
  491. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/acceptance/judge.py +0 -0
  492. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/acceptance/settings.py +0 -0
  493. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/active_plan.py +0 -0
  494. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  495. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  496. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  497. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  498. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  499. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  500. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  501. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_locale_invariants.py +0 -0
  502. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  503. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  504. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  505. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  506. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  507. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  508. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  509. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  510. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_project_listing.py +0 -0
  511. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  512. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  513. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  514. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  515. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/character_create_spike.py +0 -0
  516. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/character_create_spike_v2.py +0 -0
  517. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/dump_character_selectors.js +0 -0
  518. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/README.md +0 -0
  519. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  520. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  521. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  522. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  523. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  524. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  525. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  526. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  527. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  528. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  529. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  530. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/incident_bundle_quality.py +0 -0
  531. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  532. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  533. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  534. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/make_project.py +0 -0
  535. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/materiality_backtest.py +0 -0
  536. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  537. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/measure_locale_probe.py +0 -0
  538. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  539. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/patch_character.py +0 -0
  540. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/skillopt/README.md +0 -0
  541. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/skillopt/harness.py +0 -0
  542. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/skillopt/tasks.json +0 -0
  543. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/sonar-local-scan.sh +0 -0
  544. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  545. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
  546. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
  547. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  548. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_changelog_capture.py +0 -0
  549. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  550. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  551. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  552. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  553. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_create_project_401.py +0 -0
  554. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
  555. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  556. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  557. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  558. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  559. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  560. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  561. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
  562. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  563. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
  564. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
  565. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_host_lane.py +0 -0
  566. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_image_model_attribution.py +0 -0
  567. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  568. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  569. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  570. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  571. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_incident_live.py +0 -0
  572. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  573. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  574. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  575. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  576. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  577. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  578. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_locale_poison.py +0 -0
  579. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_aspect_radios.py +0 -0
  580. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  581. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  582. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  583. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  584. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  585. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  586. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
  587. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  588. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  589. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
  590. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_create_project.py +0 -0
  591. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  592. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  593. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_end_frame.py +0 -0
  594. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  595. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  596. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  597. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  598. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
  599. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  600. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  601. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  602. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  603. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  604. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  605. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  606. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  607. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  608. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  609. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_model_inventory.py +0 -0
  610. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  611. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  612. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  613. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  614. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  615. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
  616. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_networkidle_bootstrap_cost.py +0 -0
  617. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  618. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_patch_entity.py +0 -0
  619. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_patchright.py +0 -0
  620. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
  621. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_playwright_max_retries.py +0 -0
  622. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_project_media_status.py +0 -0
  623. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_recover_stranded_clip.py +0 -0
  624. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  625. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
  626. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  627. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  628. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/verify_language_agnostic.py +0 -0
  629. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  630. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/dev/verify_model_attribution.py +0 -0
  631. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/README.md +0 -0
  632. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/capture_flow_traffic.py +0 -0
  633. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  634. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/memory_profile.py +0 -0
  635. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/recaptcha_mint.py +0 -0
  636. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  637. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  638. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  639. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/probe/run_probe.py +0 -0
  640. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/probe/spike_auth_matrix.py +0 -0
  641. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/record_demo.ps1 +0 -0
  642. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/smoke_image.py +0 -0
  643. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/smoke_video_editor.py +0 -0
  644. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/smoke_worker_style.py +0 -0
  645. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/spike_waf_camoufox.py +0 -0
  646. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/scripts/verify_chrome_auth_viability.py +0 -0
  647. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/README.md +0 -0
  648. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/changelog/SKILL.md +0 -0
  649. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/check/SKILL.md +0 -0
  650. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/doc-review/SKILL.md +0 -0
  651. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/issue-assessment/SKILL.md +0 -0
  652. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/issue-resolve/SKILL.md +0 -0
  653. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/known-issues/SKILL.md +0 -0
  654. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/live-verify/SKILL.md +0 -0
  655. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/llm-council/SKILL.md +0 -0
  656. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/plan/SKILL.md +0 -0
  657. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/pr-council-review/SKILL.md +0 -0
  658. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/predict/SKILL.md +0 -0
  659. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/release/SKILL.md +0 -0
  660. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/scenario/SKILL.md +0 -0
  661. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/sonar/SKILL.md +0 -0
  662. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/spike/SKILL.md +0 -0
  663. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/status/SKILL.md +0 -0
  664. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/SKILL.md +0 -0
  665. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/clip_qa.py +0 -0
  666. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/composition.md +0 -0
  667. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/consistency.md +0 -0
  668. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/failure-modes.md +0 -0
  669. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/skills/video-production/tasks.json +0 -0
  670. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/sonar-project.properties +0 -0
  671. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/__main__.py +0 -0
  672. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/_cli_helpers.py +0 -0
  673. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/__init__.py +0 -0
  674. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/_engine.py +0 -0
  675. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/_retry.py +0 -0
  676. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  677. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/character.py +0 -0
  678. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/credits.py +0 -0
  679. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/dto.py +0 -0
  680. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/extend_chain.py +0 -0
  681. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/image_upscale.py +0 -0
  682. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/recaptcha.py +0 -0
  683. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/routes.py +0 -0
  684. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/scene.py +0 -0
  685. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  686. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  687. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/base.py +0 -0
  688. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  689. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  690. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  691. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  692. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  693. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  694. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  695. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  696. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  697. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/migrated_recover.py +0 -0
  698. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  699. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/api/video_extend.py +0 -0
  700. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/__init__.py +0 -0
  701. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/base.py +0 -0
  702. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/cookies.py +0 -0
  703. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/factory.py +0 -0
  704. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/strategies.py +0 -0
  705. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/auth/verification.py +0 -0
  706. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/chain.py +0 -0
  707. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/chain_manifest.py +0 -0
  708. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli.py +0 -0
  709. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_character.py +0 -0
  710. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_credits.py +0 -0
  711. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_docs.py +0 -0
  712. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_doctor.py +0 -0
  713. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_image.py +0 -0
  714. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_instructions.py +0 -0
  715. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_models.py +0 -0
  716. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_movie.py +0 -0
  717. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_project.py +0 -0
  718. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_scene.py +0 -0
  719. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_tools.py +0 -0
  720. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/cli_update.py +0 -0
  721. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/composition.py +0 -0
  722. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/__init__.py +0 -0
  723. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/chain_repo.py +0 -0
  724. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  725. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  726. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  727. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  728. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  729. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  730. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  731. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  732. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  733. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  734. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/models.py +0 -0
  735. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/redaction.py +0 -0
  736. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/repository.py +0 -0
  737. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/data/store.py +0 -0
  738. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/diagnostics.py +0 -0
  739. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/docs_catalog.py +0 -0
  740. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/exceptions.py +0 -0
  741. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/file_integrity.py +0 -0
  742. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  743. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  744. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  745. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  746. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/json_output.py +0 -0
  747. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/__init__.py +0 -0
  748. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/prompts.py +0 -0
  749. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/resources.py +0 -0
  750. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/server.py +0 -0
  751. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/setup.py +0 -0
  752. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  753. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/media.py +0 -0
  754. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/movie_manifest.py +0 -0
  755. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/observability.py +0 -0
  756. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/paths.py +0 -0
  757. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/profile_lease.py +0 -0
  758. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/profile_store.py +0 -0
  759. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/redaction.py +0 -0
  760. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/__init__.py +0 -0
  761. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  762. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/character_create.py +0 -0
  763. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/credits.py +0 -0
  764. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/doctor.py +0 -0
  765. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/media_recovery.py +0 -0
  766. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/services/mentions.py +0 -0
  767. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/storage.py +0 -0
  768. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/__init__.py +0 -0
  769. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/banned.py +0 -0
  770. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  771. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  772. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  773. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  774. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/expander.py +0 -0
  775. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/invocation.py +0 -0
  776. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/loader.py +0 -0
  777. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/registry.py +0 -0
  778. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/runtime.py +0 -0
  779. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/tools/spec.py +0 -0
  780. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/ui/app.py +0 -0
  781. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/ui/server.py +0 -0
  782. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/update_check.py +0 -0
  783. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/winsec.py +0 -0
  784. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/worker/daemon.py +0 -0
  785. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/src/gflow_cli/worker/queue.py +0 -0
  786. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tasks/lessons.md +0 -0
  787. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/test_assets/sample_batch.json +0 -0
  788. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/test_assets/sample_batch.tsv +0 -0
  789. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/test_assets/sample_batch_invalid.tsv +0 -0
  790. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/__init__.py +0 -0
  791. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/__init__.py +0 -0
  792. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/fixtures/character_gen_response.json +0 -0
  793. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  794. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  795. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  796. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  797. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_aisandbox_auth_remediation.py +0 -0
  798. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_bearer_redaction.py +0 -0
  799. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_bootstrap_chooser.py +0 -0
  800. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_character.py +0 -0
  801. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_character_readback_fallback.py +0 -0
  802. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client.py +0 -0
  803. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_character.py +0 -0
  804. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_delete_characters.py +0 -0
  805. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_errors.py +0 -0
  806. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_extend.py +0 -0
  807. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_generate_character.py +0 -0
  808. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_image.py +0 -0
  809. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_incidents.py +0 -0
  810. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_locale_cache.py +0 -0
  811. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_migrated_mint.py +0 -0
  812. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_patch_entity.py +0 -0
  813. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_project_host.py +0 -0
  814. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_scene.py +0 -0
  815. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_client_upscale.py +0 -0
  816. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_credits.py +0 -0
  817. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_credits_http.py +0 -0
  818. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_dto.py +0 -0
  819. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_engine.py +0 -0
  820. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_extend_chain.py +0 -0
  821. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_image_dto.py +0 -0
  822. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_image_upscale.py +0 -0
  823. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  824. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_recaptcha.py +0 -0
  825. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_retry.py +0 -0
  826. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_routes.py +0 -0
  827. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_routes_character.py +0 -0
  828. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_routes_locale.py +0 -0
  829. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_routes_scene.py +0 -0
  830. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_sapisidhash_helper.py +0 -0
  831. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_scene_models.py +0 -0
  832. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_video_extend.py +0 -0
  833. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_video_request.py +0 -0
  834. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/test_video_status_poll.py +0 -0
  835. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/__init__.py +0 -0
  836. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/conftest.py +0 -0
  837. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/drivers/__init__.py +0 -0
  838. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  839. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/drivers/test_classic.py +0 -0
  840. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/drivers/test_factory.py +0 -0
  841. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  842. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_agent_only_composer.py +0 -0
  843. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  844. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_base.py +0 -0
  845. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_bearer.py +0 -0
  846. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_character_model_picker.py +0 -0
  847. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_click_attribution.py +0 -0
  848. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_common.py +0 -0
  849. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  850. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_factory.py +0 -0
  851. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_fingerprint.py +0 -0
  852. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
  853. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  854. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_locale_navigation.py +0 -0
  855. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
  856. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  857. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_project.py +0 -0
  858. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  859. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_recover.py +0 -0
  860. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_migrated_route.py +0 -0
  861. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_mode_control.py +0 -0
  862. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  863. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_navigation_settled.py +0 -0
  864. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  865. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  866. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_policy_400.py +0 -0
  867. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_sapisidhash.py +0 -0
  868. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  869. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_transport_timeout.py +0 -0
  870. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  871. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  872. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  873. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  874. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/strategies/test_factory.py +0 -0
  875. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/test_account_autoselect.py +0 -0
  876. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/test_cookies.py +0 -0
  877. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/test_verification.py +0 -0
  878. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/auth/test_windows_acl.py +0 -0
  879. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/__init__.py +0 -0
  880. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_auth_status.py +0 -0
  881. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
  882. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_auth_list.py +0 -0
  883. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_character.py +0 -0
  884. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_character_create.py +0 -0
  885. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_credits.py +0 -0
  886. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_data.py +0 -0
  887. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_data_errors.py +0 -0
  888. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  889. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_data_sync.py +0 -0
  890. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_docs.py +0 -0
  891. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_doctor.py +0 -0
  892. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_image.py +0 -0
  893. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  894. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  895. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_image_upscale.py +0 -0
  896. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  897. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_instructions.py +0 -0
  898. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_models.py +0 -0
  899. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_movie.py +0 -0
  900. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_run.py +0 -0
  901. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_scene.py +0 -0
  902. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_tools.py +0 -0
  903. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_video.py +0 -0
  904. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_video_chain.py +0 -0
  905. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_cli_video_extend.py +0 -0
  906. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_docs_catalog_real_docs.py +0 -0
  907. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_error_handling.py +0 -0
  908. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_failure_funnel.py +0 -0
  909. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_helpers.py +0 -0
  910. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_incident_output.py +0 -0
  911. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_movie_manifest.py +0 -0
  912. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  913. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_predictable_output.py +0 -0
  914. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  915. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  916. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_settings_validation.py +0 -0
  917. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  918. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/composition/test_character.py +0 -0
  919. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/composition/test_compose_prompt.py +0 -0
  920. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/composition/test_handoff.py +0 -0
  921. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/composition/test_style_variants.py +0 -0
  922. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/composition/test_style_variants_e2e.py +0 -0
  923. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/conftest.py +0 -0
  924. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/__init__.py +0 -0
  925. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_chain_repo.py +0 -0
  926. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_find_incomplete_character.py +0 -0
  927. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_models.py +0 -0
  928. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_null_columns_stay_null.py +0 -0
  929. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_packaging.py +0 -0
  930. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_recorder.py +0 -0
  931. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_recorder_character.py +0 -0
  932. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_redaction.py +0 -0
  933. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_repository.py +0 -0
  934. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_scene_persistence.py +0 -0
  935. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_settings_and_errors.py +0 -0
  936. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_store.py +0 -0
  937. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/data/test_store_migrations.py +0 -0
  938. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/__init__.py +0 -0
  939. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/conftest.py +0 -0
  940. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
  941. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  942. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  943. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  944. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  945. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_blocking_dialog_dismissal_bdd.py +0 -0
  946. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  947. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_chain_e2e.py +0 -0
  948. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_character_create_e2e.py +0 -0
  949. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  950. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  951. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
  952. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  953. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_credits_e2e.py +0 -0
  954. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  955. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_daemon_e2e.py +0 -0
  956. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_data_download_e2e.py +0 -0
  957. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  958. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  959. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  960. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  961. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  962. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_frame_picker_binding_bdd.py +0 -0
  963. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  964. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  965. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  966. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  967. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  968. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  969. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_json_output_e2e.py +0 -0
  970. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -0
  971. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  972. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  973. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  974. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_project_create_e2e.py +0 -0
  975. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  976. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  977. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_retired_labs_route_diagnosis_e2e.py +0 -0
  978. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_scene_compose_live.py +0 -0
  979. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  980. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_tools_e2e.py +0 -0
  981. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_transports_e2e.py +0 -0
  982. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  983. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  984. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  985. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/__init__.py +0 -0
  986. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/asset_tagging.feature +0 -0
  987. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/auth.feature +0 -0
  988. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/auth_login.feature +0 -0
  989. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/blocking_dialog_dismissal.feature +0 -0
  990. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/character_create.feature +0 -0
  991. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/character_read.feature +0 -0
  992. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/click_attribution.feature +0 -0
  993. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/conftest.py +0 -0
  994. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/credits.feature +0 -0
  995. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/duration_tab_drift.feature +0 -0
  996. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/entity_provenance.feature +0 -0
  997. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/frame_picker_binding.feature +0 -0
  998. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/image.feature +0 -0
  999. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/image_batch_references.feature +0 -0
  1000. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/image_upscale.feature +0 -0
  1001. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/incident_diagnostics.feature +0 -0
  1002. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/instructions.feature +0 -0
  1003. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/landing_state_diagnosis.feature +0 -0
  1004. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/latched_locale_recovery.feature +0 -0
  1005. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/locale_picker_include.feature +0 -0
  1006. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/mcp_tasks.feature +0 -0
  1007. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/media_picker_tiers.feature +0 -0
  1008. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/migrated_driver.feature +0 -0
  1009. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/migrated_host_gate.feature +0 -0
  1010. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/migrated_host_images.feature +0 -0
  1011. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/migrated_i2v.feature +0 -0
  1012. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/output_hardening.feature +0 -0
  1013. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_asset_tagging_steps.py +0 -0
  1014. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_auth_login_steps.py +0 -0
  1015. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_auth_steps.py +0 -0
  1016. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_character_create_steps.py +0 -0
  1017. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_character_read_steps.py +0 -0
  1018. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_credits_steps.py +0 -0
  1019. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_e2e_binding_guard.py +0 -0
  1020. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_image_steps.py +0 -0
  1021. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_image_upscale_steps.py +0 -0
  1022. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  1023. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_instructions_steps.py +0 -0
  1024. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  1025. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  1026. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  1027. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_migrated_driver_steps.py +0 -0
  1028. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  1029. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_migrated_host_images_steps.py +0 -0
  1030. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_migrated_i2v_steps.py +0 -0
  1031. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_output_hardening_steps.py +0 -0
  1032. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_step_collision_guard.py +0 -0
  1033. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  1034. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/test_video_chain_steps.py +0 -0
  1035. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/video_agent_ui.feature +0 -0
  1036. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/features/video_chain.feature +0 -0
  1037. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/__init__.py +0 -0
  1038. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/changelog_modal_page.html +0 -0
  1039. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/doctor_env.py +0 -0
  1040. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/flow_model_inventory.json +0 -0
  1041. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  1042. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/listing_payload.py +0 -0
  1043. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/fixtures/seeded_catalog.py +0 -0
  1044. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/__init__.py +0 -0
  1045. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/test_grading.py +0 -0
  1046. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/test_model.py +0 -0
  1047. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/test_registry.py +0 -0
  1048. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/flow_selectors/test_report.py +0 -0
  1049. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/image_batch/__init__.py +0 -0
  1050. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/image_batch/test_image_manifest.py +0 -0
  1051. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/image_batch/test_jitter_config.py +0 -0
  1052. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/image_batch/test_observability_events.py +0 -0
  1053. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/__init__.py +0 -0
  1054. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/conftest.py +0 -0
  1055. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/constants.py +0 -0
  1056. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/test_docs_ships_in_wheel.py +0 -0
  1057. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/test_expander_gateway.py +0 -0
  1058. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/test_storage_gcs.py +0 -0
  1059. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/integration/test_storage_s3.py +0 -0
  1060. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/__init__.py +0 -0
  1061. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_auth_status_tool.py +0 -0
  1062. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_character_tools.py +0 -0
  1063. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_cli_parity.py +0 -0
  1064. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_credits_tool.py +0 -0
  1065. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_download_error_envelope.py +0 -0
  1066. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_error_funnel.py +0 -0
  1067. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_http_transport.py +0 -0
  1068. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_known_issues_resource.py +0 -0
  1069. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_mcp_profile_contention.py +0 -0
  1070. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  1071. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_no_spend.py +0 -0
  1072. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
  1073. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  1074. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  1075. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_resources.py +0 -0
  1076. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_serve_auth.py +0 -0
  1077. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_server.py +0 -0
  1078. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_setup.py +0 -0
  1079. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_stdio_transport.py +0 -0
  1080. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_tasks_extension.py +0 -0
  1081. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_tools_helpers.py +0 -0
  1082. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_tools_instructions.py +0 -0
  1083. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/mcp/test_tools_wired.py +0 -0
  1084. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  1085. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_canary_classify.py +0 -0
  1086. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_canary_reexec.py +0 -0
  1087. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  1088. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  1089. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_council_memory.py +0 -0
  1090. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
  1091. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_materiality.py +0 -0
  1092. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  1093. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  1094. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_test_count.py +0 -0
  1095. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  1096. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_codex_plugin.py +0 -0
  1097. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_extract_har_summary.py +0 -0
  1098. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_frame_acceptance.py +0 -0
  1099. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_generate_website_docs.py +0 -0
  1100. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  1101. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_materiality_backtest.py +0 -0
  1102. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  1103. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_spike_page_pool.py +0 -0
  1104. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_update_sponsors.py +0 -0
  1105. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/scripts/test_workflow_hardening.py +0 -0
  1106. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/__init__.py +0 -0
  1107. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_catalog_sync.py +0 -0
  1108. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_character_create_redaction.py +0 -0
  1109. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_character_create_saga.py +0 -0
  1110. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  1111. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_credits.py +0 -0
  1112. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_doctor.py +0 -0
  1113. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_media_attribution.py +0 -0
  1114. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_media_recovery.py +0 -0
  1115. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_mentions_observability.py +0 -0
  1116. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_mentions_parse.py +0 -0
  1117. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_mentions_resolve.py +0 -0
  1118. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/services/test_resolve_and_apply.py +0 -0
  1119. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/smoke/__init__.py +0 -0
  1120. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  1121. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/smoke/test_real_flow.py +0 -0
  1122. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_about_landing_guard.py +0 -0
  1123. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_auth.py +0 -0
  1124. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_browser_manager.py +0 -0
  1125. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_chain.py +0 -0
  1126. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_chain_manifest.py +0 -0
  1127. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_cli_project.py +0 -0
  1128. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_cli_update.py +0 -0
  1129. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_config.py +0 -0
  1130. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_conftest_isolation.py +0 -0
  1131. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_bundle.py +0 -0
  1132. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_events.py +0 -0
  1133. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_journal.py +0 -0
  1134. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_recorder.py +0 -0
  1135. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_retention.py +0 -0
  1136. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_diagnostics_sanitize.py +0 -0
  1137. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_dockerfile_version_pin.py +0 -0
  1138. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_documentation_gate.py +0 -0
  1139. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_duration_tab_drift.py +0 -0
  1140. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_entity_provenance.py +0 -0
  1141. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_errors.py +0 -0
  1142. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_errors_classification.py +0 -0
  1143. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_glama_build_spec.py +0 -0
  1144. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_image_batch_references.py +0 -0
  1145. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_incident_generation_requests.py +0 -0
  1146. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_json_output.py +0 -0
  1147. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_marker_registry.py +0 -0
  1148. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_media.py +0 -0
  1149. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_observability.py +0 -0
  1150. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1151. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_paths.py +0 -0
  1152. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_playwright_pin.py +0 -0
  1153. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_profile_lease.py +0 -0
  1154. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_profile_lease_subprocess.py +0 -0
  1155. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_profile_store.py +0 -0
  1156. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_profile_store_locale.py +0 -0
  1157. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_project_list_urls.py +0 -0
  1158. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_release_version_sites.py +0 -0
  1159. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_rich_markup_safety.py +0 -0
  1160. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_self_documenting_errors.py +0 -0
  1161. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_server_json.py +0 -0
  1162. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_smoke.py +0 -0
  1163. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/test_update_check.py +0 -0
  1164. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/__init__.py +0 -0
  1165. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_banned.py +0 -0
  1166. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_expander.py +0 -0
  1167. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_invocation.py +0 -0
  1168. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_loader.py +0 -0
  1169. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_registry.py +0 -0
  1170. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_runtime.py +0 -0
  1171. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/tools/test_spec.py +0 -0
  1172. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/ui/test_app.py +0 -0
  1173. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_codec.py +0 -0
  1174. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_daemon.py +0 -0
  1175. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1176. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_queue.py +0 -0
  1177. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1178. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1179. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1180. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/ARCHITECTURE.md +0 -0
  1181. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/AUTHENTICATION.md +0 -0
  1182. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/CHARACTER.md +0 -0
  1183. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/DEVELOPMENT.md +0 -0
  1184. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1185. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/INSTRUCTIONS.md +0 -0
  1186. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1187. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/MOVIE.md +0 -0
  1188. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1189. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/SECURITY.md +0 -0
  1190. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/SPONSORS.md +0 -0
  1191. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/TOOLS.md +0 -0
  1192. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/USER_GUIDE.md +0 -0
  1193. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/agents.md +0 -0
  1194. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/index.md +0 -0
  1195. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/installation.md +0 -0
  1196. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/onboarding-mockup.html +0 -0
  1197. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/onboarding.md +0 -0
  1198. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/docs/stylesheets/extra.css +0 -0
  1199. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/mkdocs.yml +0 -0
  1200. {gflow_cli-0.79.1 → gflow_cli-0.81.0}/website/requirements.in +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.79.1",
3
+ "version": "0.81.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -165,6 +165,13 @@
165
165
  # GFLOW_CLI_HEADLESS=false explicitly rather than relying on the default.
166
166
  # GFLOW_CLI_HEADLESS=false
167
167
 
168
+ # Screen position X,Y of the headed generation browser. Default -30000,-30000 opens it
169
+ # off-screen: still real headed Chrome (reCAPTCHA unaffected), just not over your
170
+ # desktop. Set 0,0 (or a second monitor's origin) to watch a run or clear a consent /
171
+ # account-chooser screen by hand; set empty for Chrome's own placement. It does NOT
172
+ # stop Chrome taking keyboard focus at launch. Login windows are always visible.
173
+ # GFLOW_CLI_BROWSER_WINDOW_POSITION=-30000,-30000
174
+
168
175
  # Browser automation engine — playwright (default) | patchright
169
176
  # patchright is an OPT-IN, drop-in patched Playwright (Chromium) that avoids the
170
177
  # Runtime.enable CDP leak for stronger reCAPTCHA-Enterprise evasion on the HEADED
@@ -43,7 +43,7 @@ jobs:
43
43
  with:
44
44
  persist-credentials: false
45
45
  - name: Install uv
46
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
46
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
47
47
  - name: Audit locked dependencies for known CVEs
48
48
  # Fails the build on any known advisory. Accept later via: pip-audit --ignore-vuln <GHSA-id>
49
49
  #
@@ -80,7 +80,7 @@ jobs:
80
80
  persist-credentials: false
81
81
 
82
82
  - name: Install uv
83
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
83
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
84
84
 
85
85
  - name: Audit workflows (zizmor)
86
86
  # --offline: the online audits need a GH token and reach the network, so
@@ -116,7 +116,7 @@ jobs:
116
116
  persist-credentials: false
117
117
 
118
118
  - name: Install uv
119
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
119
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
120
120
 
121
121
  - name: Set up Python
122
122
  run: uv python install 3.13
@@ -172,7 +172,7 @@ jobs:
172
172
  persist-credentials: false
173
173
 
174
174
  - name: Install uv
175
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
175
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
176
176
 
177
177
  - name: Set up Python
178
178
  run: uv python install ${{ matrix.python-version }}
@@ -225,7 +225,9 @@ jobs:
225
225
  # e2e/live tests require a logged-in Chromium profile and may spend
226
226
  # Flow credits. pyproject.toml excludes both markers by default; CI
227
227
  # intentionally relies on that default smoke set.
228
- run: uv run python -m pytest -q --cov=gflow_cli --cov-report=xml --junitxml=pytest-report.xml
228
+ # -n auto: pytest-xdist, one worker per runner vCPU (~2x on the full suite;
229
+ # 198 s vs ~390 s measured locally at -n 8).
230
+ run: uv run python -m pytest -q -n auto --cov=gflow_cli --cov-report=xml --junitxml=pytest-report.xml
229
231
 
230
232
  # Five files under tests/e2e/ are hermetic: every Flow origin is served by
231
233
  # `page.route(...).fulfill(...)`, so they need no account, no profile, no
@@ -285,7 +287,7 @@ jobs:
285
287
  persist-credentials: false
286
288
 
287
289
  - name: Install uv
288
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
290
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
289
291
 
290
292
  - name: Set up Python
291
293
  run: uv python install 3.13
@@ -357,7 +359,7 @@ jobs:
357
359
  # archived actions, so its pin would rot silently); sonarqube-scan-action
358
360
  # is SonarSource's maintained successor and serves SonarCloud when
359
361
  # SONAR_HOST_URL points at it.
360
- uses: SonarSource/sonarqube-scan-action@22918119ff8e1ca75a623e15c8296b6ea4fbe28f # v8.2.1
362
+ uses: SonarSource/sonarqube-scan-action@ba9859eae8dd6bd29e412f25ddbbef3d032000f4 # v8.2.2
361
363
  env:
362
364
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # PR decoration
363
365
  SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # set in repo → Settings → Secrets
@@ -33,7 +33,7 @@ jobs:
33
33
  persist-credentials: false
34
34
 
35
35
  - name: Install uv
36
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
36
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
37
37
 
38
38
  - name: Set up Python
39
39
  run: uv python install 3.13
@@ -25,7 +25,7 @@ jobs:
25
25
  fetch-depth: 0 # full history so `git diff origin/<base>..HEAD` resolves
26
26
 
27
27
  - name: Install uv
28
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
28
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
29
29
 
30
30
  - name: Classify touched paths (advisory, never blocks)
31
31
  # BASE_REF arrives through `env:`, never interpolated into the script
@@ -24,7 +24,7 @@ jobs:
24
24
  fetch-depth: 0 # full history — the backtest replays every commit
25
25
 
26
26
  - name: Install uv
27
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
27
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
28
28
 
29
29
  - name: Run backtest (advisory; writes to job summary)
30
30
  run: uv run python scripts/dev/materiality_backtest.py >> "$GITHUB_STEP_SUMMARY"
@@ -31,7 +31,7 @@ jobs:
31
31
  fetch-depth: 0
32
32
 
33
33
  - name: Install uv
34
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
34
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
35
35
  with:
36
36
  # This is the one workflow that publishes artefacts (PyPI + GitHub
37
37
  # Release), so it must not restore a cache any other workflow can
@@ -47,6 +47,6 @@ jobs:
47
47
  retention-days: 5
48
48
 
49
49
  - name: Upload to code-scanning
50
- uses: github/codeql-action/upload-sarif@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4
50
+ uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4
51
51
  with:
52
52
  sarif_file: results.sarif
@@ -16,7 +16,7 @@ jobs:
16
16
  steps:
17
17
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
18
18
  with: { persist-credentials: false }
19
- - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
19
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
20
20
  - run: uv sync --frozen
21
21
  - run: uv run playwright install chromium --with-deps
22
22
  - name: Probe
@@ -46,7 +46,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
46
46
 
47
47
  - Python CLI and MCP server for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image, today; `GFLOW_CLI_FLOW_HOST`).
48
48
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
49
- - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_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`.
49
+ - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_docs.py`, `docs_catalog.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
50
50
  - 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 docs` (browse the bundled documentation — bare lists every topic, `gflow docs <topic>` prints one as Markdown, `gflow docs --search TERM` searches all of them; there are **no** `list`/`print`/`search` subcommands — read-only, offline, deliberately no MCP twin), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
51
51
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
52
52
 
@@ -97,11 +97,12 @@ the five other mirror axes), which no command here can check and no CI gate can
97
97
  > 2026-09-02). Two lists that disagree means the shorter one is silently wrong.
98
98
 
99
99
  - Use `pytest -m "not live and not e2e and not smoke"` locally; full suite OOMs on small dev machines. Scope to changed dirs; trust CI for the full sweep.
100
+ - **Parallel runs (`pytest-xdist`):** add `-n 8` (or `-n auto`) to cut the offline suite from ~390 s to ~200 s. Every worker is a full process, so cap `-n` on a small machine. CI runs `-n auto`. A test that passes alone but fails under `-n` shares state with another test: **fix the shared state** (two measured cases: `tests/mcp/conftest.py` and `test_every_shipped_skill_is_byte_identical_to_its_source`). If two tests genuinely need the same exclusive resource (a fixed port, a file lock), mark both `@pytest.mark.xdist_group("<resource>")` so they run on one worker, one after another, while the rest stays parallel.
100
101
  - TDD is non-negotiable. Coverage floor: 80% overall.
101
102
  - Documentation is a first-class deliverable. Every behavior, workflow, config, or operator-facing change must update the relevant docs or state why no docs changed in the PR/checklist. `scripts/ci/check_doc_links.py` is a merge gate.
102
103
  - **A PR is not done until its SonarCloud gate is green (zero new issues).** The nine gates above are local/pre-commit; SonarCloud is server-side and runs in CI (`sonar.qualitygate.wait=true` → a red gate turns the `SonarCloud analysis` check red). Before calling a PR merge-ready, verify it with `/gflow:sonar <N>` (it is skipped on fork PRs — maintainer-checked there).
103
104
  - **E2E is the decisive layer, and it is required for every behavior change that touches a Flow surface.** Run the `tests/e2e/` test that covers the change, or write one — offline-green proves only that *our* code does what we think, never that Flow still behaves as captured. `/gflow:live-verify` does **not** satisfy this: it drives CLI commands by hand into a gitignored note and never runs `pytest -m e2e`. The two are complementary — an e2e test is a re-runnable regression, a live-verify ledger is a narrative record. A change touching no Flow surface at all (docs, help text, exit-code plumbing) is out of scope — say so explicitly rather than leaving it blank. Anything else follows the **Iron Law** above: run it, or name the external blocker that stops you. "A maintainer will run it" is a handoff, not a verification, and is only available once the blocker is named.
104
- - E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
105
+ - E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), the migrated refusal e2e (`e2e_image`, opt in with `GFLOW_CLI_E2E_RUN_REFUSAL=1` — it sends one corrupted reCAPTCHA token, so run it on a probe profile), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
105
106
  - Live tests (`@pytest.mark.live`) opt in via `GFLOW_LIVE=1`.
106
107
 
107
108
  ## Code style
@@ -6,6 +6,109 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
+
10
+ ## [0.81.0] — 2026-09-30
11
+
12
+ ### Added
13
+
14
+ - **The generation browser opens off-screen (#923).** Headed Chrome is required, so until
15
+ now every `image`/`video` run put a Chrome window over your desktop. It now opens at
16
+ `-30000,-30000`. It is still fully headed, so Flow and reCAPTCHA see the same browser.
17
+ Image and video generation were measured unchanged, and the page is not throttled.
18
+ `GFLOW_CLI_BROWSER_WINDOW_POSITION` takes any `X,Y` to place it where you want (to watch
19
+ a run or clear a consent screen by hand); empty restores Chrome's own placement. It
20
+ does not stop Chrome taking keyboard focus at launch. Login windows are unaffected. See
21
+ [docs/CONFIGURATION.md](docs/CONFIGURATION.md#gflow_cli_browser_window_position).
22
+ Thanks to @johngbl for the idea and the first implementation.
23
+
24
+ ### Security
25
+
26
+ - **Locked `urllib3` 2.8.0 (CVE-2026-97687, CVE-2026-97688, CVE-2026-97689).**
27
+ Transitive only — via `requests` and, with the `s3` extra, `botocore`. No gflow
28
+ code imports it directly.
29
+
30
+ ### Fixed
31
+
32
+ - **Windows profile write-denial is distinguished from browser contention.** When
33
+ the generation client's browser launch fails with a Chrome `ProcessSingleton`
34
+ error carrying Windows access-denied code 5, it now raises `ProfileAccessError`
35
+ (configuration exit code 11) instead of a misleading "another Chrome holds it"
36
+ `ProfileLockedError` or an unclassified error. The match is on the error code,
37
+ so it works in every Windows display language. The remediation points to
38
+ profile-directory write access, not to closing a competing Chrome. Not covered
39
+ yet: `gflow auth login` / auth verification, and the standalone and experimental
40
+ transport launches — those still surface Chrome's raw error.
41
+ Thanks @L1meSn0w for the diagnosis and the Windows reproduction (#919).
42
+
43
+ ## [0.80.0] — 2026-09-29
44
+
45
+ ### Security
46
+
47
+ - **Locked `oauthlib` 4.0.0 (CVE-2026-49265) and `pyjwt` 2.15.1 (CVE-2026-102274).**
48
+ Both are transitive: `oauthlib` via the `gcs` extra (`gcsfs` → `google-auth-oauthlib`
49
+ → `requests-oauthlib`), `pyjwt` via `mcp[crypto]`. No gflow code imports either directly.
50
+
51
+ ### Added
52
+
53
+ - **Explicit video resolution control (`--resolution [360p|720p]`, #787).** Added `--resolution`
54
+ to `gflow video t2v`, `i2v`, and `r2v`, as well as MCP tool `gflow_generate_video`.
55
+ Enables explicit selection of `360p` or `720p` on models providing resolution controls
56
+ (such as `omni-flash`), preventing unintended defaults.
57
+ - **Support for Nano Banana 2 Lite (`--model nano2-lite`, #787).** Added `nano2-lite` alias mapped
58
+ to Google's internal `HARBOR_SEAL` wire model for `gflow image t2i`, `i2i`, and `batch`. Its I2I reference
59
+ cap starts at 3 because it has not been measured yet, and its daily quota is
60
+ unmeasured too ([spike](docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md)).
61
+
62
+ ### Fixed
63
+
64
+ - **An unported image form is refused by name, on a fresh or a reused client (#891).**
65
+ The browser transport no longer pre-mints a reCAPTCHA token for images: Flow's page
66
+ mints its own, and the client's token was never read. After a successful image the
67
+ pre-mint ran on the parked `about:blank` page and turned exit 36 into a misleading
68
+ `RecaptchaError`. The refusal now comes from the composer and names the form, e.g.
69
+ "the IMAGEN_3_5 model is not ported yet". Reachable from `gflow run --config` with a
70
+ per-prompt `imagen4` after a successful prompt: that run used to crash with exit 1 and
71
+ lose its results table; now the prompt fails by name and the run completes. This
72
+ corrects the 0.78.0 note that project-less image runs "keep the served host": the
73
+ client creates the project first, so they are served by the migrated composer. The HTTP
74
+ image transports still mint.
75
+ - **A clip whose download connection dropped is no longer recorded as never generated
76
+ (#896, #898).** When Flow reports a video done but the signed-media connection drops
77
+ on every retry, the catalog now marks the asset `MEDIA_GENERATION_STATUS_SUCCESSFUL`
78
+ rather than leaving it `pending` forever. The operation's `error_type` is
79
+ `media-download` (still exit 6), so `gflow data list errors` tells a lost transfer from
80
+ a failed generation. `gflow data list videos` gains a `STATUS` column and a `status`
81
+ field in `--json`. An HTTP error answer on the signed URL still leaves the asset
82
+ `pending`. **Changed:** that failure's Problem Details `type` is now
83
+ `…/errors/media-download` (a subclass of the `network` error, same exit code).
84
+ - **A generation flow.google.com refuses is now reported as that refusal, by name (#906, #873).**
85
+ Flow answers a refused submit with HTTP 200 and a `batchexecute` error envelope carrying
86
+ Google's reason (`PUBLIC_ERROR_UNUSUAL_ACTIVITY`), but gflow's parser discarded any frame
87
+ without a payload. So a refusal ended as a retryable 60 s video timeout (exit 9) or an image
88
+ "no ogiZ0b frame" wire fault (exit 7), whose remediation tells you to file a frontend bug.
89
+ It is now `WafRejectionError` (exit 10) — the class the labs path has always used for the same
90
+ reason — with a remediation that says the prompt is not the cause and nothing was charged. The
91
+ content-safety reasons map to `ContentPolicyError` (exit 5) as on the REST path. Read from the
92
+ wire, not from the grid's failure card, which looks identical for a refusal and an aborted
93
+ submit ([spike](docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md)).
94
+ The refusal was observed live on the image submit; the video submit reads the same framing
95
+ and is covered offline, but a live video refusal has not been captured yet.
96
+ Diagnosed by [@stgmt](https://github.com/stgmt) in #873 and #906; this change supersedes
97
+ #873 and the refusal-card half of #907.
98
+
99
+ - **`gflow auth login` no longer reports success while Google is waiting for the account to
100
+ "Confirm it's you" (#902).** In that state the cookies stay valid, so the session probe
101
+ answered in 0.4 s and the login closed Chrome before Flow's client-side hop to
102
+ `flow.google.com/about` could land. It then printed `[OK] Flow session verified` on an
103
+ account where every command still exited 31. The login now watches a `flow.google.com`
104
+ landing for up to 3 s before it closes. If Flow routes the page to `/about`, Chrome stays open
105
+ and the user is told to press the page's main button and finish Google's check. Closing the
106
+ window or running out of time in that state exits 12 with the new
107
+ `IdentityRecheckPendingError`. The #849 on-disk check is skipped in that case, because it reads
108
+ the same healthy cookies. A labs-served login closes as fast as before. The failing state is
109
+ tested offline only: the one account measured in it (2026-09-23) had already been cleared by
110
+ hand, and none of the profiles here is in that state now.
111
+
9
112
  ## [0.79.1] — 2026-09-22
10
113
 
11
114
  ### Fixed
@@ -5638,7 +5741,9 @@ shell-script template that branches on these codes.
5638
5741
 
5639
5742
  First skeleton. Not functional end-to-end yet.
5640
5743
 
5641
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.79.1...HEAD
5744
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.81.0...HEAD
5745
+ [0.81.0]: https://github.com/ffroliva/gflow-cli/compare/v0.80.0...v0.81.0
5746
+ [0.80.0]: https://github.com/ffroliva/gflow-cli/compare/v0.79.1...v0.80.0
5642
5747
  [0.79.1]: https://github.com/ffroliva/gflow-cli/compare/v0.79.0...v0.79.1
5643
5748
  [0.79.0]: https://github.com/ffroliva/gflow-cli/compare/v0.78.0...v0.79.0
5644
5749
  [0.78.0]: https://github.com/ffroliva/gflow-cli/compare/v0.77.1...v0.78.0
@@ -14,14 +14,46 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
14
14
 
15
15
  ## Open
16
16
 
17
+ ### Every command lands on `flow.google.com/about` (exit 31) while `gflow auth status` says the session is fine
18
+
19
+ - **Status:** Open · **Severity:** High for the affected account (nothing runs) · **Affected:** measured on one account (`denon82`, 2026-09-23). Other `/about` occurrences are not yet shown to share the cause.
20
+ - **Tracked:** [#902](https://github.com/ffroliva/gflow-cli/issues/902) (`auth login` cannot clear it) · [#888](https://github.com/ffroliva/gflow-cli/issues/888) · [#756](https://github.com/ffroliva/gflow-cli/issues/756)
21
+ - **Evidence:** [spike](docs/superpowers/spikes/2026-09-23-about-cta-leads-to-google-reauth.md)
22
+
23
+ Flow sends every visit to its public landing page `/about`, while every Google and Flow cookie
24
+ gflow checks is present and unexpired. On the measured account, the page's "Create with Google
25
+ Flow" button led to Google's **"Confirm it's you — sign in again to continue"** page: Google was
26
+ waiting for the account to re-verify its identity.
27
+
28
+ **Through v0.79.1, `gflow auth login` does not fix it.** It sees the valid cookies, reports
29
+ `Flow session verified` in about half a second, and closes Chrome before Google can ask (#902).
30
+ From the next release, the login watches where the page lands. If Flow sends it to `/about`, the
31
+ login keeps Chrome open and asks you to press the page's main button and finish "Confirm it's
32
+ you". If you close the window or the time limit runs out first, it exits 12
33
+ (`IdentityRecheckPendingError`) instead of reporting success. The failing state could not be
34
+ reproduced live for this fix, because the one measured account was already cleared by hand. The
35
+ detection is tested offline only.
36
+
37
+ **Workaround (needs the account password):** with no gflow command running, open real Chrome on
38
+ the profile directory yourself:
39
+
40
+ ```bash
41
+ "<chrome.exe>" --user-data-dir="<GFLOW_CLI_HOME profile dir, e.g. …/profile_<name>>" --password-store=basic https://flow.google.com/
42
+ ```
43
+
44
+ Click the landing page's main button, complete "Confirm it's you", wait for the Flow editor, then
45
+ close Chrome yourself. On the measured account, `/about` was gone on the next run and
46
+ `gflow project create` succeeded.
47
+
17
48
  ### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
18
49
 
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, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 — 3:4 appeared by 2026-09-17, #864), and count 1–4. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character create` is NOT in that list any more** — it works on the migrated host. `character list` does NOT: it reads the retired labs `projectInitialData` route and exits 7, measured 2026-09-20 both on `auto` and with `GFLOW_CLI_FLOW_HOST=flow.google.com` (#875). Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
50
+ - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / 2 Lite / Pro, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 — 3:4 appeared by 2026-09-17, #864), and count 1–4. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character create` is NOT in that list any more** — it works on the migrated host. `character list` does NOT: it reads the retired labs `projectInitialData` route and exits 7, measured 2026-09-20 both on `auto` and with `GFLOW_CLI_FLOW_HOST=flow.google.com` (#875). Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
20
51
  - **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
21
52
  - **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
22
53
  - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
23
54
  - **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
- - **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.
55
+ - **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; since v0.80.0 the browser transport no longer mints for images at all, and the flow.google.com composer itself refuses unported forms (#891). 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.
56
+ - **A second image request on one client hit the same `RecaptchaError`** ([#891](https://github.com/ffroliva/gflow-cli/issues/891), fixed in v0.80.0): after a successful image on an account served flow.google.com, the page is parked on `about:blank`, and the client's pre-mint ran there, so an unported form (e.g. `--model imagen4`) failed with "the Flow editor page may have failed to load" instead of exit 36. The browser transport never used that token, so it no longer mints; the composer refuses the form by name. Reachable from `gflow run --config` with a per-prompt `"model": "imagen4"` after a successful prompt, where it also crashed the whole run (exit 1, results table lost); it now reports that prompt as exit 36 and the run completes.
25
57
 
26
58
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
27
59
  `https://labs.google/fx/tools/flow/project/<id>` redirects to
@@ -935,6 +967,11 @@ find "$HOME/Downloads/gflow-cli" -type f -mtime +30 -delete
935
967
  - **Status:** Open · **Severity:** High (blocks affected profile until WAF score decays or profile is replaced)
936
968
  - **First observed:** 2026-05-23 on profile `denon82` during `gflow image batch` runs
937
969
  - **Surfaces as:** `gflow_cli.errors.WafRejectionError: WAF rejection (HTTP 403): batchGenerateImages HTTP 403 — reCAPTCHA score too low or WAF fingerprint mismatch`
970
+ - **On flow.google.com** (measured 2026-09-27): the same reason arrives as HTTP 200 with a
971
+ `batchexecute` error envelope (`[7,null,[["type.googleapis.com/google.rpc.ErrorInfo",["PUBLIC_ERROR_UNUSUAL_ACTIVITY"]]]]`)
972
+ and surfaces as `WafRejectionError: … Flow refused the submit: PUBLIC_ERROR_UNUSUAL_ACTIVITY`.
973
+ Flow's grid shows *"We noticed some unusual activity… You have not been charged"*
974
+ ([spike](docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md)).
938
975
  - **structlog signature:** `ui_automation.batch_response_seen` with `status=403` followed by `ui_automation.batch_403_body` containing `'message': 'reCAPTCHA evaluation failed', 'status': 'PERMISSION_DENIED', 'reason': 'PUBLIC_ERROR_UNUSUAL_ACTIVITY'`
939
976
 
940
977
  Distinct from the historical `aisandbox-pa` 401 (resolved in v0.7.0). The 403
@@ -1414,7 +1451,9 @@ failed assert left the profile unusable — it is usable, just possibly as the w
1414
1451
 
1415
1452
  Two further items on the same issue are unfixed and worth knowing about: a second chooser
1416
1453
  hop (chooser → consent → chooser) is not handled and degrades into the landing timeout, and
1417
- that timeout is still an unmeasured number.
1454
+ that timeout is still an unmeasured number. The generation browser opens off-screen since
1455
+ v0.81.0; to clear such a screen by hand, re-run with
1456
+ `GFLOW_CLI_BROWSER_WINDOW_POSITION=0,0` (see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_browser_window_position)).
1418
1457
 
1419
1458
  ### Auth verification depends on Google's NextAuth session endpoint
1420
1459
 
@@ -1448,6 +1487,8 @@ key — surfaces as a `RuntimeError` that `auth/cookies.py` normalizes to
1448
1487
 
1449
1488
  Chromium refuses to open two persistent contexts on the same `user-data-dir` simultaneously. Historically this surfaced as an unhelpful Chromium "ProcessSingleton: profile is locked" error partway through a run. As of the profile-lease hardening (production-readiness plan, slice D1/D3), gflow-cli enforces this itself: a cross-process advisory lock (`ProfileLease`, kernel `flock` on POSIX / `msvcrt.locking` on Windows) guards every profile directory. A second `gflow` invocation, `gflow serve` daemon task, or MCP call against an already-leased profile is rejected **immediately** by default — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never silently corrupts the profile. Since #478, setting [`GFLOW_CLI_LEASE_WAIT_SECONDS`](docs/CONFIGURATION.md#gflow_cli_lease_wait_seconds) opts a waiter into a bounded wait that takes over as soon as the current holder finishes (holders always run to completion and are never asked to release early; same-process contention still fails fast — waiting on yourself would deadlock). Since #864 an MCP server waits 180 s by default, and queues its own calls on one profile rather than rejecting the second.
1450
1489
 
1490
+ **Not every `ProcessSingleton` failure is contention.** On Windows, a `ProcessSingleton` error carrying access-denied code `(0x5)` means Chrome cannot write the profile directory; at the generation client's launch gflow reports it as `ProfileAccessError` — see [CONFIGURATION § Profile-directory permissions at browser launch](docs/CONFIGURATION.md#profile-directory-permissions-at-browser-launch).
1491
+
1451
1492
  **Workaround:** use different profiles for parallel work — different profiles acquire independent leases and run fully concurrently.
1452
1493
 
1453
1494
  ### gflow refuses to open my profile after a downgrade ("written by a newer Chromium", exit 11)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.79.1
3
+ Version: 0.81.0
4
4
  Summary: CLI and MCP server for Google Flow — drive Veo text-to-video, image-to-video and Imagen image generation from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Documentation, https://ffroliva.github.io/gflow-cli/
@@ -73,8 +73,9 @@ Requires-Dist: av>=12; extra == 'dev'
73
73
  Requires-Dist: numpy>=1.24; extra == 'dev'
74
74
  Requires-Dist: pyright>=1.1.0; extra == 'dev'
75
75
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
76
+ Requires-Dist: pytest-xdist>=3.6; extra == 'dev'
76
77
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
77
- Requires-Dist: ruff==0.16.7; extra == 'dev'
78
+ Requires-Dist: ruff==0.16.9; extra == 'dev'
78
79
  Provides-Extra: gcs
79
80
  Requires-Dist: gcsfs>=2024.2.0; extra == 'gcs'
80
81
  Requires-Dist: universal-pathlib>=0.2.5; extra == 'gcs'
@@ -45,7 +45,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
45
45
  # Deliberately NOT pinned: google-chrome-stable. Chrome's apt repo keeps only the current
46
46
  # build, so a pinned version stops resolving within weeks. The trade-off is that this
47
47
  # layer caches indefinitely and a rebuild is what picks up a newer Chrome.
48
- ARG GFLOW_VERSION=0.79.1
48
+ ARG GFLOW_VERSION=0.81.0
49
49
  RUN pip install --no-cache-dir "gflow-cli==${GFLOW_VERSION}"
50
50
 
51
51
  VOLUME ["/data"]
@@ -31,6 +31,22 @@ See [AUTHENTICATION § Session storage](AUTHENTICATION.md#session-storage) for t
31
31
  create it — a `tools/` directory of user-authored "My Tools" TOMLs
32
32
  (`<GFLOW_CLI_HOME>/tools/*.toml`, auto-loaded; see [TOOLS.md § My Tools](TOOLS.md)).
33
33
 
34
+ #### Profile-directory permissions at browser launch
35
+
36
+ On Windows, when a generation run's browser launch fails with a Chrome
37
+ `ProcessSingleton` error carrying access-denied code 5, gflow reports
38
+ `ProfileAccessError`, a configuration error (exit code 11), rather than suggesting
39
+ contention. Ensure the process can write the complete persistent profile directory,
40
+ or use a profile inside a writable `GFLOW_CLI_HOME`. Relocating application-level
41
+ lease locks alone does not relocate Chrome's `ProcessSingleton`, cookies, or crash
42
+ reports.
43
+
44
+ This classification covers the generation client's launch only. `gflow auth login`,
45
+ auth verification, and the standalone and experimental transports still
46
+ surface Chrome's raw error for the same cause; look for `ProcessSingleton` plus
47
+ `(0x5)` in it. Launch failures without the access-denied code keep their existing
48
+ classification; this is not general cross-platform permission-error detection.
49
+
34
50
  ### `GFLOW_CLI_PROFILE`
35
51
 
36
52
  **What:** Default profile name used when `--profile` isn't passed on the CLI.
@@ -333,6 +349,53 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
333
349
  **Default:** `false` — **headed real Chrome is the production default**, not an opt-in fallback. The `ui_automation` transport (gflow-cli's only production transport) requires a headed browser: reCAPTCHA Enterprise rejects headless Chromium with an immediate 403, so `headless=true` is not a WAF workaround — it only exists for CI/CD environments running a non-`ui_automation` transport (e.g. `bearer`/`sapisidhash`, experimental).
334
350
  **WAF-sensitive runs:** set `GFLOW_CLI_HEADLESS=false` explicitly (it is already the default, but pin it in CI/CD env files or scripts that also set `headless=true` for a different transport, so a transport switch back to `ui_automation` doesn't silently regress to a rejected headless launch).
335
351
 
352
+ ### `GFLOW_CLI_BROWSER_WINDOW_POSITION`
353
+
354
+ **What:** Where on screen the headed generation browser opens, as `X,Y` in pixels.
355
+ **Values:** `X,Y` (integers, may be negative) | empty
356
+ **Default:** `-30000,-30000`: off-screen. Generation needs a real **headed** Chrome (see
357
+ [`GFLOW_CLI_HEADLESS`](#gflow_cli_headless)), and without this setting that window
358
+ opens over whatever you are working on during every run. Off-screen it is still fully
359
+ headed, so Flow and reCAPTCHA see exactly the same browser.
360
+
361
+ | Set it to | Result |
362
+ |---|---|
363
+ | unset | off-screen (default) |
364
+ | `0,0`, `1920,0`, … | the window opens there: watch a run, or park it on a second monitor |
365
+ | empty (`GFLOW_CLI_BROWSER_WINDOW_POSITION=`) | Chrome's own placement, the behaviour before this setting existed |
366
+
367
+ **When to bring it back on-screen:** a run that waits on something only a person can
368
+ clear, such as an account chooser that wants a click or a Google consent or
369
+ verification screen. The error names where the session stopped. Set a visible
370
+ position, re-run, and deal with it in the window. (Flow's one-time *rights to use this
371
+ image* confirmation has its own remedy: see
372
+ [KNOWN_ISSUES](../KNOWN_ISSUES.md).)
373
+
374
+ **What it does not do:** it does not stop Chrome **taking keyboard focus** when it
375
+ launches: the `--no-focus-on-init` switch we tried made no measurable difference. If you are typing when a run starts, the
376
+ first keystrokes can land in the (invisible) browser. Login (`gflow auth login`) is
377
+ unaffected and always opens where you can see it.
378
+
379
+ **Measured (Windows 11, 2026-09-30):** off-screen and visible runs behaved the same.
380
+
381
+ | | off-screen | visible |
382
+ |---|---|---|
383
+ | `gflow image t2i` | image saved, 34 s | image saved, 33 s |
384
+ | `gflow video t2v` (`veo-lite`) | video saved, 53 s, no poll stalls | video saved, 65 s, no poll stalls |
385
+ | page `visibilityState` | `visible` | `visible` |
386
+ | animation frames / 100 ms timer ticks in 5 s | 300 / 50 | 295 / 50 |
387
+
388
+ Chrome does not throttle an off-screen window: the page still counts as visible.
389
+ Windows clamps very large offsets, so `-30000,-30000` lands at `-21845,-21845`, still
390
+ past any monitor, on every launch measured. A visible position such as `100,100` opened
391
+ exactly there on 8 of 10 launches. In the other two the window was found elsewhere, and
392
+ once it was seen moving mid-run: a visible window can be moved like any other once it
393
+ is open. Not yet measured on macOS or
394
+ Linux, or for runs whose polling lasts longer than about five minutes.
395
+ Measurement script: `scripts/dev/spike_offscreen_window.py`.
396
+
397
+ **Malformed values** (`100`, `1,2,3`, `a,b`) fail at startup with a validation error.
398
+
336
399
  ### `GFLOW_CLI_BROWSER_ENGINE`
337
400
 
338
401
  **What:** Selects the browser-automation engine backing the Playwright API.
@@ -365,7 +428,7 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
365
428
  - `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
429
  - `labs.google` — never use the migrated composer; where Flow serves `flow.google.com`, requests fail with exit 36 (kill switch).
367
430
  **Default:** `auto`
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, all five aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16 — `3:4` was added to that host's radiogroup by 2026-09-17, #864) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. Local-file start+end frames (`--initial-frame` + `--end-frame`) are ported (#639). Frames or references given by UUID/`@Name`, character entities, Agent instructions, Imagen 4, scenes, extend, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
431
+ **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 / 2 Lite / Pro, all five aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16 — `3:4` was added to that host's radiogroup by 2026-09-17, #864) and count 1–4; the page owns the `ogiZ0b` reCAPTCHA + submit and the response already contains completed signed image URLs. Local-file start+end frames (`--initial-frame` + `--end-frame`) are ported (#639). Frames or references given by UUID/`@Name`, character entities, Agent instructions, Imagen 4, scenes, extend, instructions and tools are not ported yet and fail before submit where Flow serves flow.google.com. MCP uses the same image service and queue payload, and inherits this setting from the server/daemon environment rather than per call.
369
432
 
370
433
  ### `GFLOW_CLI_PREFER_CLASSIC` *(deprecated — use `GFLOW_CLI_UI_MODE=classic`)*
371
434
 
@@ -557,5 +620,7 @@ gflow image t2i "test idea" --profile experiments
557
620
  | `ValidationError: GFLOW_CLI_TIMEOUT_SECONDS must be a positive integer` | Bad `.env` value | Set to a number ≥ 1 |
558
621
  | `FileNotFoundError: $GFLOW_CLI_HOME/profile_default not found` | First run, no auth yet | `gflow auth login` |
559
622
  | `AuthExpiredError` | Cookies expired or revoked | `gflow auth login --profile <name>` |
623
+ | A run waits, then times out on an account chooser, consent or verification screen | The generation browser opens off-screen, so you cannot click it | Re-run with `GFLOW_CLI_BROWSER_WINDOW_POSITION=0,0` (or empty) and clear the screen in the window. See [`GFLOW_CLI_BROWSER_WINDOW_POSITION`](#gflow_cli_browser_window_position) |
624
+ | `ProfileAccessError` (exit code 11) | Chrome cannot write the profile directory (Windows access denied) | Grant write access to the whole profile directory, or use a writable profile. See [Profile-directory permissions](#profile-directory-permissions-at-browser-launch) |
560
625
  | Output files don't appear where I expect | Flag > env > .env > default — check actual resolved path | `gflow image t2i ... --verbose` shows the resolved output path |
561
626
  | `ProfileLockedError` (exit code 11) | Two concurrent calls against the same profile — the cross-process `ProfileLease` fails fast (never waits) on same-profile contention, whether the second holder is another `gflow` process, the `gflow serve` daemon, or an MCP call | Wait for the first call to finish, or use `--profile other` — different profiles run fully in parallel, each with its own lease |
@@ -206,6 +206,11 @@ async worker (which mirrors its `generation_queue.error_json` failure into
206
206
  `count>1` request fires the callback per output — no sibling row is
207
207
  stranded); failures before `on_started`, and all image failures, INSERT a
208
208
  fresh row with full request metadata.
209
+ - A download whose connection drops on every retry AFTER Flow reported the clip done
210
+ (`MediaDownloadError`, exit 6, `error_type=media-download`, #896) also marks that
211
+ clip's asset `MEDIA_GENERATION_STATUS_SUCCESSFUL`: the operation failed, the
212
+ generation did not, and `gflow data download <media_id>` recovers it for free. An
213
+ HTTP error answer on the signed URL (e.g. an expired link) still leaves it `pending`.
209
214
  - A poll that COMPLETES with a Flow-reported failure (`succeeded=false`) is
210
215
  recorded as `failed` with `error_type=generation-failed` and the
211
216
  `failure_reasons` as detail — not as a success.
@@ -334,6 +339,10 @@ By default, `images` and `videos` aggregate rows by Flow media ID. If an asset
334
339
  has multiple local copies (e.g. re-downloaded to different paths), they appear
335
340
  as a single row with a `COPIES` count and the path of the latest copy.
336
341
 
342
+ `videos` also shows the asset `STATUS` (`status` in `--json`): `pending` until Flow
343
+ reports the clip done, then `MEDIA_GENERATION_STATUS_SUCCESSFUL` — including when only
344
+ the download failed (#896). Images are recorded `ready`.
345
+
337
346
  TTY stdout → Rich table; pipe or `--json` → JSONL. Default sort: newest first. Exit code 16 on data-store errors (same `DataStoreError` family as `gflow data media`). A **missing or freshly-created** DB is NOT a data-store error — `data list` auto-creates the schema via `DataStore.open()` and returns exit 0 with an empty result (see [#88](https://github.com/ffroliva/gflow-cli/issues/88)).
338
347
 
339
348
  > **`data list profiles` vs `gflow auth list`:** `data list profiles` shows profiles that have **recorded generations** in the catalog; `gflow auth list` shows profiles that have ever **logged in** via `gflow auth login`. A profile that logged in but never generated anything will appear in `auth list` but not in `data list profiles`.
@@ -535,9 +544,10 @@ See [`errors.py::EXIT_CODE_MAP`](../src/gflow_cli/errors.py) for the complete ex
535
544
  Distinct from the above (which are errors OF the data layer), the
536
545
  `operations.error_type` column stores the taxonomy of RECORDED generation
537
546
  failures — the last segment of each exception's `problem_type` URI. Common
538
- values: `waf-rejection` (HTTP 403 / WAF), `content-policy`, `auth-expired`,
547
+ values: `waf-rejection` (reCAPTCHA/WAF refusal — labs HTTP 403, or a flow.google.com `PUBLIC_ERROR_UNUSUAL_ACTIVITY` envelope), `content-policy`, `auth-expired`,
539
548
  `transport-timeout`, `wire-format`, `rate-limit`, `ui-mode-unavailable`
540
- (cohort pin), `media-attribution`. Query them with `gflow data list errors`.
549
+ (cohort pin), `media-attribution`, `media-download` (the clip was generated; only
550
+ the transfer failed — recover it with `gflow data download`). Query them with `gflow data list errors`.
541
551
 
542
552
  ---
543
553
 
@@ -257,8 +257,9 @@ First visible-and-clickable wins. Log:
257
257
  | `AuthExpiredError` | 3 | Session cookies no longer valid | `gflow auth login --profile <name>` |
258
258
  | `AuthBrowserRejectedError` | 14 | Google's sign-in rejected the browser for advertising automation; only the `internal` strategy surfaces it | Re-run `gflow auth login` (default `auto` picks the `chrome` strategy, which retries on a no-automation path) |
259
259
  | `AuthLoginTimeoutError` | 12 | User did not finish the OAuth flow in time | Run `gflow auth login` again; raise `GFLOW_CLI_AUTH_LOGIN_TIMEOUT` |
260
+ | `IdentityRecheckPendingError` | 12 | Login ended while Flow was still sending the account to `/about` because Google wants it to "Confirm it's you" (#902) | Run `gflow auth login` again, press the page's main button, and finish Google's check until the Flow app loads |
260
261
  | `TransportTimeoutError` | 9 | A single API call exceeded its timeout | Retry; check Flow status |
261
- | `WafRejectionError` | 10 | reCAPTCHA / WAF blocked the request | Wait + retry; verify session is healthy |
262
+ | `WafRejectionError` | 10 | reCAPTCHA / WAF blocked the request (`PUBLIC_ERROR_UNUSUAL_ACTIVITY`) | Stop on that profile — each rejected request can raise its score. Wait hours or switch profile; see [ACCOUNT_SAFETY § When Google does push back](ACCOUNT_SAFETY.md#when-google-does-push-back) |
262
263
 
263
264
  For health probes from a worker process, use
264
265
  `FlowApiClient.health_check()` — it returns `bool` and never raises.
@@ -155,6 +155,7 @@ test, not a mocked proxy — the Bug Lane's step 5.
155
155
  | `GFLOW_CLI_E2E_VIDEO_ASPECT` | `"landscape"` | Aspect ratio for video e2e: `landscape` or `portrait`. |
156
156
  | `GFLOW_CLI_E2E_VIDEO_MODEL` | `"omni-flash"` | Veo model for i2v tests: `omni-flash` or `veo-fast`. |
157
157
  | `GFLOW_CLI_E2E_VIDEO_DURATION` | `"4"` | Seconds of video to generate in i2v tests (minimum credit unit). |
158
+ | `GFLOW_CLI_E2E_RUN_REFUSAL` | `"0"` | Set to `"1"` to run the migrated refusal e2e (`e2e_image`): one image submit goes out with its reCAPTCHA token corrupted so Flow refuses it, proving the refusal is reported as `WafRejectionError`. Zero credits, but a refused token can raise the profile's WAF score for hours, so run it **alone** and on a probe profile, never before other image tests in the same session. |
158
159
  | `GFLOW_CLI_E2E_RUN_ENTITY_PROV` | `"0"` | Set to `"1"` to run the entity-provenance e2e (#402) — asserts a generation Flow actually accepted records its `entity_ids` / `entity_names` in `operations.metadata_json`. Opt-in because it drives a real browser generation (no credit cost — images are free). |
159
160
  | `GFLOW_CLI_E2E_BATCH_MANIFEST` | `test_assets/sample_batch.tsv` | TSV manifest for the batch image e2e. |
160
161
  | `GFLOW_CLI_E2E_BATCH_JITTER` | `"1"` | Set to `"0"` to disable inter-request jitter in batch tests. |