gflow-cli 0.62.0__tar.gz → 0.63.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.codex-plugin/plugin.json +1 -1
  2. gflow_cli-0.63.0/.github/FUNDING.yml +2 -0
  3. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/scorecard.yml +1 -1
  4. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/AGENTS.md +39 -4
  5. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/CHANGELOG.md +116 -1
  6. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/CLAUDE.md +31 -5
  7. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/KNOWN_ISSUES.md +86 -0
  8. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/PKG-INFO +14 -4
  9. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/PLAN.md +1 -1
  10. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/README.md +12 -2
  11. gflow_cli-0.63.0/docs/ACCOUNT_SAFETY.md +136 -0
  12. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/CHARACTER.md +24 -4
  13. {gflow_cli-0.62.0/website → gflow_cli-0.63.0}/docs/CONFIGURATION.md +1 -0
  14. {gflow_cli-0.62.0/website → gflow_cli-0.63.0}/docs/DEBUGGING.md +5 -0
  15. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/INDEX.md +6 -1
  16. gflow_cli-0.63.0/docs/LIVE_VERIFICATION_v0.62.1.md +88 -0
  17. gflow_cli-0.63.0/docs/LIVE_VERIFICATION_v0.63.0.md +130 -0
  18. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/PROJECT_STATUS.md +36 -20
  19. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/USAGE.md +101 -1
  20. gflow_cli-0.63.0/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +361 -0
  21. gflow_cli-0.63.0/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +261 -0
  22. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/index.html +12 -3
  23. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/llms.txt +1 -1
  24. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/pyproject.toml +3 -3
  25. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/Dockerfile.triage +1 -1
  26. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/package-lock.json +36 -36
  27. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/package.json +1 -1
  28. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/pr_triage_autopilot.py +40 -18
  29. gflow_cli-0.63.0/scripts/dev/spike_extend_model_recon.py +194 -0
  30. gflow_cli-0.63.0/scripts/dev/spike_extend_ourstack_verify.py +210 -0
  31. gflow_cli-0.63.0/scripts/dev/spike_extend_route_capture.py +194 -0
  32. gflow_cli-0.63.0/scripts/dev/spike_extend_submit_capture.py +194 -0
  33. gflow_cli-0.63.0/scripts/dev/spike_extend_ui_recon.py +205 -0
  34. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +13 -4
  35. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/issue-resolve/SKILL.md +13 -2
  36. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/__init__.py +1 -1
  37. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/_cli_helpers.py +52 -0
  38. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/client.py +168 -2
  39. gflow_cli-0.63.0/src/gflow_cli/api/extend_chain.py +201 -0
  40. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/routes.py +15 -0
  41. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/ui_automation_video.py +25 -1
  42. gflow_cli-0.63.0/src/gflow_cli/api/video_extend.py +313 -0
  43. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_video.py +429 -1
  44. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/models.py +1 -0
  45. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/recorder.py +58 -0
  46. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/redaction.py +5 -1
  47. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/errors.py +35 -0
  48. gflow_cli-0.63.0/tests/api/fixtures/project_initial_data_extend_models.json +2471 -0
  49. gflow_cli-0.63.0/tests/api/test_client_extend.py +200 -0
  50. gflow_cli-0.63.0/tests/api/test_extend_chain.py +174 -0
  51. gflow_cli-0.63.0/tests/api/test_video_extend.py +289 -0
  52. gflow_cli-0.63.0/tests/api/test_video_status_poll.py +143 -0
  53. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_video_model_selection_loud.py +5 -0
  54. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/autopilot/test_pr_triage_autopilot.py +66 -14
  55. gflow_cli-0.63.0/tests/cli/test_cli_video_extend.py +647 -0
  56. gflow_cli-0.63.0/tests/cli/test_run_with_handlers_interrupt.py +70 -0
  57. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/conftest.py +24 -0
  58. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_recorder.py +53 -0
  59. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_redaction.py +20 -0
  60. gflow_cli-0.63.0/tests/fixtures/flow_model_inventory.json +24 -0
  61. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/test_model_governance.py +82 -7
  62. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_cli_parity.py +16 -0
  63. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_documentation_gate.py +5 -0
  64. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/uv.lock +37 -40
  65. gflow_cli-0.63.0/website/docs/ACCOUNT_SAFETY.md +136 -0
  66. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/CHARACTER.md +24 -4
  67. {gflow_cli-0.62.0 → gflow_cli-0.63.0/website}/docs/CONFIGURATION.md +1 -0
  68. {gflow_cli-0.62.0 → gflow_cli-0.63.0/website}/docs/DEBUGGING.md +5 -0
  69. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/KNOWN_ISSUES.md +86 -0
  70. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/USAGE.md +101 -1
  71. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/mkdocs.yml +1 -0
  72. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/requirements.txt +6 -7
  73. gflow_cli-0.62.0/tests/fixtures/flow_model_inventory.json +0 -23
  74. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.agents/plugins/marketplace.json +0 -0
  75. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/README.md +0 -0
  76. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/active.md +0 -0
  77. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/branch-review.md +0 -0
  78. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/changelog.md +0 -0
  79. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/check.md +0 -0
  80. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/doc-review.md +0 -0
  81. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  82. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  83. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/known-issues.md +0 -0
  84. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/live-verify.md +0 -0
  85. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/llm-council.md +0 -0
  86. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/next.md +0 -0
  87. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/plan.md +0 -0
  88. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  89. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/predict.md +0 -0
  90. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/release.md +0 -0
  91. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/scenario.md +0 -0
  92. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/sonar.md +0 -0
  93. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.claude/commands/gflow/status.md +0 -0
  94. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.env.template +0 -0
  95. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.gitattributes +0 -0
  96. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/CODEOWNERS +0 -0
  97. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  98. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/copilot-instructions.md +0 -0
  99. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/dependabot.yml +0 -0
  100. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/ci.yml +0 -0
  101. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/deps-watch.yml +0 -0
  102. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/external-pr-triage.yml +0 -0
  103. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/governance-advisory.yml +0 -0
  104. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/governance-benchmark.yml +0 -0
  105. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/labels.yml +0 -0
  106. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/main-base-guard.yml +0 -0
  107. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/pages.yml +0 -0
  108. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/release.yml +0 -0
  109. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.github/workflows/selector-probe.yml +0 -0
  110. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.gitignore +0 -0
  111. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.gitleaks.toml +0 -0
  112. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.pre-commit-config.yaml +0 -0
  113. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/.secrets.baseline +0 -0
  114. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/CONFIGURATION.md +0 -0
  115. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/CONTRIBUTING.md +0 -0
  116. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/DISCLAIMER.md +0 -0
  117. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/LICENSE +0 -0
  118. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/RELEASE.md +0 -0
  119. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/ROADMAP.md +0 -0
  120. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/conftest.py +0 -0
  121. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  122. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/deploy/logrotate-pr-triage +0 -0
  123. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docker-compose.yml +0 -0
  124. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/AGENT_GUIDE.md +0 -0
  125. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/AGENT_UI_E2E.md +0 -0
  126. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/AGENT_UI_RECON.md +0 -0
  127. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/ARCHITECTURE.md +0 -0
  128. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  129. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/AUTHENTICATION.md +0 -0
  130. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/CHARACTER_RECON.md +0 -0
  131. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/DATA_LAYER.md +0 -0
  132. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/DEMOS.md +0 -0
  133. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/DEVELOPMENT.md +0 -0
  134. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/E2E_TESTING.md +0 -0
  135. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/EXTERNAL_STORAGE.md +0 -0
  136. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/GITHUB.md +0 -0
  137. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  138. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  139. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/INSTRUCTIONS.md +0 -0
  140. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  141. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  142. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  143. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  144. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  145. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  146. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  147. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  148. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  149. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  150. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  151. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  152. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  153. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  154. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  155. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  156. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  157. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  158. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  159. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  160. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  161. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  162. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  163. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  164. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  165. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  166. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  167. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  168. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  169. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  170. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  171. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  172. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  173. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  174. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  175. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  176. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  177. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  178. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  179. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  180. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  181. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  182. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  183. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  184. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  185. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  186. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  187. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  188. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  189. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  190. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  191. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  192. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  193. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  194. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  195. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  196. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  197. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  198. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  199. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  200. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  201. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  202. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  203. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  204. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  205. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/MCP.md +0 -0
  206. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/MEDIA_LIBRARY.md +0 -0
  207. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/MOVIE.md +0 -0
  208. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/PROMPT_EXPANSION.md +0 -0
  209. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  210. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/SECURITY.md +0 -0
  211. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/TOOLS.md +0 -0
  212. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/USER_GUIDE.md +0 -0
  213. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/assets/demo-split-pf.gif +0 -0
  214. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/assets/example-run.gif +0 -0
  215. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/assets/examples.webp +0 -0
  216. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/medium_tutorial.md +0 -0
  217. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/schemas/movie-handoff.schema.json +0 -0
  218. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/sonar-cleanup-tracker.md +0 -0
  219. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  220. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  221. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  222. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  223. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  224. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  225. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  226. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  227. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  228. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  229. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  230. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  231. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  232. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  233. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  234. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  235. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  236. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  237. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  238. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  239. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  240. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  241. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  242. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  243. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  244. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  245. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  246. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  247. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  248. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  249. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  250. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  251. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  252. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  253. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  254. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  255. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  256. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  257. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  258. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  259. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  260. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  261. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  262. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  263. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  264. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  265. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  266. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  267. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  268. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  269. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  270. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  271. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  272. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  273. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  274. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  275. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  276. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  277. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  278. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/eval/pr_triage_eval.py +0 -0
  279. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/eval/pr_triage_fixtures.json +0 -0
  280. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/README.md +0 -0
  281. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/batch_from_config.py +0 -0
  282. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/multi_prompt_t2i.py +0 -0
  283. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/sample_config.json +0 -0
  284. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/sample_prompts.txt +0 -0
  285. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/single_image_t2i.py +0 -0
  286. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/examples/workflow_chain.py +0 -0
  287. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/README.md +0 -0
  288. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/01_upload_image.json +0 -0
  289. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  290. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  291. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/04_archive_workflow.json +0 -0
  292. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/05_createProject.json +0 -0
  293. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/06_batchGenerateImages.json +0 -0
  294. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  295. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  296. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  297. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  298. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  299. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/12_create_scene.json +0 -0
  300. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  301. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/14_get_scene_workflows.json +0 -0
  302. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  303. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/entrypoint.sh +0 -0
  304. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  305. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  306. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/canary/register_task.ps1 +0 -0
  307. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/canary/run_canary.py +0 -0
  308. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_doc_links.py +0 -0
  309. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_materiality.py +0 -0
  310. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_release_artifacts.py +0 -0
  311. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_repo_hygiene.py +0 -0
  312. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_test_count.py +0 -0
  313. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/check_website_docs_pii.py +0 -0
  314. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/ci/generate_website_docs.py +0 -0
  315. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/debug_editor.py +0 -0
  316. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/debug_gen_settings.py +0 -0
  317. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/debug_settings.py +0 -0
  318. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/_recording_client.py +0 -0
  319. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/_spike_common.py +0 -0
  320. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/active_plan.py +0 -0
  321. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  322. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  323. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  324. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  325. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  326. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  327. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  328. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_locale_invariants.py +0 -0
  329. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  330. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_project_listing.py +0 -0
  331. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  332. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  333. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  334. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  335. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/character_create_spike.py +0 -0
  336. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/character_create_spike_v2.py +0 -0
  337. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/dump_character_selectors.js +0 -0
  338. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/incident_bundle_quality.py +0 -0
  339. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  340. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  341. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  342. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/make_project.py +0 -0
  343. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/materiality_backtest.py +0 -0
  344. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/measure_locale_probe.py +0 -0
  345. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/patch_character.py +0 -0
  346. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/skillopt/README.md +0 -0
  347. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/skillopt/harness.py +0 -0
  348. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/skillopt/tasks.json +0 -0
  349. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/sonar-local-scan.sh +0 -0
  350. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  351. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_changelog_capture.py +0 -0
  352. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  353. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  354. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  355. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  356. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  357. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  358. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  359. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_incident_live.py +0 -0
  360. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  361. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  362. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  363. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  364. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  365. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_locale_poison.py +0 -0
  366. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  367. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  368. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_model_inventory.py +0 -0
  369. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  370. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  371. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  372. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  373. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  374. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_patch_entity.py +0 -0
  375. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_patchright.py +0 -0
  376. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  377. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  378. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/verify_language_agnostic.py +0 -0
  379. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  380. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/dev/verify_model_attribution.py +0 -0
  381. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/README.md +0 -0
  382. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/capture_flow_traffic.py +0 -0
  383. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  384. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/memory_profile.py +0 -0
  385. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/recaptcha_mint.py +0 -0
  386. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  387. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  388. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  389. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/probe/run_probe.py +0 -0
  390. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/probe/spike_auth_matrix.py +0 -0
  391. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/record_demo.ps1 +0 -0
  392. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/smoke_image.py +0 -0
  393. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/smoke_video_editor.py +0 -0
  394. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/smoke_worker_style.py +0 -0
  395. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/spike_waf_camoufox.py +0 -0
  396. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/scripts/verify_chrome_auth_viability.py +0 -0
  397. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/README.md +0 -0
  398. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/changelog/SKILL.md +0 -0
  399. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/check/SKILL.md +0 -0
  400. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/doc-review/SKILL.md +0 -0
  401. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/gflow-cli/SKILL.md +0 -0
  402. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/issue-assessment/SKILL.md +0 -0
  403. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/known-issues/SKILL.md +0 -0
  404. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/live-verify/SKILL.md +0 -0
  405. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/llm-council/SKILL.md +0 -0
  406. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/plan/SKILL.md +0 -0
  407. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/pr-council-review/SKILL.md +0 -0
  408. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/predict/SKILL.md +0 -0
  409. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/release/SKILL.md +0 -0
  410. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/scenario/SKILL.md +0 -0
  411. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/sonar/SKILL.md +0 -0
  412. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/skills/status/SKILL.md +0 -0
  413. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/sonar-project.properties +0 -0
  414. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/__main__.py +0 -0
  415. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/__init__.py +0 -0
  416. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/_engine.py +0 -0
  417. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/_retry.py +0 -0
  418. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  419. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/character.py +0 -0
  420. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/dto.py +0 -0
  421. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/image.py +0 -0
  422. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/image_upscale.py +0 -0
  423. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/recaptcha.py +0 -0
  424. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/scene.py +0 -0
  425. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  426. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/_common.py +0 -0
  427. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  428. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/base.py +0 -0
  429. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  430. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  431. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  432. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  433. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  434. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  435. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  436. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  437. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  438. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  439. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  440. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/api/video.py +0 -0
  441. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/__init__.py +0 -0
  442. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/base.py +0 -0
  443. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/cookies.py +0 -0
  444. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/factory.py +0 -0
  445. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  446. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  447. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/strategies.py +0 -0
  448. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/auth/verification.py +0 -0
  449. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/browser_manager.py +0 -0
  450. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/chain.py +0 -0
  451. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/chain_manifest.py +0 -0
  452. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli.py +0 -0
  453. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_character.py +0 -0
  454. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_data.py +0 -0
  455. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_doctor.py +0 -0
  456. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_image.py +0 -0
  457. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_instructions.py +0 -0
  458. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_models.py +0 -0
  459. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_movie.py +0 -0
  460. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_project.py +0 -0
  461. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_run.py +0 -0
  462. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_scene.py +0 -0
  463. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/cli_tools.py +0 -0
  464. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/composition.py +0 -0
  465. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/config.py +0 -0
  466. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/__init__.py +0 -0
  467. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/chain_repo.py +0 -0
  468. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  469. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  470. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  471. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  472. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  473. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  474. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  475. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  476. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  477. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  478. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/queries.py +0 -0
  479. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/repository.py +0 -0
  480. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/data/store.py +0 -0
  481. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/diagnostics.py +0 -0
  482. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/exceptions.py +0 -0
  483. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/file_integrity.py +0 -0
  484. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  485. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  486. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  487. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  488. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/image_batch.py +0 -0
  489. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/json_output.py +0 -0
  490. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/__init__.py +0 -0
  491. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/prompts.py +0 -0
  492. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/resources.py +0 -0
  493. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/server.py +0 -0
  494. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/setup.py +0 -0
  495. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  496. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/mcp/tools.py +0 -0
  497. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/media.py +0 -0
  498. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/movie_manifest.py +0 -0
  499. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/observability.py +0 -0
  500. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/paths.py +0 -0
  501. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/profile_lease.py +0 -0
  502. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/profile_store.py +0 -0
  503. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/redaction.py +0 -0
  504. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/services/__init__.py +0 -0
  505. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  506. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/services/character_create.py +0 -0
  507. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/services/doctor.py +0 -0
  508. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/services/mentions.py +0 -0
  509. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/storage.py +0 -0
  510. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/__init__.py +0 -0
  511. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/banned.py +0 -0
  512. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  513. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  514. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  515. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  516. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/expander.py +0 -0
  517. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/invocation.py +0 -0
  518. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/loader.py +0 -0
  519. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/registry.py +0 -0
  520. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/runtime.py +0 -0
  521. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/tools/spec.py +0 -0
  522. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/ui/app.py +0 -0
  523. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/ui/server.py +0 -0
  524. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/update_check.py +0 -0
  525. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/winsec.py +0 -0
  526. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/worker/codec.py +0 -0
  527. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/worker/daemon.py +0 -0
  528. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/src/gflow_cli/worker/queue.py +0 -0
  529. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tasks/lessons.md +0 -0
  530. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/test_assets/sample_batch.json +0 -0
  531. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/test_assets/sample_batch.tsv +0 -0
  532. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/test_assets/sample_batch_invalid.tsv +0 -0
  533. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/__init__.py +0 -0
  534. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/__init__.py +0 -0
  535. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/fixtures/character_gen_response.json +0 -0
  536. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  537. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  538. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  539. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_bearer_redaction.py +0 -0
  540. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_character.py +0 -0
  541. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client.py +0 -0
  542. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_character.py +0 -0
  543. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_delete_characters.py +0 -0
  544. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_errors.py +0 -0
  545. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_generate_character.py +0 -0
  546. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_image.py +0 -0
  547. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_incidents.py +0 -0
  548. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_launch_kwargs.py +0 -0
  549. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_locale_cache.py +0 -0
  550. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_patch_entity.py +0 -0
  551. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_scene.py +0 -0
  552. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_client_upscale.py +0 -0
  553. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_concurrency.py +0 -0
  554. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_dto.py +0 -0
  555. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_engine.py +0 -0
  556. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_image.py +0 -0
  557. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_image_dto.py +0 -0
  558. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_image_upscale.py +0 -0
  559. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  560. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_recaptcha.py +0 -0
  561. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_retry.py +0 -0
  562. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_routes.py +0 -0
  563. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_routes_character.py +0 -0
  564. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_routes_locale.py +0 -0
  565. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_routes_scene.py +0 -0
  566. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_sapisidhash_helper.py +0 -0
  567. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_scene_models.py +0 -0
  568. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_video.py +0 -0
  569. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/test_video_request.py +0 -0
  570. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/__init__.py +0 -0
  571. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/conftest.py +0 -0
  572. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/drivers/__init__.py +0 -0
  573. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  574. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/drivers/test_classic.py +0 -0
  575. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/drivers/test_factory.py +0 -0
  576. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  577. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  578. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_base.py +0 -0
  579. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_bearer.py +0 -0
  580. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_common.py +0 -0
  581. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  582. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_factory.py +0 -0
  583. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_fingerprint.py +0 -0
  584. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_locale_navigation.py +0 -0
  585. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_mode_control.py +0 -0
  586. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  587. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_navigation_settled.py +0 -0
  588. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  589. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_policy_400.py +0 -0
  590. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_sapisidhash.py +0 -0
  591. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  592. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_transport_timeout.py +0 -0
  593. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_ui_automation.py +0 -0
  594. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  595. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  596. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  597. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  598. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/strategies/test_factory.py +0 -0
  599. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/strategies/test_strategies.py +0 -0
  600. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/test_cookies.py +0 -0
  601. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/test_real_chrome.py +0 -0
  602. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/test_verification.py +0 -0
  603. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/auth/test_windows_acl.py +0 -0
  604. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/__init__.py +0 -0
  605. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_auth_status.py +0 -0
  606. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_auth_list.py +0 -0
  607. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_character.py +0 -0
  608. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_character_create.py +0 -0
  609. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_data.py +0 -0
  610. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_data_errors.py +0 -0
  611. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  612. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_data_sync.py +0 -0
  613. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_doctor.py +0 -0
  614. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_image.py +0 -0
  615. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  616. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  617. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_image_upscale.py +0 -0
  618. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  619. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_instructions.py +0 -0
  620. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_models.py +0 -0
  621. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_movie.py +0 -0
  622. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_run.py +0 -0
  623. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_scene.py +0 -0
  624. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_tools.py +0 -0
  625. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_video.py +0 -0
  626. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_cli_video_chain.py +0 -0
  627. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_error_handling.py +0 -0
  628. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_failure_funnel.py +0 -0
  629. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_helpers.py +0 -0
  630. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_incident_output.py +0 -0
  631. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_movie_manifest.py +0 -0
  632. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  633. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_predictable_output.py +0 -0
  634. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_settings_validation.py +0 -0
  635. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  636. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/composition/test_character.py +0 -0
  637. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/composition/test_compose_prompt.py +0 -0
  638. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/composition/test_handoff.py +0 -0
  639. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/composition/test_style_variants.py +0 -0
  640. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/composition/test_style_variants_e2e.py +0 -0
  641. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/__init__.py +0 -0
  642. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_chain_repo.py +0 -0
  643. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_failure_recording.py +0 -0
  644. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_find_incomplete_character.py +0 -0
  645. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_models.py +0 -0
  646. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_null_columns_stay_null.py +0 -0
  647. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_packaging.py +0 -0
  648. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_recorder_character.py +0 -0
  649. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_repository.py +0 -0
  650. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_scene_persistence.py +0 -0
  651. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_settings_and_errors.py +0 -0
  652. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_store.py +0 -0
  653. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/data/test_store_migrations.py +0 -0
  654. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/dev/test_recording_client.py +0 -0
  655. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/__init__.py +0 -0
  656. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/conftest.py +0 -0
  657. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  658. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  659. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  660. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  661. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  662. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_chain_e2e.py +0 -0
  663. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_character_create_e2e.py +0 -0
  664. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  665. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  666. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_daemon_e2e.py +0 -0
  667. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  668. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  669. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  670. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  671. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  672. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  673. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  674. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  675. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  676. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_json_output_e2e.py +0 -0
  677. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  678. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  679. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  680. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  681. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_scene_compose_live.py +0 -0
  682. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  683. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_tools_e2e.py +0 -0
  684. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_transports_e2e.py +0 -0
  685. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  686. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  687. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  688. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/__init__.py +0 -0
  689. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/asset_tagging.feature +0 -0
  690. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/auth.feature +0 -0
  691. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/auth_login.feature +0 -0
  692. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/character_create.feature +0 -0
  693. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/character_read.feature +0 -0
  694. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/conftest.py +0 -0
  695. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/duration_tab_drift.feature +0 -0
  696. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/entity_provenance.feature +0 -0
  697. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/image.feature +0 -0
  698. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/image_batch_references.feature +0 -0
  699. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/image_upscale.feature +0 -0
  700. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/incident_diagnostics.feature +0 -0
  701. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/instructions.feature +0 -0
  702. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/locale_picker_include.feature +0 -0
  703. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/mcp_tasks.feature +0 -0
  704. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/media_picker_tiers.feature +0 -0
  705. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/output_hardening.feature +0 -0
  706. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_asset_tagging_steps.py +0 -0
  707. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_auth_login_steps.py +0 -0
  708. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_auth_steps.py +0 -0
  709. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_character_create_steps.py +0 -0
  710. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_character_read_steps.py +0 -0
  711. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_image_steps.py +0 -0
  712. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_image_upscale_steps.py +0 -0
  713. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  714. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_instructions_steps.py +0 -0
  715. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  716. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  717. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  718. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_output_hardening_steps.py +0 -0
  719. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_step_collision_guard.py +0 -0
  720. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  721. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/test_video_chain_steps.py +0 -0
  722. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/video_agent_ui.feature +0 -0
  723. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/features/video_chain.feature +0 -0
  724. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/__init__.py +0 -0
  725. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/changelog_modal_page.html +0 -0
  726. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/doctor_env.py +0 -0
  727. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  728. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/listing_payload.py +0 -0
  729. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/fixtures/seeded_catalog.py +0 -0
  730. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/__init__.py +0 -0
  731. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/test_grading.py +0 -0
  732. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/test_model.py +0 -0
  733. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/test_registry.py +0 -0
  734. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/flow_selectors/test_report.py +0 -0
  735. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/image_batch/__init__.py +0 -0
  736. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/image_batch/test_image_manifest.py +0 -0
  737. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/image_batch/test_jitter_config.py +0 -0
  738. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/image_batch/test_observability_events.py +0 -0
  739. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/__init__.py +0 -0
  740. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/conftest.py +0 -0
  741. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/constants.py +0 -0
  742. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/test_expander_gateway.py +0 -0
  743. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/test_storage_gcs.py +0 -0
  744. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/integration/test_storage_s3.py +0 -0
  745. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/__init__.py +0 -0
  746. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/conftest.py +0 -0
  747. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_auth_status_tool.py +0 -0
  748. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_error_funnel.py +0 -0
  749. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_http_transport.py +0 -0
  750. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_known_issues_resource.py +0 -0
  751. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_no_spend.py +0 -0
  752. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  753. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_resources.py +0 -0
  754. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_server.py +0 -0
  755. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_setup.py +0 -0
  756. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_stdio_transport.py +0 -0
  757. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_tasks_extension.py +0 -0
  758. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_tools_helpers.py +0 -0
  759. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_tools_instructions.py +0 -0
  760. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/mcp/test_tools_wired.py +0 -0
  761. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  762. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_canary_classify.py +0 -0
  763. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_canary_reexec.py +0 -0
  764. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  765. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_check_materiality.py +0 -0
  766. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  767. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  768. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_check_test_count.py +0 -0
  769. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  770. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_codex_plugin.py +0 -0
  771. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_generate_website_docs.py +0 -0
  772. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  773. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_materiality_backtest.py +0 -0
  774. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/scripts/test_workflow_hardening.py +0 -0
  775. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/__init__.py +0 -0
  776. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_catalog_sync.py +0 -0
  777. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_character_create_redaction.py +0 -0
  778. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_character_create_saga.py +0 -0
  779. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  780. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_doctor.py +0 -0
  781. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_media_attribution.py +0 -0
  782. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_mentions_observability.py +0 -0
  783. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_mentions_parse.py +0 -0
  784. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_mentions_resolve.py +0 -0
  785. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/services/test_resolve_and_apply.py +0 -0
  786. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/smoke/__init__.py +0 -0
  787. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  788. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/smoke/test_real_flow.py +0 -0
  789. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_auth.py +0 -0
  790. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_browser_manager.py +0 -0
  791. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_chain.py +0 -0
  792. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_chain_manifest.py +0 -0
  793. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_cli_data.py +0 -0
  794. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_cli_project.py +0 -0
  795. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_config.py +0 -0
  796. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_conftest_isolation.py +0 -0
  797. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_data_queries.py +0 -0
  798. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_bundle.py +0 -0
  799. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_events.py +0 -0
  800. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_journal.py +0 -0
  801. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_recorder.py +0 -0
  802. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_retention.py +0 -0
  803. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_diagnostics_sanitize.py +0 -0
  804. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_duration_tab_drift.py +0 -0
  805. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_entity_provenance.py +0 -0
  806. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_errors.py +0 -0
  807. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_errors_classification.py +0 -0
  808. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_image_batch_references.py +0 -0
  809. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_incident_generation_requests.py +0 -0
  810. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_json_output.py +0 -0
  811. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_marker_registry.py +0 -0
  812. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_media.py +0 -0
  813. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_observability.py +0 -0
  814. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_overlay_banner_dismissal.py +0 -0
  815. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_paths.py +0 -0
  816. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_playwright_pin.py +0 -0
  817. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_profile_lease.py +0 -0
  818. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_profile_lease_subprocess.py +0 -0
  819. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_profile_store.py +0 -0
  820. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_profile_store_locale.py +0 -0
  821. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_project_list_urls.py +0 -0
  822. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_self_documenting_errors.py +0 -0
  823. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_smoke.py +0 -0
  824. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/test_update_check.py +0 -0
  825. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/__init__.py +0 -0
  826. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_banned.py +0 -0
  827. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_expander.py +0 -0
  828. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_invocation.py +0 -0
  829. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_loader.py +0 -0
  830. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_registry.py +0 -0
  831. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_runtime.py +0 -0
  832. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/tools/test_spec.py +0 -0
  833. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/ui/test_app.py +0 -0
  834. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_codec.py +0 -0
  835. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_daemon.py +0 -0
  836. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  837. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_queue.py +0 -0
  838. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_queue_multiprocess.py +0 -0
  839. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/tests/worker/test_queue_reconciliation.py +0 -0
  840. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/ARCHITECTURE.md +0 -0
  841. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/AUTHENTICATION.md +0 -0
  842. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/DATA_LAYER.md +0 -0
  843. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/DEVELOPMENT.md +0 -0
  844. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/E2E_TESTING.md +0 -0
  845. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  846. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/INSTRUCTIONS.md +0 -0
  847. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/MCP.md +0 -0
  848. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  849. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/MOVIE.md +0 -0
  850. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  851. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/SECURITY.md +0 -0
  852. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/TOOLS.md +0 -0
  853. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/USER_GUIDE.md +0 -0
  854. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/agents.md +0 -0
  855. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/index.md +0 -0
  856. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/installation.md +0 -0
  857. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/onboarding-mockup.html +0 -0
  858. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/onboarding.md +0 -0
  859. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/docs/stylesheets/extra.css +0 -0
  860. {gflow_cli-0.62.0 → gflow_cli-0.63.0}/website/requirements.in +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.62.0",
3
+ "version": "0.63.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -0,0 +1,2 @@
1
+ # https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository
2
+ github: ffroliva
@@ -47,6 +47,6 @@ jobs:
47
47
  retention-days: 5
48
48
 
49
49
  - name: Upload to code-scanning
50
- uses: github/codeql-action/upload-sarif@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
50
+ uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
51
51
  with:
52
52
  sarif_file: results.sarif
@@ -4,12 +4,47 @@
4
4
 
5
5
  Supported tools that auto-discover this file: Cursor, Codex, Aider, Antigravity (`agy`), Jules, Devin, Windsurf, Zed, Warp, opencode, RooCode, Amp, Junie, Phoenix, GitHub Copilot, VS Code, Factory, Augment, Semgrep, Kilo Code, UiPath. Claude Code reads [CLAUDE.md](CLAUDE.md), which cross-references this file.
6
6
 
7
+ ## Skill Routing — the default workflow, not a menu
8
+
9
+ **The `/gflow:` skills ARE this project's development lifecycle.** They are not
10
+ optional tooling you may reach for; they are how work is done here. If a row below
11
+ matches your situation, load that skill **before acting** — before exploring the
12
+ codebase, before answering, before editing. A skill loaded after the work is a skill
13
+ that did not run.
14
+
15
+ | If you are about to… | Load first | Non-negotiable because |
16
+ |---|---|---|
17
+ | Touch a GitHub issue | `/gflow:issue-assessment <N>` | Read-only triage precedes any fix; classification changes what "fixing" means |
18
+ | Propose a transport, auth, selector, or schema change | `/gflow:predict <proposal>` | Five adversarial personas return GO / CAUTION / STOP before code exists |
19
+ | Start a feature | `/gflow:scenario` → `/gflow:plan` | Edge cases before tasks; tasks before code |
20
+ | Resume work / ask "where are we?" | `/gflow:status` | The current plan's next unchecked task is the answer, not your guess |
21
+ | Commit **anything** | `/gflow:check` | It is the exact CI gate; skipping it is how a format failure shipped past an 8-agent council (PR #269) |
22
+ | Open or review a PR | `/gflow:pr-council-review <N>` (or `/gflow:branch-review`) | Standing-authorized. Run it — do not ask permission first |
23
+ | Claim a generation feature works | `/gflow:live-verify` | Offline-green is never done-done on a generation path |
24
+ | Cut a release | `/gflow:release` | It hard-gates on changelog → check → live-verify → doc-review; each is a STOP |
25
+ | Audit docs before shipping | `/gflow:doc-review` | Catches same-release errors a read-through cannot |
26
+ | See a red SonarCloud check | `/gflow:sonar <N>` | The gate measures *new* code; the fix is rarely where you would look |
27
+ | Touch auth or reCAPTCHA | `/gflow:known-issues` | Known-broken surfaces have documented workarounds; rediscovering them costs days |
28
+
29
+ **Canonical bodies live in `skills/<name>/SKILL.md`** — plain Markdown, agent-agnostic
30
+ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code reads.
31
+ `.claude/commands/gflow/*.md` are thin Claude-Code wrappers that point at them.
32
+
33
+ > **This table exists because routing by memory failed.** On 2026-09-01 an agent worked
34
+ > a full session — recovering two interrupted sessions, merging five PRs — without ever
35
+ > loading this file, because `CLAUDE.md` only *asked* it to. It reached step 10 of a
36
+ > release before meeting the pipeline's own doc-review gate, and the required
37
+ > `LIVE_VERIFICATION_v0.63.0.md` had not been written despite the feature having been
38
+ > live-verified. `CLAUDE.md` now `@`-imports this file, so it is always in context. The
39
+ > table is the other half: being loaded is useless if the mapping from situation to skill
40
+ > is left to recall.
41
+
7
42
  ## Project at a glance
8
43
 
9
44
  - Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com`.
10
45
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
11
- - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `composition.py`, `config.py`, `errors.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
12
- - Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain — no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
46
+ - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
47
+ - Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
13
48
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
14
49
 
15
50
  ## Headed-browser dependency (architectural reality)
@@ -58,7 +93,7 @@ Or invoke the wrapper: `/gflow:check`.
58
93
 
59
94
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
60
95
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
61
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–31, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
96
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–35, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
62
97
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
63
98
  - **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
64
99
  - **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
@@ -97,7 +132,7 @@ All AI agents and harnesses working on `gflow-cli` follow this standard 10-phase
97
132
  | 7. Pre-Commit Quality | `/gflow:check` | The Impeccable Routine (hygiene, ruff, pyright, pytest) | All green local checks |
98
133
  | 8. Live Verification | `/gflow:live-verify` | 5-layer proof against real Flow transport | `docs/LIVE_VERIFICATION_vX.Y.Z.md` |
99
134
  | 9. PR & Issue Close | `/gflow:issue-resolve <N>` | PR, SonarCloud 0-issue gate, merge to develop | Closed GitHub issue |
100
- | 10. Release Pipeline | `/gflow:release` | Version bump, signed tag (`git tag -s`), PyPI publish | Shipped release & back-merge |
135
+ | 10. Release Pipeline | `/gflow:release` | Version bump, signed tag (`git tag -s`), PyPI publish. **Internally gates on `/gflow:changelog` → `/gflow:check` → `/gflow:live-verify` → `/gflow:doc-review`; a failure at any of them is a STOP, not a warning.** | Shipped release & back-merge |
101
136
 
102
137
  ### Pipeline Continuation Mandate
103
138
 
@@ -7,6 +7,119 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.63.0] — 2026-09-01
11
+
12
+ ### Added
13
+
14
+ - **`gflow video extend` — continue a clip past Flow's 8-second ceiling.** Veo's
15
+ extend route generates a new 8s segment seeded server-side from the source
16
+ clip, so motion and audio carry across the join instead of restarting from a
17
+ still (which is what `video chain` does, and why it needs a fade guard). Pass
18
+ one prompt per segment, or `--segments N` to reuse the last one:
19
+
20
+ ```bash
21
+ gflow video extend <media-id> "the wave recedes" --project <id>
22
+ gflow video extend <media-id> "drifts out to sea" --project <id> -n 4 -o long.mp4
23
+ ```
24
+
25
+ The result is a Flow Scene; `-o` renders it to a single mp4 through the
26
+ existing credit-free server-side concat.
27
+
28
+ > Known limitation, found in live verification: a segment carries ~7s of real
29
+ > content though Flow advertises and bills 8s, so each internal seam of a
30
+ > multi-segment render is preceded by ~1s of frozen frame and silence. Single
31
+ > segments are unaffected. Details and the open questions are in
32
+ > [KNOWN_ISSUES](KNOWN_ISSUES.md).
33
+
34
+ - **The model key is resolved per run, never hardcoded.** Flow's extend family
35
+ is tier-gated — `_ultra` variants are Advanced-only and read `UNAVAILABLE`
36
+ elsewhere — so the key comes from the account's own capability listing,
37
+ picking the cheapest orderable model exactly as Flow's own UI does. A pinned
38
+ key would 403 forever on the wrong tier.
39
+ - **Costs are shown before anything is submitted**, and a pre-flight balance
40
+ check refuses a run the balance cannot finish. `--dry-run` prints the plan
41
+ without opening a browser.
42
+ - **Serial by construction, and paced.** Segments submit one at a time with a
43
+ non-zero default jitter (`GFLOW_CLI_JITTER_RANGE`). A refusal aborts with
44
+ completed segments preserved and is never auto-retried.
45
+ - `1:1` is refused up front — Flow publishes no square extend model.
46
+
47
+ ### Fixed
48
+
49
+ - **Ctrl+C during a billed run said nothing.** `run_with_handlers` exited 130
50
+ silently, so a user who interrupted a multi-segment run could not tell whether
51
+ anything had been charged or how to resume. It now reports credits spent,
52
+ segments completed and the resume handle. Fixed at the shared boundary, so
53
+ `video chain` and `movie run` gain it too.
54
+ - **`sessionId` was not redacted.** `redact_metadata` covered `token` and
55
+ `recaptchaToken` but not `sessionId`, which the extend request carries. Not a
56
+ credential, but account-correlatable, and it would otherwise reach any logged
57
+ request body or diagnostics bundle verbatim.
58
+
59
+
60
+ - **The offline test suite could `git checkout develop` in the developer's own
61
+ clone ([#605](https://github.com/ffroliva/gflow-cli/issues/605)).** git's
62
+ repository discovery walks *up* from `cwd`, and `--basetemp=tmp/pytest` puts
63
+ every `tmp_path` inside this repository, so an autopilot test whose temp `.git`
64
+ went missing had its `git checkout develop` silently resolved against the real
65
+ working tree — moving the developer off their branch mid-run (reflog-confirmed,
66
+ Windows-only, intermittent). Two independent guards now close it:
67
+ `scripts/autopilot/pr_triage_autopilot.py` pins every git call with
68
+ `--git-dir`/`--work-tree`, so a `repo_dir` that is not a repository fails loudly,
69
+ raising with git's own `fatal: not a git repository` text rather than
70
+ retargeting whatever clone encloses it (this also
71
+ hardens the VPS triage path against a mistyped `--repo-dir`), and
72
+ `tests/conftest.py` sets `GIT_CEILING_DIRECTORIES` to pytest's basetemp so no
73
+ test can walk out of its temp dir into this repo. What removed the temp `.git`
74
+ is still unexplained — it now surfaces as a plain "not a git repository" rather
75
+ than a silent branch switch.
76
+
77
+ ## [0.62.1] — 2026-08-30
78
+
79
+ ### Fixed
80
+
81
+ - **`--model omni-flash` was unselectable after Flow renamed the picker entry
82
+ `Omni Flash` -> `Omni 1.1 Flash`
83
+ ([#604](https://github.com/ffroliva/gflow-cli/pull/604)).** Every explicit
84
+ `--model omni-flash` run failed with `VideoModelSelectionError` (exit 18) — the
85
+ fail-loud gate worked, so no credits were spent and nothing was billed to the
86
+ wrong tier, but the model could not be chosen. The selector now spans the
87
+ injected version segment, so it matches the old label, the current one, and the
88
+ next bump, while staying unique against the four `Veo 3.1 - *` tiers and
89
+ excluding any future `[Lower Priority]` Omni variant. The same
90
+ literal is fixed in `scripts/dev/spike_omni_flash_i2v_ui_recon.py`. The CLI
91
+ alias (`--model omni-flash`) and the enum value (`omni_flash`) deliberately did
92
+ not change — they are gflow's own contract for chain files, resume state, and
93
+ JSON output. Why `has-text` broke, and when *not* to widen a selector this way:
94
+ [KNOWN_ISSUES.md](KNOWN_ISSUES.md), 2026-08-30 correction.
95
+
96
+ ### Added
97
+
98
+ - **[`docs/ACCOUNT_SAFETY.md`](docs/ACCOUNT_SAFETY.md) — one honest page answering
99
+ "will this get my account flagged?"
100
+ ([#602](https://github.com/ffroliva/gflow-cli/issues/602)).** Two Reddit
101
+ commenters asked the same question from opposite directions on the same day, and
102
+ the answer existed only as fragments across README, `DISCLAIMER.md`,
103
+ `DEBUGGING § WAF cadence`, `KNOWN_ISSUES` and `CONFIGURATION` — findable if you
104
+ already knew where to look, invisible to someone deciding whether to install.
105
+ The page separates the three things people conflate (a quota limit, a per-profile
106
+ WAF block, an account ban — only the first two have ever been observed here),
107
+ states what the tool does to stay unremarkable (headed real Chrome because
108
+ headless is an instant 403, ±25% randomisation on every interaction, 0.5–1.5 s
109
+ submission pacing, one project per multi-prompt run, isolated per-account
110
+ profiles, refuse-don't-retry), what it deliberately does **not** do (no proxy
111
+ rotation, no fingerprint spoofing beyond the opt-in patched engine, no headless
112
+ unlock, no pretence that it isn't automation), the knobs worth turning, the
113
+ [#241](https://github.com/ffroliva/gflow-cli/issues/241) field data on what
114
+ actually triggered a 403, and what cannot be promised. Linked from the README
115
+ banner, `docs/INDEX.md`, and back-linked from all three deep sources; published
116
+ to the docs site under Getting started.
117
+
118
+ - Clarified in [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_jitter_range) that
119
+ `GFLOW_CLI_JITTER_RANGE` paces *submissions between prompts* and is a different
120
+ mechanism from the always-on ±25% per-interaction randomisation — the two were
121
+ easy to read as one knob.
122
+
10
123
  ## [0.62.0] — 2026-08-28
11
124
 
12
125
  ### Changed
@@ -3402,7 +3515,9 @@ shell-script template that branches on these codes.
3402
3515
 
3403
3516
  First skeleton. Not functional end-to-end yet.
3404
3517
 
3405
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.62.0...HEAD
3518
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.63.0...HEAD
3519
+ [0.63.0]: https://github.com/ffroliva/gflow-cli/compare/v0.62.1...v0.63.0
3520
+ [0.62.1]: https://github.com/ffroliva/gflow-cli/compare/v0.62.0...v0.62.1
3406
3521
  [0.62.0]: https://github.com/ffroliva/gflow-cli/compare/v0.61.0...v0.62.0
3407
3522
  [0.61.0]: https://github.com/ffroliva/gflow-cli/compare/v0.60.0...v0.61.0
3408
3523
  [0.60.0]: https://github.com/ffroliva/gflow-cli/compare/v0.59.0...v0.60.0
@@ -6,11 +6,30 @@
6
6
 
7
7
  `gflow-cli` is an unofficial Python CLI that drives [Google Flow](https://labs.google/fx/tools/flow) (Veo image-to-video, Imagen text-to-image) from the terminal by reverse-engineering Flow's private REST API. See [README.md](README.md) for the user-facing overview.
8
8
 
9
+ ## System rules — loaded, not requested
10
+
11
+ **[AGENTS.md](AGENTS.md) is imported below and is therefore already in context before
12
+ you read this line.** It is the system rule for this project: the `/gflow:` skills are
13
+ the default development lifecycle, and its Skill Routing table says which one to load
14
+ for the situation in front of you. Follow it — it is not advisory, and "I hadn't read
15
+ it yet" is not a reachable state.
16
+
17
+ > **Why an import and not a bullet that says "read AGENTS.md".** That bullet is what
18
+ > used to be here, and it failed exactly as written: an agent that skips it is not
19
+ > corrected by anything, and no gate notices. A session on 2026-09-01 went straight
20
+ > into work without it and reached step 10 of a release before discovering the
21
+ > pipeline's own doc-review and live-verification gates. `@AGENTS.md` removes the
22
+ > choice — the harness resolves the import and injects the file, with no agent
23
+ > cooperation required. Never downgrade this back to prose.
24
+
25
+ @AGENTS.md
26
+
9
27
  ## On every session start
10
28
 
11
- 1. Read **[AGENTS.md](AGENTS.md)** — universal rules every agent must follow.
12
- 2. Read **[docs/INDEX.md](docs/INDEX.md)** — routing layer for all project docs and commands.
13
- 3. Pull deeper context on demand:
29
+ 1. Read **[docs/INDEX.md](docs/INDEX.md)** — routing layer for all project docs and
30
+ commands. Deliberately *not* imported: at 36 KB it is a lookup table, not a rule set,
31
+ and AGENTS.md points into it. Read it when you need to find a doc.
32
+ 2. Pull deeper context on demand:
14
33
  - Current task / where we left off → `/gflow:status`
15
34
  - Starting a new feature → `/gflow:predict` → `/gflow:scenario` → `/gflow:plan <feature>`
16
35
  - Touching auth or reCAPTCHA → `/gflow:known-issues`
@@ -20,8 +39,15 @@
20
39
 
21
40
  ## Claude-Code-specific
22
41
 
23
- - Slash commands live under `.claude/commands/gflow/` (all prefixed `/gflow:`).
24
- - Skills under `skills/` are auto-discoverable; `gflow-cli` ships its own at [`skills/gflow-cli/SKILL.md`](skills/gflow-cli/SKILL.md).
42
+ - Slash commands live under `.claude/commands/gflow/` (all prefixed `/gflow:`). **These
43
+ are the invocable surface** — they appear in the session's skill list and may be called
44
+ with the `Skill` tool as `gflow:<name>`.
45
+ - **`skills/<name>/SKILL.md` are the canonical bodies, and are NOT `Skill`-tool-invocable.**
46
+ They are plain Markdown, agent-agnostic on purpose so Codex/Cursor/Aider can read the
47
+ same file. `Skill(skill="release")` fails with `Unknown skill: release`; each wrapper in
48
+ `.claude/commands/gflow/` says to read its `skills/<name>/SKILL.md` directly, and that is
49
+ the supported path. (This bullet previously claimed they were "auto-discoverable", which
50
+ is false and sends agents into a failing tool call.)
25
51
  - Auto-memory at `~/.claude/projects/C--development-github-gflow-cli/memory/MEMORY.md` carries cross-session feedback and project state.
26
52
  - **Worktrees:** the native `EnterWorktree` tool branches from `origin/main` (the default branch). Feature work integrates via `develop` — after entering a fresh worktree, immediately `git switch -c <type>/<name> origin/develop` and delete the auto-created `worktree-*` branch. On Windows, worktree removal can fail on a file lock (the worktree's `.venv`); `git worktree prune` + manual delete later is fine.
27
53
 
@@ -14,6 +14,58 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
14
14
 
15
15
  ## Open
16
16
 
17
+ ### A Veo extend segment is 7 seconds, not the 8 Flow advertises — so concat pads a frozen second
18
+
19
+ - **Status:** Open · **Severity:** Medium (audible/visible on every internal seam of a chained extend) · **Affected:** `gflow video extend -n >1` with `-o`, and any scene mixing extend segments
20
+ - **Discovered:** 2026-09-01, by live verification of the extend feature. Offline tests could not have found it.
21
+
22
+ **What happens.** `gflow video extend ... -n 2 -o out.mp4` produces a file whose
23
+ audio drops to digital silence (−91 dB) for exactly one second before each
24
+ internal seam, over a **frozen video frame**. The seam itself is clean; the dead
25
+ second sits immediately before it.
26
+
27
+ **Measured.** In a 3-clip render (original + 2 extensions), per-second mean volume:
28
+
29
+ ```
30
+ 7s -28.8 8s -26.4 <- original -> extension seam: continuous
31
+ 14s -29.1 15s -75.1 16s -33.9 <- extension -> extension seam: 1s dropout
32
+ ```
33
+
34
+ Finer slices put the silence at 15.00–15.99s exactly. Reproduced independently on
35
+ a second render made days earlier from different prompts (14s −22.4, **15s −70.1**,
36
+ 16s −23.9), so it is systematic, not a one-off.
37
+
38
+ **Root cause.** The extension media is **7.000000 seconds** — both video and audio
39
+ streams, confirmed by `ffprobe` on the downloaded clip. But:
40
+
41
+ - the capability listing advertises `videoLengthSeconds: 8` for
42
+ `veo_3_1_extension_lite`, and
43
+ - `getSceneWorkflows` reports `total_duration=8.0`, `end=8.0` for that clip.
44
+
45
+ `ConcatInput` passes those metadata values through verbatim, so Flow's
46
+ server-side concat stretches a 7s clip into an 8s slot by holding the last frame
47
+ and muting. The final segment escapes it only because the render ends before its
48
+ padding (23.02s for 3 clips, not 24s).
49
+
50
+ **Why it matters more than it looks.** A freeze-hold is the specific failure the
51
+ Compiled Growth parable runbook forbids — *"NEVER pad by freeze-holding a frame —
52
+ reads as 'video stuck'"* — and that pipeline is the named consumer for extend.
53
+ An N-segment chain has N−1 of these.
54
+
55
+ **Not yet established** (do not fix on a guess):
56
+
57
+ - whether 7.0s is constant across extend models, aspects and tiers, or specific
58
+ to `veo_3_1_extension_lite`;
59
+ - whether Flow's own UI renders the same padding (i.e. whether this is our
60
+ concat inputs or Flow's behaviour end-to-end);
61
+ - whether any API field reports the real media duration, which is what a clean
62
+ fix needs — clamping `ConcatInput.end` to a hardcoded 7.0 would be a guess
63
+ dressed as a fix.
64
+
65
+ **Workaround today.** Render without `-o` and trim in post, or accept the
66
+ freeze-hold. Single-segment extends are unaffected.
67
+
68
+
17
69
  ### An out-of-range Playwright silently wedges video generation
18
70
 
19
71
  - **Status:** Mitigated (v0.49.0 — upper-bounded dependency + fail-fast watchdog)
@@ -644,6 +696,12 @@ batch — so it is not a global incompatibility but a per-profile WAF state.
644
696
  or `GFLOW_CLI_JITTER_RANGE` (#241); cadence guidance in
645
697
  [DEBUGGING § WAF cadence](docs/DEBUGGING.md#waf-cadence).
646
698
 
699
+ > **What this means for your account:** a 403 is a *per-profile* WAF score, not an
700
+ > account ban — the same account on a different profile has succeeded the same day.
701
+ > The full picture (what the tool does to stay unremarkable, what it deliberately
702
+ > does not do, and what we cannot promise) is in
703
+ > [docs/ACCOUNT_SAFETY.md](docs/ACCOUNT_SAFETY.md).
704
+
647
705
  **Tracked separately from** the architectural ["first-attempt listener-miss
648
706
  flake"](https://github.com/ffroliva/gflow-cli/pull/40) — that one was caused
649
707
  by editor mode confusion and is resolved by PR #40. WAF 403 is a fresh, distinct
@@ -664,6 +722,34 @@ issue and not blocked by any code change in this repo.
664
722
  Playwright kwarg (persists across all in-session navigations). Full resolution
665
723
  gate: live e2e with `gflow image t2i` (each model) on a non-EN Chrome profile.
666
724
 
725
+ **2026-08-30 correction — locale-stable is not version-stable.** The claim
726
+ above that branded product names are safe anchors holds for *translation* and
727
+ nothing else. Flow renamed the video tier `Omni Flash` to `Omni 1.1 Flash`,
728
+ and because Playwright's `has-text` is a CONTIGUOUS substring match, a version
729
+ number inserted mid-label dropped `has-text('Omni Flash')` to zero matches.
730
+ Every explicit `--model omni-flash` run then failed loud with
731
+ `VideoModelSelectionError` (exit 18, no credits spent) — the fail-loud gate
732
+ worked exactly as designed, but the model was unusable until the selector was
733
+ fixed. `VIDEO_MODEL_OPTION_SELECTORS[OMNI_FLASH]` now uses two ANDed
734
+ `has-text` clauses (`'Omni'` + `'Flash'`) that span the version segment, plus
735
+ the `:not(:has-text('[Lower Priority]'))` exclusion its `VEO_3_1_LITE` sibling
736
+ already carries — without it an 'Omni 1.1 Flash [Lower Priority]' tier would
737
+ match two menuitems and put the model straight back at exit 18.
738
+ `tests/flow_selectors/test_model_governance.py` grades it against BOTH labels
739
+ Flow has shipped plus a no-collision check against the four `Veo 3.1 - *`
740
+ tiers. The rule this generalises to is NOT a blanket "always match tokens" —
741
+ it depends on whether gflow's own identifier pins the version. `omni_flash`
742
+ carries no version, so the `1.1` in Flow's label is noise and the anchor must
743
+ span it. The four `Veo 3.1 - *` selectors deliberately keep the contiguous
744
+ version, because `VEO_3_1_FAST = "veo_3_1_fast"` makes `3.1` part of the
745
+ model's identity there: if Flow replaces that tier with a `Veo 3.2`, a loud
746
+ MISS is the CORRECT outcome, and widening those anchors to
747
+ `has-text('Veo'):has-text('Fast')`-style token pairs would silently bind
748
+ `--model veo-fast` to a different tier at a different credit price. Ask which
749
+ of the two shapes you have before widening. The CLI alias (`--model omni-flash`) and the enum value
750
+ (`omni_flash`) are gflow's own identifiers and deliberately did NOT change —
751
+ they are a stable contract for chain files, resume state, and JSON output.
752
+
667
753
  **2026-06-12 correction (issue #170):** the "all selector groups" claim above
668
754
  had two stragglers — `PICKER_INCLUDE_BUTTON` and `PICKER_CONTEXT_INCLUDE`
669
755
  hardcoded the pt-BR caption "Incluir no comando", breaking
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.62.0
3
+ Version: 0.63.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -58,7 +58,7 @@ Requires-Dist: numpy>=1.24; extra == 'dev'
58
58
  Requires-Dist: pyright>=1.1.0; extra == 'dev'
59
59
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
60
60
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
61
- Requires-Dist: ruff==0.16.4; extra == 'dev'
61
+ Requires-Dist: ruff==0.16.5; extra == 'dev'
62
62
  Provides-Extra: gcs
63
63
  Requires-Dist: gcsfs>=2024.2.0; extra == 'gcs'
64
64
  Requires-Dist: universal-pathlib>=0.2.5; extra == 'gcs'
@@ -83,10 +83,13 @@ Description-Content-Type: text/markdown
83
83
  [![Type checked: pyright](https://img.shields.io/badge/type%20checked-pyright-blue.svg)](https://github.com/microsoft/pyright)
84
84
  [![Tests: TDD](https://img.shields.io/badge/tests-TDD-brightgreen.svg)](CONTRIBUTING.md)
85
85
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
86
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=coverage)](https://sonarcloud.io/component_measures?id=ffroliva_gflow-cli&metric=coverage)
86
87
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ffroliva/gflow-cli/badge)](https://scorecard.dev/viewer/?uri=github.com/ffroliva/gflow-cli)
87
88
 
88
89
  > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
89
90
  >
91
+ > 🛡️ **"Will this get my account flagged?"** The honest, specific answer — what the tool does to stay unremarkable (headed real Chrome, randomised interaction timing, paced submissions), what it deliberately does **not** do (no proxies, no fingerprint spoofing, no pretending it isn't automation), what you can tune, and what we cannot promise — is in [docs/ACCOUNT_SAFETY.md](docs/ACCOUNT_SAFETY.md).
92
+ >
90
93
  > 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
91
94
  >
92
95
  > 🌐 **Headed browser today.** gflow drives Flow through a persistent Playwright Chromium profile, because Google's auth and reCAPTCHA gates require it. The [Architecture](#architecture--current-limitations) section shows where you can help.
@@ -95,7 +98,7 @@ Description-Content-Type: text/markdown
95
98
 
96
99
  You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
97
100
 
98
- - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
101
+ - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today, and `gflow video extend` continues an existing clip past Flow's 8s ceiling.
99
102
  - **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
100
103
  - **Prompt tools.** `--tool creative-director` rewrites a terse prompt into a vivid one (Google's 5-component formula) before generating — on any command. Bring your own with [My Tools](docs/TOOLS.md).
101
104
  - **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
@@ -197,7 +200,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
197
200
 
198
201
  ## Project status
199
202
 
200
- **Alpha.** Image (t2i, i2i, upload, upscale, batch) and video (t2v, i2v, r2v, chain) run end-to-end on `ui_automation`, with a 5-model Veo picker plus `--duration` and `--count`. Beyond single generations: `gflow movie` renders multi-scene manifests, `gflow instructions` manages persistent Agent-Mode brief cards (credits-free), `gflow character` handles reusable subjects, `gflow scene` does credit-free server-side stitching, `--tool` applies prompt-rewriting tools, and an MCP server (`gflow mcp run` stdio / `gflow serve` HTTP-SSE) exposes the core surface to AI agents with a CI-enforced CLI↔MCP parity contract.
203
+ **Alpha.** Image (t2i, i2i, upload, upscale, batch) and video (t2v, i2v, r2v, chain, extend) run end-to-end on `ui_automation`, with a 5-model Veo picker plus `--duration` and `--count`. Beyond single generations: `gflow movie` renders multi-scene manifests, `gflow instructions` manages persistent Agent-Mode brief cards (credits-free), `gflow character` handles reusable subjects, `gflow scene` does credit-free server-side stitching, `--tool` applies prompt-rewriting tools, and an MCP server (`gflow mcp run` stdio / `gflow serve` Streamable HTTP) exposes the core surface to AI agents with a CI-enforced CLI↔MCP parity contract.
201
204
 
202
205
  Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project is heading: [ROADMAP.md](ROADMAP.md).
203
206
 
@@ -224,4 +227,11 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
224
227
  [![GitHub repo size](https://img.shields.io/github/repo-size/ffroliva/gflow-cli?cacheSeconds=3600)](https://github.com/ffroliva/gflow-cli)
225
228
  [![PyPI downloads](https://static.pepy.tech/badge/gflow-cli/month)](https://pepy.tech/project/gflow-cli)
226
229
 
230
+ ### Star history
231
+
232
+ <picture>
233
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=ffroliva/gflow-cli&type=date&theme=dark&legend=top-left" />
234
+ <img alt="Star history chart for ffroliva/gflow-cli" src="https://api.star-history.com/chart?repos=ffroliva/gflow-cli&type=date&legend=top-left" />
235
+ </picture>
236
+
227
237
  If `gflow-cli` saves you time, please ⭐ the repo. It is the cheapest way to support the project.
@@ -716,7 +716,7 @@ Today the CLI writes media to `$GFLOW_CLI_OUTPUT_DIR` on the local filesystem. P
716
716
  | 11 | LF-only line endings via `.gitattributes` | Single repo source of truth; cross-platform contributors don't think about it |
717
717
  | 12 | `Provider` indirection (legacy `providers/`) removed | Superseded by `api.FlowApiClient`. Re-introduce when we add `OfficialVeoProvider` (planned v0.5+) |
718
718
  | 13 | CDP attach / stealth-engine alternatives deferred; **current stealth fix confirmed sufficient 2026-07-09** | Gate met: a 20-gen live baseline through the default stealth stack showed a **0.0% WAF 403 rate**, so the "confirm insufficient before implementing" bar is unmet — CDP-Attach and the Camoufox engine stay parked (Camoufox roadmap closed at Phase 2). Evidence: [superpowers/spikes/2026-07-09-camoufox-waf-403.md](superpowers/spikes/2026-07-09-camoufox-waf-403.md). |
719
- | 14 | HTTP status path (`get_video_status`) retired alongside `generate_video` | It is the same 401-dead path and would collide with the new `api/video.py:VideoStatus` value object — retiring both together keeps the domain clean. |
719
+ | 14 | HTTP status path (`get_video_status`) retired alongside `generate_video` | It is the same 401-dead path and would collide with the new `api/video.py:VideoStatus` value object — retiring both together keeps the domain clean. **Scope note 2026-08-31:** "401-dead" was measured on `batchAsyncGenerateVideoText` in 2026-05 and has NOT been re-tested. It is not a property of `/v1/video:*` as a family — `batchAsyncGenerateVideoExtendVideo` returned **200** from our own transport with our own minted token on 2026-08-31 ([spike](docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md)). Do not cite this ADR as evidence that a direct-wire video route cannot work; re-measure the specific route. |
720
720
 
721
721
  ---
722
722
 
@@ -12,10 +12,13 @@
12
12
  [![Type checked: pyright](https://img.shields.io/badge/type%20checked-pyright-blue.svg)](https://github.com/microsoft/pyright)
13
13
  [![Tests: TDD](https://img.shields.io/badge/tests-TDD-brightgreen.svg)](CONTRIBUTING.md)
14
14
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
15
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=coverage)](https://sonarcloud.io/component_measures?id=ffroliva_gflow-cli&metric=coverage)
15
16
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ffroliva/gflow-cli/badge)](https://scorecard.dev/viewer/?uri=github.com/ffroliva/gflow-cli)
16
17
 
17
18
  > ⚠️ **Read this before you install.** gflow-cli is **unofficial, alpha, and reverse-engineered — not affiliated with Google**. It drives a headed browser on *your own* Google Flow session, so treat it as your own account risk: automation is subject to Google's ToS, and endpoints or UI can change without notice. It works with **any Google account** that has Flow access, and every generation bills against your account's Flow credit allowance. Read the full [DISCLAIMER](DISCLAIMER.md).
18
19
  >
20
+ > 🛡️ **"Will this get my account flagged?"** The honest, specific answer — what the tool does to stay unremarkable (headed real Chrome, randomised interaction timing, paced submissions), what it deliberately does **not** do (no proxies, no fingerprint spoofing, no pretending it isn't automation), what you can tune, and what we cannot promise — is in [docs/ACCOUNT_SAFETY.md](docs/ACCOUNT_SAFETY.md).
21
+ >
19
22
  > 💳 **What failure costs you.** Credits are only spent on Veo *video* generation — images and composition ops are free, so most breakage costs nothing. When Flow's UI drifts mid-run, the CLI fails fast and loudly with distinct exit codes (e.g. selector drift = exit 23) instead of resubmitting, and batch items are recorded locally *before* submission so a broken run never silently burns credits on a stale state. See [KNOWN_ISSUES](KNOWN_ISSUES.md) for the current risk list.
20
23
  >
21
24
  > 🌐 **Headed browser today.** gflow drives Flow through a persistent Playwright Chromium profile, because Google's auth and reCAPTCHA gates require it. The [Architecture](#architecture--current-limitations) section shows where you can help.
@@ -24,7 +27,7 @@
24
27
 
25
28
  You have a Google account with Flow access, you have Veo credits, and you run real batch work. gflow-cli gives you:
26
29
 
27
- - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today.
30
+ - **Batch generation.** Loop prompts straight from the shell: `for p in $(cat prompts.txt); do gflow image t2i "$p"; done`. Image batching plus `gflow video t2v` / `i2v` / `r2v` all ship today, and `gflow video extend` continues an existing clip past Flow's 8s ceiling.
28
31
  - **Consistent subjects.** `gflow character create` mints a Flow Character (face and body reference) so the same person appears from one generation to the next.
29
32
  - **Prompt tools.** `--tool creative-director` rewrites a terse prompt into a vivid one (Google's 5-component formula) before generating — on any command. Bring your own with [My Tools](docs/TOOLS.md).
30
33
  - **Pipelines.** Wire Veo into your content automation, AI-video stack, or batch experiments.
@@ -126,7 +129,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
126
129
 
127
130
  ## Project status
128
131
 
129
- **Alpha.** Image (t2i, i2i, upload, upscale, batch) and video (t2v, i2v, r2v, chain) run end-to-end on `ui_automation`, with a 5-model Veo picker plus `--duration` and `--count`. Beyond single generations: `gflow movie` renders multi-scene manifests, `gflow instructions` manages persistent Agent-Mode brief cards (credits-free), `gflow character` handles reusable subjects, `gflow scene` does credit-free server-side stitching, `--tool` applies prompt-rewriting tools, and an MCP server (`gflow mcp run` stdio / `gflow serve` HTTP-SSE) exposes the core surface to AI agents with a CI-enforced CLI↔MCP parity contract.
132
+ **Alpha.** Image (t2i, i2i, upload, upscale, batch) and video (t2v, i2v, r2v, chain, extend) run end-to-end on `ui_automation`, with a 5-model Veo picker plus `--duration` and `--count`. Beyond single generations: `gflow movie` renders multi-scene manifests, `gflow instructions` manages persistent Agent-Mode brief cards (credits-free), `gflow character` handles reusable subjects, `gflow scene` does credit-free server-side stitching, `--tool` applies prompt-rewriting tools, and an MCP server (`gflow mcp run` stdio / `gflow serve` Streamable HTTP) exposes the core surface to AI agents with a CI-enforced CLI↔MCP parity contract.
130
133
 
131
134
  Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project is heading: [ROADMAP.md](ROADMAP.md).
132
135
 
@@ -153,4 +156,11 @@ Full milestone history lives in [CHANGELOG.md](CHANGELOG.md). Where the project
153
156
  [![GitHub repo size](https://img.shields.io/github/repo-size/ffroliva/gflow-cli?cacheSeconds=3600)](https://github.com/ffroliva/gflow-cli)
154
157
  [![PyPI downloads](https://static.pepy.tech/badge/gflow-cli/month)](https://pepy.tech/project/gflow-cli)
155
158
 
159
+ ### Star history
160
+
161
+ <picture>
162
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=ffroliva/gflow-cli&type=date&theme=dark&legend=top-left" />
163
+ <img alt="Star history chart for ffroliva/gflow-cli" src="https://api.star-history.com/chart?repos=ffroliva/gflow-cli&type=date&legend=top-left" />
164
+ </picture>
165
+
156
166
  If `gflow-cli` saves you time, please ⭐ the repo. It is the cheapest way to support the project.