gflow-cli 0.75.0__tar.gz → 0.76.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 (1132) hide show
  1. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/dependabot.yml +20 -0
  3. gflow_cli-0.76.0/.github/workflows/mcp-registry.yml +70 -0
  4. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/AGENTS.md +4 -4
  5. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/CHANGELOG.md +102 -1
  6. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/PKG-INFO +3 -1
  7. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/README.md +2 -0
  8. gflow_cli-0.76.0/docker/Dockerfile +53 -0
  9. gflow_cli-0.76.0/docker/Dockerfile.test +17 -0
  10. gflow_cli-0.76.0/docker/README.md +215 -0
  11. gflow_cli-0.76.0/docker/docker-compose.yml +70 -0
  12. gflow_cli-0.76.0/docker/dockerignore.example +10 -0
  13. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/AGENT_UI_E2E.md +2 -2
  14. gflow_cli-0.76.0/docs/CONTAINER.md +142 -0
  15. {gflow_cli-0.75.0/website → gflow_cli-0.76.0}/docs/DEBUGGING.md +31 -12
  16. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/DISTRIBUTION.md +81 -21
  17. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/INDEX.md +5 -2
  18. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_data_layer.md +2 -2
  19. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_image_batch.md +2 -2
  20. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.52.0.md +3 -3
  21. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.54.0.md +2 -2
  22. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.75.0.md +30 -11
  23. gflow_cli-0.76.0/docs/LIVE_VERIFICATION_v0.76.0.md +129 -0
  24. gflow_cli-0.76.0/docs/MARKETPLACES.md +135 -0
  25. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/MCP.md +4 -2
  26. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/PROJECT_STATUS.md +44 -0
  27. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/USAGE.md +1 -0
  28. {gflow_cli-0.75.0/website → gflow_cli-0.76.0}/docs/USER_GUIDE.md +8 -1
  29. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +46 -0
  30. gflow_cli-0.76.0/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +129 -0
  31. gflow_cli-0.76.0/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +158 -0
  32. gflow_cli-0.76.0/glama.json +17 -0
  33. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/.claude-plugin/plugin.json +1 -1
  34. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/pyproject.toml +1 -1
  35. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_doc_links.py +11 -1
  36. gflow_cli-0.76.0/scripts/ci/check_fork_pr_ci.py +110 -0
  37. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/generate_website_docs.py +4 -1
  38. gflow_cli-0.76.0/scripts/dev/spike_flow_unavailable_signal.py +208 -0
  39. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/server.json +2 -2
  40. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/pr-council-review/SKILL.md +11 -0
  41. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/__init__.py +1 -1
  42. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/_common.py +78 -7
  43. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/migrated_composer.py +1 -1
  44. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/ui_automation.py +10 -2
  45. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/ui_automation_video.py +7 -0
  46. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/errors.py +38 -0
  47. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/worker/daemon.py +4 -1
  48. gflow_cli-0.76.0/tests/api/transports/test_flow_access_unavailable.py +242 -0
  49. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_landing_state_diagnosis_bdd.py +122 -1
  50. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/landing_state_diagnosis.feature +28 -0
  51. gflow_cli-0.76.0/tests/mcp/test_payload_key_round_trip.py +198 -0
  52. gflow_cli-0.76.0/tests/scripts/test_check_fork_pr_ci.py +94 -0
  53. gflow_cli-0.76.0/tests/test_dockerfile_version_pin.py +86 -0
  54. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_errors_classification.py +6 -6
  55. gflow_cli-0.76.0/tests/test_glama_build_spec.py +142 -0
  56. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_daemon.py +78 -0
  57. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/uv.lock +1 -1
  58. {gflow_cli-0.75.0 → gflow_cli-0.76.0/website}/docs/DEBUGGING.md +31 -12
  59. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/MCP.md +4 -2
  60. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/USAGE.md +1 -0
  61. {gflow_cli-0.75.0 → gflow_cli-0.76.0/website}/docs/USER_GUIDE.md +8 -1
  62. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.agents/plugins/marketplace.json +0 -0
  63. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/README.md +0 -0
  64. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/active.md +0 -0
  65. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/branch-review.md +0 -0
  66. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/changelog.md +0 -0
  67. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/check.md +0 -0
  68. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/doc-review.md +0 -0
  69. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  70. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  71. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/known-issues.md +0 -0
  72. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/live-verify.md +0 -0
  73. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/llm-council.md +0 -0
  74. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/next.md +0 -0
  75. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/plan.md +0 -0
  76. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  77. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/predict.md +0 -0
  78. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/release.md +0 -0
  79. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/scenario.md +0 -0
  80. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/sonar.md +0 -0
  81. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/spike.md +0 -0
  82. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude/commands/gflow/status.md +0 -0
  83. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.claude-plugin/marketplace.json +0 -0
  84. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.env.template +0 -0
  85. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.gitattributes +0 -0
  86. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/CODEOWNERS +0 -0
  87. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/FUNDING.yml +0 -0
  88. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  89. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/copilot-instructions.md +0 -0
  90. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/ci.yml +0 -0
  91. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/deps-watch.yml +0 -0
  92. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/external-pr-triage.yml +0 -0
  93. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/governance-advisory.yml +0 -0
  94. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/governance-benchmark.yml +0 -0
  95. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/labels.yml +0 -0
  96. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/main-base-guard.yml +0 -0
  97. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/pages.yml +0 -0
  98. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/release.yml +0 -0
  99. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/scorecard.yml +0 -0
  100. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/selector-probe.yml +0 -0
  101. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/sponsors.yml +0 -0
  102. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.github/workflows/star-history-watch.yml +0 -0
  103. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.gitignore +0 -0
  104. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.gitleaks.toml +0 -0
  105. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.pre-commit-config.yaml +0 -0
  106. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/.secrets.baseline +0 -0
  107. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/CLAUDE.md +0 -0
  108. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/CONFIGURATION.md +0 -0
  109. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/CONTRIBUTING.md +0 -0
  110. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/DISCLAIMER.md +0 -0
  111. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/KNOWN_ISSUES.md +0 -0
  112. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/LICENSE +0 -0
  113. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/PLAN.md +0 -0
  114. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/RELEASE.md +0 -0
  115. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/ROADMAP.md +0 -0
  116. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/conftest.py +0 -0
  117. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/deploy/logrotate-pr-triage +0 -0
  118. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docker-compose.yml +0 -0
  119. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/ACCOUNT_SAFETY.md +0 -0
  120. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/AGENT_GUIDE.md +0 -0
  121. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/AGENT_UI_RECON.md +0 -0
  122. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/ARCHITECTURE.md +0 -0
  123. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  124. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/AUTHENTICATION.md +0 -0
  125. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/CHARACTER.md +0 -0
  126. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/CHARACTER_RECON.md +0 -0
  127. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/CONFIGURATION.md +0 -0
  128. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/DATA_LAYER.md +0 -0
  129. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/DEMOS.md +0 -0
  130. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/DEVELOPMENT.md +0 -0
  131. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/E2E_TESTING.md +0 -0
  132. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/EXTERNAL_STORAGE.md +0 -0
  133. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/GITHUB.md +0 -0
  134. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  135. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  136. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/INSTRUCTIONS.md +0 -0
  137. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  138. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  139. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  140. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  141. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  142. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  143. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  144. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  145. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  146. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  147. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  148. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  149. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  150. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  151. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  152. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  153. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  154. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  155. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  156. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  157. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  158. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  159. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  160. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  161. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  162. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  163. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  164. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  165. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  166. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  167. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  168. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  169. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  170. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  171. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  172. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  173. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  174. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  175. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  176. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  177. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  178. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  179. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  180. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  181. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  182. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  183. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  184. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  185. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  186. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  187. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  188. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  189. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  190. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  191. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  192. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  193. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  194. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  195. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  196. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  197. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  198. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  199. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  200. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  201. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  202. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
  203. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
  204. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
  205. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  206. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
  207. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
  208. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
  209. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
  210. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
  211. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
  212. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
  213. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
  214. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  215. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  216. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  217. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  218. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/MEDIA_LIBRARY.md +0 -0
  219. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/MOVIE.md +0 -0
  220. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/PROMPT_EXPANSION.md +0 -0
  221. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  222. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/SECURITY.md +0 -0
  223. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/SPONSORS.md +0 -0
  224. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/TOOLS.md +0 -0
  225. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/assets/demo-split-pf.gif +0 -0
  226. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/assets/example-run.gif +0 -0
  227. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/assets/examples.webp +0 -0
  228. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/medium_tutorial.md +0 -0
  229. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/schemas/movie-handoff.schema.json +0 -0
  230. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/sonar-cleanup-tracker.md +0 -0
  231. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/README.md +0 -0
  232. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  233. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  234. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  235. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  236. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  237. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  238. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  239. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  240. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
  241. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  242. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  243. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  244. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  245. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  246. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  247. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  248. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  249. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  250. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
  251. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  252. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  253. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
  254. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  255. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  256. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  257. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  258. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  259. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  260. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  261. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  262. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  263. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  264. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  265. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/release-signing.md +0 -0
  266. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  267. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  268. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  269. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  270. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  271. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  272. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  273. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  274. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  275. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  276. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  277. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  278. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
  279. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
  280. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  281. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  282. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  283. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  284. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  285. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  286. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  287. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  288. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  289. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  290. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  291. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  292. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  293. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  294. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  295. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  296. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  297. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  298. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  299. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  300. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  301. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  302. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  303. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  304. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  305. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  306. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  307. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  308. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  309. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  310. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  311. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  312. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  313. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  314. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  315. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  316. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  317. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  318. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  319. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  320. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  321. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  322. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  323. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  324. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
  325. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
  326. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  327. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  328. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  329. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  330. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  331. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  332. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  333. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  334. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  335. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  336. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  337. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  338. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  339. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  340. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  341. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  342. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  343. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  344. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
  345. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  346. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
  347. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
  348. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
  349. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
  350. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
  351. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
  352. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
  353. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
  354. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
  355. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
  356. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
  357. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
  358. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
  359. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
  360. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
  361. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
  362. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
  363. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
  364. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
  365. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
  366. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
  367. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
  368. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
  369. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
  370. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
  371. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/README.md +0 -0
  372. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/batch_from_config.py +0 -0
  373. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/multi_prompt_t2i.py +0 -0
  374. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/sample_config.json +0 -0
  375. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/sample_prompts.txt +0 -0
  376. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/single_image_t2i.py +0 -0
  377. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/examples/workflow_chain.py +0 -0
  378. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/index.html +0 -0
  379. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/llms.txt +0 -0
  380. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/mempalace.yaml +0 -0
  381. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/README.md +0 -0
  382. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/.mcp.json +0 -0
  383. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/gflow-cli/SKILL.md +0 -0
  384. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/SKILL.md +0 -0
  385. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
  386. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/composition.md +0 -0
  387. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
  388. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
  389. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
  390. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/README.md +0 -0
  391. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/01_upload_image.json +0 -0
  392. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  393. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  394. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/04_archive_workflow.json +0 -0
  395. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/05_createProject.json +0 -0
  396. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/06_batchGenerateImages.json +0 -0
  397. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  398. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  399. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  400. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  401. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  402. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/12_create_scene.json +0 -0
  403. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  404. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/14_get_scene_workflows.json +0 -0
  405. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  406. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/canary/register_task.ps1 +0 -0
  407. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/canary/run_canary.py +0 -0
  408. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_council_memory.py +0 -0
  409. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_materiality.py +0 -0
  410. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_release_artifacts.py +0 -0
  411. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_repo_hygiene.py +0 -0
  412. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_test_count.py +0 -0
  413. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/check_website_docs_pii.py +0 -0
  414. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/generate_plugin_skills.py +0 -0
  415. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/ci/update_sponsors.py +0 -0
  416. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/debug_editor.py +0 -0
  417. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/debug_gen_settings.py +0 -0
  418. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/debug_settings.py +0 -0
  419. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/_recording_client.py +0 -0
  420. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/_spike_common.py +0 -0
  421. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/acceptance/__init__.py +0 -0
  422. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/acceptance/bench.py +0 -0
  423. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/acceptance/domain.py +0 -0
  424. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/acceptance/judge.py +0 -0
  425. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/acceptance/settings.py +0 -0
  426. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/active_plan.py +0 -0
  427. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  428. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  429. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  430. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  431. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  432. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  433. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  434. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_locale_invariants.py +0 -0
  435. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  436. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
  437. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
  438. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
  439. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
  440. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
  441. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
  442. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
  443. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_project_listing.py +0 -0
  444. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  445. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  446. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  447. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  448. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/character_create_spike.py +0 -0
  449. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/character_create_spike_v2.py +0 -0
  450. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/dump_character_selectors.js +0 -0
  451. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/README.md +0 -0
  452. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
  453. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
  454. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
  455. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
  456. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
  457. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
  458. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
  459. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
  460. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
  461. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
  462. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
  463. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/incident_bundle_quality.py +0 -0
  464. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  465. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  466. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  467. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/make_project.py +0 -0
  468. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/materiality_backtest.py +0 -0
  469. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  470. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/measure_locale_probe.py +0 -0
  471. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  472. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/patch_character.py +0 -0
  473. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/skillopt/README.md +0 -0
  474. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/skillopt/harness.py +0 -0
  475. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/skillopt/tasks.json +0 -0
  476. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/sonar-local-scan.sh +0 -0
  477. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  478. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
  479. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
  480. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
  481. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_changelog_capture.py +0 -0
  482. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  483. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  484. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
  485. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  486. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
  487. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
  488. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  489. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  490. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  491. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  492. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  493. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
  494. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
  495. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
  496. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_host_lane.py +0 -0
  497. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_image_model_attribution.py +0 -0
  498. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  499. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  500. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  501. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  502. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_incident_live.py +0 -0
  503. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  504. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  505. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  506. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  507. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  508. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
  509. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_locale_poison.py +0 -0
  510. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
  511. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
  512. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
  513. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
  514. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
  515. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
  516. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
  517. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
  518. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
  519. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
  520. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  521. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  522. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
  523. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
  524. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  525. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
  526. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
  527. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
  528. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
  529. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
  530. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
  531. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  532. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
  533. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
  534. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  535. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  536. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  537. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_model_inventory.py +0 -0
  538. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  539. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  540. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  541. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  542. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  543. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
  544. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  545. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_patch_entity.py +0 -0
  546. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_patchright.py +0 -0
  547. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
  548. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_project_media_status.py +0 -0
  549. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  550. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
  551. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  552. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  553. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/verify_language_agnostic.py +0 -0
  554. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  555. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/dev/verify_model_attribution.py +0 -0
  556. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/README.md +0 -0
  557. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/capture_flow_traffic.py +0 -0
  558. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  559. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/memory_profile.py +0 -0
  560. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/recaptcha_mint.py +0 -0
  561. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  562. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  563. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  564. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/probe/run_probe.py +0 -0
  565. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/probe/spike_auth_matrix.py +0 -0
  566. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/record_demo.ps1 +0 -0
  567. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/smoke_image.py +0 -0
  568. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/smoke_video_editor.py +0 -0
  569. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/smoke_worker_style.py +0 -0
  570. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/spike_waf_camoufox.py +0 -0
  571. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/scripts/verify_chrome_auth_viability.py +0 -0
  572. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/README.md +0 -0
  573. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/changelog/SKILL.md +0 -0
  574. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/check/SKILL.md +0 -0
  575. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/doc-review/SKILL.md +0 -0
  576. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/gflow-cli/SKILL.md +0 -0
  577. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/issue-assessment/SKILL.md +0 -0
  578. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/issue-resolve/SKILL.md +0 -0
  579. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/known-issues/SKILL.md +0 -0
  580. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/live-verify/SKILL.md +0 -0
  581. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/llm-council/SKILL.md +0 -0
  582. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/plan/SKILL.md +0 -0
  583. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/predict/SKILL.md +0 -0
  584. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/release/SKILL.md +0 -0
  585. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/scenario/SKILL.md +0 -0
  586. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/sonar/SKILL.md +0 -0
  587. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/spike/SKILL.md +0 -0
  588. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/status/SKILL.md +0 -0
  589. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/SKILL.md +0 -0
  590. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/clip_qa.py +0 -0
  591. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/composition.md +0 -0
  592. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/consistency.md +0 -0
  593. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/failure-modes.md +0 -0
  594. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/skills/video-production/tasks.json +0 -0
  595. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/sonar-project.properties +0 -0
  596. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/__main__.py +0 -0
  597. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/_cli_helpers.py +0 -0
  598. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/__init__.py +0 -0
  599. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/_engine.py +0 -0
  600. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/_retry.py +0 -0
  601. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  602. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/character.py +0 -0
  603. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/client.py +0 -0
  604. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/credits.py +0 -0
  605. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/dto.py +0 -0
  606. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/extend_chain.py +0 -0
  607. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/image.py +0 -0
  608. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/image_upscale.py +0 -0
  609. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/recaptcha.py +0 -0
  610. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/routes.py +0 -0
  611. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/scene.py +0 -0
  612. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  613. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  614. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/base.py +0 -0
  615. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  616. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  617. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  618. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  619. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  620. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  621. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  622. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  623. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  624. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  625. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  626. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/video.py +0 -0
  627. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/api/video_extend.py +0 -0
  628. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/__init__.py +0 -0
  629. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/base.py +0 -0
  630. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/cookies.py +0 -0
  631. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/factory.py +0 -0
  632. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  633. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  634. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/strategies.py +0 -0
  635. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/auth/verification.py +0 -0
  636. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/browser_manager.py +0 -0
  637. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/chain.py +0 -0
  638. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/chain_manifest.py +0 -0
  639. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli.py +0 -0
  640. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_character.py +0 -0
  641. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_credits.py +0 -0
  642. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_data.py +0 -0
  643. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_doctor.py +0 -0
  644. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_image.py +0 -0
  645. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_instructions.py +0 -0
  646. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_models.py +0 -0
  647. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_movie.py +0 -0
  648. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_project.py +0 -0
  649. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_run.py +0 -0
  650. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_scene.py +0 -0
  651. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_tools.py +0 -0
  652. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_update.py +0 -0
  653. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/cli_video.py +0 -0
  654. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/composition.py +0 -0
  655. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/config.py +0 -0
  656. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/__init__.py +0 -0
  657. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/chain_repo.py +0 -0
  658. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  659. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  660. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  661. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  662. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  663. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  664. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  665. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  666. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  667. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  668. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/models.py +0 -0
  669. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/queries.py +0 -0
  670. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/recorder.py +0 -0
  671. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/redaction.py +0 -0
  672. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/repository.py +0 -0
  673. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/data/store.py +0 -0
  674. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/diagnostics.py +0 -0
  675. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/exceptions.py +0 -0
  676. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/file_integrity.py +0 -0
  677. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  678. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  679. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  680. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  681. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/image_batch.py +0 -0
  682. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/json_output.py +0 -0
  683. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/__init__.py +0 -0
  684. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/prompts.py +0 -0
  685. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/resources.py +0 -0
  686. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/server.py +0 -0
  687. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/setup.py +0 -0
  688. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  689. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/mcp/tools.py +0 -0
  690. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/media.py +0 -0
  691. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/movie_manifest.py +0 -0
  692. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/observability.py +0 -0
  693. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/paths.py +0 -0
  694. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/profile_lease.py +0 -0
  695. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/profile_store.py +0 -0
  696. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/redaction.py +0 -0
  697. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/__init__.py +0 -0
  698. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  699. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/character_create.py +0 -0
  700. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/credits.py +0 -0
  701. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/doctor.py +0 -0
  702. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/services/mentions.py +0 -0
  703. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/storage.py +0 -0
  704. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/__init__.py +0 -0
  705. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/banned.py +0 -0
  706. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  707. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  708. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  709. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  710. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/expander.py +0 -0
  711. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/invocation.py +0 -0
  712. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/loader.py +0 -0
  713. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/registry.py +0 -0
  714. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/runtime.py +0 -0
  715. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/tools/spec.py +0 -0
  716. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/ui/app.py +0 -0
  717. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/ui/server.py +0 -0
  718. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/update_check.py +0 -0
  719. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/winsec.py +0 -0
  720. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/worker/codec.py +0 -0
  721. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/src/gflow_cli/worker/queue.py +0 -0
  722. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tasks/lessons.md +0 -0
  723. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/test_assets/sample_batch.json +0 -0
  724. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/test_assets/sample_batch.tsv +0 -0
  725. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/test_assets/sample_batch_invalid.tsv +0 -0
  726. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/__init__.py +0 -0
  727. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/__init__.py +0 -0
  728. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/fixtures/character_gen_response.json +0 -0
  729. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  730. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  731. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  732. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  733. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_bearer_redaction.py +0 -0
  734. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_bootstrap_chooser.py +0 -0
  735. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_character.py +0 -0
  736. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_character_readback_fallback.py +0 -0
  737. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client.py +0 -0
  738. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_character.py +0 -0
  739. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_delete_characters.py +0 -0
  740. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_errors.py +0 -0
  741. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_extend.py +0 -0
  742. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_generate_character.py +0 -0
  743. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_image.py +0 -0
  744. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_incidents.py +0 -0
  745. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_launch_kwargs.py +0 -0
  746. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_locale_cache.py +0 -0
  747. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_migrated_mint.py +0 -0
  748. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_patch_entity.py +0 -0
  749. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_scene.py +0 -0
  750. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_client_upscale.py +0 -0
  751. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_concurrency.py +0 -0
  752. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_credits.py +0 -0
  753. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_credits_http.py +0 -0
  754. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_dto.py +0 -0
  755. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_engine.py +0 -0
  756. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_extend_chain.py +0 -0
  757. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_image.py +0 -0
  758. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_image_dto.py +0 -0
  759. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_image_upscale.py +0 -0
  760. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  761. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_recaptcha.py +0 -0
  762. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_retry.py +0 -0
  763. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_routes.py +0 -0
  764. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_routes_character.py +0 -0
  765. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_routes_locale.py +0 -0
  766. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_routes_scene.py +0 -0
  767. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_sapisidhash_helper.py +0 -0
  768. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_scene_models.py +0 -0
  769. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_video.py +0 -0
  770. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_video_extend.py +0 -0
  771. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_video_request.py +0 -0
  772. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/test_video_status_poll.py +0 -0
  773. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/__init__.py +0 -0
  774. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/conftest.py +0 -0
  775. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/drivers/__init__.py +0 -0
  776. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  777. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/drivers/test_classic.py +0 -0
  778. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/drivers/test_factory.py +0 -0
  779. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  780. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_agent_only_composer.py +0 -0
  781. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  782. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_base.py +0 -0
  783. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_batchexecute.py +0 -0
  784. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_bearer.py +0 -0
  785. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_character_model_picker.py +0 -0
  786. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_click_attribution.py +0 -0
  787. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_common.py +0 -0
  788. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  789. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_factory.py +0 -0
  790. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_fingerprint.py +0 -0
  791. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ligature_carrier.py +0 -0
  792. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_locale_navigation.py +0 -0
  793. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_composer.py +0 -0
  794. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
  795. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  796. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_images.py +0 -0
  797. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_r2v.py +0 -0
  798. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_migrated_route.py +0 -0
  799. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_mode_control.py +0 -0
  800. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  801. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_navigation_settled.py +0 -0
  802. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
  803. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  804. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_policy_400.py +0 -0
  805. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_sapisidhash.py +0 -0
  806. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  807. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_transport_timeout.py +0 -0
  808. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ui_automation.py +0 -0
  809. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  810. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  811. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  812. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  813. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  814. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/strategies/test_factory.py +0 -0
  815. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/strategies/test_strategies.py +0 -0
  816. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/test_account_autoselect.py +0 -0
  817. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/test_cookies.py +0 -0
  818. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/test_real_chrome.py +0 -0
  819. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/test_verification.py +0 -0
  820. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/auth/test_windows_acl.py +0 -0
  821. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/__init__.py +0 -0
  822. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_auth_status.py +0 -0
  823. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
  824. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_auth_list.py +0 -0
  825. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_character.py +0 -0
  826. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_character_create.py +0 -0
  827. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_credits.py +0 -0
  828. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_data.py +0 -0
  829. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_data_errors.py +0 -0
  830. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  831. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_data_sync.py +0 -0
  832. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_doctor.py +0 -0
  833. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_image.py +0 -0
  834. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  835. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  836. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_image_upscale.py +0 -0
  837. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  838. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_instructions.py +0 -0
  839. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_models.py +0 -0
  840. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_movie.py +0 -0
  841. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_run.py +0 -0
  842. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_scene.py +0 -0
  843. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_tools.py +0 -0
  844. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_video.py +0 -0
  845. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_video_chain.py +0 -0
  846. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_cli_video_extend.py +0 -0
  847. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_error_handling.py +0 -0
  848. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_failure_funnel.py +0 -0
  849. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_helpers.py +0 -0
  850. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_incident_output.py +0 -0
  851. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_movie_manifest.py +0 -0
  852. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  853. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_predictable_output.py +0 -0
  854. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
  855. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  856. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_settings_validation.py +0 -0
  857. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  858. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/composition/test_character.py +0 -0
  859. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/composition/test_compose_prompt.py +0 -0
  860. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/composition/test_handoff.py +0 -0
  861. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/composition/test_style_variants.py +0 -0
  862. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/composition/test_style_variants_e2e.py +0 -0
  863. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/conftest.py +0 -0
  864. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/__init__.py +0 -0
  865. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_chain_repo.py +0 -0
  866. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_failure_recording.py +0 -0
  867. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_find_incomplete_character.py +0 -0
  868. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_models.py +0 -0
  869. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_null_columns_stay_null.py +0 -0
  870. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_packaging.py +0 -0
  871. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_recorder.py +0 -0
  872. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_recorder_character.py +0 -0
  873. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_redaction.py +0 -0
  874. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_repository.py +0 -0
  875. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_scene_persistence.py +0 -0
  876. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_settings_and_errors.py +0 -0
  877. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_store.py +0 -0
  878. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/data/test_store_migrations.py +0 -0
  879. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/dev/test_recording_client.py +0 -0
  880. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/__init__.py +0 -0
  881. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/conftest.py +0 -0
  882. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_account_chooser_e2e.py +0 -0
  883. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  884. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  885. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  886. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  887. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  888. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_chain_e2e.py +0 -0
  889. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_character_create_e2e.py +0 -0
  890. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
  891. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  892. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
  893. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  894. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_credits_e2e.py +0 -0
  895. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
  896. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_daemon_e2e.py +0 -0
  897. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  898. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  899. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
  900. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  901. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  902. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  903. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  904. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  905. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  906. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  907. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
  908. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_json_output_e2e.py +0 -0
  909. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  910. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  911. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
  912. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
  913. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  914. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  915. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_scene_compose_live.py +0 -0
  916. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  917. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_tools_e2e.py +0 -0
  918. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_transports_e2e.py +0 -0
  919. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  920. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  921. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  922. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/__init__.py +0 -0
  923. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/asset_tagging.feature +0 -0
  924. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/auth.feature +0 -0
  925. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/auth_login.feature +0 -0
  926. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/character_create.feature +0 -0
  927. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/character_read.feature +0 -0
  928. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/click_attribution.feature +0 -0
  929. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/conftest.py +0 -0
  930. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/credits.feature +0 -0
  931. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/duration_tab_drift.feature +0 -0
  932. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/entity_provenance.feature +0 -0
  933. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/image.feature +0 -0
  934. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/image_batch_references.feature +0 -0
  935. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/image_upscale.feature +0 -0
  936. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/incident_diagnostics.feature +0 -0
  937. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/instructions.feature +0 -0
  938. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/latched_locale_recovery.feature +0 -0
  939. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/locale_picker_include.feature +0 -0
  940. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/mcp_tasks.feature +0 -0
  941. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/media_picker_tiers.feature +0 -0
  942. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/migrated_driver.feature +0 -0
  943. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/migrated_host_gate.feature +0 -0
  944. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/migrated_host_images.feature +0 -0
  945. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/migrated_i2v.feature +0 -0
  946. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/output_hardening.feature +0 -0
  947. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_asset_tagging_steps.py +0 -0
  948. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_auth_login_steps.py +0 -0
  949. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_auth_steps.py +0 -0
  950. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_character_create_steps.py +0 -0
  951. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_character_read_steps.py +0 -0
  952. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_credits_steps.py +0 -0
  953. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_e2e_binding_guard.py +0 -0
  954. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_image_steps.py +0 -0
  955. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_image_upscale_steps.py +0 -0
  956. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  957. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_instructions_steps.py +0 -0
  958. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  959. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  960. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  961. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_migrated_driver_steps.py +0 -0
  962. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  963. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_migrated_host_images_steps.py +0 -0
  964. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_migrated_i2v_steps.py +0 -0
  965. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_output_hardening_steps.py +0 -0
  966. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_step_collision_guard.py +0 -0
  967. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  968. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/test_video_chain_steps.py +0 -0
  969. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/video_agent_ui.feature +0 -0
  970. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/features/video_chain.feature +0 -0
  971. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/__init__.py +0 -0
  972. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/changelog_modal_page.html +0 -0
  973. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/doctor_env.py +0 -0
  974. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/flow_model_inventory.json +0 -0
  975. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  976. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/listing_payload.py +0 -0
  977. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/fixtures/seeded_catalog.py +0 -0
  978. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/__init__.py +0 -0
  979. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/test_grading.py +0 -0
  980. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/test_model.py +0 -0
  981. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/test_model_governance.py +0 -0
  982. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/test_registry.py +0 -0
  983. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/flow_selectors/test_report.py +0 -0
  984. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/image_batch/__init__.py +0 -0
  985. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/image_batch/test_image_manifest.py +0 -0
  986. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/image_batch/test_jitter_config.py +0 -0
  987. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/image_batch/test_observability_events.py +0 -0
  988. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/__init__.py +0 -0
  989. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/conftest.py +0 -0
  990. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/constants.py +0 -0
  991. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/test_expander_gateway.py +0 -0
  992. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/test_storage_gcs.py +0 -0
  993. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/integration/test_storage_s3.py +0 -0
  994. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/__init__.py +0 -0
  995. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/conftest.py +0 -0
  996. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_auth_status_tool.py +0 -0
  997. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_character_tools.py +0 -0
  998. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_cli_parity.py +0 -0
  999. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_credits_tool.py +0 -0
  1000. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_error_funnel.py +0 -0
  1001. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_http_transport.py +0 -0
  1002. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_known_issues_resource.py +0 -0
  1003. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
  1004. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_no_spend.py +0 -0
  1005. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  1006. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
  1007. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_resources.py +0 -0
  1008. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_serve_auth.py +0 -0
  1009. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_server.py +0 -0
  1010. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_setup.py +0 -0
  1011. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_stdio_transport.py +0 -0
  1012. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_tasks_extension.py +0 -0
  1013. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_tools_helpers.py +0 -0
  1014. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_tools_instructions.py +0 -0
  1015. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/mcp/test_tools_wired.py +0 -0
  1016. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  1017. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_canary_classify.py +0 -0
  1018. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_canary_reexec.py +0 -0
  1019. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  1020. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  1021. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_council_memory.py +0 -0
  1022. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_materiality.py +0 -0
  1023. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  1024. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  1025. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_test_count.py +0 -0
  1026. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  1027. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_codex_plugin.py +0 -0
  1028. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_extract_har_summary.py +0 -0
  1029. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_frame_acceptance.py +0 -0
  1030. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_generate_website_docs.py +0 -0
  1031. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  1032. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_materiality_backtest.py +0 -0
  1033. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_skillopt_scoring.py +0 -0
  1034. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_spike_page_pool.py +0 -0
  1035. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_spike_profile_lease.py +0 -0
  1036. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_update_sponsors.py +0 -0
  1037. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/scripts/test_workflow_hardening.py +0 -0
  1038. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/__init__.py +0 -0
  1039. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_catalog_sync.py +0 -0
  1040. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_character_create_redaction.py +0 -0
  1041. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_character_create_saga.py +0 -0
  1042. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  1043. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_credits.py +0 -0
  1044. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_doctor.py +0 -0
  1045. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_media_attribution.py +0 -0
  1046. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_mentions_observability.py +0 -0
  1047. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_mentions_parse.py +0 -0
  1048. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_mentions_resolve.py +0 -0
  1049. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/services/test_resolve_and_apply.py +0 -0
  1050. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/smoke/__init__.py +0 -0
  1051. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  1052. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/smoke/test_real_flow.py +0 -0
  1053. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_auth.py +0 -0
  1054. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_browser_manager.py +0 -0
  1055. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_chain.py +0 -0
  1056. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_chain_manifest.py +0 -0
  1057. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_cli_data.py +0 -0
  1058. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_cli_project.py +0 -0
  1059. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_cli_update.py +0 -0
  1060. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_config.py +0 -0
  1061. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_conftest_isolation.py +0 -0
  1062. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_data_queries.py +0 -0
  1063. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_bundle.py +0 -0
  1064. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_events.py +0 -0
  1065. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_journal.py +0 -0
  1066. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_recorder.py +0 -0
  1067. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_retention.py +0 -0
  1068. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_diagnostics_sanitize.py +0 -0
  1069. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_documentation_gate.py +0 -0
  1070. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_duration_tab_drift.py +0 -0
  1071. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_entity_provenance.py +0 -0
  1072. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_errors.py +0 -0
  1073. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_image_batch_references.py +0 -0
  1074. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_incident_generation_requests.py +0 -0
  1075. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_json_output.py +0 -0
  1076. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_marker_registry.py +0 -0
  1077. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_media.py +0 -0
  1078. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_observability.py +0 -0
  1079. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_overlay_banner_dismissal.py +0 -0
  1080. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_paths.py +0 -0
  1081. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_playwright_pin.py +0 -0
  1082. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_plugin_manifests.py +0 -0
  1083. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_profile_lease.py +0 -0
  1084. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_profile_lease_subprocess.py +0 -0
  1085. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_profile_store.py +0 -0
  1086. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_profile_store_locale.py +0 -0
  1087. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_project_list_urls.py +0 -0
  1088. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_rich_markup_safety.py +0 -0
  1089. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_self_documenting_errors.py +0 -0
  1090. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_server_json.py +0 -0
  1091. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_smoke.py +0 -0
  1092. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/test_update_check.py +0 -0
  1093. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/__init__.py +0 -0
  1094. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_banned.py +0 -0
  1095. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_expander.py +0 -0
  1096. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_invocation.py +0 -0
  1097. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_loader.py +0 -0
  1098. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_registry.py +0 -0
  1099. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_runtime.py +0 -0
  1100. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/tools/test_spec.py +0 -0
  1101. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/ui/test_app.py +0 -0
  1102. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_codec.py +0 -0
  1103. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  1104. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_queue.py +0 -0
  1105. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_queue_multiprocess.py +0 -0
  1106. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/tests/worker/test_queue_reconciliation.py +0 -0
  1107. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  1108. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/ARCHITECTURE.md +0 -0
  1109. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/AUTHENTICATION.md +0 -0
  1110. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/CHARACTER.md +0 -0
  1111. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/CONFIGURATION.md +0 -0
  1112. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/DATA_LAYER.md +0 -0
  1113. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/DEVELOPMENT.md +0 -0
  1114. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/E2E_TESTING.md +0 -0
  1115. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  1116. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/INSTRUCTIONS.md +0 -0
  1117. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/KNOWN_ISSUES.md +0 -0
  1118. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  1119. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/MOVIE.md +0 -0
  1120. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  1121. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/SECURITY.md +0 -0
  1122. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/SPONSORS.md +0 -0
  1123. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/TOOLS.md +0 -0
  1124. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/agents.md +0 -0
  1125. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/index.md +0 -0
  1126. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/installation.md +0 -0
  1127. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/onboarding-mockup.html +0 -0
  1128. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/onboarding.md +0 -0
  1129. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/docs/stylesheets/extra.css +0 -0
  1130. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/mkdocs.yml +0 -0
  1131. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/requirements.in +0 -0
  1132. {gflow_cli-0.75.0 → gflow_cli-0.76.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.75.0",
3
+ "version": "0.76.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -88,6 +88,26 @@ updates:
88
88
  - "version-update:semver-minor"
89
89
  - "version-update:semver-patch"
90
90
 
91
+ # Docker — the base image in docker/Dockerfile (python:3.14-slim).
92
+ #
93
+ # This covers the FROM line and nothing else. Dependabot has no view into packages
94
+ # installed by a RUN, so `google-chrome-stable` is NOT tracked here: it is pulled
95
+ # unpinned from Google's apt repo, which keeps only the current build, and a rebuild
96
+ # is what picks up a newer Chrome. The gflow-cli version is pinned separately via
97
+ # `ARG GFLOW_VERSION` and gated by tests/test_dockerfile_version_pin.py, so between
98
+ # the three of them every input to the image has a named owner.
99
+ - package-ecosystem: "docker"
100
+ directory: "/docker"
101
+ schedule:
102
+ interval: "weekly"
103
+ day: "monday"
104
+ time: "08:00"
105
+ timezone: "Europe/Lisbon"
106
+ open-pull-requests-limit: 3
107
+ # Kept in sync with .github/workflows/labels.yml — see the note above.
108
+ labels:
109
+ - "dependencies"
110
+
91
111
  # GitHub Actions
92
112
  - package-ecosystem: "github-actions"
93
113
  directory: "/"
@@ -0,0 +1,70 @@
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
+ # Ordering matters and is why this hangs off `release: published` rather than the
7
+ # tag push. `mcp-publisher` proves namespace ownership by reading the `mcp-name:`
8
+ # token out of the PUBLISHED PyPI README, and PyPI metadata is frozen per release —
9
+ # so the wheel has to be up first. `release.yml` publishes to PyPI and only then
10
+ # creates the GitHub Release, so by the time this fires the token is live.
11
+ #
12
+ # Auth is GitHub Actions OIDC. There is no PAT and no device-code flow: the runner
13
+ # exchanges its own short-lived identity token for registry credentials, which is
14
+ # why this needs `id-token: write` and nothing else.
15
+
16
+ on:
17
+ release:
18
+ types: [published]
19
+ # Manual re-run, e.g. a release whose registry publish failed after PyPI
20
+ # succeeded. `validate` runs first either way, so a bad server.json stops
21
+ # before anything is sent.
22
+ workflow_dispatch:
23
+
24
+ # Write scopes live at JOB level (Scorecard Token-Permissions: a workflow-level
25
+ # write grant reaches every job, current and future).
26
+ permissions:
27
+ contents: read
28
+
29
+ jobs:
30
+ publish:
31
+ runs-on: ubuntu-latest
32
+ permissions:
33
+ contents: read
34
+ id-token: write # OIDC exchange with registry.modelcontextprotocol.io
35
+ env:
36
+ # Pinned by version AND digest: this step runs in a job holding id-token
37
+ # write and publishes publicly under io.github.ffroliva, so a moved tag
38
+ # must not silently change the binary that does it.
39
+ MCP_PUBLISHER_VERSION: "1.8.1"
40
+ MCP_PUBLISHER_SHA256: "a06c9096dcb9727c13555b6be26c7effa707b01f06a4c561ba7a3635443cf2cc"
41
+ steps:
42
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
43
+ with:
44
+ persist-credentials: false
45
+
46
+ - name: Install mcp-publisher
47
+ env:
48
+ GH_TOKEN: ${{ github.token }}
49
+ run: |
50
+ set -euo pipefail
51
+ archive="${RUNNER_TEMP}/mcp-publisher_linux_amd64.tar.gz"
52
+ gh release download "v${MCP_PUBLISHER_VERSION}" \
53
+ --repo modelcontextprotocol/registry \
54
+ --pattern 'mcp-publisher_linux_amd64.tar.gz' \
55
+ --output "${archive}" --clobber
56
+ echo "${MCP_PUBLISHER_SHA256} ${archive}" | sha256sum -c -
57
+ tar -xzf "${archive}" -C "${RUNNER_TEMP}" mcp-publisher
58
+ "${RUNNER_TEMP}/mcp-publisher" --version
59
+ echo "${RUNNER_TEMP}" >> "${GITHUB_PATH}"
60
+
61
+ - name: Validate server.json
62
+ # Never `init` here: it only writes a TEMPLATE server.json, refuses when a
63
+ # real one exists, and exits 1 — which would abort the run before login.
64
+ run: mcp-publisher validate
65
+
66
+ - name: Authenticate with the registry (GitHub Actions OIDC)
67
+ run: mcp-publisher login github-oidc
68
+
69
+ - name: Publish
70
+ run: mcp-publisher publish
@@ -74,8 +74,8 @@ If you can help unblock a pure HTTP transport (especially for video generation,
74
74
 
75
75
  Run these gates in order before every commit:
76
76
 
77
- ```powershell
78
- $env:PYTHONUTF8=1
77
+ ```bash
78
+ export PYTHONUTF8=1 # Windows PowerShell: $env:PYTHONUTF8 = "1"
79
79
  uv run python scripts/ci/check_repo_hygiene.py
80
80
  uv run python scripts/ci/check_doc_links.py
81
81
  uv run python scripts/ci/check_website_docs_pii.py
@@ -108,7 +108,7 @@ the five other mirror axes), which no command here can check and no CI gate can
108
108
 
109
109
  - Type hints everywhere; `pyright` strict on `src/gflow_cli`.
110
110
  - Structured logging only (`structlog`) — **never** raw `print()` or `import logging` in `src/`.
111
- - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–38, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
111
+ - Errors as RFC 9457 Problem Details with stable per-class exit codes (3–39, e.g. 11 is `ConfigurationError` — including `ProfileLockedError` for same-profile lease contention, 16 is the `DataStoreError` family, 19 `SceneConcatError`, 20 `FrameExtractionError`, 21 `ChainPartialError`, 22 `UpscaleUnavailableError`, 25 `FlowAgentUiError`, 28 `UiModeUnavailableError`, 29 `MentionIndexUnavailableError`, 30 `QueueSchemaError`, 37 `InsufficientCreditsError`, 39 `FlowAccessUnavailableError`). See `src/gflow_cli/errors.py::EXIT_CODE_MAP` for the complete mapping. Exit 33 is reserved outside that map: `gflow doctor` findings-present — a successful diagnosis, not an error class.
112
112
  - 100-char line length, `ruff` configured. Imports sorted by `ruff` (isort rules).
113
113
  - **YAGNI / least-code**: prefer the smallest change that works. No speculative abstractions (interface/factory with one implementation), no config or flags nobody sets, no dead constants/helpers, no reinventing the stdlib. Review carries this as its own lens — the **D14 over-engineering** dimension of [`pr-council-review`](skills/pr-council-review/SKILL.md) (baseline, always runs). Its rubric is portable; the `ponytail` plugin (see CONTRIBUTING) is an optional accelerant, not a dependency.
114
114
  - **MCP & CLI Schema Symmetry**: Any updates or additions to user-facing CLI command parameters (e.g., `gflow image t2i`, `gflow video`) must be mirrored in the corresponding MCP tool definitions. Never add option/argument fields to Click commands without updating the MCP server implementation. This symmetry is enforced programmatically in CI via `tests/mcp/test_cli_parity.py` (every CLI leaf command needs a mapped MCP tool or an explicit, reasoned exemption) plus the schema checks in `tests/mcp/test_server.py`.
@@ -339,7 +339,7 @@ content in a vendor directory.
339
339
  **Codex CLI / desktop app:** install the repo's skills-only plugin from the repository root,
340
340
  then start a new session:
341
341
 
342
- ```powershell
342
+ ```bash
343
343
  codex plugin marketplace add .
344
344
  codex plugin add gflow@gflow-cli
345
345
  ```
@@ -7,6 +7,106 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.76.0] — 2026-09-16
11
+
12
+ ### Fixed
13
+
14
+ - **The containerised sign-in now works on Windows, and no longer points at a service that
15
+ does not exist.** `docker/docker-compose.yml` hard-coded the X11 socket at
16
+ `/tmp/.X11-unix` and told non-Linux users to "use the VNC service below instead" — there
17
+ is no VNC service; the file defines `login`, `gflow` and `serve`. On Windows 11 + WSL2 the
18
+ display is real but lives elsewhere: WSLg publishes a live `X0` socket at
19
+ `/mnt/wslg/.X11-unix` with `DISPLAY=:0`, while `/tmp/.X11-unix` inside that distro is an
20
+ empty directory, so the default mounted nothing and Chrome exited against a display that
21
+ was not there. The mount is now `${X11_SOCKET:-/tmp/.X11-unix}`, unchanged for Linux, and
22
+ `docker/README.md` documents the WSL invocation plus the two prerequisites that actually
23
+ bite (run it from inside WSL, and enable Docker's WSL integration for that distro).
24
+ - **The container image no longer silently installs a stale gflow.** `docker/Dockerfile`
25
+ hardcoded `pip install gflow-cli==0.75.0` with nothing tying it to `pyproject.toml`, so
26
+ the next release would have left the image on the old version while
27
+ `docker/README.md`'s verification table went on quoting the new one. The version is now
28
+ an `ARG` gated by `tests/test_dockerfile_version_pin.py`. That gate also asserts the
29
+ ARG's **position**: declared above the Chrome layer it would invalidate ~1.6 GB of apt
30
+ cache on every version bump, so the ordering is a cache contract, not style. The base
31
+ image is now tracked by Dependabot (`docker` ecosystem); Chrome stays unpinned, with the
32
+ reason and the refresh command written down rather than left implicit.
33
+ - **An account with no Flow access was told gflow's selectors had drifted, and asked to
34
+ file a frontend bug.** Google Flow needs an age-verified account in a supported region
35
+ on a Google AI Plus, Pro or Ultra plan (or a qualifying Workspace plan). An account
36
+ without one is served Flow's own "you don't have access" screen instead of the app, and
37
+ gflow had no route for that state, so the editor sweep reported the only thing it could
38
+ see: the settings trigger never appeared. Measured on a newly created free Google
39
+ account, 2026-09-15, as an **A/B through the same command** — the probe neutered, then
40
+ restored, on live Flow:
41
+
42
+ | | exit | class | what the user is told |
43
+ |---|---|---|---|
44
+ | before | 23 | `UiSelectorDriftError` | *"Google may have updated their frontend … file a bug at github.com/ffroliva/gflow-cli/issues"* — on `https://flow.google.com/unavailable`, after a 30 s wait, **with an incident bundle containing a screenshot of the account's own page** for the user to attach |
45
+ | after | 39 | `FlowAccessUnavailableError` | *"This Google account cannot reach Flow"*, naming the subscription and linking Google's eligibility page |
46
+
47
+ The guard goes in `raise_if_known_landing()`, already the single chokepoint for "we
48
+ landed somewhere unexpected" and shared by all three raise sites (the labs gallery
49
+ sweep, the labs prompt-box sweep, and the migrated composer's `ensure_editor`), so every
50
+ command that drives the Flow editor is covered by the one change. It now probes the DOM
51
+ before it reads the URL. Verified live at $0 on that account: `ui_driver.known_landing
52
+ kind=unavailable at=migrated.ensure_editor`, exit 39, nothing submitted.
53
+
54
+ Detection is by Angular component, not by path or status code, because the spike
55
+ ([`2026-09-15-unentitled-account-signal`](docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md))
56
+ pre-registered four candidate signals and refuted all four. There is no entitlement field
57
+ on the session wire; `flow.google.com/` answers **HTTP 200** and performs the hop
58
+ client-side, so there is no 3xx to key on; and the path is not stable — `/unavailable`
59
+ and `/u/8/unavailable` were both observed, the second carrying Google's account-index
60
+ segment, which gflow does not parse anywhere. What is stable is Flow's own
61
+ `<flow-pinhole-unavailable-screen>`, rendered inside `aisandbox-root`, and unlike the
62
+ screen's prose it is locale-invariant by construction (AGENTS.md Tier 1). The probe is
63
+ total: a page that cannot be queried, or a locator that raises, reports "not seen" rather
64
+ than displacing the caller's own diagnosis.
65
+
66
+ **What this does not fix, and why — measured, not assumed.** The same account run
67
+ *without* `--project` never reaches the editor at all: it takes the labs REST arm and
68
+ dies at `labs.google/fx/api/trpc/project.createProject` with **HTTP 401**, which is still
69
+ reported as `AuthExpiredError` (exit 3) telling the user to log in again. `gflow auth
70
+ login` (exit 8) and `gflow auth status` (exit 1) are wrong in the same way. All three read
71
+ an oracle that cannot answer the question: `labs.google/fx/api/auth/session` returns 200
72
+ with an empty `user` for an abandoned sign-in *and* for an account with no entitlement,
73
+ and a REST 401 looks identical to an expired session. The discriminator exists only in
74
+ the DOM, and on the login path Chrome has already closed by the time the verdict runs, so
75
+ there is no page left to ask. Routing those means a browser probe on the auth path — a
76
+ separate change, on a surface `AGENTS.md` gates behind its own spike. (`gflow credits
77
+ user` exit 3 on that account is [#795](https://github.com/ffroliva/gflow-cli/issues/795),
78
+ a different real bug. `gflow project list` returning `{"projects": [], "total": 0}` was
79
+ never wrong — it lists the local SQLite catalog and never contacts Flow.)
80
+
81
+ - **An MCP agent's `project_name` is finally used.** `gflow_generate_image` and
82
+ `gflow_generate_video` accept a `project_name` and document it as the title for a freshly
83
+ created Flow project, but the worker read a different key (`project_title`) that nothing in
84
+ the repository has ever written. Every supplied name was silently dropped and each new
85
+ project was created as the hardcoded fallback `gflow-cli images` instead. Dead since the
86
+ parameter shipped on 2026-07-26 — the daemon's read predated it by four days, and the
87
+ feature wired up a new key rather than the one already being read. The CLI was unaffected.
88
+
89
+ ### Added
90
+
91
+ - **The Official MCP Registry listing now publishes itself.** A new `MCP Registry` workflow runs
92
+ on `release: published` — after `release.yml` has uploaded the wheel, which matters because
93
+ `mcp-publisher` proves namespace ownership by reading the `mcp-name:` token out of the
94
+ *published* PyPI README. It authenticates with **GitHub Actions OIDC**, so no personal access
95
+ token is created, stored or handed to the registry, and the `mcp-publisher` download is pinned
96
+ by version *and* sha256 since that job holds `id-token: write`. `workflow_dispatch` is there
97
+ for a re-run when a release's PyPI upload succeeded but the registry publish did not. Registry
98
+ listings feed the downstream directories: PulseMCP ingests it and GitHub's MCP gallery is built
99
+ on it.
100
+ - **A gate for the MCP→worker payload-key round trip (#628).** `tests/mcp/test_cli_parity.py`
101
+ checks parity at the command and option level; neither can see the queue payload, where a
102
+ key written under one name and read under another type-checks, lints, passes every test and
103
+ does nothing at runtime. The new `tests/mcp/test_payload_key_round_trip.py` extracts the keys
104
+ `mcp/tools.py` writes and the keys anything under `worker/` reads, and fails on any written
105
+ key the worker never reads. It found the `project_name` defect above on its first run. The
106
+ extractors carry their own tests against synthetic sources, so the gate is proven able to go
107
+ red rather than merely observed green (precedent: a dead `output` param the queue never read,
108
+ found by hand in a v0.48.0 pre-release audit, #495).
109
+
10
110
  ## [0.75.0] — 2026-09-15
11
111
 
12
112
  ### Added
@@ -5101,7 +5201,8 @@ shell-script template that branches on these codes.
5101
5201
 
5102
5202
  First skeleton. Not functional end-to-end yet.
5103
5203
 
5104
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.75.0...HEAD
5204
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.76.0...HEAD
5205
+ [0.76.0]: https://github.com/ffroliva/gflow-cli/compare/v0.75.0...v0.76.0
5105
5206
  [0.75.0]: https://github.com/ffroliva/gflow-cli/compare/v0.74.0...v0.75.0
5106
5207
  [0.74.0]: https://github.com/ffroliva/gflow-cli/compare/v0.73.2...v0.74.0
5107
5208
  [0.73.2]: https://github.com/ffroliva/gflow-cli/compare/v0.73.1...v0.73.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.75.0
3
+ Version: 0.76.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/
@@ -102,6 +102,7 @@ Description-Content-Type: text/markdown
102
102
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
103
103
  [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=coverage)](https://sonarcloud.io/component_measures?id=ffroliva_gflow-cli&metric=coverage)
104
104
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ffroliva/gflow-cli/badge)](https://scorecard.dev/viewer/?uri=github.com/ffroliva/gflow-cli)
105
+ [![Listed on mcpservers.org](https://mcpservers.org/badge.svg)](https://mcpservers.org/servers/ffroliva/gflow-cli)
105
106
 
106
107
  <!-- Gold sponsors appear here: filled by scripts/ci/update_sponsors.py, empty until there is one. -->
107
108
  <!-- sponsors-gold:start -->
@@ -189,6 +190,7 @@ Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1
189
190
  | 🎭 **Characters** | [Characters](docs/CHARACTER.md), reusable subjects (`gflow character`) |
190
191
  | 🤖 **Agentic & automation** | [Instructions](docs/INSTRUCTIONS.md) (`gflow instructions`, persistent brief cards) · [Movie](docs/MOVIE.md) (`gflow movie`, multi-scene manifests) · [Tools](docs/TOOLS.md) (`--tool`, prompt rewriting) · [MCP server](docs/MCP.md) (`gflow mcp run` / `gflow serve`) |
191
192
  | 🔐 **Auth & sessions** | [Authentication](docs/AUTHENTICATION.md) · [Known issues](KNOWN_ISSUES.md) |
193
+ | 📣 **Where to install from** | [Marketplaces](docs/MARKETPLACES.md) (every channel and what each actually delivers) · [Container](docs/CONTAINER.md) (why the image introspects but cannot generate) |
192
194
  | 🏗️ **Internals** | [Architecture](docs/ARCHITECTURE.md) · [Security](docs/SECURITY.md) · [Debugging](docs/DEBUGGING.md) |
193
195
  | 📦 **Releases** | [Changelog](CHANGELOG.md) · [Roadmap](ROADMAP.md) · [Release protocol](RELEASE.md) · [Project status](docs/PROJECT_STATUS.md) |
194
196
  | 🤝 **Contributing** | [Contributing](CONTRIBUTING.md) · [Development](docs/DEVELOPMENT.md) · [GitHub workflow](docs/GITHUB.md) |
@@ -16,6 +16,7 @@
16
16
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=ffroliva_gflow-cli)
17
17
  [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=ffroliva_gflow-cli&metric=coverage)](https://sonarcloud.io/component_measures?id=ffroliva_gflow-cli&metric=coverage)
18
18
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ffroliva/gflow-cli/badge)](https://scorecard.dev/viewer/?uri=github.com/ffroliva/gflow-cli)
19
+ [![Listed on mcpservers.org](https://mcpservers.org/badge.svg)](https://mcpservers.org/servers/ffroliva/gflow-cli)
19
20
 
20
21
  <!-- Gold sponsors appear here: filled by scripts/ci/update_sponsors.py, empty until there is one. -->
21
22
  <!-- sponsors-gold:start -->
@@ -103,6 +104,7 @@ Reproduce the recording with [`scripts/record_demo.ps1`](scripts/record_demo.ps1
103
104
  | 🎭 **Characters** | [Characters](docs/CHARACTER.md), reusable subjects (`gflow character`) |
104
105
  | 🤖 **Agentic & automation** | [Instructions](docs/INSTRUCTIONS.md) (`gflow instructions`, persistent brief cards) · [Movie](docs/MOVIE.md) (`gflow movie`, multi-scene manifests) · [Tools](docs/TOOLS.md) (`--tool`, prompt rewriting) · [MCP server](docs/MCP.md) (`gflow mcp run` / `gflow serve`) |
105
106
  | 🔐 **Auth & sessions** | [Authentication](docs/AUTHENTICATION.md) · [Known issues](KNOWN_ISSUES.md) |
107
+ | 📣 **Where to install from** | [Marketplaces](docs/MARKETPLACES.md) (every channel and what each actually delivers) · [Container](docs/CONTAINER.md) (why the image introspects but cannot generate) |
106
108
  | 🏗️ **Internals** | [Architecture](docs/ARCHITECTURE.md) · [Security](docs/SECURITY.md) · [Debugging](docs/DEBUGGING.md) |
107
109
  | 📦 **Releases** | [Changelog](CHANGELOG.md) · [Roadmap](ROADMAP.md) · [Release protocol](RELEASE.md) · [Project status](docs/PROJECT_STATUS.md) |
108
110
  | 🤝 **Contributing** | [Contributing](CONTRIBUTING.md) · [Development](docs/DEVELOPMENT.md) · [GitHub workflow](docs/GITHUB.md) |
@@ -0,0 +1,53 @@
1
+ # Spike image v2: REAL Google Chrome, not Playwright's bundled Chromium.
2
+ #
3
+ # gflow's own gate (browser_manager.is_playwright_chrome_channel_available) accepts
4
+ # exactly one Linux path for channel="chrome": /opt/google/chrome/chrome. That is where
5
+ # the google-chrome-stable .deb installs, so this image satisfies gflow's detector and
6
+ # not merely Playwright's.
7
+ # 3.14, not 3.11. 3.11 is only the project's requires-python FLOOR — a reason for the
8
+ # minimum SUPPORTED version, not for a runtime image.
9
+ #
10
+ # CI's matrix is ["3.11","3.12","3.13"], so 3.14 is not covered by the suite. That matters
11
+ # less here than it looks: a container pins its interpreter, so this is deterministic
12
+ # rather than an ambient version that might surprise someone. The gap is closed by
13
+ # verifying the image's actual runtime contract below rather than by staying on an older
14
+ # interpreter — see docker/README.md § "Verified on this image".
15
+ FROM python:3.14-slim
16
+
17
+ ENV PYTHONUNBUFFERED=1 \
18
+ GFLOW_CLI_UPDATE_CHECK=false \
19
+ GFLOW_CLI_HOME=/data/gflow
20
+
21
+ RUN apt-get update && apt-get install -y --no-install-recommends \
22
+ xvfb xauth ca-certificates curl gnupg \
23
+ && curl -fsSL https://dl.google.com/linux/linux_signing_key.pub \
24
+ | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg \
25
+ && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] https://dl.google.com/linux/chrome/deb/ stable main" \
26
+ > /etc/apt/sources.list.d/google-chrome.list \
27
+ && apt-get update && apt-get install -y --no-install-recommends google-chrome-stable \
28
+ && rm -rf /var/lib/apt/lists/*
29
+
30
+ # The version lives in an ARG so a bump is a one-line change (or `--build-arg`), and
31
+ # `tests/test_dockerfile_version_pin.py` fails when this default drifts from
32
+ # pyproject.toml — otherwise the image silently keeps installing an old release while
33
+ # docker/README.md goes on claiming the new one was verified.
34
+ #
35
+ # Declared HERE rather than beside FROM, and the placement is load-bearing. Measured
36
+ # 2026-09-15 with an A/B on a throwaway image, using a unique marker so no stale cache
37
+ # entry could match:
38
+ #
39
+ # ARG after the expensive layer -> that layer CACHED on a version bump
40
+ # ARG before the expensive layer -> that layer REBUILT
41
+ #
42
+ # Chrome above is most of this image's ~1.6 GB, so the wrong placement would turn every
43
+ # gflow bump into a full Chrome reinstall. Keep this ARG below the apt layer.
44
+ #
45
+ # Deliberately NOT pinned: google-chrome-stable. Chrome's apt repo keeps only the current
46
+ # build, so a pinned version stops resolving within weeks. The trade-off is that this
47
+ # layer caches indefinitely and a rebuild is what picks up a newer Chrome.
48
+ ARG GFLOW_VERSION=0.76.0
49
+ RUN pip install --no-cache-dir "gflow-cli==${GFLOW_VERSION}"
50
+
51
+ VOLUME ["/data"]
52
+ WORKDIR /data
53
+ CMD ["gflow", "--help"]
@@ -0,0 +1,17 @@
1
+ # Runs gflow's OWN offline suite inside the container, on the image's interpreter.
2
+ # This is what turns "CI does not test 3.14" from a caveat into a measurement.
3
+ FROM python:3.14-slim
4
+ ENV PYTHONUNBUFFERED=1 PYTHONUTF8=1 GFLOW_CLI_UPDATE_CHECK=false UV_LINK_MODE=copy
5
+ RUN apt-get update && apt-get install -y --no-install-recommends \
6
+ xvfb xauth ca-certificates curl gnupg git \
7
+ && curl -fsSL https://dl.google.com/linux/linux_signing_key.pub \
8
+ | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg \
9
+ && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] https://dl.google.com/linux/chrome/deb/ stable main" \
10
+ > /etc/apt/sources.list.d/google-chrome.list \
11
+ && apt-get update && apt-get install -y --no-install-recommends google-chrome-stable \
12
+ && rm -rf /var/lib/apt/lists/*
13
+ RUN curl -LsSf https://astral.sh/uv/install.sh | UV_INSTALL_DIR=/usr/local/bin sh
14
+ WORKDIR /app
15
+ COPY . /app
16
+ RUN uv sync --frozen 2>/dev/null || uv sync
17
+ CMD ["uv","run","python","-m","pytest","-q","--no-cov","-p","no:cacheprovider"]
@@ -0,0 +1,215 @@
1
+ # Running gflow-cli in a container
2
+
3
+ **Status: measured, partially.** The plumbing works and the browser presents clean. The one-time
4
+ Google sign-in inside a container has **not** been run, and neither has a generation. Evidence and
5
+ exact readings: [`docs/superpowers/spikes/2026-09-15-container-transport-viability.md`](../docs/superpowers/spikes/2026-09-15-container-transport-viability.md).
6
+
7
+ Do not read this as "containerised gflow is supported". Read it as "here is the protocol, here is
8
+ precisely how far it has been verified, and here is what is left to try".
9
+
10
+ ## The shape
11
+
12
+ **The container is disposable. The volume is not.** Everything that identifies you — the Chrome
13
+ profile, `GFLOW_CLI_HOME`, the SQLite catalog — lives in the named `gflow-auth` volume, so the
14
+ image can be rebuilt or upgraded without signing in again.
15
+
16
+ ## Two things that are not optional
17
+
18
+ **Real Google Chrome, not Chromium.** `browser_manager.is_playwright_chrome_channel_available()`
19
+ accepts exactly one Linux path for `channel="chrome"`: `/opt/google/chrome/chrome`. That is where
20
+ the `google-chrome-stable` .deb installs. A distro Chromium does **not** satisfy it, and
21
+ generation needs a real-Chrome profile.
22
+
23
+ **`xauth` alongside `xvfb`.** `xvfb-run` fails with `xauth command not found` without it. This
24
+ cost the spike an arm.
25
+
26
+ ## Xvfb is not a headless workaround
27
+
28
+ Xvfb is a real X server with no attached monitor. Chrome runs genuinely **headed** against it.
29
+ That is categorically different from Chrome's `--headless` mode, which is what Google's auth and
30
+ reCAPTCHA stack rejects. Measured inside the container with gflow's own launch arguments:
31
+
32
+ ```
33
+ REAL CHROME launched : 153.0.8010.36
34
+ navigator.webdriver : None
35
+ headless UA marker? : False
36
+ ```
37
+
38
+ ## Use
39
+
40
+ ```bash
41
+ # 1. Build
42
+ docker compose build
43
+
44
+ # 2. Sign in ONCE, into the volume. This is the only step a headless box cannot do —
45
+ # it needs a real display. See "Where the display comes from" below for Windows.
46
+ xhost +local: && docker compose run --rm login
47
+
48
+ # 3. Everything else runs headed under Xvfb against that volume
49
+ docker compose run --rm gflow # gflow auth status
50
+ docker compose run --rm gflow gflow credits user # read-only, $0
51
+
52
+ # 4. The MCP server, for an agent on the host
53
+ export GFLOW_CLI_DAEMON_TOKEN=$(openssl rand -hex 32)
54
+ docker compose up serve
55
+ ```
56
+
57
+ ## Where the display comes from
58
+
59
+ Step 2 is the only step that needs a screen you can see, and the socket is not in the
60
+ same place on every host. The `login` service mounts `${X11_SOCKET:-/tmp/.X11-unix}`,
61
+ so the default suits Linux and everything else sets one variable.
62
+
63
+ | Host | Command |
64
+ |---|---|
65
+ | Linux | `xhost +local: && docker compose run --rm login` |
66
+ | Windows (WSL2 + WSLg) | run **from inside WSL**: `X11_SOCKET=/mnt/wslg/.X11-unix docker compose run --rm login` |
67
+ | macOS | needs XQuartz; not verified here |
68
+
69
+ **Why Windows needs the override.** Measured on Windows 11 + WSL2 (Ubuntu), 2026-09-15:
70
+ WSLg publishes a live `X0` socket at `/mnt/wslg/.X11-unix`, and `DISPLAY` is already `:0`.
71
+ But `/tmp/.X11-unix` **inside that same distro is an empty directory** — so the Linux
72
+ default mounts nothing useful and Chrome exits immediately against a display that is not
73
+ there. The variable is the difference between working and a confusing failure.
74
+
75
+ Two things to check before blaming the compose file:
76
+
77
+ - Run it **from inside WSL**, not Git Bash or PowerShell. On the Windows side
78
+ `/tmp/.X11-unix` does not exist at all, and Git Bash will additionally rewrite the path
79
+ (`/mnt/wslg/...` becomes `C:/Program Files/Git/mnt/wslg/...`).
80
+ - Docker's **WSL integration must be on** for that distro — Docker Desktop → Settings →
81
+ Resources → WSL Integration. Without it the `docker` CLI inside WSL cannot reach the
82
+ daemon at all: `Cannot connect to the Docker daemon at unix:///var/run/docker.sock`.
83
+
84
+ ## Rebuilding is cheap, and which layer moves is deliberate
85
+
86
+ The image is two layers that matter, in this order:
87
+
88
+ 1. **Chrome + Xvfb** via `apt-get` — most of the ~1.6 GB, and the slow one.
89
+ 2. **`pip install gflow-cli==${GFLOW_VERSION}`** — small and fast.
90
+
91
+ Because the expensive layer comes first, bumping the gflow version reuses it from cache
92
+ and only the last layer rebuilds. A version bump is seconds, not minutes.
93
+
94
+ That property is fragile in one specific way: **`ARG GFLOW_VERSION` must stay below the
95
+ apt layer.** An ARG declared before an expensive layer invalidates it whenever the value
96
+ changes. Measured 2026-09-15 on a throwaway image, with a unique marker so no stale cache
97
+ entry could match:
98
+
99
+ | `ARG` placement | expensive layer on a version bump |
100
+ |---|---|
101
+ | after it | `CACHED` |
102
+ | before it | rebuilt |
103
+
104
+ `tests/test_dockerfile_version_pin.py` asserts the ordering, so the cache contract cannot
105
+ be undone by a tidy-up that moves the ARG next to `FROM`.
106
+
107
+ ### Who owns each input
108
+
109
+ | Input | Pinned by | Updated by |
110
+ |---|---|---|
111
+ | `python:3.14-slim` base | the `FROM` line | Dependabot (`docker` ecosystem, `/docker`, weekly) |
112
+ | `gflow-cli` | `ARG GFLOW_VERSION` | a release, gated by `tests/test_dockerfile_version_pin.py` |
113
+ | `google-chrome-stable` | not pinned | a rebuild |
114
+
115
+ Chrome is the deliberate gap. Google's apt repo keeps only the current build, so a pinned
116
+ version stops resolving within weeks — and Dependabot cannot see packages installed by a
117
+ `RUN` in any case. The consequence is worth stating plainly: **that layer caches
118
+ indefinitely, so an image rebuilt from a warm cache keeps whatever Chrome it first
119
+ installed.** `docker compose build --no-cache` (or pruning the cache) is what refreshes it.
120
+
121
+ ## `serve` refuses to start without a token — on purpose
122
+
123
+ `docker compose config` **fails** when `GFLOW_CLI_DAEMON_TOKEN` is unset:
124
+
125
+ ```
126
+ required variable GFLOW_CLI_DAEMON_TOKEN is missing a value: set a token before exposing this
127
+ ```
128
+
129
+ That is the intended behaviour, not a bug to fix. Since v0.75.0 `gflow serve` verifies the token
130
+ on **every** request; a daemon exposed without one hands every tool to any local caller. The port
131
+ is published to `127.0.0.1` only for the same reason.
132
+
133
+ ## Verified on this image
134
+
135
+ CI's matrix is `["3.11","3.12","3.13"]`, so the 3.14 base is not covered by the test suite.
136
+ A container pins its interpreter, so this is deterministic rather than an ambient version that
137
+ could surprise someone — and the gap is closed by verifying the image's runtime contract directly
138
+ rather than by staying on an older interpreter:
139
+
140
+ ```
141
+ python : 3.14.7
142
+ gflow_cli : 0.75.0
143
+ chrome channel : True (is_playwright_chrome_channel_available)
144
+ chrome available : True (is_chrome_available)
145
+ initialize : OK, server "gflow-cli"
146
+ tools/list : OK, 15 tools
147
+ ```
148
+
149
+ Re-run that after any base-image bump. If it stops holding, the interpreter is the first suspect.
150
+
151
+ > **Measured on the 0.75.0 image, not re-measured for 0.76.0.** The numbers above and in the
152
+ > table below are a record of a run, so they are left as they were rather than edited to match
153
+ > the current version — a quoted measurement that tracks `pyproject.toml` is not a measurement.
154
+ > `ARG GFLOW_VERSION` *is* gated against the repo version by
155
+ > `tests/test_dockerfile_version_pin.py`, so the image installs 0.76.0; what is unverified is
156
+ > that the runtime contract still holds on it. Re-running the block above on a WSL-integrated
157
+ > Docker host is what would settle it.
158
+
159
+ ## Benchmark — measured 2026-09-15
160
+
161
+ Reproduce with `docker/Dockerfile.test` (copy `dockerignore.example` to `.dockerignore` at the
162
+ repo root first). All figures from this machine; treat them as shape, not as a spec.
163
+
164
+ | Metric | Result |
165
+ |---|---|
166
+ | Runtime image (real Chrome + Xvfb) | **1.65 GB** |
167
+ | Test image (repo + dev deps, no Chrome) | **714 MB** |
168
+ | Cold container -> `gflow --version` | **1475 / 1516 / 1511 ms** |
169
+ | Cold container -> MCP `initialize` + `tools/list` | **2228 / 2406 / 2495 ms** |
170
+ | `uv sync` during build | **14.8 s** |
171
+ | gflow's offline suite, **on Python 3.14** | **4379 passed, 28 skipped** in **6m08s** |
172
+
173
+ The MCP figure is the one that matters for agents: roughly **2.3 s from cold container to a usable
174
+ tool list**. A long-lived `serve` pays that once; a one-shot `docker run` pays it every call.
175
+
176
+ **The suite result is the point of the 3.14 base.** CI's matrix is `["3.11","3.12","3.13"]`, so
177
+ this is the first time gflow's tests have run on 3.14 at all — which is what makes the interpreter
178
+ choice a measurement rather than a preference.
179
+
180
+ ### Two tests cannot pass in a container built from a git WORKTREE
181
+
182
+ `test_real_tree_passes_root_doc_check` and `test_the_generator_ships_only_what_git_tracks` both
183
+ shell out to `git ls-files` to introspect **the repository**. In a worktree, `.git` is a 71-byte
184
+ *pointer file*:
185
+
186
+ ```
187
+ gitdir: C:/development/github/gflow-cli/.git/worktrees/container-spike
188
+ ```
189
+
190
+ Docker copies the pointer faithfully, and inside the container it dangles:
191
+
192
+ ```
193
+ fatal: not a git repository: /app/C:/development/github/gflow-cli/.git/worktrees/container-spike
194
+ ```
195
+
196
+ Both then fail with `CalledProcessError … exit status 128`. **This is the build context, not the
197
+ interpreter** — they test repo state, not runtime behaviour. Build from the main checkout (where
198
+ `.git` is a real directory) and they have a repo to query. Adding `.git` to the context does *not*
199
+ fix it on its own; that was tried and the failures were identical.
200
+
201
+ ## What is verified, and what is not
202
+
203
+ | | |
204
+ |---|---|
205
+ | `gflow` runs in the container | ✅ measured — `gflow, version 0.75.0` |
206
+ | Real Chrome at gflow's required path | ✅ measured — all three detectors return True |
207
+ | Headed Chrome launches and browses | ✅ measured — Chrome 153, real page title |
208
+ | No automation markers | ✅ measured — `navigator.webdriver` is `None` |
209
+ | One-time Google sign-in in a container | ❌ **not run** |
210
+ | Flow accepts the session; generation works | ❌ **not run** — a clean fingerprint is necessary, not sufficient |
211
+ | Windows profile mounted into Linux | ❌ **not run** — expected to fail on DPAPI cookie decryption, which would be a portability limit, not anti-automation |
212
+
213
+ If you run the sign-in arm, please report what happened on
214
+ [#822](https://github.com/ffroliva/gflow-cli/issues/822) either way. A failure is as useful as a
215
+ success, provided it names what it observed.