gflow-cli 0.56.0__tar.gz → 0.57.1__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 (762) hide show
  1. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.env.template +5 -0
  3. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/dependabot.yml +44 -0
  4. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/ci.yml +45 -17
  5. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/deps-watch.yml +5 -2
  6. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/external-pr-triage.yml +1 -1
  7. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/governance-advisory.yml +2 -2
  8. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/governance-benchmark.yml +2 -2
  9. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/labels.yml +1 -1
  10. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/main-base-guard.yml +1 -1
  11. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/pages.yml +12 -7
  12. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/workflows/release.yml +10 -6
  13. gflow_cli-0.57.1/.github/workflows/scorecard.yml +52 -0
  14. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.gitignore +4 -0
  15. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/CHANGELOG.md +155 -1
  16. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/KNOWN_ISSUES.md +73 -23
  17. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/PKG-INFO +2 -1
  18. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/README.md +1 -0
  19. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/AGENT_UI_E2E.md +1 -1
  20. {gflow_cli-0.56.0/website → gflow_cli-0.57.1}/docs/ARCHITECTURE.md +9 -4
  21. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/AUTHENTICATION.md +1 -1
  22. {gflow_cli-0.56.0/website → gflow_cli-0.57.1}/docs/CONFIGURATION.md +12 -0
  23. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/INDEX.md +3 -1
  24. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.56.0.md +23 -8
  25. gflow_cli-0.57.1/docs/LIVE_VERIFICATION_v0.57.0.md +202 -0
  26. gflow_cli-0.57.1/docs/LIVE_VERIFICATION_v0.57.1.md +143 -0
  27. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/MCP.md +38 -9
  28. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/PROJECT_STATUS.md +31 -1
  29. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/REFERENCE_STRATEGIES.md +8 -6
  30. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/SECURITY.md +25 -0
  31. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/USAGE.md +24 -8
  32. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +9 -0
  33. gflow_cli-0.57.1/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +99 -0
  34. gflow_cli-0.57.1/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +26 -0
  35. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +4 -2
  36. gflow_cli-0.57.1/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +136 -0
  37. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/llms.txt +1 -1
  38. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/pyproject.toml +1 -1
  39. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/autopilot/Dockerfile.triage +9 -3
  40. gflow_cli-0.57.1/scripts/autopilot/package-lock.json +140 -0
  41. gflow_cli-0.57.1/scripts/autopilot/package.json +8 -0
  42. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/check_doc_links.py +2 -0
  43. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/check_repo_hygiene.py +37 -0
  44. gflow_cli-0.57.1/scripts/ci/check_test_count.py +52 -0
  45. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/generate_website_docs.py +24 -1
  46. gflow_cli-0.57.1/scripts/dev/capture_frames_mode_trigger_ligature.py +220 -0
  47. gflow_cli-0.57.1/scripts/dev/capture_r2v_ingredient_lifecycle.py +263 -0
  48. gflow_cli-0.57.1/scripts/dev/capture_sidebar_state_dom.py +177 -0
  49. gflow_cli-0.57.1/scripts/dev/capture_video_model_capability_matrix.py +316 -0
  50. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/__init__.py +1 -1
  51. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/drivers/factory.py +5 -2
  52. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/mode_control.py +120 -1
  53. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/ui_automation.py +0 -78
  54. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/ui_automation_video.py +91 -18
  55. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/video.py +120 -22
  56. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli.py +31 -4
  57. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_movie.py +4 -4
  58. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_video.py +105 -13
  59. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/errors.py +34 -1
  60. gflow_cli-0.57.1/src/gflow_cli/mcp/resources.py +219 -0
  61. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/server.py +46 -0
  62. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/tools.py +163 -63
  63. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/worker/codec.py +4 -0
  64. gflow_cli-0.57.1/tests/api/test_video_request.py +135 -0
  65. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/drivers/test_ui_mode.py +43 -6
  66. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_mode_control.py +129 -1
  67. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_selector_symmetry.py +5 -4
  68. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_ui_automation.py +0 -73
  69. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_ui_automation_video.py +157 -0
  70. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_models.py +4 -1
  71. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_video.py +116 -0
  72. gflow_cli-0.57.1/tests/e2e/test_sidebar_recovery_e2e.py +167 -0
  73. gflow_cli-0.57.1/tests/mcp/test_auth_status_tool.py +83 -0
  74. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_cli_parity.py +8 -8
  75. gflow_cli-0.57.1/tests/mcp/test_http_transport.py +92 -0
  76. gflow_cli-0.57.1/tests/mcp/test_known_issues_resource.py +106 -0
  77. gflow_cli-0.57.1/tests/mcp/test_no_spend.py +84 -0
  78. gflow_cli-0.57.1/tests/mcp/test_rate_limit_envelope.py +76 -0
  79. gflow_cli-0.57.1/tests/mcp/test_resources.py +22 -0
  80. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_server.py +86 -12
  81. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_tools_wired.py +5 -2
  82. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_check_repo_hygiene.py +48 -0
  83. gflow_cli-0.57.1/tests/scripts/test_check_test_count.py +66 -0
  84. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_errors.py +23 -0
  85. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_json_output.py +5 -2
  86. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/uv.lock +4 -4
  87. {gflow_cli-0.56.0 → gflow_cli-0.57.1/website}/docs/ARCHITECTURE.md +9 -4
  88. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/AUTHENTICATION.md +1 -1
  89. {gflow_cli-0.56.0 → gflow_cli-0.57.1/website}/docs/CONFIGURATION.md +12 -0
  90. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/KNOWN_ISSUES.md +90 -40
  91. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/MCP.md +38 -9
  92. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/SECURITY.md +25 -0
  93. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/USAGE.md +24 -8
  94. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/index.md +2 -0
  95. gflow_cli-0.57.1/website/requirements.in +3 -0
  96. gflow_cli-0.57.1/website/requirements.txt +494 -0
  97. gflow_cli-0.56.0/scripts/dev/monitor_pr_38.py +0 -37
  98. gflow_cli-0.56.0/src/gflow_cli/mcp/resources.py +0 -97
  99. gflow_cli-0.56.0/tests/api/test_video_request.py +0 -61
  100. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.agents/plugins/marketplace.json +0 -0
  101. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/README.md +0 -0
  102. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/active.md +0 -0
  103. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/branch-review.md +0 -0
  104. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/changelog.md +0 -0
  105. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/check.md +0 -0
  106. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/doc-review.md +0 -0
  107. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/issue-assessment.md +0 -0
  108. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/issue-resolve.md +0 -0
  109. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/known-issues.md +0 -0
  110. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/live-verify.md +0 -0
  111. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/llm-council.md +0 -0
  112. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/next.md +0 -0
  113. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/plan.md +0 -0
  114. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/pr-council-review.md +0 -0
  115. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/predict.md +0 -0
  116. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/release.md +0 -0
  117. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/scenario.md +0 -0
  118. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/sonar.md +0 -0
  119. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.claude/commands/gflow/status.md +0 -0
  120. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.gitattributes +0 -0
  121. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/CODEOWNERS +0 -0
  122. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  123. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.github/copilot-instructions.md +0 -0
  124. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.gitleaks.toml +0 -0
  125. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.pre-commit-config.yaml +0 -0
  126. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/.secrets.baseline +0 -0
  127. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/AGENTS.md +0 -0
  128. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/CLAUDE.md +0 -0
  129. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/CONFIGURATION.md +0 -0
  130. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/CONTRIBUTING.md +0 -0
  131. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/DISCLAIMER.md +0 -0
  132. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/LICENSE +0 -0
  133. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/PLAN.md +0 -0
  134. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/RELEASE.md +0 -0
  135. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/ROADMAP.md +0 -0
  136. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/conftest.py +0 -0
  137. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  138. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docker-compose.yml +0 -0
  139. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/AGENT_GUIDE.md +0 -0
  140. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/AGENT_UI_RECON.md +0 -0
  141. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/ASSET_TAGGING_RECON.md +0 -0
  142. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/CHARACTER.md +0 -0
  143. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/CHARACTER_RECON.md +0 -0
  144. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/DATA_LAYER.md +0 -0
  145. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/DEBUGGING.md +0 -0
  146. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/DEMOS.md +0 -0
  147. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/DEVELOPMENT.md +0 -0
  148. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/E2E_TESTING.md +0 -0
  149. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/EXTERNAL_STORAGE.md +0 -0
  150. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/GITHUB.md +0 -0
  151. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  152. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  153. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/INSTRUCTIONS.md +0 -0
  154. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  155. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  156. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  157. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  158. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  159. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  160. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  161. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  162. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  163. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  164. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  165. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  166. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  167. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  168. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  169. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  170. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  171. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  172. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  173. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  174. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  175. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  176. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  177. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  178. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  179. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  180. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  181. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  182. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  183. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  184. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  185. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  186. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  187. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  188. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  189. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  190. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  191. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  192. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  193. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  194. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  195. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  196. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  197. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  198. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  199. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  200. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  201. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  202. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  203. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  204. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  205. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  206. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  207. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  208. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  209. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  210. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  211. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/MOVIE.md +0 -0
  212. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/PROMPT_EXPANSION.md +0 -0
  213. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/TOOLS.md +0 -0
  214. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/USER_GUIDE.md +0 -0
  215. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/assets/demo-split-pf.gif +0 -0
  216. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/assets/example-run.gif +0 -0
  217. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/assets/examples.webp +0 -0
  218. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/medium_tutorial.md +0 -0
  219. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/schemas/movie-handoff.schema.json +0 -0
  220. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/sonar-cleanup-tracker.md +0 -0
  221. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  222. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  223. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  224. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  225. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  226. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  227. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  228. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  229. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  230. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  231. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  232. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  233. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  234. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  235. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  236. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  237. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  238. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  239. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  240. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  241. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  242. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  243. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  244. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  245. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  246. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  247. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  248. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  249. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  250. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  251. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  252. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  253. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  254. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  255. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  256. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  257. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  258. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  259. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  260. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  261. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  262. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  263. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  264. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  265. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  266. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  267. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  268. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/eval/pr_triage_eval.py +0 -0
  269. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/eval/pr_triage_fixtures.json +0 -0
  270. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/README.md +0 -0
  271. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/batch_from_config.py +0 -0
  272. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/multi_prompt_t2i.py +0 -0
  273. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/sample_config.json +0 -0
  274. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/sample_prompts.txt +0 -0
  275. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/single_image_t2i.py +0 -0
  276. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/examples/workflow_chain.py +0 -0
  277. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/index.html +0 -0
  278. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/README.md +0 -0
  279. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/01_upload_image.json +0 -0
  280. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  281. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  282. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/04_archive_workflow.json +0 -0
  283. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/05_createProject.json +0 -0
  284. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/06_batchGenerateImages.json +0 -0
  285. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  286. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  287. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  288. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  289. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  290. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/12_create_scene.json +0 -0
  291. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
  292. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/14_get_scene_workflows.json +0 -0
  293. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
  294. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/autopilot/entrypoint.sh +0 -0
  295. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  296. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/autopilot/pr_triage_gate.py +0 -0
  297. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  298. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/check_materiality.py +0 -0
  299. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/check_release_artifacts.py +0 -0
  300. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/ci/check_website_docs_pii.py +0 -0
  301. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/debug_editor.py +0 -0
  302. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/debug_gen_settings.py +0 -0
  303. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/debug_settings.py +0 -0
  304. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/_recording_client.py +0 -0
  305. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/_spike_common.py +0 -0
  306. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/active_plan.py +0 -0
  307. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  308. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  309. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  310. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  311. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  312. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_image_add_media_dom.py +0 -0
  313. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/capture_locale_invariants.py +0 -0
  314. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
  315. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/character_create_spike.py +0 -0
  316. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/character_create_spike_v2.py +0 -0
  317. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/dump_character_selectors.js +0 -0
  318. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/incident_bundle_quality.py +0 -0
  319. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  320. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/make_project.py +0 -0
  321. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/materiality_backtest.py +0 -0
  322. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/patch_character.py +0 -0
  323. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/skillopt/README.md +0 -0
  324. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/skillopt/harness.py +0 -0
  325. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/skillopt/tasks.json +0 -0
  326. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/sonar-local-scan.sh +0 -0
  327. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  328. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_char_editor_dom.py +0 -0
  329. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_char_gen_capture.py +0 -0
  330. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_character_prompt_format.py +0 -0
  331. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
  332. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
  333. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  334. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  335. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_incident_live.py +0 -0
  336. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  337. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  338. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  339. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  340. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  341. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
  342. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  343. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
  344. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
  345. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
  346. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_movie_picker_select.py +0 -0
  347. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_movie_voice_list.py +0 -0
  348. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  349. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_patch_entity.py +0 -0
  350. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/dev/spike_patchright.py +0 -0
  351. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/diag/README.md +0 -0
  352. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/diag/capture_flow_traffic.py +0 -0
  353. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/diag/memory_profile.py +0 -0
  354. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/diag/recaptcha_mint.py +0 -0
  355. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/diag/spike_387_openai_compat.py +0 -0
  356. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  357. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/e2e/capture_agent_toggle.py +0 -0
  358. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/record_demo.ps1 +0 -0
  359. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/smoke_image.py +0 -0
  360. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/smoke_video_editor.py +0 -0
  361. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/smoke_worker_style.py +0 -0
  362. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/spike_waf_camoufox.py +0 -0
  363. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/scripts/verify_chrome_auth_viability.py +0 -0
  364. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/README.md +0 -0
  365. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/changelog/SKILL.md +0 -0
  366. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/check/SKILL.md +0 -0
  367. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/doc-review/SKILL.md +0 -0
  368. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/gflow-cli/SKILL.md +0 -0
  369. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/issue-assessment/SKILL.md +0 -0
  370. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/issue-resolve/SKILL.md +0 -0
  371. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/known-issues/SKILL.md +0 -0
  372. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/live-verify/SKILL.md +0 -0
  373. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/llm-council/SKILL.md +0 -0
  374. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/plan/SKILL.md +0 -0
  375. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/pr-council-review/SKILL.md +0 -0
  376. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/predict/SKILL.md +0 -0
  377. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/release/SKILL.md +0 -0
  378. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/scenario/SKILL.md +0 -0
  379. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/sonar/SKILL.md +0 -0
  380. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/skills/status/SKILL.md +0 -0
  381. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/sonar-project.properties +0 -0
  382. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/__main__.py +0 -0
  383. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/_cli_helpers.py +0 -0
  384. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/__init__.py +0 -0
  385. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/_engine.py +0 -0
  386. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/_retry.py +0 -0
  387. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
  388. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/character.py +0 -0
  389. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/client.py +0 -0
  390. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/dto.py +0 -0
  391. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/image.py +0 -0
  392. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/image_upscale.py +0 -0
  393. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/recaptcha.py +0 -0
  394. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/routes.py +0 -0
  395. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/scene.py +0 -0
  396. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/__init__.py +0 -0
  397. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/_common.py +0 -0
  398. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  399. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/base.py +0 -0
  400. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  401. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  402. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  403. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  404. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  405. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  406. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  407. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  408. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/__init__.py +0 -0
  409. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/base.py +0 -0
  410. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/cookies.py +0 -0
  411. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/factory.py +0 -0
  412. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/internal_chromium.py +0 -0
  413. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/real_chrome.py +0 -0
  414. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/strategies.py +0 -0
  415. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/auth/verification.py +0 -0
  416. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/browser_manager.py +0 -0
  417. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/chain.py +0 -0
  418. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/chain_manifest.py +0 -0
  419. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_character.py +0 -0
  420. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_data.py +0 -0
  421. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_image.py +0 -0
  422. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_instructions.py +0 -0
  423. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_models.py +0 -0
  424. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_project.py +0 -0
  425. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_run.py +0 -0
  426. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_scene.py +0 -0
  427. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/cli_tools.py +0 -0
  428. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/composition.py +0 -0
  429. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/config.py +0 -0
  430. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/__init__.py +0 -0
  431. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/chain_repo.py +0 -0
  432. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  433. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  434. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  435. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  436. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  437. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  438. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  439. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  440. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  441. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
  442. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/models.py +0 -0
  443. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/queries.py +0 -0
  444. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/recorder.py +0 -0
  445. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/redaction.py +0 -0
  446. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/repository.py +0 -0
  447. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/data/store.py +0 -0
  448. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/diagnostics.py +0 -0
  449. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/exceptions.py +0 -0
  450. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/image_batch.py +0 -0
  451. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/json_output.py +0 -0
  452. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/__init__.py +0 -0
  453. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/prompts.py +0 -0
  454. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/setup.py +0 -0
  455. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  456. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/media.py +0 -0
  457. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/movie_manifest.py +0 -0
  458. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/observability.py +0 -0
  459. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/paths.py +0 -0
  460. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/profile_lease.py +0 -0
  461. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/profile_store.py +0 -0
  462. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/redaction.py +0 -0
  463. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/services/__init__.py +0 -0
  464. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/services/character_create.py +0 -0
  465. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/services/mentions.py +0 -0
  466. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/storage.py +0 -0
  467. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/__init__.py +0 -0
  468. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/banned.py +0 -0
  469. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  470. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  471. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  472. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  473. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/expander.py +0 -0
  474. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/invocation.py +0 -0
  475. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/loader.py +0 -0
  476. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/registry.py +0 -0
  477. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/runtime.py +0 -0
  478. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/tools/spec.py +0 -0
  479. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/ui/app.py +0 -0
  480. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/ui/server.py +0 -0
  481. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/update_check.py +0 -0
  482. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/winsec.py +0 -0
  483. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/worker/daemon.py +0 -0
  484. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/src/gflow_cli/worker/queue.py +0 -0
  485. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tasks/lessons.md +0 -0
  486. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/test_assets/sample_batch.json +0 -0
  487. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/test_assets/sample_batch.tsv +0 -0
  488. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/test_assets/sample_batch_invalid.tsv +0 -0
  489. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/__init__.py +0 -0
  490. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/__init__.py +0 -0
  491. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/fixtures/character_gen_response.json +0 -0
  492. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/fixtures/patch_entity_response.json +0 -0
  493. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_aisandbox_auth_error.py +0 -0
  494. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
  495. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_bearer_redaction.py +0 -0
  496. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_character.py +0 -0
  497. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client.py +0 -0
  498. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_character.py +0 -0
  499. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_delete_characters.py +0 -0
  500. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_errors.py +0 -0
  501. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_generate_character.py +0 -0
  502. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_image.py +0 -0
  503. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_incidents.py +0 -0
  504. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_launch_kwargs.py +0 -0
  505. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_patch_entity.py +0 -0
  506. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_scene.py +0 -0
  507. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_client_upscale.py +0 -0
  508. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_concurrency.py +0 -0
  509. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_dto.py +0 -0
  510. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_engine.py +0 -0
  511. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_image.py +0 -0
  512. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_image_dto.py +0 -0
  513. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_image_upscale.py +0 -0
  514. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  515. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_recaptcha.py +0 -0
  516. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_retry.py +0 -0
  517. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_routes.py +0 -0
  518. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_routes_character.py +0 -0
  519. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_routes_scene.py +0 -0
  520. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_sapisidhash_helper.py +0 -0
  521. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_scene_models.py +0 -0
  522. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/test_video.py +0 -0
  523. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/__init__.py +0 -0
  524. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/conftest.py +0 -0
  525. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/drivers/__init__.py +0 -0
  526. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/drivers/test_agentic.py +0 -0
  527. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/drivers/test_classic.py +0 -0
  528. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/drivers/test_factory.py +0 -0
  529. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  530. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_base.py +0 -0
  531. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_bearer.py +0 -0
  532. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_common.py +0 -0
  533. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
  534. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_factory.py +0 -0
  535. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_fingerprint.py +0 -0
  536. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_sapisidhash.py +0 -0
  537. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_transport_timeout.py +0 -0
  538. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
  539. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  540. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/api/transports/test_ui_character_editor.py +0 -0
  541. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/strategies/test_factory.py +0 -0
  542. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/strategies/test_strategies.py +0 -0
  543. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/test_cookies.py +0 -0
  544. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/test_real_chrome.py +0 -0
  545. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/test_verification.py +0 -0
  546. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/auth/test_windows_acl.py +0 -0
  547. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  548. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/__init__.py +0 -0
  549. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_auth_status.py +0 -0
  550. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_auth_list.py +0 -0
  551. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_character.py +0 -0
  552. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_character_create.py +0 -0
  553. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_data.py +0 -0
  554. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_data_errors.py +0 -0
  555. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
  556. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_image.py +0 -0
  557. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
  558. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
  559. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_image_upscale.py +0 -0
  560. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  561. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_instructions.py +0 -0
  562. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_movie.py +0 -0
  563. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_run.py +0 -0
  564. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_scene.py +0 -0
  565. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_tools.py +0 -0
  566. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_cli_video_chain.py +0 -0
  567. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_error_handling.py +0 -0
  568. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_failure_funnel.py +0 -0
  569. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_helpers.py +0 -0
  570. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_incident_output.py +0 -0
  571. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_movie_manifest.py +0 -0
  572. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  573. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_predictable_output.py +0 -0
  574. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_settings_validation.py +0 -0
  575. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
  576. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/composition/test_character.py +0 -0
  577. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/composition/test_compose_prompt.py +0 -0
  578. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/composition/test_handoff.py +0 -0
  579. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/composition/test_style_variants.py +0 -0
  580. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/composition/test_style_variants_e2e.py +0 -0
  581. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/conftest.py +0 -0
  582. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/__init__.py +0 -0
  583. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_chain_repo.py +0 -0
  584. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_failure_recording.py +0 -0
  585. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_find_incomplete_character.py +0 -0
  586. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_models.py +0 -0
  587. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_packaging.py +0 -0
  588. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_recorder.py +0 -0
  589. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_recorder_character.py +0 -0
  590. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_redaction.py +0 -0
  591. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_repository.py +0 -0
  592. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_scene_persistence.py +0 -0
  593. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_settings_and_errors.py +0 -0
  594. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/data/test_store_migrations.py +0 -0
  595. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/dev/test_recording_client.py +0 -0
  596. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/__init__.py +0 -0
  597. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/conftest.py +0 -0
  598. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  599. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  600. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  601. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_auth_verification_e2e.py +0 -0
  602. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_cancellation_e2e.py +0 -0
  603. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_chain_e2e.py +0 -0
  604. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_character_create_e2e.py +0 -0
  605. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  606. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  607. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_daemon_e2e.py +0 -0
  608. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_data_layer_e2e.py +0 -0
  609. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  610. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  611. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  612. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_image_batch_e2e.py +0 -0
  613. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  614. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  615. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
  616. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_json_output_e2e.py +0 -0
  617. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
  618. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  619. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_project_naming_e2e.py +0 -0
  620. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_scene_compose_live.py +0 -0
  621. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_tools_e2e.py +0 -0
  622. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_transports_e2e.py +0 -0
  623. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  624. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
  625. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/__init__.py +0 -0
  626. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/asset_tagging.feature +0 -0
  627. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/auth.feature +0 -0
  628. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/auth_login.feature +0 -0
  629. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/character_create.feature +0 -0
  630. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/character_read.feature +0 -0
  631. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/conftest.py +0 -0
  632. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/duration_tab_drift.feature +0 -0
  633. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/entity_provenance.feature +0 -0
  634. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/image.feature +0 -0
  635. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/image_batch_references.feature +0 -0
  636. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/image_upscale.feature +0 -0
  637. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/incident_diagnostics.feature +0 -0
  638. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/instructions.feature +0 -0
  639. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/locale_picker_include.feature +0 -0
  640. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/mcp_tasks.feature +0 -0
  641. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/output_hardening.feature +0 -0
  642. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_asset_tagging_steps.py +0 -0
  643. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_auth_login_steps.py +0 -0
  644. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_auth_steps.py +0 -0
  645. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_character_create_steps.py +0 -0
  646. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_character_read_steps.py +0 -0
  647. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_image_steps.py +0 -0
  648. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_image_upscale_steps.py +0 -0
  649. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
  650. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_instructions_steps.py +0 -0
  651. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_locale_picker_include_steps.py +0 -0
  652. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_mcp_tasks_steps.py +0 -0
  653. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_output_hardening_steps.py +0 -0
  654. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_step_collision_guard.py +0 -0
  655. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_video_agent_ui_steps.py +0 -0
  656. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/test_video_chain_steps.py +0 -0
  657. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/video_agent_ui.feature +0 -0
  658. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/features/video_chain.feature +0 -0
  659. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/fixtures/__init__.py +0 -0
  660. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/fixtures/seeded_catalog.py +0 -0
  661. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/image_batch/__init__.py +0 -0
  662. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/image_batch/test_image_manifest.py +0 -0
  663. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/image_batch/test_jitter_config.py +0 -0
  664. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/image_batch/test_observability_events.py +0 -0
  665. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/__init__.py +0 -0
  666. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/conftest.py +0 -0
  667. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/constants.py +0 -0
  668. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/test_expander_gateway.py +0 -0
  669. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/test_storage_gcs.py +0 -0
  670. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/integration/test_storage_s3.py +0 -0
  671. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/__init__.py +0 -0
  672. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/conftest.py +0 -0
  673. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_error_funnel.py +0 -0
  674. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_setup.py +0 -0
  675. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_stdio_transport.py +0 -0
  676. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_tasks_extension.py +0 -0
  677. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_tools_helpers.py +0 -0
  678. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/mcp/test_tools_instructions.py +0 -0
  679. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  680. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
  681. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_check_materiality.py +0 -0
  682. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_check_release_artifacts.py +0 -0
  683. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
  684. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_codex_plugin.py +0 -0
  685. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_generate_website_docs.py +0 -0
  686. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
  687. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/scripts/test_materiality_backtest.py +0 -0
  688. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/__init__.py +0 -0
  689. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_character_create_redaction.py +0 -0
  690. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_character_create_saga.py +0 -0
  691. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
  692. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_mentions_observability.py +0 -0
  693. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_mentions_parse.py +0 -0
  694. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_mentions_resolve.py +0 -0
  695. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/services/test_resolve_and_apply.py +0 -0
  696. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/smoke/__init__.py +0 -0
  697. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/smoke/test_profile_account_smoke.py +0 -0
  698. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/smoke/test_real_flow.py +0 -0
  699. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_auth.py +0 -0
  700. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_browser_manager.py +0 -0
  701. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_chain.py +0 -0
  702. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_chain_manifest.py +0 -0
  703. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_cli_data.py +0 -0
  704. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_cli_project.py +0 -0
  705. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_config.py +0 -0
  706. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_conftest_isolation.py +0 -0
  707. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_data_queries.py +0 -0
  708. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_bundle.py +0 -0
  709. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_events.py +0 -0
  710. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_journal.py +0 -0
  711. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_recorder.py +0 -0
  712. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_retention.py +0 -0
  713. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_diagnostics_sanitize.py +0 -0
  714. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_documentation_gate.py +0 -0
  715. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_duration_tab_drift.py +0 -0
  716. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_entity_provenance.py +0 -0
  717. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_errors_classification.py +0 -0
  718. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_image_batch_references.py +0 -0
  719. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_marker_registry.py +0 -0
  720. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_media.py +0 -0
  721. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_observability.py +0 -0
  722. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_overlay_banner_dismissal.py +0 -0
  723. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_paths.py +0 -0
  724. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_playwright_pin.py +0 -0
  725. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_profile_lease.py +0 -0
  726. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_profile_lease_subprocess.py +0 -0
  727. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_profile_store.py +0 -0
  728. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_self_documenting_errors.py +0 -0
  729. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_smoke.py +0 -0
  730. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/test_update_check.py +0 -0
  731. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/__init__.py +0 -0
  732. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_banned.py +0 -0
  733. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_expander.py +0 -0
  734. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_invocation.py +0 -0
  735. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_loader.py +0 -0
  736. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_registry.py +0 -0
  737. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_runtime.py +0 -0
  738. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/tools/test_spec.py +0 -0
  739. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/ui/test_app.py +0 -0
  740. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_codec.py +0 -0
  741. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_daemon.py +0 -0
  742. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_mcp_daemon_race.py +0 -0
  743. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_queue.py +0 -0
  744. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_queue_multiprocess.py +0 -0
  745. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/tests/worker/test_queue_reconciliation.py +0 -0
  746. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/CHARACTER.md +0 -0
  747. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/DATA_LAYER.md +0 -0
  748. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/DEBUGGING.md +0 -0
  749. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/DEVELOPMENT.md +0 -0
  750. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/E2E_TESTING.md +0 -0
  751. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
  752. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/INSTRUCTIONS.md +0 -0
  753. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/MOVIE.md +0 -0
  754. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/PROMPT_EXPANSION.md +0 -0
  755. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/TOOLS.md +0 -0
  756. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/USER_GUIDE.md +0 -0
  757. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/agents.md +0 -0
  758. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/installation.md +0 -0
  759. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/onboarding-mockup.html +0 -0
  760. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/onboarding.md +0 -0
  761. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/docs/stylesheets/extra.css +0 -0
  762. {gflow_cli-0.56.0 → gflow_cli-0.57.1}/website/mkdocs.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.56.0",
3
+ "version": "0.57.1",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -143,6 +143,11 @@
143
143
  # editable/source installs. Set to 0 to disable.
144
144
  # GFLOW_CLI_UPDATE_CHECK=1
145
145
 
146
+ # MCP no-spend mode (#496): when set to 1, the MCP server (gflow mcp run AND
147
+ # gflow serve) never registers the credit-spending generate tools — agents
148
+ # cannot see them in tools/list. Equivalent to the --no-spend flag.
149
+ # GFLOW_MCP_NO_SPEND=0
150
+
146
151
  # Run Playwright in headless mode for non-`auth login` commands (true|false).
147
152
  # Default: false — headed real Chrome is the PRODUCTION default, not a
148
153
  # fallback. The ui_automation transport (the only production transport)
@@ -110,3 +110,47 @@ updates:
110
110
  github-actions:
111
111
  applies-to: version-updates
112
112
  patterns: ["*"]
113
+
114
+ # npm — the PR-triage sandbox's pinned Claude Code CLI
115
+ # (scripts/autopilot/package-lock.json, installed via `npm ci` in
116
+ # Dockerfile.triage).
117
+ - package-ecosystem: "npm"
118
+ directory: "/scripts/autopilot"
119
+ schedule:
120
+ interval: "weekly"
121
+ day: "monday"
122
+ time: "08:00"
123
+ timezone: "Europe/Lisbon"
124
+ open-pull-requests-limit: 2
125
+ labels:
126
+ - "dependencies"
127
+
128
+ # Docker — the digest-pinned node:20-slim base of Dockerfile.triage.
129
+ - package-ecosystem: "docker"
130
+ directory: "/scripts/autopilot"
131
+ schedule:
132
+ interval: "weekly"
133
+ day: "monday"
134
+ time: "08:00"
135
+ timezone: "Europe/Lisbon"
136
+ open-pull-requests-limit: 2
137
+ labels:
138
+ - "dependencies"
139
+
140
+ # uv — the hash-pinned MkDocs set for the Pages build
141
+ # (website/requirements.txt, compiled from website/requirements.in).
142
+ # "uv", NOT "pip", for the same reason as the root entry: the pip ecosystem
143
+ # would regenerate the file with pip-compile, clobbering the uv-authored
144
+ # header/format; dependabot's uv ecosystem recompiles .in → .txt via
145
+ # `uv pip compile` and keeps the hashes.
146
+ - package-ecosystem: "uv"
147
+ directory: "/website"
148
+ schedule:
149
+ interval: "weekly"
150
+ day: "monday"
151
+ time: "08:00"
152
+ timezone: "Europe/Lisbon"
153
+ open-pull-requests-limit: 2
154
+ labels:
155
+ - "dependencies"
156
+ - "python"
@@ -5,6 +5,11 @@ on:
5
5
  branches: [develop, main]
6
6
  pull_request:
7
7
 
8
+ # Least-privilege default token for every job (OpenSSF Scorecard:
9
+ # Token-Permissions). Jobs that need more elevate per-job below.
10
+ permissions:
11
+ contents: read
12
+
8
13
  env:
9
14
  # Suppress Node.js deprecation warnings and align with user request to use Node 22/remove noise.
10
15
  ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
@@ -15,13 +20,16 @@ jobs:
15
20
  secrets-scan:
16
21
  name: Secret scan (gitleaks)
17
22
  runs-on: ubuntu-latest
23
+ permissions:
24
+ contents: read
25
+ pull-requests: write # gitleaks-action PR feedback comments
18
26
  steps:
19
- - uses: actions/checkout@v7
27
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
20
28
  with:
21
29
  fetch-depth: 0 # full history so gitleaks can diff against base
22
30
 
23
31
  - name: Run gitleaks
24
- uses: gitleaks/gitleaks-action@v3
32
+ uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3
25
33
  env:
26
34
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27
35
 
@@ -30,9 +38,9 @@ jobs:
30
38
  name: Dependency audit (pip-audit)
31
39
  runs-on: ubuntu-latest
32
40
  steps:
33
- - uses: actions/checkout@v7
41
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
34
42
  - name: Install uv
35
- uses: astral-sh/setup-uv@v7
43
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
36
44
  - name: Audit locked dependencies for known CVEs
37
45
  # Fails the build on any known advisory. Accept later via: pip-audit --ignore-vuln <GHSA-id>
38
46
  #
@@ -45,7 +53,9 @@ jobs:
45
53
  # alerts flagged them against uv.lock; this gate could not see them.
46
54
  run: |
47
55
  uv export --frozen --all-extras --format requirements-txt --no-emit-project > requirements-audit.txt
48
- uvx pip-audit -r requirements-audit.txt
56
+ # pip-audit version pinned for a reproducible gate (uvx has no
57
+ # dependabot ecosystem — bump by hand when it drifts).
58
+ uvx pip-audit==2.10.1 -r requirements-audit.txt
49
59
 
50
60
  # ── Supply-chain gate: resolve WITHOUT the lockfile ───────────────────────
51
61
  # Every other job installs via `uv sync`, which honours uv.lock. That means CI
@@ -62,10 +72,10 @@ jobs:
62
72
  name: Dependency resolution drift (no lockfile)
63
73
  runs-on: ubuntu-latest
64
74
  steps:
65
- - uses: actions/checkout@v7
75
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
66
76
 
67
77
  - name: Install uv
68
- uses: astral-sh/setup-uv@v7
78
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
69
79
 
70
80
  - name: Set up Python
71
81
  run: uv python install 3.13
@@ -116,10 +126,10 @@ jobs:
116
126
  matrix:
117
127
  python-version: ["3.11", "3.12", "3.13"]
118
128
  steps:
119
- - uses: actions/checkout@v7
129
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
120
130
 
121
131
  - name: Install uv
122
- uses: astral-sh/setup-uv@v7
132
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
123
133
 
124
134
  - name: Set up Python
125
135
  run: uv python install ${{ matrix.python-version }}
@@ -152,12 +162,17 @@ jobs:
152
162
  # e2e/live tests require a logged-in Chromium profile and may spend
153
163
  # Flow credits. pyproject.toml excludes both markers by default; CI
154
164
  # intentionally relies on that default smoke set.
155
- run: uv run python -m pytest -q --cov=gflow_cli --cov-report=xml
165
+ run: uv run python -m pytest -q --cov=gflow_cli --cov-report=xml --junitxml=pytest-report.xml
166
+
167
+ - name: Test-count guard (a green build that ran nothing is not green)
168
+ # Floor well below the real count (~2900): catches collection collapse
169
+ # (bad marker/-k filter, broken conftest), never routine deletions.
170
+ run: uv run python scripts/ci/check_test_count.py pytest-report.xml 2000
156
171
 
157
172
  # Upload coverage XML so the sonar job can consume it
158
173
  - name: Upload coverage report
159
174
  if: matrix.python-version == '3.11'
160
- uses: actions/upload-artifact@v7
175
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
161
176
  with:
162
177
  name: coverage-xml
163
178
  path: coverage.xml
@@ -180,10 +195,10 @@ jobs:
180
195
  matrix:
181
196
  os: [windows-latest, macos-latest, ubuntu-latest]
182
197
  steps:
183
- - uses: actions/checkout@v7
198
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
184
199
 
185
200
  - name: Install uv
186
- uses: astral-sh/setup-uv@v7
201
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
187
202
 
188
203
  - name: Set up Python
189
204
  run: uv python install 3.13
@@ -192,13 +207,21 @@ jobs:
192
207
  run: uv sync --extra dev
193
208
 
194
209
  - name: ProfileLease unit + subprocess tests
195
- run: uv run python -m pytest tests/test_profile_lease.py tests/test_profile_lease_subprocess.py -q
210
+ run: uv run python -m pytest tests/test_profile_lease.py tests/test_profile_lease_subprocess.py -q --junitxml=pytest-lease.xml
211
+
212
+ - name: Test-count guard (lease matrix ran its suite)
213
+ # Floor well below the ~29 executed per OS leg — catches collapse, not
214
+ # routine test consolidation.
215
+ run: uv run python scripts/ci/check_test_count.py pytest-lease.xml 10
196
216
 
197
217
  # ── SonarCloud analysis ───────────────────────────────────────────────────
198
218
  sonar:
199
219
  name: SonarCloud analysis
200
220
  runs-on: ubuntu-latest
201
221
  needs: test # wait for tests + coverage report
222
+ permissions:
223
+ contents: read
224
+ pull-requests: read # PR-context analysis / decoration lookups
202
225
  # Forked pull_request runs do not receive repository secrets, so SONAR_TOKEN
203
226
  # is empty there and the scanner fails before analysis. Dependabot-triggered
204
227
  # runs are the same case: GitHub serves them the separate Dependabot secrets
@@ -212,12 +235,12 @@ jobs:
212
235
  github.event.pull_request.head.repo.full_name == github.repository
213
236
  )
214
237
  steps:
215
- - uses: actions/checkout@v7
238
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
216
239
  with:
217
240
  fetch-depth: 0 # shallow clones break blame / new-code detection
218
241
 
219
242
  - name: Download coverage report
220
- uses: actions/download-artifact@v8
243
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
221
244
  with:
222
245
  name: coverage-xml
223
246
  continue-on-error: true # graceful if coverage upload was skipped
@@ -242,7 +265,12 @@ jobs:
242
265
 
243
266
  - name: SonarCloud scan
244
267
  if: steps.sonarcloud_health.outputs.up == 'true'
245
- uses: SonarSource/sonarcloud-github-action@v5.0.0
268
+ # sonarcloud-github-action is ARCHIVED upstream (dependabot never bumps
269
+ # archived actions, so its pin would rot silently); sonarqube-scan-action
270
+ # is SonarSource's maintained successor and serves SonarCloud when
271
+ # SONAR_HOST_URL points at it.
272
+ uses: SonarSource/sonarqube-scan-action@22918119ff8e1ca75a623e15c8296b6ea4fbe28f # v8.2.1
246
273
  env:
247
274
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # PR decoration
248
275
  SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # set in repo → Settings → Secrets
276
+ SONAR_HOST_URL: https://sonarcloud.io
@@ -28,10 +28,10 @@ jobs:
28
28
  name: Audit + report upgradable dependencies
29
29
  runs-on: ubuntu-latest
30
30
  steps:
31
- - uses: actions/checkout@v7
31
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
32
32
 
33
33
  - name: Install uv
34
- uses: astral-sh/setup-uv@v7
34
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
35
35
 
36
36
  - name: Set up Python
37
37
  run: uv python install 3.13
@@ -43,6 +43,9 @@ jobs:
43
43
  # anything reachable solely through an optional extra goes unaudited.
44
44
  # See the matching note in ci.yml — this is how aiohttp/pyasn1 hid.
45
45
  uv export --frozen --all-extras --format requirements-txt --no-emit-project > requirements-audit.txt
46
+ # pip-audit deliberately floats here (unlike the pinned gate in
47
+ # ci.yml): this weekly watch job never gates a merge, and fresh
48
+ # advisory tooling is exactly what it is for.
46
49
  uvx pip-audit -r requirements-audit.txt
47
50
 
48
51
  # ── The reports: never fail the run, and still run when the audit fails
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: Triage external pull request
18
- uses: actions/github-script@v9
18
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
19
19
  with:
20
20
  script: |
21
21
  const pr = context.payload.pull_request;
@@ -19,12 +19,12 @@ jobs:
19
19
  name: Materiality + traceability (advisory)
20
20
  runs-on: ubuntu-latest
21
21
  steps:
22
- - uses: actions/checkout@v7
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
23
23
  with:
24
24
  fetch-depth: 0 # full history so `git diff origin/<base>..HEAD` resolves
25
25
 
26
26
  - name: Install uv
27
- uses: astral-sh/setup-uv@v7
27
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
28
28
 
29
29
  - name: Classify touched paths (advisory, never blocks)
30
30
  run: |
@@ -18,12 +18,12 @@ jobs:
18
18
  name: Materiality gate backtest
19
19
  runs-on: ubuntu-latest
20
20
  steps:
21
- - uses: actions/checkout@v7
21
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
22
22
  with:
23
23
  fetch-depth: 0 # full history — the backtest replays every commit
24
24
 
25
25
  - name: Install uv
26
- uses: astral-sh/setup-uv@v7
26
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
27
27
 
28
28
  - name: Run backtest (advisory; writes to job summary)
29
29
  run: uv run python scripts/dev/materiality_backtest.py >> "$GITHUB_STEP_SUMMARY"
@@ -37,7 +37,7 @@ jobs:
37
37
  runs-on: ubuntu-latest
38
38
  steps:
39
39
  - name: Create or update labels
40
- uses: actions/github-script@v9
40
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
41
41
  with:
42
42
  script: |
43
43
  // Every label referenced by .github/dependabot.yml. Keep in sync.
@@ -30,7 +30,7 @@ jobs:
30
30
  name: Release must carry /gflow:release artifacts
31
31
  runs-on: ubuntu-latest
32
32
  steps:
33
- - uses: actions/checkout@v7
33
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
34
34
  - name: Verify release artifacts
35
35
  env:
36
36
  BASE_REF: ${{ github.base_ref }}
@@ -12,10 +12,10 @@ on:
12
12
  - ".github/workflows/pages.yml"
13
13
  workflow_dispatch:
14
14
 
15
+ # Write scopes live at JOB level on the deploy job only (Scorecard
16
+ # Token-Permissions: workflow-level write would grant the build job too).
15
17
  permissions:
16
18
  contents: read
17
- pages: write
18
- id-token: write
19
19
 
20
20
  # Never cancel an in-progress deploy; queue instead.
21
21
  concurrency:
@@ -26,12 +26,14 @@ jobs:
26
26
  build:
27
27
  runs-on: ubuntu-latest
28
28
  steps:
29
- - uses: actions/checkout@v7
30
- - uses: actions/setup-python@v7
29
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
30
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
31
31
  with:
32
32
  python-version: "3.12"
33
33
  - name: Install MkDocs Material
34
- run: pip install "mkdocs-material>=9,<10"
34
+ # Hash-pinned (Scorecard Pinned-Dependencies). Compiled from
35
+ # website/requirements.in — regeneration command in that file's header.
36
+ run: pip install --require-hashes -r website/requirements.txt
35
37
  - name: Build docs portal
36
38
  working-directory: website
37
39
  run: mkdocs build
@@ -40,16 +42,19 @@ jobs:
40
42
  mkdir -p _site
41
43
  cp index.html _site/
42
44
  cp -r website/site _site/docs
43
- - uses: actions/upload-pages-artifact@v5
45
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
44
46
  with:
45
47
  path: _site
46
48
 
47
49
  deploy:
48
50
  needs: build
49
51
  runs-on: ubuntu-latest
52
+ permissions:
53
+ pages: write # actual Pages deployment
54
+ id-token: write # OIDC handshake with the Pages service
50
55
  environment:
51
56
  name: github-pages
52
57
  url: ${{ steps.deployment.outputs.page_url }}
53
58
  steps:
54
59
  - id: deployment
55
- uses: actions/deploy-pages@v5
60
+ uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
@@ -5,13 +5,17 @@ on:
5
5
  tags:
6
6
  - "v*.*.*"
7
7
 
8
+ # Write scopes live at JOB level (Scorecard Token-Permissions: workflow-level
9
+ # write grants every job — current and future — the elevated token).
8
10
  permissions:
9
- contents: write # for creating GitHub Releases
10
- id-token: write # for PyPI Trusted Publishing (OIDC)
11
+ contents: read
11
12
 
12
13
  jobs:
13
14
  build-and-publish:
14
15
  runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: write # for creating GitHub Releases
18
+ id-token: write # for PyPI Trusted Publishing (OIDC)
15
19
  environment:
16
20
  name: pypi
17
21
  url: https://pypi.org/p/gflow-cli
@@ -19,12 +23,12 @@ jobs:
19
23
  ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
20
24
  NODE_VERSION: '22'
21
25
  steps:
22
- - uses: actions/checkout@v7
26
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
23
27
  with:
24
28
  fetch-depth: 0
25
29
 
26
30
  - name: Install uv
27
- uses: astral-sh/setup-uv@v7
31
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
28
32
 
29
33
  - name: Set up Python
30
34
  run: uv python install 3.12
@@ -57,12 +61,12 @@ jobs:
57
61
  run: uv build
58
62
 
59
63
  - name: Publish to PyPI
60
- uses: pypa/gh-action-pypi-publish@release/v1
64
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
61
65
  # No api-token needed — uses OIDC Trusted Publishing.
62
66
  # Configure once at https://pypi.org/manage/account/publishing/
63
67
 
64
68
  - name: Create GitHub Release
65
- uses: softprops/action-gh-release@v3
69
+ uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3
66
70
  with:
67
71
  generate_release_notes: true
68
72
  files: dist/*
@@ -0,0 +1,52 @@
1
+ name: OpenSSF Scorecard
2
+
3
+ # Self-run of the OpenSSF Scorecard supply-chain checks (T2 batch decision,
4
+ # 2026-08-13). Deliberately enabled AFTER the permissions + SHA-pinning
5
+ # hardening landed, so the first published public score reflects the hardened
6
+ # state — Token-Permissions and Pinned-Dependencies are heavily weighted.
7
+ # publish_results feeds the public API/badge:
8
+ # https://api.scorecard.dev/projects/github.com/ffroliva/gflow-cli/badge
9
+
10
+ on:
11
+ # Re-evaluates the Branch-Protection check when protection rules change.
12
+ branch_protection_rule:
13
+ schedule:
14
+ - cron: "30 3 * * 1" # weekly, Monday 03:30 UTC
15
+ push:
16
+ branches: [develop] # default branch — required for publish_results
17
+
18
+ permissions: read-all
19
+
20
+ jobs:
21
+ analysis:
22
+ name: Scorecard analysis
23
+ runs-on: ubuntu-latest
24
+ permissions:
25
+ security-events: write # upload the SARIF to the Security tab
26
+ id-token: write # OIDC identity for publish_results signing
27
+
28
+ steps:
29
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
30
+ with:
31
+ persist-credentials: false
32
+
33
+ - name: Run analysis
34
+ uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
35
+ with:
36
+ results_file: results.sarif
37
+ results_format: sarif
38
+ # Publishing makes the score available via the public API and badge.
39
+ # The repo is public; every input to the score already is too.
40
+ publish_results: true
41
+
42
+ - name: Upload artifact
43
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
44
+ with:
45
+ name: SARIF file
46
+ path: results.sarif
47
+ retention-days: 5
48
+
49
+ - name: Upload to code-scanning
50
+ uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4
51
+ with:
52
+ sarif_file: results.sarif
@@ -19,6 +19,7 @@ pytest-of-*/
19
19
  .coverage
20
20
  .coverage.*
21
21
  coverage.xml
22
+ pytest-*.xml
22
23
  htmlcov/
23
24
  .tox/
24
25
  .mypy_cache/
@@ -98,3 +99,6 @@ worktrees/
98
99
 
99
100
  # MkDocs build output
100
101
  website/site/
102
+
103
+ # Local git hooks dir (core.hooksPath target) — machine-local tooling, never shipped
104
+ .githooks/
@@ -7,6 +7,158 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.57.1] — 2026-08-14
11
+
12
+ ### Fixed
13
+
14
+ - **`gflow video`/`image` can no longer get stuck behind Flow's expanded chat
15
+ sidebar (#493).** Expanding the sidebar removes the classic composer
16
+ **entirely** — no `crop_*` settings trigger *and* no Agent pill — which is
17
+ exactly the fingerprint reported in #493 ("no `crop_*` settings button", "the
18
+ Agente pill matches neither selector"). It also explains the exit code: with
19
+ no agentic indicator on screen either, the cohort detector matches nothing, so
20
+ the run dies as `UiSelectorDriftError` (exit 23) instead of the retryable
21
+ agentic error (25). Recovery hinged on a single selector scoped to the
22
+ sidebar's `edit_square` affordance; a cohort whose sidebar lacks that ligature
23
+ never found the X, so the sidebar never closed and the composer never came
24
+ back. `ensure_media_mode` now falls back to an unscoped close **only** from
25
+ the demonstrably stuck state (no `crop_*` **and** no pill), where the classic
26
+ composer is gone and there is nothing else a close button could belong to.
27
+ Reproduced live and A/B-proven: with the scoped selector neutered the fallback
28
+ recovers; with both neutered it does not.
29
+
30
+ - **`--duration` now fails fast instead of masquerading as UI drift (#451, #288).**
31
+ Flow's video settings popover is **model-conditional**: only `omni-flash` renders
32
+ a `4s/6s/8s/10s` row, and the Veo 3.1 models render **no duration control at all**
33
+ — verified live on two accounts and two locales. `api/video.py` had claimed "the
34
+ four `VEO_3_1_*` models cap at 8s", which presumed a control that is never drawn,
35
+ so `_select_video_duration` hunted a missing element and died with
36
+ `UiSelectorDriftError` (exit 23) after ~30 s. That is why the bug reproduced
37
+ identically on playwright 1.59 and 1.61 (the version bound was correctly
38
+ exonerated) and why the locale hypothesis was refuted — it was never either.
39
+ `--duration` with a Veo model now exits **2 before any browser work**, naming the
40
+ model and the fix. New `VideoModel.supports_duration()`; the DTO guards it too, for
41
+ API callers.
42
+ - **`--reference-entity` no longer advertised on `video i2v`, where it always failed.**
43
+ The flag was registered on `t2v`/`i2v`/`r2v`, but `_validate_i2v_symmetry` rejects
44
+ reference entities on i2v — so the i2v form raised for every caller who believed
45
+ the help text. It is now applied to `t2v`/`r2v` only. The reverse error was in the
46
+ docs: `REFERENCE_STRATEGIES.md`, `USAGE.md` and the `t2v` help text all stated "the
47
+ video path has no `--reference-entity` flag" while `cli_video.py` registered it —
48
+ corrected in all four places.
49
+ - **A named remote reference that isn't in the picker now raises a typed error.**
50
+ `--ref-name` searches Flow's picker, which indexes Flow's own short auto-caption —
51
+ not the generation prompt — so a prompt passed as `--ref-name` surfaced as a bare
52
+ Playwright `TimeoutError` after 8 s, with no exit code to branch on and no hint
53
+ that the *name* was the problem. Now `ReferenceNotFoundError` (**exit 32**), listing
54
+ what the picker actually offered.
55
+ - `reference_cap_for` now records the live-verified ingredient rule it already
56
+ encoded: `veo-quality` refuses image ingredients (Flow: "You cannot use image
57
+ ingredients with this model") while Omni Flash / Fast / Lite accept them, and a cap
58
+ of 0 *is* the answer to "does this model take ingredients?". Deliberately no second
59
+ predicate — one was written, found to have no production caller, and deleted.
60
+
61
+ - **MCP `gflow_generate_image` `ui_mode` now matches the video tool's contract.**
62
+ The image tool rejected an unknown `ui_mode` with a flat `error` **string**, so a
63
+ client reading `error["title"]` — the RFC 9457 shape every other 400 from these
64
+ tools uses since #498 — crashed with `TypeError: string indices must be integers`.
65
+ It was also case-sensitive, while the CLI's `--ui-mode` is
66
+ `click.Choice(case_sensitive=False)` and the video tool normalizes. Both are fixed:
67
+ the value is lower-cased and an invalid one returns the standard problem-details
68
+ envelope. Found by `/code-review` against docs that asserted the param "mirrors the
69
+ CLI" — it did not.
70
+ - **`GFLOW_MCP_NO_SPEND` documentation corrected (no behavior change).**
71
+ [CONFIGURATION](docs/CONFIGURATION.md) described the falsy set as a literal lowercase
72
+ list, so a reader setting `GFLOW_MCP_NO_SPEND=FALSE` would conclude no-spend was
73
+ **on** when the value is lower-cased before comparison and it is **off**. On the one
74
+ variable whose purpose is a hard guarantee against spending credits, the wrong
75
+ reading failed toward spending. Now states the match is case-insensitive.
76
+
77
+ ## [0.57.0] — 2026-08-14
78
+
79
+ ### Added
80
+
81
+ - **`--ui-mode` on `gflow video t2v`/`i2v` + `ui_mode` on MCP `gflow_generate_video` (#299 PR-A).** The video path joins the UI-mode policy that images have had since v0.34.0: the transport now binds its driver through `get_ui_driver` (after editor mount + overlay dismissal) instead of a hardcoded classic bind. Video only has a classic driver, so `auto` ≡ `classic`; an env-sourced `GFLOW_CLI_UI_MODE=agentic` (set for image workflows) degrades to classic with a logged warning, while the explicit `--ui-mode agentic` flag (or MCP `ui_mode="agentic"`) is rejected up front — CLI exit 2 before any browser work, since exit 28's "retry may land it" remediation would mislead for a driver that doesn't exist. The worker queue codec round-trips the new payload field (it previously decoded `ui_mode` for image payloads only).
82
+
83
+ - **`gflow mcp run --no-spend` (#496).** Registration-time gating of the
84
+ credit-spending MCP tools: under the flag (or `GFLOW_MCP_NO_SPEND=1`, which
85
+ also covers `gflow serve`) the `gflow_generate_image` and
86
+ `gflow_generate_video` tools are never registered, so a connected agent
87
+ cannot even see them in `tools/list` — invisible beats refused (no wasted
88
+ calls, no refusal path for prompt injection to probe, no reliance on the
89
+ model honoring an error; pattern ported from teams-mcp's read-only mode).
90
+ Both generate tools are gated because image generation is only
91
+ *empirically* free and no-spend is a hard guarantee. Listing, instructions,
92
+ and other read-only tools stay available.
93
+ - **MCP tool `gflow_auth_status` (#497).** A zero-required-arg, credit-free,
94
+ non-interactive Flow session probe wrapping the same fail-closed
95
+ `verify_flow_profile` check as `gflow auth status`. Agents call it before a
96
+ generation tool to fail fast on expired auth — the queue is async, so an
97
+ auth failure otherwise surfaces only later, from the daemon. Returns
98
+ `authenticated` + the verified email, or a problem-details envelope whose
99
+ `remediation_hint` points at the CLI login (or at retrying, for a network
100
+ `verification_error` that re-login cannot fix). `auth status` accordingly
101
+ moves out of the MCP parity exemptions; login/logout stay CLI-only.
102
+
103
+ ### Changed
104
+
105
+ - **Agentic mode-switching hardened (#299 PR-B).** The agentic direction now uses the same real-click-first + `aria-pressed` verification discipline the classic direction has had since v0.38.x: `mode_control.ensure_agent_mode` replaces the transport's `_force_agent_mode`, which verified via the `tune` ligature (a documented false-positive source) and force-clicked unconditionally — a forced click can flip the DOM without firing the React handler that persists the server-side preference. Unknown editor variants (the #493 shape) no-op with a warning and are never blind-force-clicked, and the sanctioned mode-control reload carries an explicit 15 s timeout instead of riding Playwright's 30 s default outside every budget. KNOWN_ISSUES records the server-side cohort-pinning evidence (#338) the fail-fast design rests on.
106
+ - **Video generation on an agentic cohort now fails fast pre-submit (#299 PR-A).** When Flow serves the agentic editor and classic can't be recovered, `gflow video` commands abort with `UiModeUnavailableError` (exit 28, zero credits, retryable — the cohort flaps per page load) *before* submission, instead of burning 30–40 s of doomed selector timeouts and dying mid-flow with exit 23/25.
107
+
108
+ - **MCP `gflow://docs/known-issues` resource is now bounded (#501).** The old
109
+ resource returned all of KNOWN_ISSUES.md (~70 KB, growing every release) on
110
+ every read — pure context injection. The default read is now a small index
111
+ (issue titles + status + slugs, a few KB); one templated resource
112
+ (`gflow://docs/known-issues/{slug}`) serves a single issue's full text,
113
+ capped at 16 KB. No unbounded read path remains.
114
+
115
+ ### Fixed
116
+
117
+ - **MCP response-contract breaches (#498).** Both generate tools now refuse
118
+ rate-limited calls with the same RFC 9457 problem-details envelope (the
119
+ image tool used a plain error string; the video tool's detail claimed a
120
+ nonexistent "1 request per 30 seconds" policy — the real brake is the
121
+ shared token bucket, capacity 8 / refill 1 per 20 s). `gflow_list_projects`
122
+ paginates honestly: a new `offset` parameter, plus `count`/`offset`/
123
+ `has_more`/`next_offset` in the response, replacing the hardcoded first
124
+ page whose `total` field reported the page size as the table total —
125
+ catalogs larger than `limit` were unreachable through MCP.
126
+
127
+ - **Post-merge `/code-review` fixes for the #495–#501 wave.** The rate-limited
128
+ envelope is now built from the canonical `RateLimitError` (type
129
+ `…/errors/rate-limit`, `retryable`/`message` present) instead of a
130
+ hand-minted variant; `gflow_auth_status` labels a network
131
+ `verification_error` as `…/errors/verification-error` (503, retryable)
132
+ rather than `auth-expired` (401), so type-dispatching agents stop pushing
133
+ users into unnecessary re-logins, and its description no longer overclaims
134
+ "never opens a browser" (the cookie-decryption fallback may boot a headless
135
+ one); `gflow_list_projects` clamps `limit`/`offset` (a `limit<=0` call
136
+ previously produced an infinite `next_offset` loop and negative limits
137
+ reached SQLite as unbounded `LIMIT -1`); `--no-spend` gained a single
138
+ env-var parser (Click's `envvar` dual-parse meant `off` could disable the
139
+ flag yet enable the policy), an idempotent registration policy, a `serve`
140
+ flag, a `.env.template` row, and a no-spend-aware agent guide that no
141
+ longer instructs agents to call unregistered tools; the known-issues index
142
+ recognizes both documented `**Status:**` styles and caps the echoed slug in
143
+ unknown-slug replies (the last unbounded reflection path).
144
+
145
+ ### Removed
146
+
147
+ - **MCP tool `gflow_list_characters` (#499).** It was a stub that always
148
+ answered `{"status": "ok", "characters": []}` — to an agent that reads as
149
+ "the user has no characters", an active lie that steered clients away from
150
+ real `@Name` references. The tool is gone from `tools/list`, the agent-guide
151
+ resource, and the parity table (`character list` is now an explicit parity
152
+ exemption). It returns only when it can serve real Flow-side data. Use
153
+ `gflow character list --project <id>` in the terminal meanwhile.
154
+
155
+ ### Security
156
+
157
+ - **CI supply-chain hardening.** Every workflow now runs with a least-privilege token (`ci.yml` gained the top-level `permissions: contents: read` it was missing — the other eight already had one; gitleaks elevates `pull-requests: write` per-job); every `uses:` action across all nine workflows is pinned to a full commit SHA with a version comment (dependabot's `github-actions` group keeps pins fresh); the CI test jobs enforce a test-count floor via `scripts/ci/check_test_count.py` ("a green build that ran nothing is not green"); and `check_repo_hygiene.py` now fails on version disagreement between `pyproject.toml`, `__init__.py`, and `.codex-plugin/plugin.json`.
158
+ - **Remaining in-workflow package installs pinned (Scorecard Pinned-Dependencies).** The Pages build now installs MkDocs Material with `pip install --require-hashes` from a compiled `website/requirements.txt`; the PR-triage sandbox image (`Dockerfile.triage`) pins its Node base by digest and installs the Claude Code CLI via `npm ci` from a committed lockfile instead of a floating `npm install -g`; the CI dependency audit pins its `pip-audit` tool version (the non-gating weekly `deps-watch` job deliberately keeps a floating pip-audit — fresh advisory tooling is its purpose). New dependabot entries (uv / npm / docker) keep all three sets of pins fresh. The remaining deliberate won't-fix Scorecard alerts (SAST, Fuzzing, CII Best Practices) are dismissed on the repo with recorded reasons.
159
+ - **OpenSSF Scorecard self-run.** A new SHA-pinned `scorecard.yml` workflow (weekly + on push to `develop`) runs the OpenSSF Scorecard supply-chain checks with `publish_results: true`, feeding the public API/badge and the repo Security tab — enabled deliberately after the permissions/pinning hardening so the first published score reflects the hardened state. The score surfaces as a badge in the README and on the website index page, with a docs/SECURITY.md section explaining what it measures; `release.yml`/`pages.yml` write scopes moved from workflow level to the jobs that need them.
160
+
161
+
10
162
  ## [0.56.0] — 2026-08-13
11
163
 
12
164
  ### Added
@@ -2825,7 +2977,9 @@ shell-script template that branches on these codes.
2825
2977
 
2826
2978
  First skeleton. Not functional end-to-end yet.
2827
2979
 
2828
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...HEAD
2980
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.57.1...HEAD
2981
+ [0.57.1]: https://github.com/ffroliva/gflow-cli/compare/v0.57.0...v0.57.1
2982
+ [0.57.0]: https://github.com/ffroliva/gflow-cli/compare/v0.56.0...v0.57.0
2829
2983
  [0.56.0]: https://github.com/ffroliva/gflow-cli/compare/v0.55.0...v0.56.0
2830
2984
  [0.55.0]: https://github.com/ffroliva/gflow-cli/compare/v0.54.0...v0.55.0
2831
2985
  [0.54.0]: https://github.com/ffroliva/gflow-cli/compare/v0.53.1...v0.54.0