gflow-cli 0.76.0__tar.gz → 0.78.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 (1163) hide show
  1. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.codex-plugin/plugin.json +1 -1
  2. gflow_cli-0.78.0/.github/workflows/mcp-registry.yml +132 -0
  3. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/release.yml +42 -5
  4. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/AGENTS.md +1 -1
  5. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/CHANGELOG.md +282 -11
  6. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/KNOWN_ISSUES.md +5 -6
  7. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/PKG-INFO +2 -1
  8. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/RELEASE.md +34 -0
  9. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker/Dockerfile +1 -1
  10. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/AUTHENTICATION.md +18 -0
  11. {gflow_cli-0.76.0/website → gflow_cli-0.78.0}/docs/CONFIGURATION.md +4 -4
  12. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/DISTRIBUTION.md +46 -11
  13. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/INDEX.md +3 -2
  14. gflow_cli-0.78.0/docs/LIVE_VERIFICATION_v0.77.0.md +187 -0
  15. gflow_cli-0.78.0/docs/LIVE_VERIFICATION_v0.77.1.md +223 -0
  16. gflow_cli-0.78.0/docs/LIVE_VERIFICATION_v0.78.0.md +177 -0
  17. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/MCP.md +9 -4
  18. gflow_cli-0.78.0/docs/PROJECT_STATUS.md +275 -0
  19. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/USAGE.md +105 -21
  20. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +4 -3
  21. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +150 -0
  22. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +169 -0
  23. gflow_cli-0.78.0/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +68 -0
  24. gflow_cli-0.78.0/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +132 -0
  25. gflow_cli-0.78.0/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +71 -0
  26. gflow_cli-0.78.0/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +100 -0
  27. gflow_cli-0.78.0/hatch_build.py +59 -0
  28. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/llms.txt +1 -1
  29. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
  30. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/gflow-cli/SKILL.md +8 -7
  31. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/SKILL.md +1 -1
  32. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/pyproject.toml +20 -1
  33. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_repo_hygiene.py +16 -4
  34. gflow_cli-0.78.0/scripts/dev/spike_create_project_401.py +127 -0
  35. gflow_cli-0.78.0/scripts/dev/spike_migrated_aspect_radios.py +92 -0
  36. gflow_cli-0.78.0/scripts/dev/spike_migrated_create_project.py +217 -0
  37. gflow_cli-0.78.0/scripts/dev/spike_migrated_end_frame.py +288 -0
  38. gflow_cli-0.78.0/scripts/dev/spike_networkidle_bootstrap_cost.py +186 -0
  39. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/server.json +2 -2
  40. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/gflow-cli/SKILL.md +8 -7
  41. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/pr-council-review/SKILL.md +43 -1
  42. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/release/SKILL.md +33 -3
  43. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/SKILL.md +1 -1
  44. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/__init__.py +1 -1
  45. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/client.py +62 -7
  46. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/migrated_composer.py +412 -92
  47. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/internal_chromium.py +61 -12
  48. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/real_chrome.py +32 -5
  49. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/verification.py +182 -0
  50. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli.py +2 -0
  51. gflow_cli-0.78.0/src/gflow_cli/cli_docs.py +191 -0
  52. gflow_cli-0.78.0/src/gflow_cli/docs_catalog.py +369 -0
  53. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/errors.py +4 -4
  54. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/server.py +26 -1
  55. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/tools.py +60 -28
  56. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/update_check.py +66 -0
  57. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/worker/daemon.py +6 -0
  58. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client.py +3 -1
  59. gflow_cli-0.78.0/tests/api/test_client_project_host.py +175 -0
  60. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_composer.py +301 -13
  61. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_dispatch.py +27 -9
  62. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_images.py +10 -10
  63. gflow_cli-0.78.0/tests/api/transports/test_migrated_project.py +213 -0
  64. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_navigation_settled.py +13 -0
  65. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/strategies/test_strategies.py +107 -4
  66. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/test_real_chrome.py +50 -4
  67. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/test_verification.py +230 -0
  68. gflow_cli-0.78.0/tests/cli/test_cli_docs.py +300 -0
  69. gflow_cli-0.78.0/tests/cli/test_docs_catalog_real_docs.py +100 -0
  70. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/conftest.py +6 -0
  71. gflow_cli-0.78.0/tests/e2e/test_blocking_dialog_dismissal_bdd.py +217 -0
  72. gflow_cli-0.78.0/tests/e2e/test_frame_picker_binding_bdd.py +209 -0
  73. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_i2v_flags_e2e.py +21 -20
  74. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_migrated_host_e2e.py +90 -0
  75. gflow_cli-0.78.0/tests/e2e/test_project_create_e2e.py +210 -0
  76. gflow_cli-0.78.0/tests/features/blocking_dialog_dismissal.feature +51 -0
  77. gflow_cli-0.78.0/tests/features/frame_picker_binding.feature +43 -0
  78. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/migrated_i2v.feature +4 -4
  79. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_migrated_i2v_steps.py +18 -13
  80. gflow_cli-0.78.0/tests/integration/test_docs_ships_in_wheel.py +115 -0
  81. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_cli_parity.py +11 -0
  82. gflow_cli-0.78.0/tests/mcp/test_mcp_profile_contention.py +163 -0
  83. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_migrated_i2v_parity.py +4 -2
  84. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_server.py +3 -0
  85. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_workflow_hardening.py +132 -0
  86. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_observability.py +35 -0
  87. gflow_cli-0.78.0/tests/test_release_version_sites.py +113 -0
  88. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_update_check.py +81 -0
  89. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_daemon.py +27 -0
  90. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/uv.lock +6 -4
  91. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/AUTHENTICATION.md +18 -0
  92. {gflow_cli-0.76.0 → gflow_cli-0.78.0/website}/docs/CONFIGURATION.md +4 -4
  93. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/KNOWN_ISSUES.md +5 -6
  94. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/MCP.md +9 -4
  95. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/USAGE.md +105 -21
  96. gflow_cli-0.76.0/.github/workflows/mcp-registry.yml +0 -70
  97. gflow_cli-0.76.0/docs/PROJECT_STATUS.md +0 -1309
  98. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.agents/plugins/marketplace.json +0 -0
  99. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/README.md +0 -0
  100. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/active.md +0 -0
  101. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/branch-review.md +0 -0
  102. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/changelog.md +0 -0
  103. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/check.md +0 -0
  104. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/doc-review.md +0 -0
  105. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  106. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  107. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/known-issues.md +0 -0
  108. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/live-verify.md +0 -0
  109. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/llm-council.md +0 -0
  110. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/next.md +0 -0
  111. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/plan.md +0 -0
  112. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  113. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/predict.md +0 -0
  114. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/release.md +0 -0
  115. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/scenario.md +0 -0
  116. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/sonar.md +0 -0
  117. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/spike.md +0 -0
  118. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude/commands/gflow/status.md +0 -0
  119. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.claude-plugin/marketplace.json +0 -0
  120. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.env.template +0 -0
  121. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.gitattributes +0 -0
  122. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/CODEOWNERS +0 -0
  123. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/FUNDING.yml +0 -0
  124. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  125. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/copilot-instructions.md +0 -0
  126. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/dependabot.yml +0 -0
  127. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/ci.yml +0 -0
  128. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/deps-watch.yml +0 -0
  129. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/external-pr-triage.yml +0 -0
  130. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/governance-advisory.yml +0 -0
  131. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/governance-benchmark.yml +0 -0
  132. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/labels.yml +0 -0
  133. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/main-base-guard.yml +0 -0
  134. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/pages.yml +0 -0
  135. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/scorecard.yml +0 -0
  136. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/selector-probe.yml +0 -0
  137. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/sponsors.yml +0 -0
  138. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.github/workflows/star-history-watch.yml +0 -0
  139. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.gitignore +0 -0
  140. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.gitleaks.toml +0 -0
  141. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.pre-commit-config.yaml +0 -0
  142. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/.secrets.baseline +0 -0
  143. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/CLAUDE.md +0 -0
  144. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/CONFIGURATION.md +0 -0
  145. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/CONTRIBUTING.md +0 -0
  146. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/DISCLAIMER.md +0 -0
  147. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/LICENSE +0 -0
  148. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/PLAN.md +0 -0
  149. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/README.md +0 -0
  150. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/ROADMAP.md +0 -0
  151. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/conftest.py +0 -0
  152. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/deploy/logrotate-pr-triage +0 -0
  153. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker/Dockerfile.test +0 -0
  154. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker/README.md +0 -0
  155. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker/docker-compose.yml +0 -0
  156. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker/dockerignore.example +0 -0
  157. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docker-compose.yml +0 -0
  158. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/ACCOUNT_SAFETY.md +0 -0
  159. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/AGENT_GUIDE.md +0 -0
  160. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/AGENT_UI_E2E.md +0 -0
  161. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/AGENT_UI_RECON.md +0 -0
  162. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/ARCHITECTURE.md +0 -0
  163. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  164. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/CHARACTER.md +0 -0
  165. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/CHARACTER_RECON.md +0 -0
  166. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/CONTAINER.md +0 -0
  167. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/DATA_LAYER.md +0 -0
  168. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/DEBUGGING.md +0 -0
  169. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/DEMOS.md +0 -0
  170. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/DEVELOPMENT.md +0 -0
  171. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/E2E_TESTING.md +0 -0
  172. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/EXTERNAL_STORAGE.md +0 -0
  173. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/GITHUB.md +0 -0
  174. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  175. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  176. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/INSTRUCTIONS.md +0 -0
  177. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  178. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  179. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  180. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  181. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  182. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  183. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  184. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  185. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  186. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  187. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  188. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  189. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  190. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  191. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  192. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  193. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  194. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  195. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  196. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  197. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  198. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  199. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  200. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  201. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  202. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  203. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  204. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  205. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  206. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  207. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  208. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  209. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  210. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  211. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  212. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  213. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  214. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  215. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  216. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  217. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  218. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  219. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  220. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  221. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  222. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  223. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  224. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  225. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  226. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  227. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  228. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  229. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  230. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  231. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  232. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  233. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  234. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  235. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  236. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  237. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  238. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  239. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  240. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  241. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  242. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  243. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  244. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  245. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  246. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  247. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  248. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  249. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  250. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  251. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  252. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  253. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
  254. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
  255. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
  256. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
  257. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
  258. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
  259. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
  260. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  261. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  262. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  263. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  264. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/MARKETPLACES.md +0 -0
  265. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/MEDIA_LIBRARY.md +0 -0
  266. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/MOVIE.md +0 -0
  267. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/PROMPT_EXPANSION.md +0 -0
  268. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  269. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/SECURITY.md +0 -0
  270. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/SPONSORS.md +0 -0
  271. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/TOOLS.md +0 -0
  272. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/USER_GUIDE.md +0 -0
  273. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/assets/demo-split-pf.gif +0 -0
  274. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/assets/example-run.gif +0 -0
  275. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/assets/examples.webp +0 -0
  276. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/medium_tutorial.md +0 -0
  277. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/schemas/movie-handoff.schema.json +0 -0
  278. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/sonar-cleanup-tracker.md +0 -0
  279. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/README.md +0 -0
  280. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  281. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  282. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  283. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  284. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  285. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  286. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  287. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  288. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  289. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  290. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  291. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  292. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  293. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  294. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  295. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  296. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  297. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  298. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  299. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  300. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  301. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  302. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  303. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  304. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  305. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  306. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  307. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  308. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  309. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  310. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  311. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  312. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/release-signing.md +0 -0
  313. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  314. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  315. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  316. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  317. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  318. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  319. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  320. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  321. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  322. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  323. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  324. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  325. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  326. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  327. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  328. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  329. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  330. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  331. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  332. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  333. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  334. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  335. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  336. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  337. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  338. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  339. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  340. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  341. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  342. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  343. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  344. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  345. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  346. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  347. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  348. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  349. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  350. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  351. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  352. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  353. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  354. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  355. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  356. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  357. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  358. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  359. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  360. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  361. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  362. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  363. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  364. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  365. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  366. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  367. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  368. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  369. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  370. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  371. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  372. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  373. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
  374. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  375. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  376. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  377. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  378. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  379. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  380. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  381. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  382. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  383. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  384. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  385. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  386. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  387. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  388. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  389. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  390. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  391. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  392. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  393. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  394. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  395. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  396. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  397. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  398. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  399. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  400. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  401. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  402. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  403. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
  404. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  405. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
  406. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  407. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  408. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
  409. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
  410. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
  411. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
  412. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
  413. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
  414. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
  415. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
  416. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
  417. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
  418. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
  419. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
  420. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
  421. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/README.md +0 -0
  422. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/batch_from_config.py +0 -0
  423. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/multi_prompt_t2i.py +0 -0
  424. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/sample_config.json +0 -0
  425. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/sample_prompts.txt +0 -0
  426. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/single_image_t2i.py +0 -0
  427. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/examples/workflow_chain.py +0 -0
  428. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/glama.json +0 -0
  429. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/index.html +0 -0
  430. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/mempalace.yaml +0 -0
  431. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/README.md +0 -0
  432. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/.mcp.json +0 -0
  433. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
  434. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/composition.md +0 -0
  435. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
  436. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
  437. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
  438. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/README.md +0 -0
  439. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/01_upload_image.json +0 -0
  440. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  441. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  442. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/04_archive_workflow.json +0 -0
  443. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/05_createProject.json +0 -0
  444. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/06_batchGenerateImages.json +0 -0
  445. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  446. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  447. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  448. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  449. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  450. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/12_create_scene.json +0 -0
  451. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  452. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/14_get_scene_workflows.json +0 -0
  453. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  454. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/canary/register_task.ps1 +0 -0
  455. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/canary/run_canary.py +0 -0
  456. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_council_memory.py +0 -0
  457. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_doc_links.py +0 -0
  458. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_fork_pr_ci.py +0 -0
  459. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_materiality.py +0 -0
  460. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_release_artifacts.py +0 -0
  461. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_test_count.py +0 -0
  462. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/check_website_docs_pii.py +0 -0
  463. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/generate_plugin_skills.py +0 -0
  464. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/generate_website_docs.py +0 -0
  465. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/ci/update_sponsors.py +0 -0
  466. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/debug_editor.py +0 -0
  467. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/debug_gen_settings.py +0 -0
  468. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/debug_settings.py +0 -0
  469. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/_recording_client.py +0 -0
  470. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/_spike_common.py +0 -0
  471. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/acceptance/__init__.py +0 -0
  472. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/acceptance/bench.py +0 -0
  473. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/acceptance/domain.py +0 -0
  474. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/acceptance/judge.py +0 -0
  475. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/acceptance/settings.py +0 -0
  476. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/active_plan.py +0 -0
  477. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  478. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  479. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  480. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  481. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  482. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  483. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  484. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_locale_invariants.py +0 -0
  485. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  486. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  487. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  488. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  489. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  490. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  491. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  492. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  493. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_project_listing.py +0 -0
  494. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  495. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  496. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  497. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  498. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/character_create_spike.py +0 -0
  499. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/character_create_spike_v2.py +0 -0
  500. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/dump_character_selectors.js +0 -0
  501. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/README.md +0 -0
  502. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  503. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  504. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  505. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  506. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  507. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  508. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  509. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  510. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  511. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  512. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  513. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/incident_bundle_quality.py +0 -0
  514. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  515. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  516. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  517. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/make_project.py +0 -0
  518. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/materiality_backtest.py +0 -0
  519. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  520. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/measure_locale_probe.py +0 -0
  521. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  522. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/patch_character.py +0 -0
  523. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/skillopt/README.md +0 -0
  524. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/skillopt/harness.py +0 -0
  525. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/skillopt/tasks.json +0 -0
  526. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/sonar-local-scan.sh +0 -0
  527. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  528. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
  529. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
  530. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  531. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_changelog_capture.py +0 -0
  532. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  533. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  534. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  535. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  536. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
  537. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  538. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  539. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  540. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  541. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  542. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  543. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
  544. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  545. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
  546. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
  547. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_host_lane.py +0 -0
  548. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_image_model_attribution.py +0 -0
  549. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  550. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  551. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  552. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  553. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_incident_live.py +0 -0
  554. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  555. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  556. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  557. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  558. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  559. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  560. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_locale_poison.py +0 -0
  561. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  562. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  563. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  564. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  565. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  566. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  567. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
  568. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  569. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  570. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
  571. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  572. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  573. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  574. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  575. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  576. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  577. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
  578. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  579. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  580. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  581. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  582. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  583. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  584. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  585. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  586. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  587. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  588. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_model_inventory.py +0 -0
  589. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  590. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  591. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  592. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  593. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  594. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
  595. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  596. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_patch_entity.py +0 -0
  597. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_patchright.py +0 -0
  598. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
  599. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_project_media_status.py +0 -0
  600. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  601. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
  602. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  603. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  604. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/verify_language_agnostic.py +0 -0
  605. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  606. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/dev/verify_model_attribution.py +0 -0
  607. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/README.md +0 -0
  608. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/capture_flow_traffic.py +0 -0
  609. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  610. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/memory_profile.py +0 -0
  611. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/recaptcha_mint.py +0 -0
  612. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  613. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  614. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  615. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/probe/run_probe.py +0 -0
  616. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/probe/spike_auth_matrix.py +0 -0
  617. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/record_demo.ps1 +0 -0
  618. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/smoke_image.py +0 -0
  619. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/smoke_video_editor.py +0 -0
  620. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/smoke_worker_style.py +0 -0
  621. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/spike_waf_camoufox.py +0 -0
  622. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/scripts/verify_chrome_auth_viability.py +0 -0
  623. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/README.md +0 -0
  624. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/changelog/SKILL.md +0 -0
  625. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/check/SKILL.md +0 -0
  626. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/doc-review/SKILL.md +0 -0
  627. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/issue-assessment/SKILL.md +0 -0
  628. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/issue-resolve/SKILL.md +0 -0
  629. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/known-issues/SKILL.md +0 -0
  630. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/live-verify/SKILL.md +0 -0
  631. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/llm-council/SKILL.md +0 -0
  632. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/plan/SKILL.md +0 -0
  633. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/predict/SKILL.md +0 -0
  634. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/scenario/SKILL.md +0 -0
  635. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/sonar/SKILL.md +0 -0
  636. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/spike/SKILL.md +0 -0
  637. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/status/SKILL.md +0 -0
  638. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/clip_qa.py +0 -0
  639. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/composition.md +0 -0
  640. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/consistency.md +0 -0
  641. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/failure-modes.md +0 -0
  642. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/skills/video-production/tasks.json +0 -0
  643. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/sonar-project.properties +0 -0
  644. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/__main__.py +0 -0
  645. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/_cli_helpers.py +0 -0
  646. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/__init__.py +0 -0
  647. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/_engine.py +0 -0
  648. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/_retry.py +0 -0
  649. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  650. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/character.py +0 -0
  651. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/credits.py +0 -0
  652. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/dto.py +0 -0
  653. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/extend_chain.py +0 -0
  654. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/image.py +0 -0
  655. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/image_upscale.py +0 -0
  656. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/recaptcha.py +0 -0
  657. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/routes.py +0 -0
  658. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/scene.py +0 -0
  659. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  660. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/_common.py +0 -0
  661. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  662. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/base.py +0 -0
  663. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  664. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  665. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  666. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  667. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  668. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  669. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  670. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  671. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  672. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  673. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  674. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  675. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  676. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/video.py +0 -0
  677. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/api/video_extend.py +0 -0
  678. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/__init__.py +0 -0
  679. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/base.py +0 -0
  680. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/cookies.py +0 -0
  681. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/factory.py +0 -0
  682. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/auth/strategies.py +0 -0
  683. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/browser_manager.py +0 -0
  684. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/chain.py +0 -0
  685. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/chain_manifest.py +0 -0
  686. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_character.py +0 -0
  687. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_credits.py +0 -0
  688. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_data.py +0 -0
  689. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_doctor.py +0 -0
  690. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_image.py +0 -0
  691. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_instructions.py +0 -0
  692. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_models.py +0 -0
  693. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_movie.py +0 -0
  694. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_project.py +0 -0
  695. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_run.py +0 -0
  696. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_scene.py +0 -0
  697. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_tools.py +0 -0
  698. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_update.py +0 -0
  699. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/cli_video.py +0 -0
  700. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/composition.py +0 -0
  701. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/config.py +0 -0
  702. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/__init__.py +0 -0
  703. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/chain_repo.py +0 -0
  704. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  705. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  706. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  707. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  708. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  709. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  710. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  711. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  712. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  713. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  714. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/models.py +0 -0
  715. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/queries.py +0 -0
  716. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/recorder.py +0 -0
  717. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/redaction.py +0 -0
  718. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/repository.py +0 -0
  719. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/data/store.py +0 -0
  720. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/diagnostics.py +0 -0
  721. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/exceptions.py +0 -0
  722. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/file_integrity.py +0 -0
  723. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  724. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  725. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  726. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  727. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/image_batch.py +0 -0
  728. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/json_output.py +0 -0
  729. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/__init__.py +0 -0
  730. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/prompts.py +0 -0
  731. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/resources.py +0 -0
  732. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/setup.py +0 -0
  733. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  734. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/media.py +0 -0
  735. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/movie_manifest.py +0 -0
  736. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/observability.py +0 -0
  737. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/paths.py +0 -0
  738. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/profile_lease.py +0 -0
  739. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/profile_store.py +0 -0
  740. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/redaction.py +0 -0
  741. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/__init__.py +0 -0
  742. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  743. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/character_create.py +0 -0
  744. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/credits.py +0 -0
  745. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/doctor.py +0 -0
  746. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/services/mentions.py +0 -0
  747. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/storage.py +0 -0
  748. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/__init__.py +0 -0
  749. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/banned.py +0 -0
  750. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  751. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  752. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  753. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  754. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/expander.py +0 -0
  755. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/invocation.py +0 -0
  756. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/loader.py +0 -0
  757. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/registry.py +0 -0
  758. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/runtime.py +0 -0
  759. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/tools/spec.py +0 -0
  760. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/ui/app.py +0 -0
  761. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/ui/server.py +0 -0
  762. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/winsec.py +0 -0
  763. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/worker/codec.py +0 -0
  764. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/src/gflow_cli/worker/queue.py +0 -0
  765. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tasks/lessons.md +0 -0
  766. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/test_assets/sample_batch.json +0 -0
  767. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/test_assets/sample_batch.tsv +0 -0
  768. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/test_assets/sample_batch_invalid.tsv +0 -0
  769. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/__init__.py +0 -0
  770. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/__init__.py +0 -0
  771. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/fixtures/character_gen_response.json +0 -0
  772. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  773. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  774. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  775. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  776. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_bearer_redaction.py +0 -0
  777. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_bootstrap_chooser.py +0 -0
  778. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_character.py +0 -0
  779. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_character_readback_fallback.py +0 -0
  780. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_character.py +0 -0
  781. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_delete_characters.py +0 -0
  782. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_errors.py +0 -0
  783. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_extend.py +0 -0
  784. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_generate_character.py +0 -0
  785. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_image.py +0 -0
  786. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_incidents.py +0 -0
  787. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_launch_kwargs.py +0 -0
  788. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_locale_cache.py +0 -0
  789. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_migrated_mint.py +0 -0
  790. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_patch_entity.py +0 -0
  791. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_scene.py +0 -0
  792. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_client_upscale.py +0 -0
  793. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_concurrency.py +0 -0
  794. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_credits.py +0 -0
  795. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_credits_http.py +0 -0
  796. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_dto.py +0 -0
  797. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_engine.py +0 -0
  798. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_extend_chain.py +0 -0
  799. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_image.py +0 -0
  800. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_image_dto.py +0 -0
  801. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_image_upscale.py +0 -0
  802. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  803. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_recaptcha.py +0 -0
  804. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_retry.py +0 -0
  805. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_routes.py +0 -0
  806. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_routes_character.py +0 -0
  807. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_routes_locale.py +0 -0
  808. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_routes_scene.py +0 -0
  809. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_sapisidhash_helper.py +0 -0
  810. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_scene_models.py +0 -0
  811. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_video.py +0 -0
  812. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_video_extend.py +0 -0
  813. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_video_request.py +0 -0
  814. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/test_video_status_poll.py +0 -0
  815. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/__init__.py +0 -0
  816. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/conftest.py +0 -0
  817. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/drivers/__init__.py +0 -0
  818. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  819. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_classic.py +0 -0
  820. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_factory.py +0 -0
  821. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  822. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_agent_only_composer.py +0 -0
  823. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  824. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_base.py +0 -0
  825. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_batchexecute.py +0 -0
  826. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_bearer.py +0 -0
  827. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_character_model_picker.py +0 -0
  828. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_click_attribution.py +0 -0
  829. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_common.py +0 -0
  830. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  831. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_factory.py +0 -0
  832. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_fingerprint.py +0 -0
  833. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
  834. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  835. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_locale_navigation.py +0 -0
  836. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  837. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  838. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_migrated_route.py +0 -0
  839. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_mode_control.py +0 -0
  840. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  841. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  842. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  843. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_policy_400.py +0 -0
  844. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_sapisidhash.py +0 -0
  845. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  846. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_transport_timeout.py +0 -0
  847. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation.py +0 -0
  848. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  849. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  850. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  851. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  852. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  853. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/strategies/test_factory.py +0 -0
  854. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/test_account_autoselect.py +0 -0
  855. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/test_cookies.py +0 -0
  856. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/auth/test_windows_acl.py +0 -0
  857. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/__init__.py +0 -0
  858. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_auth_status.py +0 -0
  859. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
  860. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_auth_list.py +0 -0
  861. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_character.py +0 -0
  862. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_character_create.py +0 -0
  863. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_credits.py +0 -0
  864. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_data.py +0 -0
  865. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_data_errors.py +0 -0
  866. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  867. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_data_sync.py +0 -0
  868. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_doctor.py +0 -0
  869. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_image.py +0 -0
  870. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  871. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  872. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_image_upscale.py +0 -0
  873. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  874. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_instructions.py +0 -0
  875. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_models.py +0 -0
  876. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_movie.py +0 -0
  877. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_run.py +0 -0
  878. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_scene.py +0 -0
  879. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_tools.py +0 -0
  880. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_video.py +0 -0
  881. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_video_chain.py +0 -0
  882. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_cli_video_extend.py +0 -0
  883. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_error_handling.py +0 -0
  884. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_failure_funnel.py +0 -0
  885. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_helpers.py +0 -0
  886. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_incident_output.py +0 -0
  887. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_movie_manifest.py +0 -0
  888. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  889. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_predictable_output.py +0 -0
  890. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  891. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  892. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_settings_validation.py +0 -0
  893. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  894. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/composition/test_character.py +0 -0
  895. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/composition/test_compose_prompt.py +0 -0
  896. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/composition/test_handoff.py +0 -0
  897. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/composition/test_style_variants.py +0 -0
  898. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/composition/test_style_variants_e2e.py +0 -0
  899. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/__init__.py +0 -0
  900. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_chain_repo.py +0 -0
  901. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_failure_recording.py +0 -0
  902. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_find_incomplete_character.py +0 -0
  903. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_models.py +0 -0
  904. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_null_columns_stay_null.py +0 -0
  905. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_packaging.py +0 -0
  906. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_recorder.py +0 -0
  907. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_recorder_character.py +0 -0
  908. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_redaction.py +0 -0
  909. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_repository.py +0 -0
  910. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_scene_persistence.py +0 -0
  911. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_settings_and_errors.py +0 -0
  912. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_store.py +0 -0
  913. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/data/test_store_migrations.py +0 -0
  914. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/dev/test_recording_client.py +0 -0
  915. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/__init__.py +0 -0
  916. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/conftest.py +0 -0
  917. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
  918. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  919. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  920. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  921. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  922. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  923. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_chain_e2e.py +0 -0
  924. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_character_create_e2e.py +0 -0
  925. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  926. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  927. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
  928. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  929. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_credits_e2e.py +0 -0
  930. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  931. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_daemon_e2e.py +0 -0
  932. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  933. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  934. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  935. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  936. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  937. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  938. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  939. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  940. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  941. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  942. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_json_output_e2e.py +0 -0
  943. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -0
  944. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  945. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  946. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  947. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  948. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  949. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_scene_compose_live.py +0 -0
  950. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  951. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_tools_e2e.py +0 -0
  952. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_transports_e2e.py +0 -0
  953. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  954. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  955. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  956. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/__init__.py +0 -0
  957. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/asset_tagging.feature +0 -0
  958. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/auth.feature +0 -0
  959. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/auth_login.feature +0 -0
  960. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/character_create.feature +0 -0
  961. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/character_read.feature +0 -0
  962. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/click_attribution.feature +0 -0
  963. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/conftest.py +0 -0
  964. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/credits.feature +0 -0
  965. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/duration_tab_drift.feature +0 -0
  966. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/entity_provenance.feature +0 -0
  967. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/image.feature +0 -0
  968. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/image_batch_references.feature +0 -0
  969. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/image_upscale.feature +0 -0
  970. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/incident_diagnostics.feature +0 -0
  971. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/instructions.feature +0 -0
  972. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/landing_state_diagnosis.feature +0 -0
  973. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/latched_locale_recovery.feature +0 -0
  974. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/locale_picker_include.feature +0 -0
  975. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/mcp_tasks.feature +0 -0
  976. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/media_picker_tiers.feature +0 -0
  977. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/migrated_driver.feature +0 -0
  978. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/migrated_host_gate.feature +0 -0
  979. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/migrated_host_images.feature +0 -0
  980. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/output_hardening.feature +0 -0
  981. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_asset_tagging_steps.py +0 -0
  982. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_auth_login_steps.py +0 -0
  983. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_auth_steps.py +0 -0
  984. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_character_create_steps.py +0 -0
  985. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_character_read_steps.py +0 -0
  986. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_credits_steps.py +0 -0
  987. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_e2e_binding_guard.py +0 -0
  988. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_image_steps.py +0 -0
  989. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_image_upscale_steps.py +0 -0
  990. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  991. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_instructions_steps.py +0 -0
  992. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  993. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  994. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  995. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_migrated_driver_steps.py +0 -0
  996. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  997. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_migrated_host_images_steps.py +0 -0
  998. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_output_hardening_steps.py +0 -0
  999. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_step_collision_guard.py +0 -0
  1000. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  1001. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/test_video_chain_steps.py +0 -0
  1002. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/video_agent_ui.feature +0 -0
  1003. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/features/video_chain.feature +0 -0
  1004. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/__init__.py +0 -0
  1005. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/changelog_modal_page.html +0 -0
  1006. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/doctor_env.py +0 -0
  1007. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/flow_model_inventory.json +0 -0
  1008. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  1009. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/listing_payload.py +0 -0
  1010. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/fixtures/seeded_catalog.py +0 -0
  1011. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/__init__.py +0 -0
  1012. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/test_grading.py +0 -0
  1013. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/test_model.py +0 -0
  1014. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/test_model_governance.py +0 -0
  1015. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/test_registry.py +0 -0
  1016. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/flow_selectors/test_report.py +0 -0
  1017. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/image_batch/__init__.py +0 -0
  1018. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/image_batch/test_image_manifest.py +0 -0
  1019. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/image_batch/test_jitter_config.py +0 -0
  1020. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/image_batch/test_observability_events.py +0 -0
  1021. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/__init__.py +0 -0
  1022. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/conftest.py +0 -0
  1023. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/constants.py +0 -0
  1024. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/test_expander_gateway.py +0 -0
  1025. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/test_storage_gcs.py +0 -0
  1026. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/integration/test_storage_s3.py +0 -0
  1027. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/__init__.py +0 -0
  1028. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/conftest.py +0 -0
  1029. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_auth_status_tool.py +0 -0
  1030. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_character_tools.py +0 -0
  1031. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_credits_tool.py +0 -0
  1032. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_error_funnel.py +0 -0
  1033. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_http_transport.py +0 -0
  1034. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_known_issues_resource.py +0 -0
  1035. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_no_spend.py +0 -0
  1036. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
  1037. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  1038. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  1039. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_resources.py +0 -0
  1040. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_serve_auth.py +0 -0
  1041. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_setup.py +0 -0
  1042. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_stdio_transport.py +0 -0
  1043. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_tasks_extension.py +0 -0
  1044. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_tools_helpers.py +0 -0
  1045. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_tools_instructions.py +0 -0
  1046. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/mcp/test_tools_wired.py +0 -0
  1047. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  1048. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_canary_classify.py +0 -0
  1049. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_canary_reexec.py +0 -0
  1050. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  1051. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  1052. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_council_memory.py +0 -0
  1053. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
  1054. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_materiality.py +0 -0
  1055. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  1056. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  1057. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_test_count.py +0 -0
  1058. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  1059. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_codex_plugin.py +0 -0
  1060. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_extract_har_summary.py +0 -0
  1061. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_frame_acceptance.py +0 -0
  1062. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_generate_website_docs.py +0 -0
  1063. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  1064. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_materiality_backtest.py +0 -0
  1065. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  1066. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_spike_page_pool.py +0 -0
  1067. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_spike_profile_lease.py +0 -0
  1068. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/scripts/test_update_sponsors.py +0 -0
  1069. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/__init__.py +0 -0
  1070. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_catalog_sync.py +0 -0
  1071. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_character_create_redaction.py +0 -0
  1072. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_character_create_saga.py +0 -0
  1073. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  1074. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_credits.py +0 -0
  1075. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_doctor.py +0 -0
  1076. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_media_attribution.py +0 -0
  1077. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_mentions_observability.py +0 -0
  1078. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_mentions_parse.py +0 -0
  1079. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_mentions_resolve.py +0 -0
  1080. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/services/test_resolve_and_apply.py +0 -0
  1081. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/smoke/__init__.py +0 -0
  1082. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  1083. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/smoke/test_real_flow.py +0 -0
  1084. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_auth.py +0 -0
  1085. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_browser_manager.py +0 -0
  1086. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_chain.py +0 -0
  1087. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_chain_manifest.py +0 -0
  1088. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_cli_data.py +0 -0
  1089. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_cli_project.py +0 -0
  1090. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_cli_update.py +0 -0
  1091. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_config.py +0 -0
  1092. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_conftest_isolation.py +0 -0
  1093. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_data_queries.py +0 -0
  1094. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_bundle.py +0 -0
  1095. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_events.py +0 -0
  1096. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_journal.py +0 -0
  1097. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_recorder.py +0 -0
  1098. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_retention.py +0 -0
  1099. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_diagnostics_sanitize.py +0 -0
  1100. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_dockerfile_version_pin.py +0 -0
  1101. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_documentation_gate.py +0 -0
  1102. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_duration_tab_drift.py +0 -0
  1103. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_entity_provenance.py +0 -0
  1104. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_errors.py +0 -0
  1105. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_errors_classification.py +0 -0
  1106. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_glama_build_spec.py +0 -0
  1107. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_image_batch_references.py +0 -0
  1108. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_incident_generation_requests.py +0 -0
  1109. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_json_output.py +0 -0
  1110. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_marker_registry.py +0 -0
  1111. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_media.py +0 -0
  1112. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1113. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_paths.py +0 -0
  1114. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_playwright_pin.py +0 -0
  1115. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_plugin_manifests.py +0 -0
  1116. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_profile_lease.py +0 -0
  1117. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_profile_lease_subprocess.py +0 -0
  1118. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_profile_store.py +0 -0
  1119. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_profile_store_locale.py +0 -0
  1120. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_project_list_urls.py +0 -0
  1121. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_rich_markup_safety.py +0 -0
  1122. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_self_documenting_errors.py +0 -0
  1123. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_server_json.py +0 -0
  1124. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/test_smoke.py +0 -0
  1125. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/__init__.py +0 -0
  1126. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_banned.py +0 -0
  1127. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_expander.py +0 -0
  1128. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_invocation.py +0 -0
  1129. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_loader.py +0 -0
  1130. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_registry.py +0 -0
  1131. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_runtime.py +0 -0
  1132. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/tools/test_spec.py +0 -0
  1133. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/ui/test_app.py +0 -0
  1134. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_codec.py +0 -0
  1135. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1136. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_queue.py +0 -0
  1137. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1138. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1139. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1140. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/ARCHITECTURE.md +0 -0
  1141. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/CHARACTER.md +0 -0
  1142. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/DATA_LAYER.md +0 -0
  1143. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/DEBUGGING.md +0 -0
  1144. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/DEVELOPMENT.md +0 -0
  1145. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/E2E_TESTING.md +0 -0
  1146. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1147. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/INSTRUCTIONS.md +0 -0
  1148. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1149. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/MOVIE.md +0 -0
  1150. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1151. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/SECURITY.md +0 -0
  1152. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/SPONSORS.md +0 -0
  1153. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/TOOLS.md +0 -0
  1154. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/USER_GUIDE.md +0 -0
  1155. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/agents.md +0 -0
  1156. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/index.md +0 -0
  1157. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/installation.md +0 -0
  1158. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/onboarding-mockup.html +0 -0
  1159. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/onboarding.md +0 -0
  1160. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/docs/stylesheets/extra.css +0 -0
  1161. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/mkdocs.yml +0 -0
  1162. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/requirements.in +0 -0
  1163. {gflow_cli-0.76.0 → gflow_cli-0.78.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.76.0",
3
+ "version": "0.78.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -0,0 +1,132 @@
1
+ name: MCP Registry
2
+
3
+ # Publishes server.json to the Official MCP Registry — the listing that feeds the
4
+ # downstream directories (PulseMCP ingests it; GitHub's MCP gallery is built on it).
5
+ #
6
+ # This is CALLED by release.yml (`uses:` + `needs: build-and-publish`), never triggered
7
+ # by an event. Two reasons, both learned the hard way:
8
+ #
9
+ # 1. `on: release: published` does not work here. release.yml creates the Release with
10
+ # the default GITHUB_TOKEN, and GitHub starts no workflow runs from
11
+ # GITHUB_TOKEN-created events — so it never fired once, on any release, with nothing
12
+ # going red (#841). Creating the Release with a user PAT would fix that, at the price
13
+ # of a credential that expires every 366 days on a path that runs a handful of times
14
+ # a year. A call has no such fuse.
15
+ # 2. Ordering. `mcp-publisher` proves namespace ownership by reading the `mcp-name:`
16
+ # token out of the PUBLISHED PyPI README, and PyPI metadata is frozen per release, so
17
+ # the wheel must be up first. `needs: build-and-publish` enforces that structurally,
18
+ # rather than by two files happening to agree about step order.
19
+ #
20
+ # Being called also pins the publish to the release TAG, so server.json is the released
21
+ # one — the wrong-ref hazard that republished 0.75.0 over 0.76.0 (#841) cannot arise on
22
+ # this path at all. It still can on a hand dispatch, which is what the guard below is for.
23
+ #
24
+ # Registry auth is GitHub Actions OIDC: the runner exchanges its own short-lived identity
25
+ # token for registry credentials, which is why this needs `id-token: write` and nothing
26
+ # else. No token of any kind is stored for, or handed to, the registry.
27
+
28
+ on:
29
+ workflow_call:
30
+ inputs:
31
+ version:
32
+ description: "Version being published, with or without a leading `v`. Must match server.json on the checked-out ref."
33
+ required: true
34
+ type: string
35
+ # Manual re-run, e.g. a release whose registry publish failed after PyPI succeeded.
36
+ # `version` is REQUIRED because a dispatch publishes whatever the REF carries:
37
+ # dispatching `develop` before the release back-merge lands republishes the PREVIOUS
38
+ # version, green, with nothing downstream noticing. That happened on v0.76.0 (#841).
39
+ workflow_dispatch:
40
+ inputs:
41
+ version:
42
+ description: "Version to publish, e.g. 0.76.0. Must match server.json on the dispatched ref."
43
+ required: true
44
+ type: string
45
+
46
+ # Write scopes live at JOB level (Scorecard Token-Permissions: a workflow-level
47
+ # write grant reaches every job, current and future).
48
+ permissions:
49
+ contents: read
50
+
51
+ jobs:
52
+ publish:
53
+ runs-on: ubuntu-latest
54
+ permissions:
55
+ contents: read
56
+ id-token: write # OIDC exchange with registry.modelcontextprotocol.io
57
+ env:
58
+ # Pinned by version AND digest: this step runs in a job holding id-token
59
+ # write and publishes publicly under io.github.ffroliva, so a moved tag
60
+ # must not silently change the binary that does it.
61
+ MCP_PUBLISHER_VERSION: "1.8.1"
62
+ MCP_PUBLISHER_SHA256: "a06c9096dcb9727c13555b6be26c7effa707b01f06a4c561ba7a3635443cf2cc"
63
+ steps:
64
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
65
+ with:
66
+ persist-credentials: false
67
+
68
+ - name: server.json must carry the version being published
69
+ # The repo-side agreement (pyproject == __init__ == plugin.json == uv.lock ==
70
+ # server.json) is already a merge gate in check_repo_hygiene.py, so the only way
71
+ # these disagree is publishing from the WRONG REF — which is exactly what
72
+ # happened on v0.76.0 (#841) and what this catches.
73
+ #
74
+ # `inputs` is documented for exactly the two triggers this workflow declares.
75
+ env:
76
+ EXPECTED_VERSION: ${{ inputs.version }}
77
+ run: |
78
+ set -euo pipefail
79
+ expected="${EXPECTED_VERSION#v}"
80
+ if [ -z "${expected}" ]; then
81
+ echo "::error::No version to check against (neither a dispatch input nor a release tag). Refusing to publish."
82
+ exit 1
83
+ fi
84
+ # Checked explicitly: a missing file would otherwise abort on jq's own error
85
+ # and lose the diagnostic below, which is the part an operator needs.
86
+ if [ ! -f server.json ]; then
87
+ echo "::error::server.json is absent on this ref — nothing to publish."
88
+ exit 1
89
+ fi
90
+ # A pre-release must never become the registry's ACTIVE listing — that is what
91
+ # PulseMCP and GitHub's MCP gallery ingest. release.yml skips the call for one,
92
+ # so reaching here means a hand dispatch asked for it explicitly. Refuse anyway.
93
+ case "${expected}" in
94
+ *-*|*a*|*b*|*rc*)
95
+ echo "::error::${expected} is a pre-release. Publishing it would make it the registry's active listing."
96
+ exit 1
97
+ ;;
98
+ esac
99
+ declared=$(jq -r '.version' server.json)
100
+ packaged=$(jq -r '[.packages[]?.version] | join(", ")' server.json)
101
+ if ! jq -e --arg v "${expected}" '.version == $v and all(.packages[]?.version; . == $v)' server.json >/dev/null; then
102
+ echo "::error::Publishing ${expected}, but server.json on this ref declares ${declared} (packages: ${packaged})."
103
+ echo "::error::A dispatch publishes whatever the REF carries. Dispatch the release tag, or wait for the back-merge to land on develop (#841)."
104
+ exit 1
105
+ fi
106
+ echo "server.json declares ${declared} on every version site — matches the version being published."
107
+
108
+ - name: Install mcp-publisher
109
+ env:
110
+ GH_TOKEN: ${{ github.token }}
111
+ run: |
112
+ set -euo pipefail
113
+ archive="${RUNNER_TEMP}/mcp-publisher_linux_amd64.tar.gz"
114
+ gh release download "v${MCP_PUBLISHER_VERSION}" \
115
+ --repo modelcontextprotocol/registry \
116
+ --pattern 'mcp-publisher_linux_amd64.tar.gz' \
117
+ --output "${archive}" --clobber
118
+ echo "${MCP_PUBLISHER_SHA256} ${archive}" | sha256sum -c -
119
+ tar -xzf "${archive}" -C "${RUNNER_TEMP}" mcp-publisher
120
+ "${RUNNER_TEMP}/mcp-publisher" --version
121
+ echo "${RUNNER_TEMP}" >> "${GITHUB_PATH}"
122
+
123
+ - name: Validate server.json
124
+ # Never `init` here: it only writes a TEMPLATE server.json, refuses when a
125
+ # real one exists, and exits 1 — which would abort the run before login.
126
+ run: mcp-publisher validate
127
+
128
+ - name: Authenticate with the registry (GitHub Actions OIDC)
129
+ run: mcp-publisher login github-oidc
130
+
131
+ - name: Publish
132
+ run: mcp-publisher publish
@@ -16,6 +16,8 @@ jobs:
16
16
  permissions:
17
17
  contents: write # for creating GitHub Releases
18
18
  id-token: write # for PyPI Trusted Publishing (OIDC)
19
+ outputs:
20
+ prerelease: ${{ steps.tag_kind.outputs.prerelease }}
19
21
  environment:
20
22
  name: pypi
21
23
  url: https://pypi.org/p/gflow-cli
@@ -64,6 +66,25 @@ jobs:
64
66
  exit 1
65
67
  fi
66
68
 
69
+ - name: Classify the tag
70
+ # Single source of truth for prerelease-ness. It gates BOTH the GitHub Release
71
+ # flag and whether the MCP Registry publish runs at all; as two copies of the
72
+ # same four-clause expression those would eventually disagree.
73
+ # - semver suffixes: v1.2.3-alpha1, v1.2.3-rc1, v1.2.3-beta1 (any '-')
74
+ # - PEP 440 suffixes: v1.2.3a1, v1.2.3b1, v1.2.3rc1 (any a / b / rc)
75
+ # Stable tags like v1.2.3 contain none of these.
76
+ id: tag_kind
77
+ env:
78
+ TAG: ${{ github.ref_name }}
79
+ run: |
80
+ set -euo pipefail
81
+ case "${TAG}" in
82
+ *-*|*a*|*b*|*rc*) prerelease=true ;;
83
+ *) prerelease=false ;;
84
+ esac
85
+ echo "prerelease=${prerelease}" >> "${GITHUB_OUTPUT}"
86
+ echo "${TAG} -> prerelease=${prerelease}"
87
+
67
88
  - name: Build
68
89
  run: uv build
69
90
 
@@ -77,8 +98,24 @@ jobs:
77
98
  with:
78
99
  generate_release_notes: true
79
100
  files: dist/*
80
- # Pre-release detection covers both conventions:
81
- # - semver suffixes: v1.2.3-alpha1, v1.2.3-rc1, v1.2.3-beta1 (any '-' qualifies)
82
- # - PEP 440 suffixes: v1.2.3a1, v1.2.3b1, v1.2.3rc1 (any 'a' / 'b' / 'rc')
83
- # Stable tags like v1.2.3 contain none of these substrings.
84
- prerelease: ${{ contains(github.ref_name, '-') || contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
101
+ prerelease: ${{ steps.tag_kind.outputs.prerelease == 'true' }}
102
+
103
+ mcp-registry:
104
+ # The registry listing is part of the release, not a follow-up, so it is CALLED here
105
+ # rather than triggered by the Release above. `on: release: published` never fired
106
+ # once: the Release is created with the default GITHUB_TOKEN, and GitHub starts no
107
+ # workflow runs from GITHUB_TOKEN-created events (#841). A user PAT would fix that
108
+ # and add a 366-day expiry to a path that runs a few times a year; a call adds none.
109
+ #
110
+ # `needs:` is also what guarantees the ordering mcp-publisher requires — it reads the
111
+ # `mcp-name:` token from the PUBLISHED PyPI README, so the wheel must be up first.
112
+ # And the call runs against this TAG, so server.json is the released one.
113
+ needs: build-and-publish
114
+ # A pre-release must never become the registry's ACTIVE listing.
115
+ if: needs.build-and-publish.outputs.prerelease != 'true'
116
+ permissions:
117
+ contents: read
118
+ id-token: write # OIDC exchange with registry.modelcontextprotocol.io
119
+ uses: ./.github/workflows/mcp-registry.yml
120
+ with:
121
+ version: ${{ github.ref_name }}
@@ -47,7 +47,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
47
47
  - Python CLI and MCP server for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image, today; `GFLOW_CLI_FLOW_HOST`).
48
48
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
49
49
  - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
50
- - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow 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).
50
+ - Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow docs` (list/print/search the bundled documentation — read-only, offline, deliberately no MCP twin), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
51
51
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
52
52
 
53
53
  ## Headed-browser dependency (architectural reality)
@@ -7,6 +7,284 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.78.0] — 2026-09-17
11
+
12
+ ### Added
13
+
14
+ - **`--aspect 3:4` images now run on `flow.google.com`.** Flow's image settings there
15
+ render a fifth aspect radio (`3:4`) that the 2026-09-08 enumeration did not see, so gflow
16
+ refused it with exit 36. All five image aspects are now driven on both hosts.
17
+ ([#864](https://github.com/ffroliva/gflow-cli/issues/864))
18
+
19
+ - **`gflow docs` — the documentation, reachable from the terminal.** 126 pages in `docs/`
20
+ and nothing in the CLI pointed at any of them, so at the moment of use the knowledge was
21
+ unreachable and the reader guessed. `gflow docs` lists the topics, `gflow docs <topic>`
22
+ prints one as raw Markdown (it pipes), and `gflow docs --search <term>` returns the
23
+ matching lines with `docs/FILE.md:LINE` beside each one. Read-only and offline — no
24
+ network, no account, no credits.
25
+
26
+ **The pages now ship inside the wheel** (`gflow_cli/_docs`; 1.3 MB of Markdown, **+0.58 MB
27
+ compressed** — the wheel goes 0.74 MB → 1.32 MB), because the user this was filed for
28
+ installed from PyPI and has no checkout; a command that could only print GitHub links
29
+ would not solve it. A build hook globs `docs/*.md`, so the topic list cannot drift and
30
+ `assets/`/`superpowers/` stay out — measured, after `force-include` + `exclude` silently
31
+ shipped 148 files it was told to exclude. The hook **refuses to build** when it finds no
32
+ pages: `Path.glob` on a missing directory returns empty, and `release.yml` is `uv build`
33
+ then publish, with nothing in between that would notice a wheel whose `gflow docs` is
34
+ empty for every user.
35
+
36
+ Search returns a **line, windowed**, not a file name: the rule that prompted this issue
37
+ lives inside a 4 000-character bullet in `MCP.md`, and answering "it is in MCP.md" leaves
38
+ the reader where they started. Curated `INDEX.md` § Topic shortcuts rank above raw body
39
+ text, all query terms must appear on the line, and a vague query reports how many hits it
40
+ held back instead of quietly truncating. A topic resolves from its slug, its file name,
41
+ either case or an unambiguous prefix — and never by building a path from what was typed,
42
+ so `gflow docs ../../etc/passwd` is an ordinary unknown-topic refusal.
43
+
44
+ No MCP twin, deliberately (`gflow update` is the precedent); the reasoning is recorded in
45
+ `cli_docs.py` rather than left implicit.
46
+ ([#861](https://github.com/ffroliva/gflow-cli/issues/861))
47
+
48
+ - **`gflow video i2v --end-frame <local file>` now runs on `flow.google.com`.** Start+end
49
+ frame interpolation was the last i2v form the migrated composer refused: it exited 36
50
+ ("an end frame is not ported yet") on every account Flow has moved. Both frames are now
51
+ uploaded through the editor's own Upload entry and bound to the Start and End chips, and
52
+ the driver reads back two bound chips before it lets the app submit.
53
+
54
+ A bound end frame switches Flow to a different submit contract — rpc `nprQif`, an
55
+ interpolation model key, and both media ids in the body — which is why watching only the
56
+ classic submit rpcs made every start+end run time out *after* Flow had already accepted
57
+ the submit and billed it. The submit body is asserted before Flow acts on it, so a frame
58
+ that silently failed to bind is a refusal rather than a wrong generation you paid for.
59
+
60
+ The model key is **cohort-dependent** and matched by shape, not by literal:
61
+ `veo_3_1_interpolation_lite` and `omni_flash_i2v_8s_first_last` have both been captured
62
+ on live accounts (the second on 2026-09-17, see
63
+ `docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md`). Frames given
64
+ by media UUID or `@Name` are still not ported.
65
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639))
66
+
67
+ ### Fixed
68
+
69
+ - **The Frames picker could not bind the frame it had just uploaded.** On
70
+ `flow.google.com`, `video i2v` matched a picker option with an *anchored* regex
71
+ (`^\s*<name>\s*$`), but a picker tile is a `mat-icon` ligature followed by the file
72
+ name and a locator reads both nodes as one string — `imageshero-ab12cd34.png` for an
73
+ asset named `hero-ab12cd34.png`. The anchors could never hold, so every i2v run on this
74
+ cohort ended in exit 32, *"the frame picker lists no asset named …"*, while the picker
75
+ had been listing it the whole time. The match is now containment on the display name,
76
+ which is run-unique by construction ([#792](https://github.com/ffroliva/gflow-cli/issues/792))
77
+ and therefore still cannot bind a stale copy of the same file. Covered by a new $0
78
+ route-intercepted e2e (`tests/features/frame_picker_binding.feature`) that renders the
79
+ icon node for real — a mocked picker passes against the bug.
80
+ ([#860](https://github.com/ffroliva/gflow-cli/issues/860))
81
+
82
+ - **Flow's promo modal blocked the first click on a freshly loaded editor.** On
83
+ `flow.google.com` a `role="dialog"` panel over a new editor made `image t2i` fail as
84
+ exit 23 — *".settings-trigger-button did not accept a click within 5000 ms — it is
85
+ covered by div.cdk-overlay-backdrop"* — telling the user to file a selector-drift bug
86
+ when one click on the page fixes it permanently.
87
+
88
+ `_dismiss_dialog` already existed and its selector already matched. It was called at
89
+ the one moment it could not see anything: one frame after `domcontentloaded`, before
90
+ Angular has rendered the modal. That is why a blocked run logged **neither**
91
+ `migrated.dialog_dismissed` nor `migrated.dialog_not_dismissed` — the silence in the
92
+ incident's event stream was the evidence, not the absence of it. The dismissal now
93
+ also runs in `_open_pane`, where the image and video paths take their first click, the
94
+ same place the `glue` consent bar is already cleared. It stays best-effort: a modal
95
+ that refuses to go still falls through to the click post-mortem, which names the
96
+ backdrop, rather than becoming a second competing error path.
97
+ ([#859](https://github.com/ffroliva/gflow-cli/issues/859))
98
+
99
+ - **The migrated `--end-frame` lane rejected omni's interpolation key.** The start+end
100
+ submit validator pinned the model key to `veo_3_1_interpolation_lite`, so
101
+ `omni_flash_i2v_*_first_last` submits — what the second measured cohort actually sends —
102
+ were refused as wire-format errors before Flow could act on them. The check is now
103
+ key-shape based: a submit whose model key contains `interpolation` or `first_last`
104
+ counts as start+end interpolation for any model, and the submit observer accepts the
105
+ bare `batchexecute` reply (no `rpcids` param) that the interpolation rpc answers on.
106
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639))
107
+ - **Generating without a project works again on accounts Flow serves from
108
+ `flow.google.com`, and it no longer tells you to log in.** Every run without `--project`
109
+ (CLI) or `project` (MCP) starts by creating a project through labs.google's
110
+ `project.createProject`. Google has retired that route: it answers *"Flow RPCs have been
111
+ deprecated and disabled"* (404), or 401 for a session holding no labs token — measured
112
+ 12/12 on four profiles. gflow reported the 401 as *"Authentication expired — run `gflow
113
+ auth login`"*, which no login could fix. When that route refuses, gflow now creates the
114
+ project on flow.google.com's projects page and reads the new id and title from Flow's own
115
+ reply; `gflow project create` and `gflow project rename` work there the same way.
116
+ `GFLOW_CLI_FLOW_HOST=labs.google` keeps the labs route and its error. Video runs without a
117
+ project now get it created up front, like images, so they route exactly as if you had
118
+ passed `--project`; MCP `gflow_generate_video` also honours `project_name`, which it
119
+ accepted and then ignored. Thanks to @iceblue03 (#863) and @ChandraLiuswanto (#561) for
120
+ the reports. ([#864](https://github.com/ffroliva/gflow-cli/issues/864),
121
+ [#561](https://github.com/ffroliva/gflow-cli/issues/561))
122
+ - **An MCP server no longer fails a call because another call holds the profile.** Two
123
+ calls on one profile inside one server — a client retry, two agents sharing a server —
124
+ now run one after the other instead of the second failing with `ProfileLockedError`, and
125
+ a profile held by another process (a CLI run) is waited out for up to 180 s. A
126
+ `GFLOW_CLI_LEASE_WAIT_SECONDS` you set yourself, in the environment or a `.env`, still
127
+ wins. The CLI keeps failing fast. Thanks to @iceblue03 (#862).
128
+ ([#864](https://github.com/ffroliva/gflow-cli/issues/864))
129
+
130
+ ## [0.77.1] — 2026-09-17
131
+
132
+ ### Fixed
133
+
134
+ - **A clean Windows install could not run a single command.** `configure_logging`
135
+ renders TEXT logs with `structlog.dev.ConsoleRenderer(colors=True)`, and structlog's
136
+ Windows `_init_terminal` raises `SystemError` outright when `colorama` is missing —
137
+ but `colorama` was never declared, and nothing in the runtime closure supplies it
138
+ (structlog keeps it an optional extra; rich ships its own Windows console handling).
139
+ Because the call sits in the Click *group* callback it runs before any subcommand
140
+ body, so every interactive command on a fresh Windows install aborted with a
141
+ traceback that named structlog and never gflow — the failure read as a broken
142
+ install rather than an incomplete one, and it made the README's Windows quick-start
143
+ fail as written. Piping stderr happened to escape it, since `AUTO` then resolves to
144
+ the JSON renderer, which is why non-interactive use and CI never saw it.
145
+
146
+ The only `colorama` edge in `uv.lock` came from **pytest**, a dev dependency — so
147
+ every developer machine had it transitively and no gate could see the gap.
148
+ `colorama` is now a declared `sys_platform == "win32"` runtime dependency, and
149
+ `tests/test_observability.py` fails if it is dropped again. Reproduced and verified
150
+ on a clean Python 3.13 venv: the same `gflow doctor` invocation that raised
151
+ `SystemError` before now runs to completion, on both the CLI and the MCP stdio
152
+ server. ([#846](https://github.com/ffroliva/gflow-cli/issues/846))
153
+ - **The address scan in the migrated-host session probe was quadratic.** It reads a
154
+ 1.28 MB `myaccount.google.com` response, and `[\w.+-]+@…` retries from every start
155
+ position and rescans its run before failing to find an `@` — so an unbroken run of
156
+ characters that class accepts cost O(n²). Measured: 5 000 chars 0.12 s, 10 000 0.48 s,
157
+ 20 000 2.00 s, **40 000 12.07 s**. The class covers the entire URL-safe base64 alphabet,
158
+ which a Google page is full of, and the scan runs synchronously inside an `async def`,
159
+ so a stall blocks the event loop and cancellation cannot land until it returns.
160
+
161
+ Anchoring on the literal `@` (which lets CPython's `re` use its literal-prefix fast
162
+ search) and reading the local part backwards over a bounded 64-character window — the
163
+ RFC 5321 cap — makes the work proportional to the number of `@` in the document. Same
164
+ output for every address shape, including the Workspace and custom domains that #791
165
+ turned on: 40 000 chars now scan in under a millisecond, and 440 000 base64-shaped ones
166
+ in 0.2 ms. ([#852](https://github.com/ffroliva/gflow-cli/issues/852))
167
+ - **The sign-in window never closed for an account Google serves from `flow.google.com`.**
168
+ `gflow auth login --browser chrome` watches the `labs.google` session endpoint to know
169
+ when to close Chrome — and for a migrated account labs hands off without ever minting a
170
+ session, so the one oracle the detector had could not answer. The window stayed open for
171
+ the full 600 s while the banner promised gflow would close it, and the timeout then
172
+ propagated *past* verification, so a sign-in that had completed perfectly was discarded
173
+ unread and the user got exit 12 for a login that worked. It is the first thing a new user
174
+ on a migrated account meets. v0.77.0 fixed the *verification* for these accounts, which
175
+ made the outcome correct only for users who closed the window themselves.
176
+
177
+ Two changes, and neither of them moves the authentication decision into a cookie. gflow
178
+ now also stops waiting when the jar carries both halves of a migrated session (the
179
+ `.google.com` SSO cookie **and** the `flow.google.com` app-session cookie) — that ends a
180
+ wait which had no other way to end; `verify_flow_profile` still asks a server about what
181
+ landed on disk, and is still the only thing that can call a login successful. And a
182
+ timeout no longer discards the profile unread: gflow reads it before failing, reports a
183
+ sign-in the detector missed as the success it is, and otherwise keeps the timeout's own
184
+ wording. A caller with no on-disk oracle to fall back on (`--browser internal`) keeps
185
+ waiting exactly as before. ([#849](https://github.com/ffroliva/gflow-cli/issues/849))
186
+ - **`gflow update` could report a version for an install that no longer starts.** A package
187
+ manager replaces files in place, so an interrupted upgrade leaves a venv whose *metadata*
188
+ reads perfectly and whose *imports* are dead. `gflow update` only ever re-read the version,
189
+ so it called that state *"still 0.69.0"* and sent the user to a plain `uv tool upgrade` —
190
+ which cannot repair it, because it reads the same intact metadata, finds it current and
191
+ changes nothing. Measured on Windows: an aborted native-dependency swap left every command
192
+ dying on `AttributeError: module 'greenlet' has no attribute 'greenlet'`, and only
193
+ `uv tool install "gflow-cli==<version>" --force --reinstall` completed.
194
+
195
+ After the manager runs, `gflow update` now imports gflow-cli in a fresh isolated
196
+ interpreter *before* it looks at any version, and a failed import is reported as an
197
+ unusable install (exit 11) quoting that interpreter's own last line, with the forced
198
+ reinstall as the remediation. The probe is isolated (`-I`) so a `gflow_cli` directory in
199
+ the caller's working directory cannot answer on the venv's behalf, and a probe that could
200
+ not run at all is never reported as breakage.
201
+ ([#848](https://github.com/ffroliva/gflow-cli/issues/848))
202
+
203
+ ## [0.77.0] — 2026-09-16
204
+
205
+ ### Fixed
206
+
207
+ - **Accounts Flow moved to `flow.google.com` could not sign in at all.** Verification used
208
+ exactly one oracle — `labs.google/fx/api/auth/session` — which answers `200 {}` forever for
209
+ a migrated account, so a perfectly usable Flow workspace reported *"Signed in to Google, but
210
+ not to the Flow app"* and gflow refused every command. A total lockout, not a degraded
211
+ feature. When labs declines **and** the profile carries a `flow.google.com` app-session
212
+ cookie, gflow now confirms the session against the host that actually serves the app.
213
+
214
+ The cookie only **gates** that check; it never decides one. A cookie on disk outlives a
215
+ password change or a "sign out of all devices", so the decision is where the request lands:
216
+ a revoked session is redirected off `myaccount.google.com`, which is server-attested in a
217
+ way page content is not. The account's address is a display label only, so a page reshape
218
+ cannot cost a user their login.
219
+
220
+ **Google Workspace accounts are covered.** An earlier revision gated authentication on an
221
+ `@gmail.com`-only pattern, which silently declined every custom domain — `dev@axelate.io`,
222
+ `user@mycompany.com`, even `user@googlemail.com` — leaving this bug open for them while
223
+ appearing fixed. `docs/AUTHENTICATION.md` documents Workspace SSO as supported.
224
+ Live-verified on a Workspace account: `AUTHENTICATED`, correct address, 2/2.
225
+
226
+ **This also prevents a profile downgrade.** A failed verification rolled the Chrome marker
227
+ back, flipping `channel_for_profile` from `chrome` to `None` and silently demoting
228
+ generation to bundled Chromium on a profile created with `--browser chrome`. The rollback is
229
+ gated on `not verified`, so a verification that now succeeds never triggers it. Measured
230
+ before and after on the same profile, same cookies: exit 8 / marker gone -> exit 0 / marker
231
+ intact. ([#791](https://github.com/ffroliva/gflow-cli/issues/791),
232
+ [#796](https://github.com/ffroliva/gflow-cli/issues/796))
233
+ - **Three lists of "the release version sites" disagreed, and one lived inside the gate that
234
+ catches the disagreement.** `check_repo_hygiene.py`'s docstring said three files, its own
235
+ `_check_version_agreement` checked five (six occurrences), and `skills/release/SKILL.md`
236
+ named a fourth set omitting `server.json` and `uv.lock` — so a release engineer met each
237
+ omission as a gate failure at the point of highest pressure. There are in fact **seven
238
+ sites across three separate gates**, and no list knew them all; coverage was complete, but
239
+ discoverability was not. The skill now carries the one canonical table, its staging step
240
+ stages all seven, and `tests/test_release_version_sites.py` **parses** that table rather
241
+ than restating it — a constant would have been the fourth disagreeing copy.
242
+ ([#839](https://github.com/ffroliva/gflow-cli/issues/839))
243
+
244
+ ### Changed
245
+
246
+ - **`wait_until="networkidle"` on the `ui_automation` bootstrap is documented, not removed.**
247
+ [#836](https://github.com/ffroliva/gflow-cli/issues/836) proposed dropping it, on the theory
248
+ that a held-open connection made it burn the full 45 s ceiling. Measured on a live profile,
249
+ 5 navigations per arm: it fires every time and reached the ceiling **0/5**, so there is no
250
+ hang — but it costs **3422 ms mean against 1022 ms** for the prescribed pattern, with 4x the
251
+ spread. Removing it turned the #580/#584 navigation ratchet red: both call sites are in that
252
+ test's exemption set by name, because `goto(domcontentloaded)` returns 591–797 ms *before*
253
+ Flow's locale redirect lands and `networkidle` is what absorbs it. The issue read two call
254
+ sites with different constraints as one contradiction. The measurement and the probe ship so
255
+ the next reader finds them instead of re-deriving this.
256
+
257
+ - **The MCP Registry publish never ran — not once, on any release that shipped with it.**
258
+ `mcp-registry.yml` triggered on `release: published`, but `release.yml` creates the Release
259
+ with the default `GITHUB_TOKEN`, and GitHub starts no workflow runs from
260
+ `GITHUB_TOKEN`-created events. Measured on v0.76.0: a real Release published
261
+ (`draft=false`, `prerelease=false`), the workflow file on the default branch, and
262
+ `gh run list --workflow=mcp-registry.yml` returning **zero runs, ever**. The trigger was
263
+ structurally dead rather than mistimed, so it would not have begun working at the next
264
+ release. `release.yml` now **calls** the workflow (`uses:` + `needs: build-and-publish`)
265
+ instead of relying on an event, so there is nothing for the token rule to block. A
266
+ user-owned PAT on the Release step was the alternative and was rejected on maintenance
267
+ grounds: fine-grained tokens expire after at most 366 days, which puts a scheduled failure
268
+ on a path that runs a handful of times a year. `needs:` also enforces the ordering
269
+ `mcp-publisher` requires — it reads the `mcp-name:` token from the *published* PyPI README —
270
+ which previously rested on two files agreeing about step order. Registry authentication is
271
+ unchanged: GitHub Actions OIDC, with no token stored for or handed to the registry.
272
+ ([#841](https://github.com/ffroliva/gflow-cli/issues/841))
273
+ - **A manual registry dispatch could publish a superseded version, green, with nothing
274
+ noticing.** A dispatch publishes whatever `server.json` says *on the dispatched ref*.
275
+ Dispatching `develop` after the v0.76.0 tag but before the back-merge landed republished
276
+ `0.75.0` to the registry, and the run succeeded. Both triggers now take a required `version`
277
+ input, asserted against every version field in `server.json`, and fail the run on a
278
+ mismatch instead of publishing. ([#841](https://github.com/ffroliva/gflow-cli/issues/841))
279
+ - **A pre-release would have become the MCP Registry's *active* listing.** `release.yml` fires
280
+ on every `v*.*.*` tag, including `v1.2.3rc1`, and that listing is what PulseMCP and GitHub's
281
+ MCP gallery ingest. While the publish was dead this was latent; repairing it would have
282
+ armed it. The call is now skipped for pre-releases, and the workflow refuses a pre-release
283
+ version outright if one reaches it by hand. The prerelease classification has a single
284
+ definition shared by the GitHub Release flag and the registry gate, rather than two copies
285
+ of the same expression that would drift. Found by council review, not in production.
286
+ ([#841](https://github.com/ffroliva/gflow-cli/issues/841))
287
+
10
288
  ## [0.76.0] — 2026-09-16
11
289
 
12
290
  ### Fixed
@@ -1427,7 +1705,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1427
1705
 
1428
1706
  ### Fixed
1429
1707
 
1430
-
1431
1708
  - **v0.66.1's migrated-origin fast-fail never fired on a real run
1432
1709
  ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** The guard read `page.url` once,
1433
1710
  at `get_ui_driver` entry — but `routes.project_editor_url` only ever builds a `labs.google`
@@ -1742,7 +2019,6 @@ completed exit 0, proving no regression. See
1742
2019
  credential, but account-correlatable, and it would otherwise reach any logged
1743
2020
  request body or diagnostics bundle verbatim.
1744
2021
 
1745
-
1746
2022
  - **The offline test suite could `git checkout develop` in the developer's own
1747
2023
  clone ([#605](https://github.com/ffroliva/gflow-cli/issues/605)).** git's
1748
2024
  repository discovery walks *up* from `cwd`, and `--basetemp=tmp/pytest` puts
@@ -2382,7 +2658,6 @@ completed exit 0, proving no regression. See
2382
2658
  - **Remaining in-workflow package installs pinned (Scorecard Pinned-Dependencies).** The Pages build now installs MkDocs Material with `pip install --require-hashes` from a compiled `website/requirements.txt`; the PR-triage sandbox image (`Dockerfile.triage`) pins its Node base by digest and installs the Claude Code CLI via `npm ci` from a committed lockfile instead of a floating `npm install -g`; the CI dependency audit pins its `pip-audit` tool version (the non-gating weekly `deps-watch` job deliberately keeps a floating pip-audit — fresh advisory tooling is its purpose). New dependabot entries (uv / npm / docker) keep all three sets of pins fresh. The remaining deliberate won't-fix Scorecard alerts (SAST, Fuzzing, CII Best Practices) are dismissed on the repo with recorded reasons.
2383
2659
  - **OpenSSF Scorecard self-run.** A new SHA-pinned `scorecard.yml` workflow (weekly + on push to `develop`) runs the OpenSSF Scorecard supply-chain checks with `publish_results: true`, feeding the public API/badge and the repo Security tab — enabled deliberately after the permissions/pinning hardening so the first published score reflects the hardened state. The score surfaces as a badge in the README and on the website index page, with a docs/SECURITY.md section explaining what it measures; `release.yml`/`pages.yml` write scopes moved from workflow level to the jobs that need them.
2384
2660
 
2385
-
2386
2661
  ## [0.56.0] — 2026-08-13
2387
2662
 
2388
2663
  ### Added
@@ -2476,10 +2751,6 @@ completed exit 0, proving no regression. See
2476
2751
 
2477
2752
  - **Fix video duration selector drift (#451).** Expanded duration control selector cascade to match modern Flow editor UI elements (`button`, `role='button'`, `role='option'`, `role='menuitem'`, `role='tab'`) while preserving fail-closed behavior on missing duration controls.
2478
2753
 
2479
-
2480
-
2481
-
2482
-
2483
2754
  ## [0.51.0] — 2026-08-05
2484
2755
 
2485
2756
  ### Security
@@ -3512,7 +3783,6 @@ completed exit 0, proving no regression. See
3512
3783
  mid-run edit to the home `.env` can no longer produce a task whose client config
3513
3784
  disagrees with the parameters the task derived from `get_settings()`.
3514
3785
 
3515
-
3516
3786
  ## [0.24.0] — 2026-07-01
3517
3787
 
3518
3788
  ### Added
@@ -4771,8 +5041,6 @@ completed exit 0, proving no regression. See
4771
5041
  - `gflow auth login` now prints the launch strategy announcement before opening
4772
5042
  any browser window.
4773
5043
 
4774
-
4775
-
4776
5044
  > **Shell-friendly multi-prompt `t2i` + performance hardening.** This release
4777
5045
  > promotes `gflow image t2i` to a variadic command that can consume multiple
4778
5046
  > prompts from positional arguments, a line-delimited text file, or standard
@@ -5201,7 +5469,10 @@ shell-script template that branches on these codes.
5201
5469
 
5202
5470
  First skeleton. Not functional end-to-end yet.
5203
5471
 
5204
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.76.0...HEAD
5472
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.78.0...HEAD
5473
+ [0.78.0]: https://github.com/ffroliva/gflow-cli/compare/v0.77.1...v0.78.0
5474
+ [0.77.1]: https://github.com/ffroliva/gflow-cli/compare/v0.77.0...v0.77.1
5475
+ [0.77.0]: https://github.com/ffroliva/gflow-cli/compare/v0.76.0...v0.77.0
5205
5476
  [0.76.0]: https://github.com/ffroliva/gflow-cli/compare/v0.75.0...v0.76.0
5206
5477
  [0.75.0]: https://github.com/ffroliva/gflow-cli/compare/v0.74.0...v0.75.0
5207
5478
  [0.74.0]: https://github.com/ffroliva/gflow-cli/compare/v0.73.2...v0.74.0
@@ -16,7 +16,7 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
16
16
 
17
17
  ### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
18
18
 
19
- - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, the four aspect ratios its radiogroup was enumerated with (16:9, 4:3, 1:1, 9:16), and count 1–4; `3:4` had no radio in that enumeration and is refused before submit rather than reported as selector drift. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video end frames, video refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
19
+ - **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, all five aspect ratios its radiogroup renders (16:9, 4:3, 1:1, 3:4, 9:16 3:4 appeared by 2026-09-17, #864), and count 1–4. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video frame refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
20
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
22
  - **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
@@ -55,9 +55,8 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
55
55
  `docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md`. Routing
56
56
  (`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
57
57
  command on every account — moved or not; `flow.google.com` forces it for
58
- everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
59
- migrated editor is not ported), and `t2v`, `i2v` from a local `--initial-frame` (no end frame,
60
- no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
58
+ everything, and `labs.google` switches the migrated composer off. Limits today: only `t2v`, `i2v` from local start (and end) frames (no UUID/`@Name` frame —
59
+ the migrated Frames picker exposes no media id in its DOM, so a frame is
61
60
  found by the run-unique name gflow uploads it under, #792), and `r2v` from local `--ref` files
62
61
  (see the next paragraph), plus `image t2i` and local-file `image i2i` — unsupported
63
62
  forms still exit 36.
@@ -108,7 +107,7 @@ with the distinct, non-retryable exit 36 instead of the misleading
108
107
  `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
109
108
  accepts the migrated host, so a migrated load is no longer misread as a
110
109
  logged-out session. The generation forms listed above and characters are driven;
111
- scenes, extend, instructions, tools, project creation, and the named reference/model
110
+ scenes, extend, instructions, tools, and the named reference/model
112
111
  variants are the remaining work
113
112
  tracked here — no retry helps for those until each is ported.
114
113
 
@@ -1440,7 +1439,7 @@ key — surfaces as a `RuntimeError` that `auth/cookies.py` normalizes to
1440
1439
 
1441
1440
  - **Status:** Mitigated (crash → typed fail-fast rejection) · **Severity:** Low · **Affects:** all versions
1442
1441
 
1443
- Chromium refuses to open two persistent contexts on the same `user-data-dir` simultaneously. Historically this surfaced as an unhelpful Chromium "ProcessSingleton: profile is locked" error partway through a run. As of the profile-lease hardening (production-readiness plan, slice D1/D3), gflow-cli enforces this itself: a cross-process advisory lock (`ProfileLease`, kernel `flock` on POSIX / `msvcrt.locking` on Windows) guards every profile directory. A second `gflow` invocation, `gflow serve` daemon task, or MCP call against an already-leased profile is rejected **immediately** by default — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never silently corrupts the profile. Since #478, setting [`GFLOW_CLI_LEASE_WAIT_SECONDS`](docs/CONFIGURATION.md#gflow_cli_lease_wait_seconds) opts a waiter into a bounded wait that takes over as soon as the current holder finishes (holders always run to completion and are never asked to release early; same-process contention still fails fast — waiting on yourself would deadlock).
1442
+ Chromium refuses to open two persistent contexts on the same `user-data-dir` simultaneously. Historically this surfaced as an unhelpful Chromium "ProcessSingleton: profile is locked" error partway through a run. As of the profile-lease hardening (production-readiness plan, slice D1/D3), gflow-cli enforces this itself: a cross-process advisory lock (`ProfileLease`, kernel `flock` on POSIX / `msvcrt.locking` on Windows) guards every profile directory. A second `gflow` invocation, `gflow serve` daemon task, or MCP call against an already-leased profile is rejected **immediately** by default — before any Chrome process starts — with a typed `ProfileLockedError` (**exit code 11**); it never silently corrupts the profile. Since #478, setting [`GFLOW_CLI_LEASE_WAIT_SECONDS`](docs/CONFIGURATION.md#gflow_cli_lease_wait_seconds) opts a waiter into a bounded wait that takes over as soon as the current holder finishes (holders always run to completion and are never asked to release early; same-process contention still fails fast — waiting on yourself would deadlock). Since #864 an MCP server waits 180 s by default, and queues its own calls on one profile rather than rejecting the second.
1444
1443
 
1445
1444
  **Workaround:** use different profiles for parallel work — different profiles acquire independent leases and run fully concurrently.
1446
1445
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.76.0
3
+ Version: 0.78.0
4
4
  Summary: CLI and MCP server for Google Flow — drive Veo text-to-video, image-to-video and Imagen image generation from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Documentation, https://ffroliva.github.io/gflow-cli/
@@ -53,6 +53,7 @@ Classifier: Typing :: Typed
53
53
  Requires-Python: >=3.11
54
54
  Requires-Dist: browser-cookie3>=0.20.1
55
55
  Requires-Dist: click>=8.1.0
56
+ Requires-Dist: colorama>=0.4.6; sys_platform == 'win32'
56
57
  Requires-Dist: fastapi>=0.115.0
57
58
  Requires-Dist: httpx>=0.27.0
58
59
  Requires-Dist: mcp<3,>=2.0.0