gflow-cli 0.67.0__tar.gz → 0.69.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 (982) hide show
  1. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.env.template +6 -4
  3. gflow_cli-0.69.0/.github/PULL_REQUEST_TEMPLATE.md +36 -0
  4. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/AGENTS.md +13 -10
  5. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/CHANGELOG.md +189 -1
  6. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/CLAUDE.md +1 -1
  7. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/CONTRIBUTING.md +77 -5
  8. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/KNOWN_ISSUES.md +24 -8
  9. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/PKG-INFO +6 -2
  10. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/README.md +5 -1
  11. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/RELEASE.md +7 -2
  12. {gflow_cli-0.67.0/website → gflow_cli-0.69.0}/docs/ARCHITECTURE.md +3 -2
  13. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/AUTHENTICATION.md +1 -1
  14. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/CONFIGURATION.md +6 -5
  15. {gflow_cli-0.67.0/website → gflow_cli-0.69.0}/docs/DEVELOPMENT.md +9 -2
  16. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/INDEX.md +10 -7
  17. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.67.0.md +5 -2
  18. gflow_cli-0.69.0/docs/LIVE_VERIFICATION_v0.68.0.md +140 -0
  19. gflow_cli-0.69.0/docs/LIVE_VERIFICATION_v0.69.0.md +168 -0
  20. {gflow_cli-0.67.0/website → gflow_cli-0.69.0}/docs/MCP.md +3 -2
  21. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/PROJECT_STATUS.md +99 -0
  22. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/USAGE.md +110 -9
  23. {gflow_cli-0.67.0/website → gflow_cli-0.69.0}/docs/USER_GUIDE.md +23 -9
  24. gflow_cli-0.69.0/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +49 -0
  25. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +15 -2
  26. gflow_cli-0.69.0/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +84 -0
  27. gflow_cli-0.69.0/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +109 -0
  28. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +21 -1
  29. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/video-model-capability-matrix.md +46 -5
  30. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/windows-dev-quirks.md +1 -1
  31. gflow_cli-0.69.0/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +47 -0
  32. gflow_cli-0.69.0/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +61 -0
  33. gflow_cli-0.69.0/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +145 -0
  34. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/llms.txt +6 -2
  35. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/pyproject.toml +3 -1
  36. gflow_cli-0.69.0/scripts/dev/capture_migrated_model_menu.py +198 -0
  37. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/skillopt/README.md +25 -8
  38. gflow_cli-0.69.0/scripts/dev/skillopt/harness.py +410 -0
  39. gflow_cli-0.69.0/scripts/dev/spike_migrated_frames_attach.py +567 -0
  40. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/README.md +1 -0
  41. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/gflow-cli/SKILL.md +9 -2
  42. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/live-verify/SKILL.md +8 -2
  43. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/pr-council-review/SKILL.md +13 -2
  44. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/release/SKILL.md +75 -6
  45. gflow_cli-0.69.0/skills/video-production/SKILL.md +224 -0
  46. gflow_cli-0.69.0/skills/video-production/clip_qa.py +321 -0
  47. gflow_cli-0.69.0/skills/video-production/composition.md +171 -0
  48. gflow_cli-0.69.0/skills/video-production/consistency.md +154 -0
  49. gflow_cli-0.69.0/skills/video-production/failure-modes.md +76 -0
  50. gflow_cli-0.69.0/skills/video-production/tasks.json +498 -0
  51. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/__init__.py +1 -1
  52. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/client.py +58 -23
  53. gflow_cli-0.69.0/src/gflow_cli/api/credits.py +116 -0
  54. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/dto.py +47 -0
  55. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/routes.py +5 -0
  56. gflow_cli-0.69.0/src/gflow_cli/api/transports/migrated_composer.py +1154 -0
  57. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/verification.py +32 -18
  58. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli.py +37 -2
  59. gflow_cli-0.69.0/src/gflow_cli/cli_credits.py +86 -0
  60. gflow_cli-0.69.0/src/gflow_cli/cli_update.py +78 -0
  61. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/config.py +3 -2
  62. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/errors.py +2 -1
  63. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/tools.py +35 -3
  64. gflow_cli-0.69.0/src/gflow_cli/services/credits.py +111 -0
  65. gflow_cli-0.69.0/src/gflow_cli/update_check.py +335 -0
  66. gflow_cli-0.69.0/tests/api/test_client_migrated_mint.py +62 -0
  67. gflow_cli-0.69.0/tests/api/test_credits.py +51 -0
  68. gflow_cli-0.69.0/tests/api/test_credits_http.py +194 -0
  69. gflow_cli-0.69.0/tests/api/transports/test_migrated_composer.py +1549 -0
  70. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_migrated_dispatch.py +106 -2
  71. gflow_cli-0.69.0/tests/cli/test_cli_credits.py +116 -0
  72. gflow_cli-0.69.0/tests/e2e/test_credits_e2e.py +31 -0
  73. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_migrated_host_e2e.py +39 -0
  74. gflow_cli-0.69.0/tests/e2e/test_migrated_i2v_e2e.py +201 -0
  75. gflow_cli-0.69.0/tests/features/credits.feature +16 -0
  76. gflow_cli-0.69.0/tests/features/migrated_i2v.feature +42 -0
  77. gflow_cli-0.69.0/tests/features/test_credits_steps.py +79 -0
  78. gflow_cli-0.69.0/tests/features/test_migrated_i2v_steps.py +274 -0
  79. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_cli_parity.py +8 -0
  80. gflow_cli-0.69.0/tests/mcp/test_credits_tool.py +43 -0
  81. gflow_cli-0.69.0/tests/mcp/test_migrated_i2v_parity.py +58 -0
  82. gflow_cli-0.69.0/tests/scripts/test_skillopt_scoring.py +144 -0
  83. gflow_cli-0.69.0/tests/services/test_credits.py +183 -0
  84. gflow_cli-0.69.0/tests/test_cli_update.py +145 -0
  85. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_documentation_gate.py +24 -0
  86. gflow_cli-0.69.0/tests/test_update_check.py +522 -0
  87. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/uv.lock +1 -1
  88. {gflow_cli-0.67.0 → gflow_cli-0.69.0/website}/docs/ARCHITECTURE.md +3 -2
  89. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/AUTHENTICATION.md +1 -1
  90. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/CONFIGURATION.md +6 -5
  91. {gflow_cli-0.67.0 → gflow_cli-0.69.0/website}/docs/DEVELOPMENT.md +9 -2
  92. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/KNOWN_ISSUES.md +24 -8
  93. {gflow_cli-0.67.0 → gflow_cli-0.69.0/website}/docs/MCP.md +3 -2
  94. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/USAGE.md +110 -9
  95. {gflow_cli-0.67.0 → gflow_cli-0.69.0/website}/docs/USER_GUIDE.md +23 -9
  96. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/installation.md +6 -1
  97. gflow_cli-0.67.0/.github/PULL_REQUEST_TEMPLATE.md +0 -22
  98. gflow_cli-0.67.0/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -58
  99. gflow_cli-0.67.0/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -46
  100. gflow_cli-0.67.0/scripts/dev/skillopt/harness.py +0 -365
  101. gflow_cli-0.67.0/src/gflow_cli/api/transports/migrated_composer.py +0 -581
  102. gflow_cli-0.67.0/src/gflow_cli/update_check.py +0 -151
  103. gflow_cli-0.67.0/tests/api/transports/test_migrated_composer.py +0 -762
  104. gflow_cli-0.67.0/tests/test_update_check.py +0 -266
  105. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.agents/plugins/marketplace.json +0 -0
  106. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/README.md +0 -0
  107. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/active.md +0 -0
  108. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/branch-review.md +0 -0
  109. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/changelog.md +0 -0
  110. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/check.md +0 -0
  111. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/doc-review.md +0 -0
  112. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  113. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  114. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/known-issues.md +0 -0
  115. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/live-verify.md +0 -0
  116. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/llm-council.md +0 -0
  117. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/next.md +0 -0
  118. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/plan.md +0 -0
  119. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  120. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/predict.md +0 -0
  121. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/release.md +0 -0
  122. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/scenario.md +0 -0
  123. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/sonar.md +0 -0
  124. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.claude/commands/gflow/status.md +0 -0
  125. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.gitattributes +0 -0
  126. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/CODEOWNERS +0 -0
  127. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/FUNDING.yml +0 -0
  128. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/copilot-instructions.md +0 -0
  129. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/dependabot.yml +0 -0
  130. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/ci.yml +0 -0
  131. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/deps-watch.yml +0 -0
  132. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/external-pr-triage.yml +0 -0
  133. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/governance-advisory.yml +0 -0
  134. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/governance-benchmark.yml +0 -0
  135. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/labels.yml +0 -0
  136. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/main-base-guard.yml +0 -0
  137. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/pages.yml +0 -0
  138. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/release.yml +0 -0
  139. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/scorecard.yml +0 -0
  140. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/selector-probe.yml +0 -0
  141. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.github/workflows/star-history-watch.yml +0 -0
  142. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.gitignore +0 -0
  143. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.gitleaks.toml +0 -0
  144. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.pre-commit-config.yaml +0 -0
  145. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/.secrets.baseline +0 -0
  146. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/CONFIGURATION.md +0 -0
  147. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/DISCLAIMER.md +0 -0
  148. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/LICENSE +0 -0
  149. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/PLAN.md +0 -0
  150. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/ROADMAP.md +0 -0
  151. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/conftest.py +0 -0
  152. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  153. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/deploy/logrotate-pr-triage +0 -0
  154. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docker-compose.yml +0 -0
  155. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/ACCOUNT_SAFETY.md +0 -0
  156. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/AGENT_GUIDE.md +0 -0
  157. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/AGENT_UI_E2E.md +0 -0
  158. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/AGENT_UI_RECON.md +0 -0
  159. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  160. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/CHARACTER.md +0 -0
  161. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/CHARACTER_RECON.md +0 -0
  162. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/DATA_LAYER.md +0 -0
  163. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/DEBUGGING.md +0 -0
  164. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/DEMOS.md +0 -0
  165. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/E2E_TESTING.md +0 -0
  166. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/EXTERNAL_STORAGE.md +0 -0
  167. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/GITHUB.md +0 -0
  168. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  169. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  170. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/INSTRUCTIONS.md +0 -0
  171. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  172. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  173. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  174. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  175. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  176. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  177. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  178. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  179. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  180. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  181. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  182. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  183. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  184. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  185. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  186. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  187. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  188. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  189. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  190. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  191. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  192. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  193. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  194. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  195. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  196. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  197. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  198. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  199. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  200. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  201. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  202. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  203. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  204. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  205. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  206. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  207. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  208. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  209. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  210. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  211. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  212. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  213. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  214. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  215. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  216. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  217. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  218. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  219. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  220. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  221. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  222. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  223. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  224. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  225. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  226. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  227. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  228. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  229. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  230. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  231. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  232. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  233. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  234. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  235. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  236. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  237. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  238. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  239. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  240. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  241. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  242. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  243. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  244. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  245. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/MEDIA_LIBRARY.md +0 -0
  246. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/MOVIE.md +0 -0
  247. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/PROMPT_EXPANSION.md +0 -0
  248. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  249. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/SECURITY.md +0 -0
  250. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/TOOLS.md +0 -0
  251. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/assets/demo-split-pf.gif +0 -0
  252. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/assets/example-run.gif +0 -0
  253. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/assets/examples.webp +0 -0
  254. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/medium_tutorial.md +0 -0
  255. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/schemas/movie-handoff.schema.json +0 -0
  256. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/sonar-cleanup-tracker.md +0 -0
  257. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/README.md +0 -0
  258. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  259. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  260. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  261. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  262. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  263. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  264. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  265. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  266. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  267. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  268. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  269. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  270. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  271. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  272. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  273. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  274. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  275. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  276. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  277. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  278. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  279. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  280. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  281. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  282. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  283. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  284. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  285. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/release-signing.md +0 -0
  286. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  287. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  288. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  289. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  290. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  291. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  292. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  293. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  294. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  295. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  296. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  297. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  298. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  299. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  300. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  301. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  302. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  303. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  304. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  305. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  306. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  307. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  308. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  309. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  310. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  311. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  312. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  313. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  314. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  315. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  316. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  317. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  318. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  319. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  320. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  321. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  322. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  323. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  324. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  325. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  326. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  327. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  328. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  329. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  330. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  331. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  332. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  333. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  334. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  335. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  336. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  337. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  338. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  339. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  340. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  341. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  342. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  343. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  344. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  345. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  346. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  347. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  348. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  349. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  350. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  351. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  352. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  353. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  354. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  355. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  356. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  357. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  358. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  359. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  360. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  361. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/eval/pr_triage_eval.py +0 -0
  362. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/eval/pr_triage_fixtures.json +0 -0
  363. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/README.md +0 -0
  364. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/batch_from_config.py +0 -0
  365. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/multi_prompt_t2i.py +0 -0
  366. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/sample_config.json +0 -0
  367. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/sample_prompts.txt +0 -0
  368. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/single_image_t2i.py +0 -0
  369. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/examples/workflow_chain.py +0 -0
  370. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/index.html +0 -0
  371. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/README.md +0 -0
  372. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/01_upload_image.json +0 -0
  373. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  374. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  375. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/04_archive_workflow.json +0 -0
  376. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/05_createProject.json +0 -0
  377. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/06_batchGenerateImages.json +0 -0
  378. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  379. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  380. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  381. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  382. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  383. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/12_create_scene.json +0 -0
  384. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  385. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/14_get_scene_workflows.json +0 -0
  386. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  387. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/Dockerfile.triage +0 -0
  388. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/entrypoint.sh +0 -0
  389. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/package-lock.json +0 -0
  390. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/package.json +0 -0
  391. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  392. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  393. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  394. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/canary/register_task.ps1 +0 -0
  395. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/canary/run_canary.py +0 -0
  396. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_council_memory.py +0 -0
  397. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_doc_links.py +0 -0
  398. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_materiality.py +0 -0
  399. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_release_artifacts.py +0 -0
  400. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_repo_hygiene.py +0 -0
  401. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_test_count.py +0 -0
  402. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/check_website_docs_pii.py +0 -0
  403. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/ci/generate_website_docs.py +0 -0
  404. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/debug_editor.py +0 -0
  405. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/debug_gen_settings.py +0 -0
  406. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/debug_settings.py +0 -0
  407. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/_recording_client.py +0 -0
  408. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/_spike_common.py +0 -0
  409. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/active_plan.py +0 -0
  410. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  411. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  412. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  413. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  414. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  415. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  416. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  417. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_locale_invariants.py +0 -0
  418. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  419. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_project_listing.py +0 -0
  420. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  421. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  422. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  423. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  424. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/character_create_spike.py +0 -0
  425. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/character_create_spike_v2.py +0 -0
  426. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/dump_character_selectors.js +0 -0
  427. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/incident_bundle_quality.py +0 -0
  428. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  429. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  430. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  431. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/make_project.py +0 -0
  432. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/materiality_backtest.py +0 -0
  433. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  434. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/measure_locale_probe.py +0 -0
  435. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  436. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/patch_character.py +0 -0
  437. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/skillopt/tasks.json +0 -0
  438. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/sonar-local-scan.sh +0 -0
  439. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  440. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_changelog_capture.py +0 -0
  441. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  442. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  443. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  444. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  445. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  446. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  447. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  448. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  449. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  450. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  451. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  452. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  453. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_incident_live.py +0 -0
  454. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  455. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  456. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  457. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  458. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  459. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_locale_poison.py +0 -0
  460. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  461. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  462. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  463. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  464. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  465. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  466. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  467. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_model_inventory.py +0 -0
  468. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  469. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  470. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  471. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  472. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  473. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  474. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_patch_entity.py +0 -0
  475. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_patchright.py +0 -0
  476. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  477. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  478. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  479. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/verify_language_agnostic.py +0 -0
  480. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  481. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/dev/verify_model_attribution.py +0 -0
  482. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/README.md +0 -0
  483. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/capture_flow_traffic.py +0 -0
  484. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  485. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/memory_profile.py +0 -0
  486. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/recaptcha_mint.py +0 -0
  487. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  488. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  489. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  490. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/probe/run_probe.py +0 -0
  491. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/probe/spike_auth_matrix.py +0 -0
  492. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/record_demo.ps1 +0 -0
  493. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/smoke_image.py +0 -0
  494. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/smoke_video_editor.py +0 -0
  495. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/smoke_worker_style.py +0 -0
  496. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/spike_waf_camoufox.py +0 -0
  497. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/scripts/verify_chrome_auth_viability.py +0 -0
  498. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/changelog/SKILL.md +0 -0
  499. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/check/SKILL.md +0 -0
  500. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/doc-review/SKILL.md +0 -0
  501. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/issue-assessment/SKILL.md +0 -0
  502. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/issue-resolve/SKILL.md +0 -0
  503. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/known-issues/SKILL.md +0 -0
  504. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/llm-council/SKILL.md +0 -0
  505. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/plan/SKILL.md +0 -0
  506. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/predict/SKILL.md +0 -0
  507. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/scenario/SKILL.md +0 -0
  508. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/sonar/SKILL.md +0 -0
  509. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/skills/status/SKILL.md +0 -0
  510. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/sonar-project.properties +0 -0
  511. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/__main__.py +0 -0
  512. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/_cli_helpers.py +0 -0
  513. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/__init__.py +0 -0
  514. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/_engine.py +0 -0
  515. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/_retry.py +0 -0
  516. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  517. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/character.py +0 -0
  518. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/extend_chain.py +0 -0
  519. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/image.py +0 -0
  520. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/image_upscale.py +0 -0
  521. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/recaptcha.py +0 -0
  522. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/scene.py +0 -0
  523. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  524. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/_common.py +0 -0
  525. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  526. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/base.py +0 -0
  527. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  528. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  529. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  530. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  531. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  532. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  533. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  534. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  535. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  536. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  537. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  538. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  539. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  540. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/video.py +0 -0
  541. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/api/video_extend.py +0 -0
  542. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/__init__.py +0 -0
  543. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/base.py +0 -0
  544. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/cookies.py +0 -0
  545. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/factory.py +0 -0
  546. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  547. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  548. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/auth/strategies.py +0 -0
  549. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/browser_manager.py +0 -0
  550. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/chain.py +0 -0
  551. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/chain_manifest.py +0 -0
  552. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_character.py +0 -0
  553. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_data.py +0 -0
  554. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_doctor.py +0 -0
  555. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_image.py +0 -0
  556. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_instructions.py +0 -0
  557. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_models.py +0 -0
  558. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_movie.py +0 -0
  559. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_project.py +0 -0
  560. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_run.py +0 -0
  561. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_scene.py +0 -0
  562. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_tools.py +0 -0
  563. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/cli_video.py +0 -0
  564. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/composition.py +0 -0
  565. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/__init__.py +0 -0
  566. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/chain_repo.py +0 -0
  567. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  568. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  569. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  570. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  571. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  572. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  573. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  574. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  575. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  576. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  577. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/models.py +0 -0
  578. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/queries.py +0 -0
  579. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/recorder.py +0 -0
  580. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/redaction.py +0 -0
  581. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/repository.py +0 -0
  582. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/data/store.py +0 -0
  583. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/diagnostics.py +0 -0
  584. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/exceptions.py +0 -0
  585. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/file_integrity.py +0 -0
  586. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  587. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  588. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  589. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  590. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/image_batch.py +0 -0
  591. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/json_output.py +0 -0
  592. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/__init__.py +0 -0
  593. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/prompts.py +0 -0
  594. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/resources.py +0 -0
  595. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/server.py +0 -0
  596. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/setup.py +0 -0
  597. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  598. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/media.py +0 -0
  599. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/movie_manifest.py +0 -0
  600. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/observability.py +0 -0
  601. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/paths.py +0 -0
  602. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/profile_lease.py +0 -0
  603. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/profile_store.py +0 -0
  604. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/redaction.py +0 -0
  605. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/services/__init__.py +0 -0
  606. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  607. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/services/character_create.py +0 -0
  608. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/services/doctor.py +0 -0
  609. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/services/mentions.py +0 -0
  610. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/storage.py +0 -0
  611. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/__init__.py +0 -0
  612. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/banned.py +0 -0
  613. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  614. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  615. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  616. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  617. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/expander.py +0 -0
  618. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/invocation.py +0 -0
  619. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/loader.py +0 -0
  620. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/registry.py +0 -0
  621. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/runtime.py +0 -0
  622. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/tools/spec.py +0 -0
  623. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/ui/app.py +0 -0
  624. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/ui/server.py +0 -0
  625. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/winsec.py +0 -0
  626. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/worker/codec.py +0 -0
  627. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/worker/daemon.py +0 -0
  628. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/src/gflow_cli/worker/queue.py +0 -0
  629. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tasks/lessons.md +0 -0
  630. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/test_assets/sample_batch.json +0 -0
  631. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/test_assets/sample_batch.tsv +0 -0
  632. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/test_assets/sample_batch_invalid.tsv +0 -0
  633. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/__init__.py +0 -0
  634. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/__init__.py +0 -0
  635. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/fixtures/character_gen_response.json +0 -0
  636. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  637. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  638. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  639. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  640. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_bearer_redaction.py +0 -0
  641. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_character.py +0 -0
  642. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client.py +0 -0
  643. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_character.py +0 -0
  644. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_delete_characters.py +0 -0
  645. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_errors.py +0 -0
  646. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_extend.py +0 -0
  647. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_generate_character.py +0 -0
  648. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_image.py +0 -0
  649. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_incidents.py +0 -0
  650. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_launch_kwargs.py +0 -0
  651. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_locale_cache.py +0 -0
  652. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_patch_entity.py +0 -0
  653. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_scene.py +0 -0
  654. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_client_upscale.py +0 -0
  655. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_concurrency.py +0 -0
  656. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_dto.py +0 -0
  657. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_engine.py +0 -0
  658. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_extend_chain.py +0 -0
  659. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_image.py +0 -0
  660. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_image_dto.py +0 -0
  661. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_image_upscale.py +0 -0
  662. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  663. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_recaptcha.py +0 -0
  664. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_retry.py +0 -0
  665. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_routes.py +0 -0
  666. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_routes_character.py +0 -0
  667. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_routes_locale.py +0 -0
  668. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_routes_scene.py +0 -0
  669. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_sapisidhash_helper.py +0 -0
  670. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_scene_models.py +0 -0
  671. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_video.py +0 -0
  672. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_video_extend.py +0 -0
  673. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_video_request.py +0 -0
  674. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/test_video_status_poll.py +0 -0
  675. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/__init__.py +0 -0
  676. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/conftest.py +0 -0
  677. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/drivers/__init__.py +0 -0
  678. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  679. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/drivers/test_classic.py +0 -0
  680. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/drivers/test_factory.py +0 -0
  681. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  682. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  683. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_base.py +0 -0
  684. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_batchexecute.py +0 -0
  685. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_bearer.py +0 -0
  686. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_common.py +0 -0
  687. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  688. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_factory.py +0 -0
  689. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_fingerprint.py +0 -0
  690. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_locale_navigation.py +0 -0
  691. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  692. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_migrated_route.py +0 -0
  693. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_mode_control.py +0 -0
  694. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  695. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_navigation_settled.py +0 -0
  696. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  697. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_policy_400.py +0 -0
  698. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_sapisidhash.py +0 -0
  699. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  700. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_transport_timeout.py +0 -0
  701. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_ui_automation.py +0 -0
  702. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  703. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  704. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  705. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  706. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  707. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/strategies/test_factory.py +0 -0
  708. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/strategies/test_strategies.py +0 -0
  709. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/test_cookies.py +0 -0
  710. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/test_real_chrome.py +0 -0
  711. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/test_verification.py +0 -0
  712. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/auth/test_windows_acl.py +0 -0
  713. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  714. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/__init__.py +0 -0
  715. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_auth_status.py +0 -0
  716. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_auth_list.py +0 -0
  717. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_character.py +0 -0
  718. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_character_create.py +0 -0
  719. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_data.py +0 -0
  720. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_data_errors.py +0 -0
  721. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  722. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_data_sync.py +0 -0
  723. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_doctor.py +0 -0
  724. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_image.py +0 -0
  725. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  726. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  727. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_image_upscale.py +0 -0
  728. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  729. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_instructions.py +0 -0
  730. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_models.py +0 -0
  731. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_movie.py +0 -0
  732. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_run.py +0 -0
  733. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_scene.py +0 -0
  734. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_tools.py +0 -0
  735. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_video.py +0 -0
  736. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_video_chain.py +0 -0
  737. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_cli_video_extend.py +0 -0
  738. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_error_handling.py +0 -0
  739. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_failure_funnel.py +0 -0
  740. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_helpers.py +0 -0
  741. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_incident_output.py +0 -0
  742. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_movie_manifest.py +0 -0
  743. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  744. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_predictable_output.py +0 -0
  745. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  746. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_settings_validation.py +0 -0
  747. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  748. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/composition/test_character.py +0 -0
  749. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/composition/test_compose_prompt.py +0 -0
  750. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/composition/test_handoff.py +0 -0
  751. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/composition/test_style_variants.py +0 -0
  752. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/composition/test_style_variants_e2e.py +0 -0
  753. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/conftest.py +0 -0
  754. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/__init__.py +0 -0
  755. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_chain_repo.py +0 -0
  756. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_failure_recording.py +0 -0
  757. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_find_incomplete_character.py +0 -0
  758. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_models.py +0 -0
  759. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_null_columns_stay_null.py +0 -0
  760. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_packaging.py +0 -0
  761. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_recorder.py +0 -0
  762. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_recorder_character.py +0 -0
  763. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_redaction.py +0 -0
  764. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_repository.py +0 -0
  765. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_scene_persistence.py +0 -0
  766. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_settings_and_errors.py +0 -0
  767. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_store.py +0 -0
  768. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/data/test_store_migrations.py +0 -0
  769. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/dev/test_recording_client.py +0 -0
  770. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/__init__.py +0 -0
  771. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/conftest.py +0 -0
  772. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  773. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  774. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  775. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  776. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  777. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_chain_e2e.py +0 -0
  778. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_character_create_e2e.py +0 -0
  779. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  780. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  781. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_daemon_e2e.py +0 -0
  782. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  783. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  784. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  785. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  786. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  787. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  788. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  789. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  790. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  791. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_json_output_e2e.py +0 -0
  792. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  793. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  794. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  795. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  796. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_scene_compose_live.py +0 -0
  797. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  798. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_tools_e2e.py +0 -0
  799. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_transports_e2e.py +0 -0
  800. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  801. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  802. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  803. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/__init__.py +0 -0
  804. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/asset_tagging.feature +0 -0
  805. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/auth.feature +0 -0
  806. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/auth_login.feature +0 -0
  807. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/character_create.feature +0 -0
  808. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/character_read.feature +0 -0
  809. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/conftest.py +0 -0
  810. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/duration_tab_drift.feature +0 -0
  811. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/entity_provenance.feature +0 -0
  812. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/image.feature +0 -0
  813. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/image_batch_references.feature +0 -0
  814. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/image_upscale.feature +0 -0
  815. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/incident_diagnostics.feature +0 -0
  816. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/instructions.feature +0 -0
  817. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/latched_locale_recovery.feature +0 -0
  818. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/locale_picker_include.feature +0 -0
  819. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/mcp_tasks.feature +0 -0
  820. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/media_picker_tiers.feature +0 -0
  821. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/migrated_driver.feature +0 -0
  822. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/migrated_host_gate.feature +0 -0
  823. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/output_hardening.feature +0 -0
  824. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_asset_tagging_steps.py +0 -0
  825. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_auth_login_steps.py +0 -0
  826. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_auth_steps.py +0 -0
  827. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_character_create_steps.py +0 -0
  828. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_character_read_steps.py +0 -0
  829. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_image_steps.py +0 -0
  830. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_image_upscale_steps.py +0 -0
  831. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  832. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_instructions_steps.py +0 -0
  833. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  834. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  835. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  836. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_migrated_driver_steps.py +0 -0
  837. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  838. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_output_hardening_steps.py +0 -0
  839. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_step_collision_guard.py +0 -0
  840. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  841. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/test_video_chain_steps.py +0 -0
  842. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/video_agent_ui.feature +0 -0
  843. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/features/video_chain.feature +0 -0
  844. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/__init__.py +0 -0
  845. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/changelog_modal_page.html +0 -0
  846. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/doctor_env.py +0 -0
  847. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/flow_model_inventory.json +0 -0
  848. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  849. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/listing_payload.py +0 -0
  850. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/fixtures/seeded_catalog.py +0 -0
  851. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/__init__.py +0 -0
  852. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/test_grading.py +0 -0
  853. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/test_model.py +0 -0
  854. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/test_model_governance.py +0 -0
  855. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/test_registry.py +0 -0
  856. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/flow_selectors/test_report.py +0 -0
  857. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/image_batch/__init__.py +0 -0
  858. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/image_batch/test_image_manifest.py +0 -0
  859. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/image_batch/test_jitter_config.py +0 -0
  860. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/image_batch/test_observability_events.py +0 -0
  861. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/__init__.py +0 -0
  862. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/conftest.py +0 -0
  863. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/constants.py +0 -0
  864. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/test_expander_gateway.py +0 -0
  865. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/test_storage_gcs.py +0 -0
  866. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/integration/test_storage_s3.py +0 -0
  867. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/__init__.py +0 -0
  868. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/conftest.py +0 -0
  869. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_auth_status_tool.py +0 -0
  870. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_error_funnel.py +0 -0
  871. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_http_transport.py +0 -0
  872. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_known_issues_resource.py +0 -0
  873. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_no_spend.py +0 -0
  874. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  875. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_resources.py +0 -0
  876. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_server.py +0 -0
  877. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_setup.py +0 -0
  878. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_stdio_transport.py +0 -0
  879. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_tasks_extension.py +0 -0
  880. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_tools_helpers.py +0 -0
  881. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_tools_instructions.py +0 -0
  882. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/mcp/test_tools_wired.py +0 -0
  883. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  884. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_canary_classify.py +0 -0
  885. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_canary_reexec.py +0 -0
  886. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  887. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  888. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_council_memory.py +0 -0
  889. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_materiality.py +0 -0
  890. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  891. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  892. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_test_count.py +0 -0
  893. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  894. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_codex_plugin.py +0 -0
  895. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_generate_website_docs.py +0 -0
  896. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  897. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_materiality_backtest.py +0 -0
  898. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/scripts/test_workflow_hardening.py +0 -0
  899. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/__init__.py +0 -0
  900. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_catalog_sync.py +0 -0
  901. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_character_create_redaction.py +0 -0
  902. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_character_create_saga.py +0 -0
  903. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  904. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_doctor.py +0 -0
  905. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_media_attribution.py +0 -0
  906. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_mentions_observability.py +0 -0
  907. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_mentions_parse.py +0 -0
  908. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_mentions_resolve.py +0 -0
  909. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/services/test_resolve_and_apply.py +0 -0
  910. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/smoke/__init__.py +0 -0
  911. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  912. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/smoke/test_real_flow.py +0 -0
  913. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_auth.py +0 -0
  914. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_browser_manager.py +0 -0
  915. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_chain.py +0 -0
  916. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_chain_manifest.py +0 -0
  917. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_cli_data.py +0 -0
  918. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_cli_project.py +0 -0
  919. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_config.py +0 -0
  920. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_conftest_isolation.py +0 -0
  921. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_data_queries.py +0 -0
  922. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_bundle.py +0 -0
  923. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_events.py +0 -0
  924. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_journal.py +0 -0
  925. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_recorder.py +0 -0
  926. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_retention.py +0 -0
  927. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_diagnostics_sanitize.py +0 -0
  928. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_duration_tab_drift.py +0 -0
  929. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_entity_provenance.py +0 -0
  930. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_errors.py +0 -0
  931. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_errors_classification.py +0 -0
  932. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_image_batch_references.py +0 -0
  933. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_incident_generation_requests.py +0 -0
  934. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_json_output.py +0 -0
  935. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_marker_registry.py +0 -0
  936. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_media.py +0 -0
  937. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_observability.py +0 -0
  938. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_overlay_banner_dismissal.py +0 -0
  939. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_paths.py +0 -0
  940. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_playwright_pin.py +0 -0
  941. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_profile_lease.py +0 -0
  942. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_profile_lease_subprocess.py +0 -0
  943. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_profile_store.py +0 -0
  944. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_profile_store_locale.py +0 -0
  945. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_project_list_urls.py +0 -0
  946. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_self_documenting_errors.py +0 -0
  947. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/test_smoke.py +0 -0
  948. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/__init__.py +0 -0
  949. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_banned.py +0 -0
  950. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_expander.py +0 -0
  951. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_invocation.py +0 -0
  952. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_loader.py +0 -0
  953. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_registry.py +0 -0
  954. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_runtime.py +0 -0
  955. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/tools/test_spec.py +0 -0
  956. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/ui/test_app.py +0 -0
  957. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_codec.py +0 -0
  958. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_daemon.py +0 -0
  959. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  960. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_queue.py +0 -0
  961. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_queue_multiprocess.py +0 -0
  962. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/tests/worker/test_queue_reconciliation.py +0 -0
  963. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  964. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/CHARACTER.md +0 -0
  965. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/DATA_LAYER.md +0 -0
  966. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/DEBUGGING.md +0 -0
  967. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/E2E_TESTING.md +0 -0
  968. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  969. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/INSTRUCTIONS.md +0 -0
  970. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  971. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/MOVIE.md +0 -0
  972. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  973. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/SECURITY.md +0 -0
  974. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/TOOLS.md +0 -0
  975. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/agents.md +0 -0
  976. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/index.md +0 -0
  977. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/onboarding-mockup.html +0 -0
  978. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/onboarding.md +0 -0
  979. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/docs/stylesheets/extra.css +0 -0
  980. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/mkdocs.yml +0 -0
  981. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/requirements.in +0 -0
  982. {gflow_cli-0.67.0 → gflow_cli-0.69.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.67.0",
3
+ "version": "0.69.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -138,9 +138,10 @@
138
138
  # Holders always run to completion; the waiter takes over on release (#478).
139
139
  # GFLOW_CLI_LEASE_WAIT_SECONDS=0
140
140
 
141
- # Once-a-day best-effort PyPI check printing a one-line notice when a newer
142
- # gflow-cli exists (#479). Never blocks; skipped in CI and for
143
- # editable/source installs. Set to 0 to disable.
141
+ # Once-a-day best-effort PyPI check that shows an update banner on stderr when
142
+ # a newer gflow-cli exists (#479; one plain line when stderr is piped). Never
143
+ # blocks; skipped in CI and for editable/source installs. Set to 0 to disable.
144
+ # Upgrade with `gflow update`.
144
145
  # GFLOW_CLI_UPDATE_CHECK=1
145
146
 
146
147
  # Whether generation prompts (and the prompt-derived display names used as the
@@ -182,7 +183,8 @@
182
183
  # GFLOW_CLI_UI_MODE=auto
183
184
 
184
185
  # Which Flow frontend gflow drives (#639). auto (default): flow.google.com is the
185
- # default host for what it can serve today (video t2v with --project) on every
186
+ # default host for what it can serve today (video t2v, and video i2v from a local
187
+ # --initial-frame, with --project) on every
186
188
  # account; requests it cannot serve yet keep the labs driver on an unmoved
187
189
  # account, and a moved account gets the migrated composer for everything ported.
188
190
  # flow.google.com: force the migrated composer for everything.
@@ -0,0 +1,36 @@
1
+ ## Summary
2
+
3
+ <!-- What changed and why? Link issues with "Fixes #123" when applicable. -->
4
+
5
+ ## Lifecycle
6
+
7
+ <!-- The pipeline every PR is reviewed against: CONTRIBUTING.md § "The development lifecycle"
8
+ and AGENTS.md § "Standard Workflow Sequence". Tick what applies; strike what does not and say why. -->
9
+
10
+ - [ ] Issue triaged with `issue-assessment` (verdict + which surfaces reproduce it: CLI / MCP / both)
11
+ - [ ] `predict` verdict recorded (transport / auth / selector / schema changes only)
12
+ - [ ] `scenario` + `plan` written under `docs/superpowers/plans/<date>-<slug>/` and linked here
13
+ - [ ] `check` green, including the step 1b CLI↔MCP mirror sweep
14
+ - [ ] MCP twin added, or a reasoned exemption in `tests/mcp/test_cli_parity.py`
15
+ - [ ] **E2E evidence provided** — name the `tests/e2e/` test you ran and paste its result, or point at the new test this PR adds. If you could not run it, say why here:
16
+ - [ ] Live-verified against real Flow where a generation path changed; what could NOT be verified is stated below
17
+ - [ ] Council review run (`pr-council-review` / `branch-review`) and must-fix items addressed
18
+
19
+ ## Validation
20
+
21
+ <!-- List the focused commands you ran, plus any checks you could not run. -->
22
+
23
+ - [ ] Focused tests added or updated for behavior changes
24
+ - [ ] Documentation updated or explicitly marked not applicable
25
+ - [ ] `uv run python scripts/ci/check_doc_links.py`
26
+ - [ ] `uv run ruff check src tests`
27
+ - [ ] `uv run pyright src`
28
+ - [ ] Relevant pytest command:
29
+
30
+ ## Contribution Checklist
31
+
32
+ - [ ] This PR targets `develop`, unless it is a release or emergency fix
33
+ - [ ] My commits use my real Git identity or GitHub noreply email
34
+ - [ ] External contribution commits include `Signed-off-by:` (`git commit -s`)
35
+ - [ ] I did not include secrets, cookies, account tokens, signed URLs, or private captured data
36
+ - [ ] I reviewed any AI-assisted changes before submitting
@@ -41,10 +41,10 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
41
41
 
42
42
  ## Project at a glance
43
43
 
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` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video today; `GFLOW_CLI_FLOW_HOST`).
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` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, and image-to-video from a local `--initial-frame`, today; `GFLOW_CLI_FLOW_HOST`).
45
45
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
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).
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_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
47
+ - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
48
48
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
49
49
 
50
50
  ## Headed-browser dependency (architectural reality)
@@ -95,8 +95,10 @@ the five other mirror axes), which no command here can check and no CI gate can
95
95
  - Use `pytest -m "not live and not e2e and not smoke"` locally; full suite OOMs on small dev machines. Scope to changed dirs; trust CI for the full sweep.
96
96
  - TDD is non-negotiable. Coverage floor: 80% overall.
97
97
  - Documentation is a first-class deliverable. Every behavior, workflow, config, or operator-facing change must update the relevant docs or state why no docs changed in the PR/checklist. `scripts/ci/check_doc_links.py` is a merge gate.
98
- - **A PR is not done until its SonarCloud gate is green (zero new issues).** The six gates above are local/pre-commit; SonarCloud is server-side and runs in CI (`sonar.qualitygate.wait=true` → a red gate turns the `SonarCloud analysis` check red). Before calling a PR merge-ready, verify it with `/gflow:sonar <N>` (it is skipped on fork PRs — maintainer-checked there).
99
- - Live tests (`@pytest.mark.live`) opt in via `GFLOW_LIVE=1`. E2E tests require `GFLOW_CLI_E2E_PROFILE`.
98
+ - **A PR is not done until its SonarCloud gate is green (zero new issues).** The nine gates above are local/pre-commit; SonarCloud is server-side and runs in CI (`sonar.qualitygate.wait=true` → a red gate turns the `SonarCloud analysis` check red). Before calling a PR merge-ready, verify it with `/gflow:sonar <N>` (it is skipped on fork PRs — maintainer-checked there).
99
+ - **E2E is the decisive layer, and it is required for every behavior change that touches a Flow surface.** Run the `tests/e2e/` test that covers the change, or write one — offline-green proves only that *our* code does what we think, never that Flow still behaves as captured. `/gflow:live-verify` does **not** satisfy this: it drives CLI commands by hand into a gitignored note and never runs `pytest -m e2e`. The two are complementary — an e2e test is a re-runnable regression, a live-verify ledger is a narrative record. If you cannot run it, say so explicitly in the PR and a maintainer will; a change touching no Flow surface (docs, help text, exit-code plumbing) is out of scope — say that rather than leaving it blank.
100
+ - E2E tests require `GFLOW_CLI_E2E_PROFILE` and `-m e2e` (excluded from the default `addopts`, so they never run by accident). Cost sub-markers: `e2e_auth` (zero credits, browser only), `e2e_image` (zero credits, daily cap), `e2e_scene`, `e2e_data`, `e2e_batch`, `e2e_character` (opt in with `GFLOW_CLI_E2E_RUN_CHARACTER=1`), `e2e_video` (spends Veo credits — opt in with `GFLOW_CLI_E2E_RUN_VIDEO=1`). Redact account identifiers and any token or cookie value before pasting output into a PR.
101
+ - Live tests (`@pytest.mark.live`) opt in via `GFLOW_LIVE=1`.
100
102
 
101
103
  ## Code style
102
104
 
@@ -159,7 +161,7 @@ All AI agents and harnesses working on `gflow-cli` follow this standard 10-phase
159
161
  | 5. Council Review | `/gflow:pr-council-review` / `llm-council` | Multi-dimensional audit across 6 core dimensions | Consensus verdict report |
160
162
  | 6. Task Execution | `/gflow:status` | Track unchecked tasks during TDD execution | Next unchecked task |
161
163
  | 7. Pre-Commit Quality | `/gflow:check` | The Impeccable Routine (hygiene, ruff, pyright, pytest) | All green local checks |
162
- | 8. Live Verification | `/gflow:live-verify` | 5-layer proof against real Flow transport | `docs/LIVE_VERIFICATION_vX.Y.Z.md` |
164
+ | 8. E2E + Live Verification | `pytest -m e2e` → `/gflow:live-verify` | The e2e suite against a live profile, then the 5-layer proof against real Flow transport | Pasted e2e result + `docs/LIVE_VERIFICATION_vX.Y.Z.md` |
163
165
  | 9. PR & Issue Close | `/gflow:issue-resolve <N>` | PR, SonarCloud 0-issue gate, merge to develop | Closed GitHub issue |
164
166
  | 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 |
165
167
 
@@ -174,9 +176,9 @@ Every AI agent executing any phase of this pipeline MUST proactively state the c
174
176
  | Phase 3: BDD Scaffolding | `Scenario:` blocks & test scaffold | ➔ Phase 4: Implementation Plan (`/gflow:plan <feature>`) |
175
177
  | Phase 4: Implementation Plan | `PLAN.md` created & approved | ➔ Phase 6: Task Execution (`/gflow:status`) |
176
178
  | Phase 6: Task Execution | All plan tasks checked | ➔ Phase 7: Pre-Commit Quality (`/gflow:check`) |
177
- | Phase 7: Pre-Commit Quality | All 7 quality gates green | ➔ Phase 5: Council Review (`/gflow:branch-review` or `/gflow:pr-council-review`) |
178
- | Phase 5: Council Review | Consensus 🟢 GREEN | ➔ Phase 8: Live Verification (`/gflow:live-verify`) or Phase 9 (`/gflow:issue-resolve <N>`) |
179
- | Phase 8: Live Verification | `LIVE_VERIFICATION_vX.Y.Z.md` | ➔ Phase 9: Issue Resolve & PR (`/gflow:issue-resolve <N>`) |
179
+ | Phase 7: Pre-Commit Quality | All quality gates green | ➔ Phase 5: Council Review (`/gflow:branch-review` or `/gflow:pr-council-review`) |
180
+ | Phase 5: Council Review | Consensus 🟢 GREEN | ➔ Phase 8: E2E + Live Verification (`pytest -m e2e`, then `/gflow:live-verify`) or Phase 9 (`/gflow:issue-resolve <N>`) |
181
+ | Phase 8: E2E + Live Verification | e2e result + `LIVE_VERIFICATION_vX.Y.Z.md` | ➔ Phase 9: Issue Resolve & PR (`/gflow:issue-resolve <N>`) |
180
182
  | Phase 9: Issue Resolve & PR | PR open & SonarCloud 0-issue gate green | ➔ Phase 10: Release Pipeline (`/gflow:release`) |
181
183
  | Phase 10: Release Pipeline | Signed tag & PyPI published | ➔ Done (Release shipped & back-merged) |
182
184
 
@@ -198,6 +200,7 @@ The `skills/` directory ships installable agent skill docs in plain Markdown wit
198
200
  | `check` | [`skills/check/SKILL.md`](skills/check/SKILL.md) | Quality gates (lint/format/types/tests) before every commit |
199
201
  | `changelog` | [`skills/changelog/SKILL.md`](skills/changelog/SKILL.md) | Unreleased changes + last tagged version |
200
202
  | `known-issues` | [`skills/known-issues/SKILL.md`](skills/known-issues/SKILL.md) | Open/mitigated known issues — before auth/reCAPTCHA work |
203
+ | `video-production` | [`skills/video-production/SKILL.md`](skills/video-production/SKILL.md) | User wants a finished multi-shot or dialogue video (consistent actors, room, several angles, spoken lines), or clips came back with a film border, a drifting room, rushed dialogue, a person-policy refusal or exit 36 |
201
204
  | `sonar` | [`skills/sonar/SKILL.md`](skills/sonar/SKILL.md) | Drive the SonarCloud quality gate to zero for a PR/branch |
202
205
  | `live-verify` | [`skills/live-verify/SKILL.md`](skills/live-verify/SKILL.md) | Pre-flight state check at start of work; live-verification against real Flow before claiming done |
203
206
  | `doc-review` | [`skills/doc-review/SKILL.md`](skills/doc-review/SKILL.md) | Council-driven documentation audit before a release |
@@ -226,7 +229,7 @@ extension does not currently load plugins, so IDE-only users should include the
226
229
  **Claude Code:** the `/gflow:` slash commands in `.claude/commands/gflow/` are auto-discovered when the project is open — no extra setup needed. To register a skill globally, copy the command file to `~/.claude/commands/`.
227
230
  **Custom agents:** fetch `skills/gflow-cli/SKILL.md` into your knowledge base before answering gflow questions.
228
231
 
229
- The SkillOpt harness at `scripts/dev/skillopt/` measures how accurately each skill guides an agent, and supports multiple providers (Anthropic, OpenAI-compat, Gemini, local models). See [`scripts/dev/skillopt/README.md`](scripts/dev/skillopt/README.md).
232
+ The SkillOpt harness at `scripts/dev/skillopt/` measures how accurately each skill guides an agent. It drives any OpenAI-compatible endpoint — OpenAI, a gateway (OpenRouter, LiteLLM, freellmapi), a local model, or Google's compat endpoint — through the project's own `GFLOW_CLI_LLM_*` settings, the same ones the prompt tools use; there is no separate provider configuration. See [`scripts/dev/skillopt/README.md`](scripts/dev/skillopt/README.md).
230
233
 
231
234
  ## Where to look next
232
235
 
@@ -7,6 +7,192 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.69.0] — 2026-09-06
11
+
12
+ ### Added
13
+
14
+ - **Read-only Flow balance inspection:** `gflow credits user`, `gflow credits list`, and the
15
+ matching `gflow_get_credits` MCP tool report current
16
+ balances and account tiers from saved profiles. Multi-profile inspection preserves partial
17
+ successes and emits stable JSON for automation. Saved cookies + ordinary HTTP are the primary
18
+ path, with browser-backed retrieval only as a fallback; cookies remain scoped to `labs.google`,
19
+ and no copied bearer token or browser API key is stored. The reported balance funds Veo video;
20
+ image generation uses separate per-model daily quotas.
21
+
22
+ - **Image-to-video from a local start frame on the migrated `flow.google.com` host**
23
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639), slice 1). `gflow video i2v
24
+ --initial-frame <local file> --project <id>` now runs on the new host — on a moved
25
+ account, and by default (`GFLOW_CLI_FLOW_HOST=auto`) on an unmoved one too. The port
26
+ is UI-driven and observed, never replayed: the composer selects the Frames submode,
27
+ uploads the file through the editor's own toolbar Upload entry and reads the media id
28
+ off the app's `maseQ` reply, finds the upload in the Start-frame picker under its file
29
+ name (the picker exposes no media id in its DOM), and only then submits. **An unbound
30
+ chip is refused before the click** — exit 23, zero credits — because an empty Frames
31
+ submit silently goes out as text-to-video (the labs #125 shape). The app's submit
32
+ *request* is then inspected as it leaves: a body without that media id, or carrying a
33
+ `_t2v_` model key, fails the run with `WireFormatError` (exit 7) naming what Flow was
34
+ actually asked to make — after the fact, since the request is already on the wire.
35
+ An upload Flow refuses is exit 27 on route `batchexecute:maseQ`; a file the picker
36
+ never lists after three searches is exit 32. For i2v the submit rpc is `eb1hJf` (t2v
37
+ stays `YhhmEf`), and an i2v request with no `--model` binds the veo-lite default here
38
+ exactly as it has always done on labs (#125). Not ported in this slice and named in
39
+ the exit-36 detail: `--end-frame`, a frame given by media UUID or `@Name`, and r2v.
40
+ A "Get started" modal over a fresh migrated editor is now dismissed before the run.
41
+ Recon: `docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md`.
42
+
43
+ - **`--model veo-lite-lp` is drivable on the migrated `flow.google.com` host.** It was
44
+ the one tier the migrated model map omitted, so an account Google has already moved
45
+ could not select it at all: `_select_model` refused with `ConfigurationError` (exit
46
+ 11, "not available on the migrated Flow host") before ever reading the live menu.
47
+ The omission was not an oversight — the tier's full menu label is unknown, because
48
+ Flow has never rendered the entry on any account gflow has driven (the 2026-08-14
49
+ two-account capability matrix, #650's duration capture and v0.61.0's refusal A/B all
50
+ recorded a picker MISS), and the migrated map is keyed by label. It is now matched
51
+ the way the labs driver has matched it since #539 — by the `[Lower Priority]` tag
52
+ alone. **The entry has now been captured** (2026-09-05, a migrated account): the menu
53
+ renders `Veo 3.1 - Lite [Lower Priority]`, and that account's picker was already
54
+ *defaulted* to it — presumably why every earlier capture missed the entry, having been
55
+ taken on accounts Flow was not throttling. Matching stays on the tag rather than the
56
+ newly-known label: one account's rendering, and a tag Flow appends to whichever tier it
57
+ throttles survives that tier changing. Verified live at $0 by driving `_select_model`
58
+ for all five tiers and reading the picker back after each switch — including the
59
+ lower-priority tier reached through the menu — plus one real 8 s generation on it.
60
+ Routing is deliberately unchanged: `veo-lite-lp` still does not make
61
+ `migrated_can_serve` pull an **unmoved** account onto the new host, since Flow appears
62
+ not to offer the tier to accounts it is not throttling.
63
+ Capture: `docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md`.
64
+
65
+ ### Changed
66
+
67
+ - **`video-production` skill, epoch 1: the reference cap now routes instead of only
68
+ forbidding.** A scored rollout picked `veo-quality` for a two-reference shot while
69
+ correctly reciting that its reference cap is 0 — the skill stated the prohibition in two
70
+ places and named the substitute in none, and the remedy lived only in the reference files
71
+ an agent may never load. Step 4 now carries the rule: the reference count picks the model
72
+ before quality does, `omni-flash` for a single generation needing references and quality
73
+ together, a `veo-lite` variant when 3 refs is enough — and `video chain` is called out as
74
+ the exception, since it refuses `omni-flash` outright. Validated by a controlled A/B on
75
+ one model with the document as the only variable: 0.00 → 0.90.
76
+
77
+ - **The SkillOpt harness uses the project's own `GFLOW_CLI_LLM_*` settings.** It carried a
78
+ second, parallel provider configuration — its own `--provider anthropic|openai` switch,
79
+ its own key env vars and its own `--base-url` — while `Settings.llm_base_url` /
80
+ `llm_api_key` / `llm_model` already drove the prompt tools. Any OpenAI-compatible endpoint
81
+ works through the one setting (OpenAI, OpenRouter, LiteLLM, freellmapi, a local gateway,
82
+ Google's compat endpoint); both LLM SDK dependencies are gone, and the harness now
83
+ inherits the URL validation its own flag used to bypass. It requires `uv run`. A scoring
84
+ bug is fixed with it: float accumulation made `1.0 - 0.3 + 0.1` fall short of the `>= 0.8`
85
+ PASS threshold, so a task at exactly the threshold graded PARTIAL while printing "0.80".
86
+
87
+ ### Fixed
88
+
89
+ - **Moved accounts: `image t2i` / `i2i` (and `upscale`, `extend`) now exit 36, not a
90
+ bare `RecaptchaError` exit 1 (#673).** The labs client mints the reCAPTCHA token on
91
+ the pool's bootstrap page *before* the UI transport runs, so none of the transport's
92
+ migration guards could fire; on a moved account that page is the `flow.google.com`
93
+ project grid after the client-side handoff, which loads no
94
+ `recaptcha/enterprise.js`, so site-key discovery raised `RecaptchaError` — a
95
+ `RuntimeError` unmapped in `EXIT_CODE_MAP`: exit 1 "unexpected", with a remediation
96
+ about headless Chrome. `_mint_recaptcha_token` now runs the same one-line
97
+ `raise_if_migrated` guard the transport uses, so the distinct, non-retryable exit
98
+ 36 and its migration remediation come back within seconds, before any submit.
99
+ Reproduced and re-verified on a moved maintainer account at zero credits (exit 1 →
100
+ exit 36); the new
101
+ `tests/e2e/test_migrated_host_e2e.py::test_e2e_image_on_a_moved_account_exits_36_not_recaptcha`
102
+ (`e2e_auth`, $0) is the regression.
103
+
104
+ - **The migrated model picker could bind a tier the user did not ask for.** The port
105
+ matched menu entries by case-insensitive *substring* and took `.first`, so on an
106
+ account whose menu carries a lower-priority sibling, `--model veo-lite` also matched
107
+ `Veo 3.1 - Lite [Lower Priority]` and Flow billed whichever Angular happened to list
108
+ first. The same substring ran against the picker button's read-back, where a pane
109
+ already showing the lower-priority tier satisfied `startswith("Veo 3.1 - Lite")` and
110
+ returned "already selected" without opening the menu — silently keeping the wrong
111
+ tier. This is the ambiguity #539 fixed on labs.google (whose selectors carry
112
+ `:not(:has-text('[Lower Priority]'))`) and which this port had dropped. Ordinary
113
+ tiers now exclude the tag on both paths, and a matcher hitting more than one live
114
+ entry **refuses** (exit 11) naming every candidate rather than guessing which one
115
+ Flow would bill. Confirmed against the real button text on a throttled account:
116
+ `"Veo 3.1 - Lite [Lower Priority] arrow_drop_down".lower().startswith("veo 3.1 - lite")`
117
+ is `True`, so pre-fix `--model veo-lite` there generated on the throttled tier without
118
+ ever opening the menu.
119
+
120
+ - **Switching `--model` on the migrated host broke the next run** — reported as "run 1
121
+ with a new model dies, run 2 with the same model works, run 3 with another model dies
122
+ again". Picking from the model menu leaves Angular with **two** stacked overlays (the
123
+ settings pane and the menu opened over it) and each Escape dismisses exactly one, so
124
+ `_close_pane`'s single press closed only the menu and left the settings pane covering
125
+ the composer. `send_prompt`'s click then failed actionability and surfaced ~5 s later
126
+ as a bare `TimeoutError` naming `[contenteditable='true']`, pointing nowhere near the
127
+ pane. A repeat run binds the model at the button read-back, never opens the menu and
128
+ never stacks the second overlay — which is exactly why re-running the same model
129
+ worked. Measured at $0: after a switch the composer's bounding box is *identical* for
130
+ 12 s (it was never unstable) while `.cdk-overlay-pane:visible` stays at 1; one more
131
+ Escape takes it to 0. `_close_pane` now escapes until no overlay is visible, bounded,
132
+ and raises pre-submit if one will not close rather than leaving the composer click to
133
+ report it. The old read-back did fire `migrated.pane_still_open` — as a warning the run
134
+ ignored; the observation was there and only the consequence was missing.
135
+
136
+ - **A migrated run that short-circuited model selection logged nothing.** `_select_model`
137
+ returning at its button read-back emitted no event, so a field timeline could not tell
138
+ "bound the tier you asked for" from "never touched the picker" — answering that for the
139
+ 2026-09-05 run took a separate probe. It now logs `migrated.model_already_selected`
140
+ with the observed button text.
141
+
142
+ ## [0.68.0] — 2026-09-05
143
+
144
+ ### Added
145
+
146
+ - **`gflow update` — self-update in place.** Runs the package manager that
147
+ installed gflow-cli, read off the install itself rather than guessed from
148
+ `PATH`: `uv-receipt.toml` in the venv root → `uv tool upgrade gflow-cli`,
149
+ `pipx_metadata.json` → `pipx upgrade gflow-cli`, otherwise that venv's own
150
+ `python -m pip install --upgrade gflow-cli`. Asks PyPI first and runs nothing
151
+ when already current; if PyPI is unreachable the manager still runs. After an
152
+ upgrade it re-reads the venv's Playwright version and prints the
153
+ `playwright install chromium` hint only when it moved. `--check` reports
154
+ installed vs latest plus the command that would run; `--json` returns the
155
+ same as a document. The outcome is verified against the venv, not the
156
+ manager's exit code: on Windows the running `gflow.exe` launcher holds its
157
+ own file open, so `uv tool upgrade` installs the new wheel and then exits 1
158
+ copying the launcher — measured — and that is reported as an upgrade with a
159
+ note, because the launcher only points at the venv's python and keeps
160
+ working. Editable / local / VCS / source installs, a manager binary missing
161
+ from `PATH`, a `uv venv` with no `pip` module, and a manager run that leaves
162
+ the version unchanged all surface as `ConfigurationError` (exit 11) — except
163
+ the one honest no-op: PyPI unreachable, manager exit 0, nothing changed, which
164
+ is exit 0. Deliberately no MCP twin (a server must not replace its own code under a live
165
+ session) — recorded as a reasoned exemption in the parity test.
166
+
167
+ ### Changed
168
+
169
+ - **The once-a-day update notice (#479) is now a banner.** On a terminal it is
170
+ a bordered panel on stderr naming the new version, `gflow update`, and the
171
+ release-notes link; when stderr is piped it stays one plain yellow line so
172
+ logs and `2>&1 | jq` pipelines see one line per event. Same cache, same
173
+ gates (`GFLOW_CLI_UPDATE_CHECK=0`, CI, non-index installs). The notice text
174
+ points at `gflow update` instead of listing three manager commands.
175
+ - **CONTRIBUTING.md now routes contributors — and their coding agents — through the
176
+ same lifecycle AGENTS.md defines.** A phase → skill → artifact table (issue
177
+ assessment, predict, scenario/plan, check with the step 1b mirror sweep,
178
+ live-verify, council review, sonar, known-issues) says what a PR is expected to
179
+ have gone through and what it leaves behind for the reviewer; the PR template
180
+ gains a matching *Lifecycle* checklist; the quality-gate list is now identical to
181
+ AGENTS.md's (it had drifted to six of nine commands).
182
+
183
+ ### Fixed
184
+
185
+ - **Migrated host: `video t2v` no longer fails on the submit-enable race (#670,
186
+ @ChandraLiuswanto).** The Angular composer on `flow.google.com` flips the
187
+ `arrow_forward` button from `disabled` roughly 100 ms after `insert_text`
188
+ lands, and the composer read it synchronously, so a fully migrated account got
189
+ `UiSelectorDriftError` ("missing or disabled after the prompt was typed",
190
+ exit 23) on every run before anything was submitted. The composer now waits
191
+ up to 5 s (100 ms polls) for the button to enable; a button that never
192
+ enables is still selector drift, now worded as "stayed disabled for 5s".
193
+ Measured on a moved account: `insert_text` → enabled at the 107 ms sample;
194
+ with the wait, veo-lite t2v completed in 62 s.
195
+
10
196
  ## [0.67.0] — 2026-09-05
11
197
 
12
198
  ### Added
@@ -3880,7 +4066,9 @@ shell-script template that branches on these codes.
3880
4066
 
3881
4067
  First skeleton. Not functional end-to-end yet.
3882
4068
 
3883
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...HEAD
4069
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...HEAD
4070
+ [0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
4071
+ [0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
3884
4072
  [0.67.0]: https://github.com/ffroliva/gflow-cli/compare/v0.66.3...v0.67.0
3885
4073
  [0.66.3]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...v0.66.3
3886
4074
  [0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
@@ -27,7 +27,7 @@ it yet" is not a reachable state.
27
27
  ## On every session start
28
28
 
29
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,
30
+ commands. Deliberately *not* imported: at ~47 KB it is a lookup table, not a rule set,
31
31
  and AGENTS.md points into it. Read it when you need to find a doc.
32
32
  2. Pull deeper context on demand:
33
33
  - Current task / where we left off → `/gflow:status`
@@ -2,6 +2,55 @@
2
2
 
3
3
  Thanks for considering a contribution! The repo is public and PRs are welcome. Pre-1.0 means APIs may shift between minor versions; check [PLAN.md](PLAN.md) for the active phase before starting a non-trivial change.
4
4
 
5
+ ## The development lifecycle — how a PR gets in without back-and-forth
6
+
7
+ This project is developed through a fixed pipeline, and every PR is reviewed against it.
8
+ The pipeline is written down once, in [AGENTS.md](AGENTS.md) — the **Skill Routing**
9
+ table (which skill to load for which situation) and the **Standard Workflow Sequence**
10
+ (the ten phases, their artifacts, and the gates between them). The skills themselves are
11
+ plain Markdown under [`skills/<name>/SKILL.md`](skills/): agent-agnostic by design, so
12
+ Claude Code (`/gflow:<name>`), Codex (`$gflow:<name>`), Cursor, Aider, Antigravity, or a
13
+ human reading the file all follow the same protocol.
14
+
15
+ **If you use a coding agent, point it at [AGENTS.md](AGENTS.md) first.** Most tools
16
+ auto-discover it; if yours does not, paste the Skill Routing table into its context. A PR
17
+ whose agent skipped the pipeline is the single biggest source of review churn here.
18
+
19
+ What a contributor PR is expected to have gone through, phase by phase:
20
+
21
+ | Phase | Skill (`skills/<name>/SKILL.md`) | What it leaves behind for the reviewer |
22
+ |---|---|---|
23
+ | Touching a GitHub issue | [`issue-assessment`](skills/issue-assessment/SKILL.md) | A verdict (CONFIRMED / LIKELY / NEEDS-INFO …) and which surfaces reproduce it — CLI, MCP, or both |
24
+ | Transport / auth / selector / schema change | [`predict`](skills/predict/SKILL.md) | A GO / CAUTION / STOP verdict **before** code exists; STOP means open an issue instead |
25
+ | Any feature | [`scenario`](skills/scenario/SKILL.md) → [`plan`](skills/plan/SKILL.md) | `docs/superpowers/plans/<date>-<slug>/SCENARIO.md` + `PLAN.md` — the edge-case table and the task list; link them from the PR (they live on the branch and in the PR's history; at release the durable facts are folded into `docs/superpowers/memory/` and the plan dir is removed) |
26
+ | Every commit | [`check`](skills/check/SKILL.md) | The Impeccable Routine green (it is the exact CI gate), plus the **step 1b** CLI↔MCP mirror sweep no CI gate can see |
27
+ | Any behavior change | [`tests/e2e/`](tests/e2e/) | The e2e test you ran, or the new one you wrote. E2E is the layer that proves the change works against real Flow — unit + integration + BDD green is never the whole story here. Name the test and paste its result |
28
+ | Anything on a generation path | [`live-verify`](skills/live-verify/SKILL.md) | Evidence against real Flow **on top of** the e2e run — the 5-layer ledger; say plainly what you could **not** verify |
29
+ | Opening the PR | [`pr-council-review`](skills/pr-council-review/SKILL.md) / [`branch-review`](.claude/commands/gflow/branch-review.md) | The multi-dimension council (correctness, quality, security, tests, memory, YAGNI, parity …); maintainers run it on every PR, so running it yourself first removes a round trip |
30
+ | Red SonarCloud check | [`sonar`](skills/sonar/SKILL.md) | Zero new issues — the gate measures *new* code |
31
+ | Auth or reCAPTCHA | [`known-issues`](skills/known-issues/SKILL.md) | Known-broken surfaces have documented workarounds; rediscovering them costs days |
32
+
33
+ Four rules the pipeline enforces that catch first-time contributors most often:
34
+
35
+ 1. **Ship each capability twice, or say why not.** Every CLI command has an MCP twin or a
36
+ reasoned exemption in `tests/mcp/test_cli_parity.py` — and options, payload keys and tool
37
+ docstrings must stay mirrored (AGENTS.md § *MCP & CLI Schema Symmetry*).
38
+ 2. **Locale-invariant selectors only.** No `has-text(...)` on Flow's DOM, ever
39
+ (AGENTS.md § *Locale-Invariance Discipline*).
40
+ 3. **Verified beats claimed.** If a fix cannot be verified on the affected surface in your
41
+ environment, the PR says so and uses `Refs #N`, not a green checkbox.
42
+ 4. **E2E is the evidence layer.** A behavior change **that touches a Flow surface** needs an
43
+ e2e test — the one you ran, or the one you wrote. `tests/e2e/` already covers auth,
44
+ session, image, video, scene, data and batch; if nothing there represents your use case,
45
+ add a test that does. Read-only and inspection paths belong under `e2e_auth` and cost zero
46
+ credits, so "it's expensive" is almost never the reason. If you cannot run it, say why in
47
+ the PR and a maintainer will — a silently unticked box is what stalls a review. Changes
48
+ that touch no Flow surface at all (docs, help text, exit-code plumbing) are out of scope;
49
+ say that instead of leaving it blank.
50
+
51
+ The PR template's *Lifecycle* checklist mirrors this table. Tick what applies, strike what
52
+ does not, and say why — a reviewer can then start from your evidence instead of re-deriving it.
53
+
5
54
  ## Development setup
6
55
 
7
56
  ```bash
@@ -63,7 +112,22 @@ async def test_full_t2i_roundtrip(): ...
63
112
  async def test_full_i2v_roundtrip(): ...
64
113
  ```
65
114
 
66
- CI runs `unit` + `integration` on every push. `e2e` tests require a live authenticated profile and are opt-in:
115
+ **E2E is required, not optional.** CI cannot run these — they need a live authenticated
116
+ profile — so the e2e layer is the one gate that only a human, or an agent with credentials,
117
+ can close. That makes it the contributor's job, not the maintainer's. A PR that changes
118
+ behavior **on a Flow surface** must either:
119
+
120
+ - **run an existing test** that already covers the use case — browse `tests/e2e/` — and
121
+ paste the result (redact account identifiers, emails and any token or cookie value); or
122
+ - **add a new one** when nothing covers it, marked `e2e` plus the cost sub-marker that fits.
123
+
124
+ Pick the cost sub-marker honestly — most inspection and auth paths are `e2e_auth` and spend
125
+ zero credits. Use the `e2e_profile_dir` / `e2e_env` fixtures in `tests/e2e/conftest.py`.
126
+ If you genuinely cannot run e2e (no Flow account, no credits for a video path), say so
127
+ explicitly in the PR and a maintainer will run it — but do not leave the box silently unticked.
128
+
129
+ CI runs `unit` + `integration` on every push. `e2e` tests require a live authenticated profile
130
+ and are excluded from the default run — select them with `-m e2e`:
67
131
 
68
132
  ```bash
69
133
  export GFLOW_CLI_E2E_PROFILE=<profile-name> # name of a logged-in profile
@@ -96,16 +160,24 @@ cost table, and run commands.
96
160
 
97
161
  ## Quality gates (run before commit)
98
162
 
163
+ Prefer the skill — [`skills/check/SKILL.md`](skills/check/SKILL.md) (`/gflow:check` in
164
+ Claude Code, `$gflow:check` in Codex) — because it also carries the step 1b CLI↔MCP mirror
165
+ sweep that no command below can check. The mechanical subset it runs, in order:
166
+
99
167
  ```bash
100
- uv run python scripts/ci/check_repo_hygiene.py # artefact + path hygiene
101
- uv run python scripts/ci/check_doc_links.py # internal Markdown links
168
+ uv run python scripts/ci/check_repo_hygiene.py # artefact + path hygiene
169
+ uv run python scripts/ci/check_doc_links.py # internal Markdown links
170
+ uv run python scripts/ci/check_website_docs_pii.py # no private identifiers in website/docs
171
+ uv run python scripts/ci/generate_website_docs.py --check # website mirror in sync
172
+ uv run python scripts/ci/check_council_memory.py # council memory slugs resolve both ways
102
173
  uv run ruff check src tests # lint
103
- uv run ruff format src tests # auto-format
174
+ uv run ruff format --check src tests # formatting
104
175
  uv run pyright src # type-check (strict on src/gflow_cli/)
105
176
  uv run pytest -q --cov=gflow_cli # tests + coverage
106
177
  ```
107
178
 
108
- CI runs all six on every push. Documentation is part of the merge gate: update
179
+ CI runs all of them on every push (this list is kept identical to AGENTS.md's; a shorter
180
+ copy once shipped a stale website mirror to a green local run and a red CI). Documentation is part of the merge gate: update
109
181
  the relevant docs for behavior, workflow, configuration, architecture, or
110
182
  operator-facing changes. If no documentation change is needed, state that in
111
183
  the PR validation checklist.
@@ -14,11 +14,12 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
14
14
 
15
15
  ## Open
16
16
 
17
- ### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v (rest of the matrix pending)
17
+ ### Flow is migrating to `flow.google.com`; gflow drives the migrated frontend for t2v and i2v from a local start frame (rest of the matrix pending)
18
18
 
19
- - **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v` now runs on the migrated host (with `--project`); `image`, i2v/r2v, characters, scenes, extend, instructions and tools are not ported yet and still exit 36
19
+ - **Status:** Open (partially resolved) · **Severity:** High for everything except text-to-video and local-file image-to-video · **Affected:** on accounts the rollout has reached, `gflow video t2v` and `gflow video i2v --initial-frame <local file>` now run on the migrated host (with `--project`); an end frame, a frame by UUID or `@Name`, `image`, r2v, characters, scenes, extend, instructions and tools are not ported yet and still exit 36
20
20
  - **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
21
21
  - **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
22
+ - **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in the unreleased line, post-v0.68.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
22
23
 
23
24
  Google is moving Flow off Labs onto its own origin. On a migrated page load,
24
25
  `https://labs.google/fx/tools/flow/project/<id>` redirects to
@@ -53,7 +54,20 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
53
54
  (`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
54
55
  command on every account — moved or not; `flow.google.com` forces it for
55
56
  everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
56
- migrated editor is not ported), and only `t2v` — everything else still exits 36.
57
+ migrated editor is not ported), and only `t2v` and `i2v` from a local `--initial-frame` (no end frame,
58
+ no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
59
+ found by file name after gflow uploads it through the editor) — everything else still exits 36.
60
+
61
+ **Models on the migrated host.** Its picker is driven for every tier the account's
62
+ menu actually renders, `veo-lite-lp` included — matched by the `[Lower Priority]`
63
+ tag alone, exactly as on labs.google. That entry was first captured on 2026-09-05
64
+ (`Veo 3.1 - Lite [Lower Priority]`, on an account whose picker was already defaulted
65
+ to it); matching stays on the tag, which survives Flow throttling a different tier. A tier whose matcher hits more than
66
+ one live entry is refused (exit 11) naming both, rather than bound by DOM order
67
+ ([#539](https://github.com/ffroliva/gflow-cli/issues/539)). `veo-lite-lp` is
68
+ deliberately **not** a routing trigger: an account Flow has not moved keeps the
69
+ labs driver for it, since pulling a request onto the new host for a tier no
70
+ capture has seen would trade a working driver for an unverified one.
57
71
 
58
72
  **Workaround for the rest:** none client-side. The handoff
59
73
  is a per-account setting the labs.google app applies on every load (measured
@@ -699,13 +713,15 @@ A block that survives dismissal now aborts pre-submit with exit 23 (probe `overl
699
713
 
700
714
  ---
701
715
 
702
- ### No in-CLI quota visibility
716
+ ### No in-CLI quota visibility — resolved
703
717
 
704
- - **Status:** Open · **Severity:** Low · **Roadmap:** v0.5
718
+ - **Status:** Resolved 2026-09-05
705
719
 
706
- `gflow-cli` doesn't yet show how many Veo / Imagen credits remain on your Ultra/Pro subscription. You can check at <https://gemini.google/subscriptions/> in the meantime.
707
-
708
- **Roadmap:** v0.5 will surface remaining quota via `gflow auth status` once we capture the relevant Google API.
720
+ Use `gflow credits user` for the selected profile or `gflow credits list` for all saved
721
+ profiles. Both commands query Flow's current read-only credits endpoint with the saved browser
722
+ session; `--json` provides a stable automation contract. The equivalent MCP surface is
723
+ `gflow_get_credits`. The reported balance funds Veo video generation; image generation consumes
724
+ separate per-model daily quotas.
709
725
 
710
726
  ---
711
727
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.67.0
3
+ Version: 0.69.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
@@ -112,10 +112,14 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
112
112
  # 1 · Install (uv recommended; also: pip install gflow-cli)
113
113
  uv tool install gflow-cli
114
114
  uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
115
+ # later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
115
116
 
116
117
  # 2 · Authenticate (one-time, opens a real Chrome window)
117
118
  gflow auth login --browser chrome
118
119
 
120
+ # Check the current balance (or use `credits list` for every saved profile)
121
+ gflow credits user
122
+
119
123
  # 3 · Generate
120
124
  gflow image t2i "a hot air balloon over Tokyo at sunrise"
121
125
  # or:
@@ -194,7 +198,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
194
198
 
195
199
  **Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
196
200
 
197
- **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
201
+ **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, and image-to-video from a local start frame, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
198
202
 
199
203
  **What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
200
204
 
@@ -41,10 +41,14 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
41
41
  # 1 · Install (uv recommended; also: pip install gflow-cli)
42
42
  uv tool install gflow-cli
43
43
  uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
44
+ # later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
44
45
 
45
46
  # 2 · Authenticate (one-time, opens a real Chrome window)
46
47
  gflow auth login --browser chrome
47
48
 
49
+ # Check the current balance (or use `credits list` for every saved profile)
50
+ gflow credits user
51
+
48
52
  # 3 · Generate
49
53
  gflow image t2i "a hot air balloon over Tokyo at sunrise"
50
54
  # or:
@@ -123,7 +127,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
123
127
 
124
128
  **Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
125
129
 
126
- **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
130
+ **Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). `flow.google.com` is the default host for what gflow has ported to it — text-to-video, and image-to-video from a local start frame, today — on every account; the rest of the matrix keeps the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
127
131
 
128
132
  **What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
129
133