gflow-cli 0.54.0__tar.gz → 0.56.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 (737) hide show
  1. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.env.template +10 -0
  3. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/AGENTS.md +4 -4
  4. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/CHANGELOG.md +54 -1
  5. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/CONFIGURATION.md +3 -1
  6. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/DISCLAIMER.md +3 -3
  7. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/KNOWN_ISSUES.md +32 -6
  8. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/PKG-INFO +6 -6
  9. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/README.md +5 -5
  10. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/AUTHENTICATION.md +39 -5
  11. {gflow_cli-0.54.0/website → gflow_cli-0.56.0}/docs/CONFIGURATION.md +23 -2
  12. {gflow_cli-0.54.0/website → gflow_cli-0.56.0}/docs/DEBUGGING.md +9 -5
  13. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/INDEX.md +4 -1
  14. gflow_cli-0.56.0/docs/LIVE_VERIFICATION_v0.55.0.md +86 -0
  15. gflow_cli-0.56.0/docs/LIVE_VERIFICATION_v0.56.0.md +123 -0
  16. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/MCP.md +14 -2
  17. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/PROJECT_STATUS.md +43 -1
  18. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/SECURITY.md +1 -1
  19. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/USAGE.md +26 -6
  20. {gflow_cli-0.54.0/website → gflow_cli-0.56.0}/docs/USER_GUIDE.md +12 -13
  21. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/medium_tutorial.md +1 -1
  22. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/llms.txt +2 -2
  23. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/pyproject.toml +1 -1
  24. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/incident_bundle_quality.py +3 -1
  25. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/record_demo.ps1 +5 -6
  26. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/gflow-cli/SKILL.md +7 -7
  27. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/__init__.py +1 -1
  28. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/_cli_helpers.py +16 -14
  29. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/client.py +22 -3
  30. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/experimental/bearer.py +31 -25
  31. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +8 -2
  32. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +20 -14
  33. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/ui_automation.py +13 -4
  34. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/ui_automation_video.py +5 -1
  35. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/__init__.py +16 -0
  36. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/verification.py +22 -14
  37. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/browser_manager.py +109 -1
  38. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli.py +75 -14
  39. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/config.py +25 -3
  40. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/diagnostics.py +109 -9
  41. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/errors.py +35 -8
  42. gflow_cli-0.56.0/src/gflow_cli/mcp/setup.py +133 -0
  43. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/tools.py +96 -48
  44. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/profile_lease.py +121 -33
  45. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/runtime.py +2 -1
  46. gflow_cli-0.56.0/src/gflow_cli/update_check.py +151 -0
  47. gflow_cli-0.56.0/src/gflow_cli/winsec.py +120 -0
  48. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_incidents.py +2 -1
  49. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_launch_kwargs.py +49 -0
  50. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_agentic_cohort_detection.py +9 -2
  51. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/auth/test_verification.py +34 -0
  52. gflow_cli-0.56.0/tests/auth/test_windows_acl.py +158 -0
  53. gflow_cli-0.56.0/tests/cli/test_auth_status.py +95 -0
  54. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_incident_output.py +34 -0
  55. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/conftest.py +5 -0
  56. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/auth.feature +9 -1
  57. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_auth_steps.py +24 -0
  58. gflow_cli-0.56.0/tests/mcp/test_error_funnel.py +81 -0
  59. gflow_cli-0.56.0/tests/mcp/test_setup.py +206 -0
  60. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_browser_manager.py +185 -0
  61. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_config.py +22 -4
  62. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_recorder.py +33 -0
  63. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_retention.py +14 -0
  64. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_errors.py +13 -0
  65. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_profile_lease.py +169 -0
  66. gflow_cli-0.56.0/tests/test_update_check.py +266 -0
  67. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_runtime.py +25 -0
  68. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/uv.lock +1 -1
  69. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/AUTHENTICATION.md +39 -5
  70. {gflow_cli-0.54.0 → gflow_cli-0.56.0/website}/docs/CONFIGURATION.md +23 -2
  71. {gflow_cli-0.54.0 → gflow_cli-0.56.0/website}/docs/DEBUGGING.md +9 -5
  72. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/KNOWN_ISSUES.md +32 -6
  73. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/MCP.md +14 -2
  74. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/SECURITY.md +1 -1
  75. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/USAGE.md +26 -6
  76. {gflow_cli-0.54.0 → gflow_cli-0.56.0/website}/docs/USER_GUIDE.md +12 -13
  77. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/index.md +2 -2
  78. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/installation.md +1 -1
  79. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/onboarding-mockup.html +2 -2
  80. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/onboarding.md +2 -2
  81. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.agents/plugins/marketplace.json +0 -0
  82. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/README.md +0 -0
  83. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/active.md +0 -0
  84. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/branch-review.md +0 -0
  85. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/changelog.md +0 -0
  86. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/check.md +0 -0
  87. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/doc-review.md +0 -0
  88. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  89. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  90. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/known-issues.md +0 -0
  91. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/live-verify.md +0 -0
  92. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/llm-council.md +0 -0
  93. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/next.md +0 -0
  94. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/plan.md +0 -0
  95. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  96. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/predict.md +0 -0
  97. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/release.md +0 -0
  98. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/scenario.md +0 -0
  99. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/sonar.md +0 -0
  100. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.claude/commands/gflow/status.md +0 -0
  101. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.gitattributes +0 -0
  102. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/CODEOWNERS +0 -0
  103. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  104. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/copilot-instructions.md +0 -0
  105. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/dependabot.yml +0 -0
  106. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/ci.yml +0 -0
  107. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/deps-watch.yml +0 -0
  108. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/external-pr-triage.yml +0 -0
  109. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/governance-advisory.yml +0 -0
  110. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/governance-benchmark.yml +0 -0
  111. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/labels.yml +0 -0
  112. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/main-base-guard.yml +0 -0
  113. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/pages.yml +0 -0
  114. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.github/workflows/release.yml +0 -0
  115. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.gitignore +0 -0
  116. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.gitleaks.toml +0 -0
  117. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.pre-commit-config.yaml +0 -0
  118. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/.secrets.baseline +0 -0
  119. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/CLAUDE.md +0 -0
  120. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/CONTRIBUTING.md +0 -0
  121. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/LICENSE +0 -0
  122. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/PLAN.md +0 -0
  123. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/RELEASE.md +0 -0
  124. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/ROADMAP.md +0 -0
  125. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/conftest.py +0 -0
  126. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  127. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docker-compose.yml +0 -0
  128. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/AGENT_GUIDE.md +0 -0
  129. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/AGENT_UI_E2E.md +0 -0
  130. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/AGENT_UI_RECON.md +0 -0
  131. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/ARCHITECTURE.md +0 -0
  132. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  133. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/CHARACTER.md +0 -0
  134. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/CHARACTER_RECON.md +0 -0
  135. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/DATA_LAYER.md +0 -0
  136. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/DEMOS.md +0 -0
  137. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/DEVELOPMENT.md +0 -0
  138. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/E2E_TESTING.md +0 -0
  139. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/EXTERNAL_STORAGE.md +0 -0
  140. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/GITHUB.md +0 -0
  141. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  142. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  143. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/INSTRUCTIONS.md +0 -0
  144. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  145. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  146. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  147. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  148. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  149. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  150. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  151. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  152. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  153. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  154. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  155. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  156. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  157. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  158. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  159. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  160. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  161. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  162. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  163. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  164. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  165. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  166. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  167. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  168. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  169. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  170. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  171. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  172. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  173. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  174. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  175. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  176. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  177. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  178. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  179. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  180. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  181. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  182. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  183. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  184. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  185. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  186. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  187. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  188. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  189. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  190. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  191. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  192. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  193. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  194. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  195. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  196. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  197. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  198. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  199. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  200. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/MOVIE.md +0 -0
  201. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/PROMPT_EXPANSION.md +0 -0
  202. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  203. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/TOOLS.md +0 -0
  204. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/assets/demo-split-pf.gif +0 -0
  205. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/assets/example-run.gif +0 -0
  206. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/assets/examples.webp +0 -0
  207. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/schemas/movie-handoff.schema.json +0 -0
  208. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/sonar-cleanup-tracker.md +0 -0
  209. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  210. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  211. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  212. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  213. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  214. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  215. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  216. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  217. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  218. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  219. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  220. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  221. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  222. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  223. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  224. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  225. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  226. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  227. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  228. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  229. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  230. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  231. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  232. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  233. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  234. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  235. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  236. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  237. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  238. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  239. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  240. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  241. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  242. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  243. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  244. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  245. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  246. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  247. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  248. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  249. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  250. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  251. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  252. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  253. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  254. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  255. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  256. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  257. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  258. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/eval/pr_triage_eval.py +0 -0
  259. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/eval/pr_triage_fixtures.json +0 -0
  260. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/README.md +0 -0
  261. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/batch_from_config.py +0 -0
  262. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/multi_prompt_t2i.py +0 -0
  263. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/sample_config.json +0 -0
  264. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/sample_prompts.txt +0 -0
  265. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/single_image_t2i.py +0 -0
  266. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/examples/workflow_chain.py +0 -0
  267. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/index.html +0 -0
  268. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/README.md +0 -0
  269. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/01_upload_image.json +0 -0
  270. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  271. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  272. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/04_archive_workflow.json +0 -0
  273. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/05_createProject.json +0 -0
  274. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/06_batchGenerateImages.json +0 -0
  275. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  276. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  277. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  278. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  279. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  280. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/12_create_scene.json +0 -0
  281. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  282. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/14_get_scene_workflows.json +0 -0
  283. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  284. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/autopilot/Dockerfile.triage +0 -0
  285. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/autopilot/entrypoint.sh +0 -0
  286. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  287. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  288. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  289. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/check_doc_links.py +0 -0
  290. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/check_materiality.py +0 -0
  291. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/check_release_artifacts.py +0 -0
  292. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/check_repo_hygiene.py +0 -0
  293. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/check_website_docs_pii.py +0 -0
  294. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/ci/generate_website_docs.py +0 -0
  295. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/debug_editor.py +0 -0
  296. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/debug_gen_settings.py +0 -0
  297. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/debug_settings.py +0 -0
  298. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/_recording_client.py +0 -0
  299. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/_spike_common.py +0 -0
  300. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/active_plan.py +0 -0
  301. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  302. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  303. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  304. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  305. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  306. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  307. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/capture_locale_invariants.py +0 -0
  308. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  309. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/character_create_spike.py +0 -0
  310. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/character_create_spike_v2.py +0 -0
  311. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/dump_character_selectors.js +0 -0
  312. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  313. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/make_project.py +0 -0
  314. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/materiality_backtest.py +0 -0
  315. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/monitor_pr_38.py +0 -0
  316. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/patch_character.py +0 -0
  317. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/skillopt/README.md +0 -0
  318. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/skillopt/harness.py +0 -0
  319. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/skillopt/tasks.json +0 -0
  320. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/sonar-local-scan.sh +0 -0
  321. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  322. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  323. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  324. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  325. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  326. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  327. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  328. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  329. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_incident_live.py +0 -0
  330. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  331. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  332. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  333. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  334. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  335. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  336. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  337. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  338. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  339. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  340. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  341. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  342. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  343. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_patch_entity.py +0 -0
  344. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/dev/spike_patchright.py +0 -0
  345. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/diag/README.md +0 -0
  346. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/diag/capture_flow_traffic.py +0 -0
  347. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/diag/memory_profile.py +0 -0
  348. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/diag/recaptcha_mint.py +0 -0
  349. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  350. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  351. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  352. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/smoke_image.py +0 -0
  353. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/smoke_video_editor.py +0 -0
  354. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/smoke_worker_style.py +0 -0
  355. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/spike_waf_camoufox.py +0 -0
  356. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/scripts/verify_chrome_auth_viability.py +0 -0
  357. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/README.md +0 -0
  358. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/changelog/SKILL.md +0 -0
  359. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/check/SKILL.md +0 -0
  360. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/doc-review/SKILL.md +0 -0
  361. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/issue-assessment/SKILL.md +0 -0
  362. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/issue-resolve/SKILL.md +0 -0
  363. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/known-issues/SKILL.md +0 -0
  364. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/live-verify/SKILL.md +0 -0
  365. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/llm-council/SKILL.md +0 -0
  366. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/plan/SKILL.md +0 -0
  367. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/pr-council-review/SKILL.md +0 -0
  368. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/predict/SKILL.md +0 -0
  369. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/release/SKILL.md +0 -0
  370. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/scenario/SKILL.md +0 -0
  371. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/sonar/SKILL.md +0 -0
  372. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/skills/status/SKILL.md +0 -0
  373. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/sonar-project.properties +0 -0
  374. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/__main__.py +0 -0
  375. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/__init__.py +0 -0
  376. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/_engine.py +0 -0
  377. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/_retry.py +0 -0
  378. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  379. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/character.py +0 -0
  380. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/dto.py +0 -0
  381. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/image.py +0 -0
  382. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/image_upscale.py +0 -0
  383. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/recaptcha.py +0 -0
  384. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/routes.py +0 -0
  385. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/scene.py +0 -0
  386. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  387. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/_common.py +0 -0
  388. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  389. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/base.py +0 -0
  390. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  391. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  392. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  393. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  394. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  395. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  396. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  397. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/api/video.py +0 -0
  398. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/base.py +0 -0
  399. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/cookies.py +0 -0
  400. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/factory.py +0 -0
  401. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  402. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  403. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/auth/strategies.py +0 -0
  404. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/chain.py +0 -0
  405. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/chain_manifest.py +0 -0
  406. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_character.py +0 -0
  407. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_data.py +0 -0
  408. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_image.py +0 -0
  409. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_instructions.py +0 -0
  410. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_models.py +0 -0
  411. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_movie.py +0 -0
  412. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_project.py +0 -0
  413. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_run.py +0 -0
  414. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_scene.py +0 -0
  415. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_tools.py +0 -0
  416. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/cli_video.py +0 -0
  417. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/composition.py +0 -0
  418. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/__init__.py +0 -0
  419. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/chain_repo.py +0 -0
  420. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  421. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  422. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  423. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  424. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  425. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  426. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  427. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  428. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  429. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  430. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/models.py +0 -0
  431. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/queries.py +0 -0
  432. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/recorder.py +0 -0
  433. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/redaction.py +0 -0
  434. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/repository.py +0 -0
  435. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/data/store.py +0 -0
  436. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/exceptions.py +0 -0
  437. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/image_batch.py +0 -0
  438. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/json_output.py +0 -0
  439. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/__init__.py +0 -0
  440. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/prompts.py +0 -0
  441. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/resources.py +0 -0
  442. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/server.py +0 -0
  443. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  444. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/media.py +0 -0
  445. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/movie_manifest.py +0 -0
  446. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/observability.py +0 -0
  447. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/paths.py +0 -0
  448. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/profile_store.py +0 -0
  449. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/redaction.py +0 -0
  450. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/services/__init__.py +0 -0
  451. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/services/character_create.py +0 -0
  452. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/services/mentions.py +0 -0
  453. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/storage.py +0 -0
  454. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/__init__.py +0 -0
  455. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/banned.py +0 -0
  456. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  457. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  458. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  459. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  460. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/expander.py +0 -0
  461. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/invocation.py +0 -0
  462. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/loader.py +0 -0
  463. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/registry.py +0 -0
  464. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/tools/spec.py +0 -0
  465. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/ui/app.py +0 -0
  466. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/ui/server.py +0 -0
  467. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/worker/codec.py +0 -0
  468. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/worker/daemon.py +0 -0
  469. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/src/gflow_cli/worker/queue.py +0 -0
  470. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tasks/lessons.md +0 -0
  471. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/test_assets/sample_batch.json +0 -0
  472. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/test_assets/sample_batch.tsv +0 -0
  473. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/test_assets/sample_batch_invalid.tsv +0 -0
  474. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/__init__.py +0 -0
  475. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/__init__.py +0 -0
  476. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/fixtures/character_gen_response.json +0 -0
  477. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  478. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  479. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  480. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_bearer_redaction.py +0 -0
  481. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_character.py +0 -0
  482. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client.py +0 -0
  483. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_character.py +0 -0
  484. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_delete_characters.py +0 -0
  485. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_errors.py +0 -0
  486. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_generate_character.py +0 -0
  487. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_image.py +0 -0
  488. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_patch_entity.py +0 -0
  489. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_scene.py +0 -0
  490. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_client_upscale.py +0 -0
  491. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_concurrency.py +0 -0
  492. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_dto.py +0 -0
  493. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_engine.py +0 -0
  494. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_image.py +0 -0
  495. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_image_dto.py +0 -0
  496. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_image_upscale.py +0 -0
  497. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  498. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_recaptcha.py +0 -0
  499. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_retry.py +0 -0
  500. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_routes.py +0 -0
  501. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_routes_character.py +0 -0
  502. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_routes_scene.py +0 -0
  503. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_sapisidhash_helper.py +0 -0
  504. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_scene_models.py +0 -0
  505. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_video.py +0 -0
  506. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/test_video_request.py +0 -0
  507. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/__init__.py +0 -0
  508. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/conftest.py +0 -0
  509. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/drivers/__init__.py +0 -0
  510. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  511. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/drivers/test_classic.py +0 -0
  512. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/drivers/test_factory.py +0 -0
  513. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  514. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_base.py +0 -0
  515. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_bearer.py +0 -0
  516. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_common.py +0 -0
  517. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  518. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_factory.py +0 -0
  519. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_fingerprint.py +0 -0
  520. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_mode_control.py +0 -0
  521. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_sapisidhash.py +0 -0
  522. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  523. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_transport_timeout.py +0 -0
  524. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_ui_automation.py +0 -0
  525. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  526. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  527. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  528. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  529. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/auth/strategies/test_factory.py +0 -0
  530. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/auth/strategies/test_strategies.py +0 -0
  531. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/auth/test_cookies.py +0 -0
  532. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/auth/test_real_chrome.py +0 -0
  533. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  534. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/__init__.py +0 -0
  535. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_auth_list.py +0 -0
  536. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_character.py +0 -0
  537. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_character_create.py +0 -0
  538. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_data.py +0 -0
  539. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_data_errors.py +0 -0
  540. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  541. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_image.py +0 -0
  542. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  543. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  544. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_image_upscale.py +0 -0
  545. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  546. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_instructions.py +0 -0
  547. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_models.py +0 -0
  548. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_movie.py +0 -0
  549. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_run.py +0 -0
  550. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_scene.py +0 -0
  551. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_tools.py +0 -0
  552. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_video.py +0 -0
  553. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_cli_video_chain.py +0 -0
  554. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_error_handling.py +0 -0
  555. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_failure_funnel.py +0 -0
  556. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_helpers.py +0 -0
  557. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_movie_manifest.py +0 -0
  558. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  559. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_predictable_output.py +0 -0
  560. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_settings_validation.py +0 -0
  561. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  562. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/composition/test_character.py +0 -0
  563. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/composition/test_compose_prompt.py +0 -0
  564. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/composition/test_handoff.py +0 -0
  565. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/composition/test_style_variants.py +0 -0
  566. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/composition/test_style_variants_e2e.py +0 -0
  567. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/__init__.py +0 -0
  568. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_chain_repo.py +0 -0
  569. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_failure_recording.py +0 -0
  570. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_find_incomplete_character.py +0 -0
  571. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_models.py +0 -0
  572. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_packaging.py +0 -0
  573. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_recorder.py +0 -0
  574. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_recorder_character.py +0 -0
  575. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_redaction.py +0 -0
  576. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_repository.py +0 -0
  577. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_scene_persistence.py +0 -0
  578. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_settings_and_errors.py +0 -0
  579. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/data/test_store_migrations.py +0 -0
  580. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/dev/test_recording_client.py +0 -0
  581. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/__init__.py +0 -0
  582. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/conftest.py +0 -0
  583. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  584. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  585. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  586. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  587. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  588. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_chain_e2e.py +0 -0
  589. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_character_create_e2e.py +0 -0
  590. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  591. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  592. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_daemon_e2e.py +0 -0
  593. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  594. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  595. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  596. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  597. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  598. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  599. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  600. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  601. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_json_output_e2e.py +0 -0
  602. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  603. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  604. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  605. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_scene_compose_live.py +0 -0
  606. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_tools_e2e.py +0 -0
  607. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_transports_e2e.py +0 -0
  608. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  609. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  610. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/__init__.py +0 -0
  611. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/asset_tagging.feature +0 -0
  612. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/auth_login.feature +0 -0
  613. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/character_create.feature +0 -0
  614. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/character_read.feature +0 -0
  615. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/conftest.py +0 -0
  616. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/duration_tab_drift.feature +0 -0
  617. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/entity_provenance.feature +0 -0
  618. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/image.feature +0 -0
  619. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/image_batch_references.feature +0 -0
  620. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/image_upscale.feature +0 -0
  621. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/incident_diagnostics.feature +0 -0
  622. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/instructions.feature +0 -0
  623. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/locale_picker_include.feature +0 -0
  624. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/mcp_tasks.feature +0 -0
  625. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/output_hardening.feature +0 -0
  626. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_asset_tagging_steps.py +0 -0
  627. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_auth_login_steps.py +0 -0
  628. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_character_create_steps.py +0 -0
  629. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_character_read_steps.py +0 -0
  630. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_image_steps.py +0 -0
  631. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_image_upscale_steps.py +0 -0
  632. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  633. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_instructions_steps.py +0 -0
  634. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  635. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  636. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_output_hardening_steps.py +0 -0
  637. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_step_collision_guard.py +0 -0
  638. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  639. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/test_video_chain_steps.py +0 -0
  640. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/video_agent_ui.feature +0 -0
  641. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/features/video_chain.feature +0 -0
  642. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/fixtures/__init__.py +0 -0
  643. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/fixtures/seeded_catalog.py +0 -0
  644. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/image_batch/__init__.py +0 -0
  645. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/image_batch/test_image_manifest.py +0 -0
  646. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/image_batch/test_jitter_config.py +0 -0
  647. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/image_batch/test_observability_events.py +0 -0
  648. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/__init__.py +0 -0
  649. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/conftest.py +0 -0
  650. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/constants.py +0 -0
  651. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/test_expander_gateway.py +0 -0
  652. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/test_storage_gcs.py +0 -0
  653. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/integration/test_storage_s3.py +0 -0
  654. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/__init__.py +0 -0
  655. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/conftest.py +0 -0
  656. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_cli_parity.py +0 -0
  657. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_server.py +0 -0
  658. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_stdio_transport.py +0 -0
  659. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_tasks_extension.py +0 -0
  660. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_tools_helpers.py +0 -0
  661. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_tools_instructions.py +0 -0
  662. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/mcp/test_tools_wired.py +0 -0
  663. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  664. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  665. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_check_materiality.py +0 -0
  666. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  667. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  668. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  669. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_codex_plugin.py +0 -0
  670. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_generate_website_docs.py +0 -0
  671. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  672. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/scripts/test_materiality_backtest.py +0 -0
  673. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/__init__.py +0 -0
  674. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_character_create_redaction.py +0 -0
  675. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_character_create_saga.py +0 -0
  676. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  677. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_mentions_observability.py +0 -0
  678. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_mentions_parse.py +0 -0
  679. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_mentions_resolve.py +0 -0
  680. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/services/test_resolve_and_apply.py +0 -0
  681. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/smoke/__init__.py +0 -0
  682. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  683. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/smoke/test_real_flow.py +0 -0
  684. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_auth.py +0 -0
  685. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_chain.py +0 -0
  686. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_chain_manifest.py +0 -0
  687. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_cli_data.py +0 -0
  688. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_cli_project.py +0 -0
  689. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_conftest_isolation.py +0 -0
  690. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_data_queries.py +0 -0
  691. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_bundle.py +0 -0
  692. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_events.py +0 -0
  693. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_journal.py +0 -0
  694. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_diagnostics_sanitize.py +0 -0
  695. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_documentation_gate.py +0 -0
  696. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_duration_tab_drift.py +0 -0
  697. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_entity_provenance.py +0 -0
  698. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_errors_classification.py +0 -0
  699. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_image_batch_references.py +0 -0
  700. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_json_output.py +0 -0
  701. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_marker_registry.py +0 -0
  702. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_media.py +0 -0
  703. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_observability.py +0 -0
  704. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_overlay_banner_dismissal.py +0 -0
  705. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_paths.py +0 -0
  706. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_playwright_pin.py +0 -0
  707. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_profile_lease_subprocess.py +0 -0
  708. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_profile_store.py +0 -0
  709. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_self_documenting_errors.py +0 -0
  710. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/test_smoke.py +0 -0
  711. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/__init__.py +0 -0
  712. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_banned.py +0 -0
  713. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_expander.py +0 -0
  714. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_invocation.py +0 -0
  715. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_loader.py +0 -0
  716. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_registry.py +0 -0
  717. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/tools/test_spec.py +0 -0
  718. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/ui/test_app.py +0 -0
  719. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_codec.py +0 -0
  720. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_daemon.py +0 -0
  721. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  722. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_queue.py +0 -0
  723. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_queue_multiprocess.py +0 -0
  724. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/tests/worker/test_queue_reconciliation.py +0 -0
  725. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/ARCHITECTURE.md +0 -0
  726. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/CHARACTER.md +0 -0
  727. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/DATA_LAYER.md +0 -0
  728. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/DEVELOPMENT.md +0 -0
  729. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/E2E_TESTING.md +0 -0
  730. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  731. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/INSTRUCTIONS.md +0 -0
  732. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/MOVIE.md +0 -0
  733. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  734. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/TOOLS.md +0 -0
  735. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/agents.md +0 -0
  736. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/docs/stylesheets/extra.css +0 -0
  737. {gflow_cli-0.54.0 → gflow_cli-0.56.0}/website/mkdocs.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.54.0",
3
+ "version": "0.56.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -133,6 +133,16 @@
133
133
  # changes; don't exceed 8 without measuring. Shipped in v0.4.0a2.
134
134
  # GFLOW_CLI_CONCURRENCY=1
135
135
 
136
+ # Seconds to wait for another gflow process to release the profile lease
137
+ # before giving up with ProfileLockedError (0 = fail fast, the default).
138
+ # Holders always run to completion; the waiter takes over on release (#478).
139
+ # GFLOW_CLI_LEASE_WAIT_SECONDS=0
140
+
141
+ # Once-a-day best-effort PyPI check printing a one-line notice when a newer
142
+ # gflow-cli exists (#479). Never blocks; skipped in CI and for
143
+ # editable/source installs. Set to 0 to disable.
144
+ # GFLOW_CLI_UPDATE_CHECK=1
145
+
136
146
  # Run Playwright in headless mode for non-`auth login` commands (true|false).
137
147
  # Default: false — headed real Chrome is the PRODUCTION default, not a
138
148
  # fallback. The ui_automation transport (the only production transport)
@@ -8,15 +8,15 @@ Supported tools that auto-discover this file: Cursor, Codex, Aider, Antigravity
8
8
 
9
9
  - Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com`.
10
10
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
11
- - 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`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `composition.py`, `config.py`, `errors.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
11
+ - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `composition.py`, `config.py`, `errors.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
12
12
  - Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain — 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 models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
13
- - Requires a Google AI Ultra or Pro subscription with Flow access. All generations bill against the user's own Google account.
13
+ - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
14
14
 
15
15
  ## Headed-browser dependency (architectural reality)
16
16
 
17
17
  gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects Playwright's bundled Chromium and most headless approaches. This is the project's defining trade-off:
18
18
 
19
- - ✅ Works end-to-end against live Pro/Ultra accounts.
19
+ - ✅ Works end-to-end against live Google accounts.
20
20
  - ❌ Requires a saved Chrome profile, a display server for one-time login, and ~150 MB for Chromium.
21
21
  - ❌ Cannot run on serverless / headless CI workers without prerecorded profile transplant.
22
22
  - ❌ Per-account horizontal concurrency is capped by what one warm Page pool can drive.
@@ -58,7 +58,7 @@ Or invoke the wrapper: `/gflow:check`.
58
58
 
59
59
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
60
60
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
61
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–30, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping.
61
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–31, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping.
62
62
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
63
63
  - **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
64
64
  - **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
@@ -7,6 +7,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.56.0] — 2026-08-13
11
+
12
+ ### Added
13
+
14
+ - **Once-a-day PyPI update notice (#479).** gflow now prints a one-line stderr notice when a newer version is on PyPI: cache-served (zero added latency — a stale cache refreshes on a background daemon thread for the next run), capped at one poll per day even when the poll fails, and never blocks or fails a command. Skipped in CI (`CI` env var), for editable/local-source installs (PEP 610 detection), and when `GFLOW_CLI_UPDATE_CHECK=0`.
15
+
16
+ - **Opt-in bounded wait for profile-lease contention (#478).** `GFLOW_CLI_LEASE_WAIT_SECONDS=N` makes a command that hits same-profile contention poll the kernel lock (0.5 s cadence, sync and async call sites alike) and take over as soon as the current holder — a CLI command or a `gflow serve` daemon queue task, both of which release at their natural end — finishes; on timeout it raises the same `ProfileLockedError` (exit 11). Default `0` keeps the historical fail-fast. Triage note: the issue's fuller cooperative-handoff protocol (release-request channel, minimum-hold window) was validated against the actual architecture and dropped — the daemon acquires the lease per task, so every holder's safe release point already coincides with lease release; holders are never asked to release early, which satisfies the no-release-mid-call requirement by construction. Same-process contention always fails fast (waiting on yourself deadlocks).
17
+
18
+ - **Chromium downgrade guard for persisted profiles (#477).** Opening a profile with an older Chromium major version than last wrote it triggers Chromium's downgrade cleanup, which can shred the newer session store and surface as a mystery post-upgrade logout. Every bundled-Chromium open of a persisted profile (generation client, UI-automation transport, the experimental transports, headless verification probe) now compares the profile's `Last Version` against the active engine's bundled Chromium (`playwright`, or `patchright` when selected) and refuses on a major-version downgrade (`ProfileEngineDowngradeError`, exit 11; the fail-closed verification probe reports it as a verification failure) with an error naming both versions and the remedy. Best-effort: `chrome`-strategy profiles and unknown/unparseable versions skip the check; same-major build rollbacks are allowed; `gflow auth login` stays unguarded as the recovery path.
19
+
20
+ ### Fixed
21
+
22
+ - **Mode-switch drift errors now name the right evidence (#493).** An external
23
+ report showed a third, unrecognized Flow editor layout (composer frame slots +
24
+ Agent toggle, no classic `crop_*` settings button) falling through to
25
+ `UiSelectorDriftError` (exit 23). The fall-through detail now states that no
26
+ known Flow cohort matched — i.e. the editor may be a new layout this version
27
+ does not recognize — and the class remediation no longer asks for a "debug
28
+ screenshot from this message" that the mode-switch probe never writes: it
29
+ points at the artifacts that actually exist (the PII-safe
30
+ `diag_mode_switch_miss.json` DOM signature and/or the referenced screenshot,
31
+ plus the incident bundle's `report.md`). Recognizing the new variant itself is
32
+ tracked in #493 and needs an affected account's diagnostics JSON. A post-merge
33
+ `/code-review` pass extended the same correction to the neighboring surfaces it
34
+ had missed: `FlowAgentUiError`'s privacy caveat now also covers the standalone
35
+ `debug_forced_agent_ui.png` its raise site writes, and the KNOWN_ISSUES
36
+ fallback points at the incident bundle's `ui.json` (which carries the DOM
37
+ signature) instead of `report.md` (which does not).
38
+
39
+ ## [0.55.0] — 2026-08-13
40
+
41
+ ### Added
42
+
43
+ - **`gflow mcp setup` is implemented (#475).** The long-stubbed command now writes the gflow MCP server entry into the target client's config: `--target claude-desktop` (default), `cursor`, or `vscode` (VS Code's `servers` + `"type": "stdio"` schema). Non-destructive by construction: existing config content is merged, a pre-existing file is backed up as `<name>.gflow-backup`, a manual `gflow-cli` entry is converged in place instead of duplicated, and a corrupt config fails loud (exit 11) without ever being touched. Also fixed the bogus `%APPDATA%\Castano\Claude` path in docs/MCP.md.
44
+ - **Incident bundles now include a pre-filled bug-report template (#476).** On every captured incident, the recorder stages `report.md` alongside the existing artifacts: version/platform, error class + exit code + retryability, phase/route, and pointers to the captured evidence — built exclusively from the allowlisted manifest fields (never raw exception text). The CLI error message now prints the report path next to the bundle path, and retention treats `report.md` as recorder-owned. Downgrade caveat: gflow <= 0.54.x does not recognize `report.md`, so its retention classifies new bundles as unknown and stops pruning them — delete `<GFLOW_CLI_HOME>/incidents` manually if you downgrade. The report is meant to be copied out of the bundle before editing (the template says so), and the e2e privacy scanner now leak-scans `*.md` alongside the JSON artifacts.
45
+
46
+ ### Changed
47
+
48
+ - **`gflow auth status` now proves the Flow session and exits 0/1 (#471).** The command previously only checked that the profile directory and cookies file exist — it could report OK on a dead session. It now runs the fast `verify_flow_profile` probe (cookie snapshot + Flow session endpoint; no browser, no credits) and exits 0 only on a verified session, printing the verified account email; any other outcome exits 1 with a `gflow auth login` remediation hint. Fail-closed: an unreachable endpoint is a failure, never an OK.
49
+
50
+ ### Fixed
51
+
52
+ - **Removed the false "requires a Google AI Ultra or Pro subscription" claim across all docs.** Any Google account with Flow access can use gflow-cli — a paid plan only affects credit allowances and tier-gated features (e.g. 4K upscale stays Ultra-only). Swept README, AGENTS.md, DISCLAIMER.md, USER_GUIDE, CONFIGURATION, AUTHENTICATION, DEBUGGING, the medium tutorial, and the gflow-cli skill; factual tier-gating notes are unchanged.
53
+
54
+ ### Security
55
+
56
+ - **MCP tools no longer leak raw exception text to clients (#473).** Every registered MCP tool now routes through one error funnel: `GFlowError`s keep their structured RFC-9457 problem-details envelope (with the shared `retryable` flag), while unexpected exceptions return a masked envelope carrying only the exception class name — messages can embed filesystem paths, profile names, or token material, so the full text goes exclusively to the server-side structured log (`mcp.tool.unexpected_error`). Previously only 3 of 11 tools had any funnel, and those leaked `str(exc)` as the `detail` field; the rest leaked through the framework's default error path. Guarded by a registry-introspection test that fails if any future tool bypasses the funnel.
57
+
58
+ - **Windows profile dirs are now really restricted to the current user (#472).** POSIX `chmod 0700`/`0600` is a no-op on Windows, so a profile created under a custom `GFLOW_CLI_HOME` on a shared/world-readable volume inherited that visibility — with the live Google session cookies inside. `gflow auth login` now applies an explicit `icacls` DACL before the browser runs: inheritance stripped, a single owner-only ACE (by SID, locale-safe), children reset to inherit it. Two-step sequence verified empirically (the naive `/t` grant leaves files without effective access). Existing profiles created before this release are swept on their next use: the client's browser-launch path runs a marker-gated hardening pass once per profile. Traversal profile names are rejected before any directory is created or re-ACLed. Best-effort — an ACL failure is logged (with icacls exit code and stderr) and never blocks login; no-op off Windows.
59
+ - **Secret settings can no longer leak through a `Settings` dump (#474).** `llm_api_key` (`GFLOW_CLI_LLM_API_KEY`) and `daemon_token` (`GFLOW_CLI_DAEMON_TOKEN`/`GFLOW_DAEMON_TOKEN`) are now stored as Pydantic `SecretStr`, so `repr()`, `str()`, and `model_dump_json()` of the settings object mask them by construction — defense-in-depth on top of the existing logging-boundary redaction. Values are unwrapped only at the single point of use (the prompt-tools LLM client).
60
+
10
61
  ## [0.54.0] — 2026-08-12
11
62
 
12
63
  ### Changed
@@ -2774,7 +2825,9 @@ shell-script template that branches on these codes.
2774
2825
 
2775
2826
  First skeleton. Not functional end-to-end yet.
2776
2827
 
2777
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.54.0...HEAD
2828
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...HEAD
2829
+ [0.56.0]: https://github.com/ffroliva/gflow-cli/compare/v0.55.0...v0.56.0
2830
+ [0.55.0]: https://github.com/ffroliva/gflow-cli/compare/v0.54.0...v0.55.0
2778
2831
  [0.54.0]: https://github.com/ffroliva/gflow-cli/compare/v0.53.1...v0.54.0
2779
2832
  [0.53.1]: https://github.com/ffroliva/gflow-cli/compare/v0.53.0...v0.53.1
2780
2833
  [0.53.0]: https://github.com/ffroliva/gflow-cli/compare/v0.52.0...v0.53.0
@@ -7,7 +7,9 @@
7
7
  | `GFLOW_CLI_HOME` | Platform data dir | Root directory for profiles and config. |
8
8
  | `GFLOW_CLI_OUTPUT_DIR` | `~/Downloads/gflow-cli` | Where generated images and videos are saved. |
9
9
  | `CHROME_BINARY` | (autodetect) | Override Chrome binary path. Falls back to platform-standard locations. |
10
- | `GFLOW_CLI_CONCURRENCY` | `4` | Maximum parallel API requests per batch. |
10
+ | `GFLOW_CLI_CONCURRENCY` | `1` | Page-pool size per batch (raising above 1 currently has no effect — see [docs/CONFIGURATION.md](docs/CONFIGURATION.md)). |
11
+ | `GFLOW_CLI_UPDATE_CHECK` | `1` | Once-a-day stderr notice when a newer gflow-cli is on PyPI; `0` disables (v0.56.0). |
12
+ | `GFLOW_CLI_LEASE_WAIT_SECONDS` | `0` | Bounded wait on same-profile lease contention instead of fail-fast (v0.56.0). |
11
13
  | `GFLOW_CLI_LLM_BASE_URL` | Google compat endpoint | OpenAI-compatible endpoint for the prompt tools (`--tool`). The on/off switch. |
12
14
  | `GFLOW_CLI_LLM_API_KEY` | _(unset)_ | Credential for that endpoint. Optional — omit for a keyless local gateway. [Google key](https://aistudio.google.com/apikey). |
13
15
  | `GFLOW_CLI_LLM_MODEL` | _(unset)_ | Model, and therefore the provider selector. Unset = the gateway chooses. |
@@ -19,7 +19,7 @@ If you need a stable, supported, contractual API, use the [official Google Gen A
19
19
 
20
20
  To use `gflow-cli` you must:
21
21
 
22
- 1. **Own a valid Google account** with active access to [Google Flow](https://labs.google/fx/tools/flow) — typically an [AI Ultra or AI Pro](https://gemini.google/subscriptions/) subscription as of late 2025.
22
+ 1. **Own a valid Google account** with active access to [Google Flow](https://labs.google/fx/tools/flow) — any Google account works; a paid plan ([AI Pro or AI Ultra](https://gemini.google/subscriptions/)) only affects credit allowances and tier-gated features.
23
23
  2. **Comply with Google's terms of service** for that account, including:
24
24
  - [Google Terms of Service](https://policies.google.com/terms)
25
25
  - [Generative AI Additional Terms](https://policies.google.com/terms/generative-ai)
@@ -36,10 +36,10 @@ The maintainer asks that you do **not** use `gflow-cli` to:
36
36
 
37
37
  - Generate content that violates the [Generative AI Prohibited Use Policy](https://policies.google.com/terms/generative-ai/use-policy) (CSAM, harassment, IP infringement, etc.).
38
38
  - Circumvent Google's billing, quota, or rate limits via account-rotation farms.
39
- - Automate Flow access for users who do not have their own Ultra/Pro entitlement.
39
+ - Automate Flow access for users who do not have their own Flow access entitlement.
40
40
  - Re-sell access to Veo via this tool as a "wrapped" commercial service.
41
41
 
42
- These uses can get **your** Google account banned, can put the maintainer in a difficult position with Google, and are antithetical to why this project exists (which is to let legitimate Ultra/Pro subscribers use credits they already paid for, more efficiently).
42
+ These uses can get **your** Google account banned, can put the maintainer in a difficult position with Google, and are antithetical to why this project exists (which is to let legitimate Flow user subscribers use credits they already paid for, more efficiently).
43
43
 
44
44
  ## Takedown policy
45
45
 
@@ -181,6 +181,32 @@ accepted. Two corrections fixed it (verified end-to-end on macOS Apple Silicon):
181
181
 
182
182
  Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
183
183
 
184
+ ### New Flow editor variant (composer frame slots + Agent toggle) is not recognized
185
+
186
+ - **Status:** **Open** — awaiting a DOM signature from an affected account;
187
+ tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
188
+ - **Severity:** High · **Affects:** `gflow image` / `gflow video` generation on
189
+ accounts that received the new editor, any locale
190
+
191
+ A third Flow editor layout was reported on 2026-08-13 (macOS, v0.55.0; also
192
+ v0.53.1): frame-slot buttons ("Initial"/"Final") sit directly on the composer
193
+ next to an "Agent" pill, and there is **no** classic `crop_*` aspect/settings
194
+ button for gflow to drive. The layout matches **none** of the known cohort
195
+ indicators (agentic chat composer, full-page media library), so the mode-switch
196
+ step falls through to `UiSelectorDriftError` (**exit 23**) instead of the
197
+ retryable exit-25 cohort classification. The selector cascade itself is
198
+ locale-invariant — the reporter's Portuguese UI is unrelated.
199
+
200
+ The error detail now names this hypothesis and the run writes a PII-safe DOM
201
+ signature to `diag_mode_switch_miss.json` when it can be captured (structural
202
+ allowlist: ligature names, tag counts — no cookies, tokens, prompts, or page
203
+ text; if the file is absent, attach the incident bundle instead — its
204
+ `ui.json` carries the same DOM signature). **If you hit this, attach that JSON file to
205
+ [#493](https://github.com/ffroliva/gflow-cli/issues/493)** — recognizing the
206
+ variant (and restoring a clean retryable classification, or full support) needs
207
+ exactly that DOM signature. Re-running later may land the classic editor if
208
+ the rollout is still an A/B arm.
209
+
184
210
  ### Flow's new full-page media-library UI breaks entity attach (A/B rollout)
185
211
 
186
212
  - **Status:** **Open** — Flow-side staged rollout; tracked in
@@ -203,10 +229,10 @@ classic `crop_*` aspect/mode control, so `gflow image`/`gflow video` can't drive
203
229
  generation. Rather than the old opaque `UiSelectorDriftError` "file a bug", the
204
230
  mode-switch raise site now runs a runtime DOM scan and raises a clear, **retryable**
205
231
  `FlowAgentUiError` (**exit 25**, "this cohort flaps; retry shortly"), and dumps a
206
- DOM-signature diagnostics artifact (`diag_mode_switch_miss.json` + a full-page
207
- screenshot) for reporting. The cohort is server-assigned per page load and flaps
208
- within ~12h, so a re-run often lands the classic UI. Driving the new UI directly
209
- is still out of scope.
232
+ DOM-signature diagnostics artifact (`diag_mode_switch_miss.json`; the incident
233
+ bundle carries a screenshot under `sensitive/`) for reporting. The cohort is
234
+ server-assigned per page load and flaps within ~12h, so a re-run often lands
235
+ the classic UI. Driving the new UI directly is still out of scope.
210
236
 
211
237
  **How to tell which UI your account has:** in the Flow web editor, click
212
238
  **Add Media** — a small dialog means the old (working) UI; a navigation to a
@@ -846,7 +872,7 @@ key — surfaces as a `RuntimeError` that `auth/cookies.py` normalizes to
846
872
 
847
873
  - **Status:** Mitigated (crash → typed fail-fast rejection) · **Severity:** Low · **Affects:** all versions
848
874
 
849
- 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** — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never waits and never silently corrupts the profile.
875
+ 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).
850
876
 
851
877
  **Workaround:** use different profiles for parallel work — different profiles acquire independent leases and run fully concurrently.
852
878
 
@@ -858,7 +884,7 @@ gflow image batch ./batch-a.tsv --profile work
858
884
  gflow image batch ./batch-b.tsv --profile personal
859
885
  ```
860
886
 
861
- **Roadmap:** Phase 4 (v0.4.0a2) added a per-worker Page pool on one shared BrowserContext (`GFLOW_CLI_CONCURRENCY=N`), intended to let one `gflow-cli` process fan out multiple in-flight generations, but no current CLI command drives more than one generation at a time through it — the only feature that did (a manifest-driven video batch runner) never worked and was removed. Cross-process same-profile serialization remains a hard constraint (Chromium can only own one persistent context per `user-data-dir`) — but it is now a clean, typed, fail-fast rejection instead of an unstructured crash. Multiple shells against the same profile remains a "use different profiles" workaround; there is no queueing/waiting mode.
887
+ **Roadmap:** Phase 4 (v0.4.0a2) added a per-worker Page pool on one shared BrowserContext (`GFLOW_CLI_CONCURRENCY=N`), intended to let one `gflow-cli` process fan out multiple in-flight generations, but no current CLI command drives more than one generation at a time through it — the only feature that did (a manifest-driven video batch runner) never worked and was removed. Cross-process same-profile serialization remains a hard constraint (Chromium can only own one persistent context per `user-data-dir`) — but it is now a clean, typed, fail-fast rejection instead of an unstructured crash. Multiple shells against the same profile can either use different profiles (fully parallel) or opt into the bounded wait via `GFLOW_CLI_LEASE_WAIT_SECONDS` (serialized, waiter takes over when the holder finishes).
862
888
 
863
889
  ---
864
890
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.54.0
3
+ Version: 0.56.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -84,7 +84,7 @@ Description-Content-Type: text/markdown
84
84
  [![Tests: TDD](https://img.shields.io/badge/tests-TDD-brightgreen.svg)](CONTRIBUTING.md)
85
85
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
86
86
 
87
- > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It requires a Google AI **Ultra or Pro** subscription with Flow access, and every generation bills your account. Read the full [DISCLAIMER](DISCLAIMER.md).
87
+ > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
88
88
  >
89
89
  > 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
90
90
  >
@@ -92,7 +92,7 @@ Description-Content-Type: text/markdown
92
92
 
93
93
  ## Why gflow-cli?
94
94
 
95
- You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch work. gflow-cli gives you:
95
+ You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
96
96
 
97
97
  - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
98
98
  - **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
@@ -100,7 +100,7 @@ You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch
100
100
  - **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
101
101
  - **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs.
102
102
 
103
- Same Veo and Imagen models, same quality, same Ultra/Pro billing, now programmatic.
103
+ Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
104
104
 
105
105
  ## 60-second quick start
106
106
 
@@ -144,7 +144,7 @@ One command in, real Flow output back. Left: `gflow image t2i` generating a phot
144
144
 
145
145
  ![gflow image t2i runs a single 9:16 prompt, streams structlog output, and writes a PNG to disk](https://raw.githubusercontent.com/ffroliva/gflow-cli/main/docs/assets/example-run.gif)
146
146
 
147
- A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Pro/Ultra profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
147
+ A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Flow profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
148
148
 
149
149
  Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1) (Windows, OBS, ffmpeg, gifski). More formats, including the side-by-side split-screen: **[docs/DEMOS.md](docs/DEMOS.md)**.
150
150
 
@@ -202,7 +202,7 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
202
202
 
203
203
  ## License & legal
204
204
 
205
- [MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms, Ultra/Pro subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
205
+ [MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms and any plan-specific subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
206
206
 
207
207
  ## Acknowledgements
208
208
 
@@ -13,7 +13,7 @@
13
13
  [![Tests: TDD](https://img.shields.io/badge/tests-TDD-brightgreen.svg)](CONTRIBUTING.md)
14
14
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
15
15
 
16
- > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It requires a Google AI **Ultra or Pro** subscription with Flow access, and every generation bills your account. Read the full [DISCLAIMER](DISCLAIMER.md).
16
+ > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
17
17
  >
18
18
  > 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
19
19
  >
@@ -21,7 +21,7 @@
21
21
 
22
22
  ## Why gflow-cli?
23
23
 
24
- You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch work. gflow-cli gives you:
24
+ You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
25
25
 
26
26
  - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
27
27
  - **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
@@ -29,7 +29,7 @@ You pay for Google AI Ultra or Pro, you have Veo credits, and you run real batch
29
29
  - **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
30
30
  - **Terminal-native.** After one `gflow auth login`, you stay in the shell. No clicking through dialogs.
31
31
 
32
- Same Veo and Imagen models, same quality, same Ultra/Pro billing, now programmatic.
32
+ Same Veo and Imagen models, same quality, same billing against your own Google account, now programmatic.
33
33
 
34
34
  ## 60-second quick start
35
35
 
@@ -73,7 +73,7 @@ One command in, real Flow output back. Left: `gflow image t2i` generating a phot
73
73
 
74
74
  ![gflow image t2i runs a single 9:16 prompt, streams structlog output, and writes a PNG to disk](https://raw.githubusercontent.com/ffroliva/gflow-cli/main/docs/assets/example-run.gif)
75
75
 
76
- A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Pro/Ultra profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
76
+ A single `gflow image t2i "..." --aspect 9:16 --model nano2` call against a logged-in Flow profile. The terminal streams the run's `structlog` JSON, then lists the written PNG. Chromium drives the Flow editor silently in the background.
77
77
 
78
78
  Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1) (Windows, OBS, ffmpeg, gifski). More formats, including the side-by-side split-screen: **[docs/DEMOS.md](docs/DEMOS.md)**.
79
79
 
@@ -131,7 +131,7 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
131
131
 
132
132
  ## License & legal
133
133
 
134
- [MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms, Ultra/Pro subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
134
+ [MIT License](LICENSE) © 2026 Flavio Oliva (`ffroliva`). The MIT license covers `gflow-cli`'s code only. It grants no rights to Flow, Veo model output, or any Google service. Google's own terms (Labs Additional Terms and any plan-specific subscription terms) govern your generations. See the [DISCLAIMER](DISCLAIMER.md).
135
135
 
136
136
  ## Acknowledgements
137
137
 
@@ -10,7 +10,7 @@ This page documents the full lifecycle: capture, storage, reuse, refresh, multi-
10
10
  |---|---|
11
11
  | Re-implement Google's OAuth dance | Google's web SSO involves anti-automation challenges (CAPTCHA, device verification). A community SDK can't reliably ship that. |
12
12
  | Extract the bearer token from cookies and use `httpx` directly | Tokens are short-lived and tied to a refresh flow we don't have. Re-implementing the refresh is brittle. |
13
- | Use a service-account JSON | Flow doesn't currently support service accounts on the AI Ultra/Pro consumer tier. |
13
+ | Use a service-account JSON | Flow doesn't currently support service accounts on the consumer tier. |
14
14
  | Pure stored cookie jar (no Playwright) | Some Flow endpoints set additional `x-` headers based on Chromium fingerprint; matching them by hand is fragile. |
15
15
  | **Playwright persistent context (chosen)** | Captures session once, reuses indefinitely, refreshes automatically on idle, auto-attaches every header Flow expects. One-time cost: a ~150 MB Chromium download. |
16
16
 
@@ -197,18 +197,20 @@ accidental interference or data corruption.
197
197
 
198
198
  ### `gflow auth status`
199
199
 
200
- Reports whether a profile exists, where it lives, and whether the cookies file is present.
200
+ Reports where the profile lives, then **proves the session**: it probes the Flow session endpoint with the profile's cookies (no browser, no credits) and exits `0` only when the session is verified — `1` otherwise. Handy for scripts: `gflow auth status && gflow run ...`.
201
201
 
202
202
  ```bash
203
203
  $ gflow auth status
204
- Profile 'default' is configured.
205
204
  profile: /home/you/.local/share/gflow-cli/profile_default
206
205
  exists: True
207
206
  cookies_present: True
208
207
  cookies_path: /home/you/.local/share/gflow-cli/profile_default/Default/Cookies
208
+ browser_engine: playwright
209
+ Probing Flow session (may take up to ~45s on a slow network)...
210
+ Flow session verified as you@example.com.
209
211
  ```
210
212
 
211
- > Note: `cookies_present: True` only confirms the file exists — not that the session is still valid with Google. The first real API call (e.g. `gflow image t2i`) is the actual probe. If Google has invalidated the session, the call will fail with an authentication error and you'll be prompted to re-run `auth login`.
213
+ > Note: `cookies_present: True` only confirms the file exists. The final verdict line is the live probe result: a dead session prints a `gflow auth login` remediation hint and exits 1; a probe that cannot reach the endpoint (offline, 5xx) also exits 1 but suggests checking connectivity instead of re-logging in.
212
214
 
213
215
  ### `gflow auth list`
214
216
 
@@ -367,6 +369,38 @@ Run: gflow auth login --profile default
367
369
 
368
370
  Re-running `auth login` refreshes the cookies in place — no other state is lost.
369
371
 
372
+ ## Chromium downgrade guard
373
+
374
+ Chrome profiles are not backward-compatible: opening a profile with an **older**
375
+ Chromium major version than the one that last wrote it triggers Chromium's
376
+ downgrade cleanup, which can leave the newer store — session cookies included —
377
+ unreadable. That surfaces later as a mystery logout after a gflow/Playwright
378
+ downgrade (or a Chrome-strategy profile silently falling back to an older
379
+ bundled Chromium).
380
+
381
+ Every bundled-Chromium open of a persisted profile (the generation client, the
382
+ UI-automation transport, the experimental transports, and the headless
383
+ verification probe) first compares the profile's `Last Version` file against
384
+ the active engine's bundled Chromium (`playwright`, or `patchright` when
385
+ selected) and **refuses to open on a major-version downgrade** (exit 11) with
386
+ an error naming both versions:
387
+
388
+ ```text
389
+ ERROR: Profile at ~/.gflow/profile_default was last written by Chromium 150.x,
390
+ but the installed Playwright bundled Chromium is older (149.x). ...
391
+ ```
392
+
393
+ Remedies: upgrade so the bundled Chromium is at least the profile's version
394
+ (`uv tool upgrade gflow-cli`, then `playwright install chromium`), or re-create
395
+ the profile with `gflow auth login` — login is deliberately *not* guarded, it
396
+ re-mints the session and rewrites the profile, making it the recovery path.
397
+ The guard is best-effort: profiles under the `chrome` strategy (real Google
398
+ Chrome opens them) and any unreadable/unknown version skip the check. One
399
+ surface nuance: the headless verification probe is fail-closed by contract, so
400
+ a refusal there is reported as a verification failure rather than exit 11 —
401
+ the version details still land in the structured log
402
+ (`browser_manager.profile_engine_downgrade`).
403
+
370
404
  ## Session verification (cookie-store fast path)
371
405
 
372
406
  Since v0.17.0, profile verification (run by `gflow auth login --browser chrome` after
@@ -394,7 +428,7 @@ extraction lives in `gflow_cli.auth.cookies`.
394
428
  |---|---|
395
429
  | Session file leaked to a public repo | `.gitignore` excludes profile dirs at every layer. Recommended belt-and-braces: keep the gflow-cli home outside the repo (default location via `platformdirs` already does this) and run `git status` before any commit. Automatic in-repo detection is on the backlog (not yet scheduled). |
396
430
  | Multi-user shared machine | Profiles live under each user's home dir; OS file permissions (`0700` on POSIX, ACL on Windows) prevent cross-user reads by default. |
397
- | `gflow-cli` itself becomes malicious | The package is open-source under MIT; pin a version (`uv tool install gflow-cli==0.5.0a1`) and review release diffs before upgrading. |
431
+ | `gflow-cli` itself becomes malicious | The package is open-source under MIT; pin a version (`uv tool install gflow-cli==0.55.0`) and review release diffs before upgrading. |
398
432
  | Stolen laptop | Anyone with disk access has your session. Use full-disk encryption (FileVault, BitLocker, LUKS). Consider a dedicated `--profile sandbox` for short-lived experiments. |
399
433
  | Sharing a profile between machines | Technically works (copy the profile dir), but Google may flag the device-fingerprint mismatch as suspicious. Re-login on the new machine instead. |
400
434
 
@@ -109,7 +109,7 @@ Deep setup, verification, and security notes live in
109
109
  ### `GFLOW_CLI_PROVIDER`
110
110
 
111
111
  **What:** Backend to use for generations.
112
- **Values:** `flow` (default — reverse-engineered, requires Ultra/Pro) | `official` (planned v0.5+ — Phase 5 official Veo SDK swap, will require a Gemini API key).
112
+ **Values:** `flow` (default — reverse-engineered, works with any Google account that has Flow access) | `official` (planned v0.5+ — Phase 5 official Veo SDK swap, will require a Gemini API key).
113
113
  **Default:** `flow`
114
114
  **CLI override:** none yet — set the env var to switch backends once `official` is wired.
115
115
 
@@ -205,6 +205,12 @@ gflow tools run creative-director "cat in space" --json # check "was_expanded"
205
205
  no env var set. If a corporate proxy is configured, add your local gateway to `NO_PROXY`
206
206
  or its traffic will be routed through the proxy and fail non-obviously.
207
207
 
208
+ ### `GFLOW_CLI_DAEMON_TOKEN` (alias: `GFLOW_DAEMON_TOKEN`)
209
+
210
+ **What:** API token required before `gflow serve` will bind to a non-localhost address (`--host` other than `127.0.0.1`). Without it, non-local binds abort with exit 11.
211
+ **Default:** unset.
212
+ **Security:** stored as a Pydantic `SecretStr` (since v0.55.0), so a `repr()`/`str()`/`model_dump_json()` of the settings object masks it by construction — on top of the existing logging-boundary redaction. Treat it like any credential: set it via `.env`/environment, never commit it.
213
+
208
214
  ### `GFLOW_CLI_AUTH_LOGIN_TIMEOUT`
209
215
 
210
216
  **What:** Maximum time (seconds) that `gflow auth login` waits for the user to complete the Google sign-in flow in the browser.
@@ -254,6 +260,21 @@ GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
254
260
  **Recommended starting point:** `1` until a concurrent caller lands. Each additional Page would cost ~30–60 MiB of memory on Chromium headless; don't exceed `8` without measuring resident-set size. Cookies and storage state are shared at Context level, so every Page would inherit the signed-in profile for free.
255
261
  **Shipped in:** v0.4.0a2.
256
262
 
263
+ ### `GFLOW_CLI_UPDATE_CHECK`
264
+
265
+ **What:** Once-a-day best-effort PyPI check that prints a one-line stderr notice when a newer gflow-cli exists. The notice is always served from a local cache (`<GFLOW_CLI_HOME>/update_check.json`); a stale cache refreshes on a background daemon thread whose result feeds the *next* invocation — the check never blocks or fails a command, and a failed poll still counts toward the once-a-day cap.
266
+ **Values:** `1` (default) | `0` to disable
267
+ **Skipped automatically:** in CI (`CI` env var set) and for editable/local-source installs (PEP 610 `direct_url.json` detection) — "upgrade" advice is wrong there.
268
+ **Shipped in:** #479.
269
+
270
+ ### `GFLOW_CLI_LEASE_WAIT_SECONDS`
271
+
272
+ **What:** How long a command waits for another gflow process to release the profile lease before giving up with `ProfileLockedError` (exit 11). The default `0` keeps the historical fail-fast behavior. With a positive value, the waiter polls the kernel lock (0.5 s cadence) and simply takes over when the current holder — a CLI command or a `gflow serve` daemon task, both of which release at their natural end — finishes. Holders are never interrupted or asked to release early.
273
+ **Values:** `0`–`3600` seconds (fractions allowed)
274
+ **Default:** `0` (fail fast)
275
+ **Note:** Same-process contention always fails fast regardless of this setting — the holder is the same process, so waiting would deadlock. See [KNOWN_ISSUES § Same profile can't be used in parallel](../KNOWN_ISSUES.md#same-profile-cant-be-used-in-parallel).
276
+ **Shipped in:** #478.
277
+
257
278
  ### `GFLOW_CLI_DB_PATH`
258
279
 
259
280
  **What:** Override the path to the local SQLite operations database.
@@ -338,7 +359,7 @@ GFLOW_CLI_HISTORY_PROMPTS=redacted gflow image t2i "confidential brief"
338
359
  **Default:** `true`
339
360
  **When to disable:** shared machines where even structural failure metadata should not persist, or scripted runs that must write nothing outside the output dir.
340
361
 
341
- **Privacy:** the automatic JSON artifacts (`manifest.json`, `ui.json`, `network.json`, `browser.json`) are built from an explicit allowlist — no prompts, tokens, cookies, headers, request/response bodies, signed URLs, raw page titles, raw error/console text, or unknown hosts/routes ever enter them. The screenshot is inherently sensitive (it can show your account identity, prompts, and media) and therefore lives under the bundle's `sensitive/` subdirectory — **review it before sharing**. Nothing is ever uploaded; retention is bounded (at most 50 complete bundles / 250 MiB, pruned oldest-first at startup). Raw HAR capture stays separate and strictly opt-in via `GFLOW_CLI_HAR_PATH`.
362
+ **Privacy:** the automatic artifacts (`manifest.json`, `ui.json`, `network.json`, `browser.json`, and the pre-filled `report.md` bug-report template) are built from an explicit allowlist — no prompts, tokens, cookies, headers, request/response bodies, signed URLs, raw page titles, raw error/console text, or unknown hosts/routes ever enter them. The screenshot is inherently sensitive (it can show your account identity, prompts, and media) and therefore lives under the bundle's `sensitive/` subdirectory — **review it before sharing**. Nothing is ever uploaded; retention is bounded (at most 50 complete bundles / 250 MiB, pruned oldest-first at startup). Raw HAR capture stays separate and strictly opt-in via `GFLOW_CLI_HAR_PATH`.
342
363
 
343
364
  ### `GFLOW_CLI_HAR_PATH`
344
365
 
@@ -45,10 +45,11 @@ historical UI-flake noted in
45
45
  [`LIVE_VERIFICATION_v0.7.0.md`](LIVE_VERIFICATION_v0.7.0.md#open-follow-ups)
46
46
  (transient overlay swallowed the arrow-forward click).
47
47
 
48
- **Two extra debug-screenshot file names worth searching for in the out dir**
49
- when the mode switch itself fails: `debug_no_mode_trigger.png` (crop-icon
50
- dropdown trigger not found) and `debug_no_image_tab.png` (Image tab missing
51
- inside the open dropdown).
48
+ **Two extra artifact file names worth searching for in the out dir** when the
49
+ mode switch itself fails: `diag_mode_switch_miss.json` (crop-icon dropdown
50
+ trigger not found — a structural DOM signature; this probe writes no
51
+ screenshot) and `debug_no_image_tab.png` (Image tab missing inside the open
52
+ dropdown).
52
53
 
53
54
  Pipe `--verbose` output through `Select-String` (PowerShell) or `grep` to
54
55
  filter:
@@ -87,6 +88,9 @@ object) between the UTC timestamp and a collision-resistant random suffix:
87
88
  │ # category, canonical route, status, duration
88
89
  ├── browser.json # last ≤100 console warn/error + ≤50 page errors —
89
90
  │ # class/category + length only, never message text
91
+ ├── report.md # pre-filled Markdown bug report: version/platform,
92
+ │ # error class + exit code, artifact pointers — fill
93
+ │ # in "What I was doing" and attach when filing
90
94
  ├── sensitive/screenshot.png # UI-state failures only — REVIEW BEFORE SHARING
91
95
  └── .pending # present only while a capture is still staging
92
96
  ```
@@ -181,7 +185,7 @@ without manual copying. Caveats verified during the v0.7.0 work:
181
185
  ### 3. Firecrawl (`firecrawl-scrape` / `firecrawl-interact`)
182
186
  Best for unauthenticated docs (e.g., Material Symbols icon names, third-
183
187
  party API references). Not ideal for Flow itself — Flow requires a
184
- logged-in Pro/Ultra session that Firecrawl's hosted browser doesn't
188
+ logged-in Flow session that Firecrawl's hosted browser doesn't
185
189
  share with your local profile.
186
190
 
187
191
  ### 4. Playwright trace viewer