gflow-cli 0.67.0__tar.gz → 0.68.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 (948) hide show
  1. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.env.template +4 -3
  3. gflow_cli-0.68.0/.github/PULL_REQUEST_TEMPLATE.md +35 -0
  4. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/AGENTS.md +2 -2
  5. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CHANGELOG.md +56 -1
  6. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CLAUDE.md +1 -1
  7. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CONTRIBUTING.md +52 -4
  8. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/PKG-INFO +2 -1
  9. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/README.md +1 -0
  10. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/RELEASE.md +7 -2
  11. {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/ARCHITECTURE.md +2 -1
  12. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AUTHENTICATION.md +1 -1
  13. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CONFIGURATION.md +4 -3
  14. {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/DEVELOPMENT.md +6 -1
  15. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/INDEX.md +5 -3
  16. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.67.0.md +5 -2
  17. gflow_cli-0.68.0/docs/LIVE_VERIFICATION_v0.68.0.md +105 -0
  18. {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/MCP.md +1 -1
  19. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/PROJECT_STATUS.md +44 -0
  20. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/USAGE.md +67 -5
  21. {gflow_cli-0.67.0/website → gflow_cli-0.68.0}/docs/USER_GUIDE.md +3 -1
  22. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +9 -0
  23. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/windows-dev-quirks.md +1 -1
  24. gflow_cli-0.68.0/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +47 -0
  25. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/llms.txt +1 -1
  26. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/pyproject.toml +1 -1
  27. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/gflow-cli/SKILL.md +3 -0
  28. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/pr-council-review/SKILL.md +2 -2
  29. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/__init__.py +1 -1
  30. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/migrated_composer.py +18 -3
  31. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli.py +35 -2
  32. gflow_cli-0.68.0/src/gflow_cli/cli_update.py +78 -0
  33. gflow_cli-0.68.0/src/gflow_cli/update_check.py +335 -0
  34. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_composer.py +41 -1
  35. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_cli_parity.py +6 -0
  36. gflow_cli-0.68.0/tests/test_cli_update.py +145 -0
  37. gflow_cli-0.68.0/tests/test_update_check.py +522 -0
  38. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/uv.lock +1 -1
  39. {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/ARCHITECTURE.md +2 -1
  40. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/AUTHENTICATION.md +1 -1
  41. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/CONFIGURATION.md +4 -3
  42. {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/DEVELOPMENT.md +6 -1
  43. {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/MCP.md +1 -1
  44. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/USAGE.md +67 -5
  45. {gflow_cli-0.67.0 → gflow_cli-0.68.0/website}/docs/USER_GUIDE.md +3 -1
  46. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/installation.md +6 -1
  47. gflow_cli-0.67.0/.github/PULL_REQUEST_TEMPLATE.md +0 -22
  48. gflow_cli-0.67.0/src/gflow_cli/update_check.py +0 -151
  49. gflow_cli-0.67.0/tests/test_update_check.py +0 -266
  50. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.agents/plugins/marketplace.json +0 -0
  51. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/README.md +0 -0
  52. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/active.md +0 -0
  53. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/branch-review.md +0 -0
  54. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/changelog.md +0 -0
  55. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/check.md +0 -0
  56. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/doc-review.md +0 -0
  57. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/issue-assessment.md +0 -0
  58. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/issue-resolve.md +0 -0
  59. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/known-issues.md +0 -0
  60. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/live-verify.md +0 -0
  61. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/llm-council.md +0 -0
  62. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/next.md +0 -0
  63. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/plan.md +0 -0
  64. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/pr-council-review.md +0 -0
  65. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/predict.md +0 -0
  66. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/release.md +0 -0
  67. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/scenario.md +0 -0
  68. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/sonar.md +0 -0
  69. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.claude/commands/gflow/status.md +0 -0
  70. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitattributes +0 -0
  71. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/CODEOWNERS +0 -0
  72. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/FUNDING.yml +0 -0
  73. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/copilot-instructions.md +0 -0
  74. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/dependabot.yml +0 -0
  75. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/ci.yml +0 -0
  76. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/deps-watch.yml +0 -0
  77. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/external-pr-triage.yml +0 -0
  78. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/governance-advisory.yml +0 -0
  79. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/governance-benchmark.yml +0 -0
  80. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/labels.yml +0 -0
  81. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/main-base-guard.yml +0 -0
  82. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/pages.yml +0 -0
  83. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/release.yml +0 -0
  84. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/scorecard.yml +0 -0
  85. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/selector-probe.yml +0 -0
  86. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.github/workflows/star-history-watch.yml +0 -0
  87. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitignore +0 -0
  88. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.gitleaks.toml +0 -0
  89. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.pre-commit-config.yaml +0 -0
  90. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/.secrets.baseline +0 -0
  91. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/CONFIGURATION.md +0 -0
  92. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/DISCLAIMER.md +0 -0
  93. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/KNOWN_ISSUES.md +0 -0
  94. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/LICENSE +0 -0
  95. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/PLAN.md +0 -0
  96. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/ROADMAP.md +0 -0
  97. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/conftest.py +0 -0
  98. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  99. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/deploy/logrotate-pr-triage +0 -0
  100. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docker-compose.yml +0 -0
  101. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/ACCOUNT_SAFETY.md +0 -0
  102. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_GUIDE.md +0 -0
  103. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_UI_E2E.md +0 -0
  104. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/AGENT_UI_RECON.md +0 -0
  105. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/ASSET_TAGGING_RECON.md +0 -0
  106. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CHARACTER.md +0 -0
  107. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/CHARACTER_RECON.md +0 -0
  108. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DATA_LAYER.md +0 -0
  109. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DEBUGGING.md +0 -0
  110. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/DEMOS.md +0 -0
  111. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/E2E_TESTING.md +0 -0
  112. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/EXTERNAL_STORAGE.md +0 -0
  113. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/GITHUB.md +0 -0
  114. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  115. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  116. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/INSTRUCTIONS.md +0 -0
  117. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  118. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  119. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  120. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  121. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  122. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  123. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  124. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  125. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  126. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  127. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  128. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  129. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  130. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  131. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  132. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  133. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  134. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  135. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  136. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  137. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  138. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  139. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  140. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  141. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  142. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  143. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  144. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  145. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  146. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  147. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  148. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  149. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  150. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  151. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  152. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  153. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  154. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  155. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  156. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  157. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  158. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  159. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  160. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  161. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  162. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  163. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  164. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  165. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  166. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  167. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  168. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  169. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  170. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  171. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  172. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  173. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  174. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  175. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  176. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  177. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  178. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  179. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  180. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  181. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  182. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
  183. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
  184. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
  185. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
  186. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  187. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  188. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  189. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  190. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  191. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/MEDIA_LIBRARY.md +0 -0
  192. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/MOVIE.md +0 -0
  193. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/PROMPT_EXPANSION.md +0 -0
  194. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/REFERENCE_STRATEGIES.md +0 -0
  195. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/SECURITY.md +0 -0
  196. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/TOOLS.md +0 -0
  197. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/demo-split-pf.gif +0 -0
  198. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/example-run.gif +0 -0
  199. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/assets/examples.webp +0 -0
  200. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/medium_tutorial.md +0 -0
  201. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/schemas/movie-handoff.schema.json +0 -0
  202. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/sonar-cleanup-tracker.md +0 -0
  203. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/README.md +0 -0
  204. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
  205. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
  206. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
  207. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
  208. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
  209. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
  210. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
  211. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
  212. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
  213. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
  214. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
  215. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
  216. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
  217. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
  218. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
  219. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
  220. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
  221. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
  222. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
  223. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
  224. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
  225. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
  226. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
  227. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
  228. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
  229. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
  230. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
  231. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
  232. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
  233. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
  234. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-signing.md +0 -0
  235. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
  236. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
  237. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
  238. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
  239. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
  240. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
  241. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
  242. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
  243. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
  244. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
  245. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
  246. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
  247. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
  248. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  249. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  250. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  251. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  252. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  253. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  254. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  255. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  256. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  257. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  258. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  259. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  260. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  261. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  262. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  263. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  264. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  265. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  266. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  267. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  268. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  269. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  270. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  271. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  272. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  273. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  274. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  275. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  276. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  277. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  278. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  279. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  280. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  281. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  282. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  283. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  284. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  285. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  286. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  287. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  288. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  289. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  290. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  291. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  292. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  293. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  294. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  295. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  296. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  297. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  298. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  299. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  300. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  301. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  302. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  303. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  304. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  305. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  306. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  307. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  308. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  309. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
  310. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
  311. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/eval/pr_triage_eval.py +0 -0
  312. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/eval/pr_triage_fixtures.json +0 -0
  313. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/README.md +0 -0
  314. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/batch_from_config.py +0 -0
  315. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/multi_prompt_t2i.py +0 -0
  316. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/sample_config.json +0 -0
  317. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/sample_prompts.txt +0 -0
  318. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/single_image_t2i.py +0 -0
  319. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/examples/workflow_chain.py +0 -0
  320. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/index.html +0 -0
  321. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/README.md +0 -0
  322. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/01_upload_image.json +0 -0
  323. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  324. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  325. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/04_archive_workflow.json +0 -0
  326. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/05_createProject.json +0 -0
  327. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/06_batchGenerateImages.json +0 -0
  328. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  329. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  330. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  331. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  332. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  333. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/12_create_scene.json +0 -0
  334. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
  335. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/14_get_scene_workflows.json +0 -0
  336. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
  337. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/Dockerfile.triage +0 -0
  338. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/entrypoint.sh +0 -0
  339. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/package-lock.json +0 -0
  340. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/package.json +0 -0
  341. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  342. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/pr_triage_gate.py +0 -0
  343. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  344. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/canary/register_task.ps1 +0 -0
  345. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/canary/run_canary.py +0 -0
  346. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_council_memory.py +0 -0
  347. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_doc_links.py +0 -0
  348. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_materiality.py +0 -0
  349. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_release_artifacts.py +0 -0
  350. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_repo_hygiene.py +0 -0
  351. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_test_count.py +0 -0
  352. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/check_website_docs_pii.py +0 -0
  353. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/ci/generate_website_docs.py +0 -0
  354. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_editor.py +0 -0
  355. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_gen_settings.py +0 -0
  356. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/debug_settings.py +0 -0
  357. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/_recording_client.py +0 -0
  358. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/_spike_common.py +0 -0
  359. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/active_plan.py +0 -0
  360. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  361. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  362. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  363. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  364. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  365. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  366. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
  367. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_locale_invariants.py +0 -0
  368. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  369. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_project_listing.py +0 -0
  370. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  371. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  372. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  373. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
  374. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/character_create_spike.py +0 -0
  375. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/character_create_spike_v2.py +0 -0
  376. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/dump_character_selectors.js +0 -0
  377. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/incident_bundle_quality.py +0 -0
  378. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  379. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  380. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/live_verify_video_model_select.py +0 -0
  381. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/make_project.py +0 -0
  382. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/materiality_backtest.py +0 -0
  383. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_html_lang_settle.py +0 -0
  384. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_locale_probe.py +0 -0
  385. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
  386. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/patch_character.py +0 -0
  387. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/README.md +0 -0
  388. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/harness.py +0 -0
  389. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/skillopt/tasks.json +0 -0
  390. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/sonar-local-scan.sh +0 -0
  391. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  392. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_changelog_capture.py +0 -0
  393. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_char_editor_dom.py +0 -0
  394. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_char_gen_capture.py +0 -0
  395. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_character_prompt_format.py +0 -0
  396. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_model_recon.py +0 -0
  397. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  398. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_route_capture.py +0 -0
  399. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
  400. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
  401. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
  402. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
  403. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  404. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  405. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_incident_live.py +0 -0
  406. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  407. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  408. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  409. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  410. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  411. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_locale_poison.py +0 -0
  412. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
  413. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
  414. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
  415. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
  416. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
  417. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
  418. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  419. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_model_inventory.py +0 -0
  420. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
  421. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
  422. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
  423. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_picker_select.py +0 -0
  424. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_movie_voice_list.py +0 -0
  425. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  426. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_patch_entity.py +0 -0
  427. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_patchright.py +0 -0
  428. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  429. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/spike_video_tab_dom.py +0 -0
  430. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
  431. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_language_agnostic.py +0 -0
  432. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
  433. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/dev/verify_model_attribution.py +0 -0
  434. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/README.md +0 -0
  435. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/capture_flow_traffic.py +0 -0
  436. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  437. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/memory_profile.py +0 -0
  438. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/recaptcha_mint.py +0 -0
  439. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/diag/spike_387_openai_compat.py +0 -0
  440. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  441. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/e2e/capture_agent_toggle.py +0 -0
  442. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/probe/run_probe.py +0 -0
  443. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/probe/spike_auth_matrix.py +0 -0
  444. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/record_demo.ps1 +0 -0
  445. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_image.py +0 -0
  446. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_video_editor.py +0 -0
  447. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/smoke_worker_style.py +0 -0
  448. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/spike_waf_camoufox.py +0 -0
  449. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/scripts/verify_chrome_auth_viability.py +0 -0
  450. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/README.md +0 -0
  451. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/changelog/SKILL.md +0 -0
  452. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/check/SKILL.md +0 -0
  453. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/doc-review/SKILL.md +0 -0
  454. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/issue-assessment/SKILL.md +0 -0
  455. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/issue-resolve/SKILL.md +0 -0
  456. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/known-issues/SKILL.md +0 -0
  457. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/live-verify/SKILL.md +0 -0
  458. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/llm-council/SKILL.md +0 -0
  459. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/plan/SKILL.md +0 -0
  460. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/predict/SKILL.md +0 -0
  461. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/release/SKILL.md +0 -0
  462. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/scenario/SKILL.md +0 -0
  463. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/sonar/SKILL.md +0 -0
  464. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/skills/status/SKILL.md +0 -0
  465. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/sonar-project.properties +0 -0
  466. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/__main__.py +0 -0
  467. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/_cli_helpers.py +0 -0
  468. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/__init__.py +0 -0
  469. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_engine.py +0 -0
  470. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_retry.py +0 -0
  471. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
  472. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/character.py +0 -0
  473. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/client.py +0 -0
  474. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/dto.py +0 -0
  475. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/extend_chain.py +0 -0
  476. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/image.py +0 -0
  477. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/image_upscale.py +0 -0
  478. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/recaptcha.py +0 -0
  479. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/routes.py +0 -0
  480. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/scene.py +0 -0
  481. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/__init__.py +0 -0
  482. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/_common.py +0 -0
  483. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  484. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/base.py +0 -0
  485. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/batchexecute.py +0 -0
  486. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  487. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  488. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  489. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  490. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
  491. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  492. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  493. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  494. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  495. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
  496. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/ui_automation.py +0 -0
  497. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
  498. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/video.py +0 -0
  499. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/api/video_extend.py +0 -0
  500. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/__init__.py +0 -0
  501. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/base.py +0 -0
  502. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/cookies.py +0 -0
  503. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/factory.py +0 -0
  504. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/internal_chromium.py +0 -0
  505. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/real_chrome.py +0 -0
  506. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/strategies.py +0 -0
  507. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/auth/verification.py +0 -0
  508. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/browser_manager.py +0 -0
  509. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/chain.py +0 -0
  510. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/chain_manifest.py +0 -0
  511. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_character.py +0 -0
  512. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_data.py +0 -0
  513. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_doctor.py +0 -0
  514. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_image.py +0 -0
  515. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_instructions.py +0 -0
  516. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_models.py +0 -0
  517. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_movie.py +0 -0
  518. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_project.py +0 -0
  519. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_run.py +0 -0
  520. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_scene.py +0 -0
  521. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_tools.py +0 -0
  522. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/cli_video.py +0 -0
  523. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/composition.py +0 -0
  524. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/config.py +0 -0
  525. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/__init__.py +0 -0
  526. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/chain_repo.py +0 -0
  527. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  528. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  529. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  530. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  531. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  532. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  533. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  534. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  535. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  536. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
  537. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/models.py +0 -0
  538. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/queries.py +0 -0
  539. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/recorder.py +0 -0
  540. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/redaction.py +0 -0
  541. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/repository.py +0 -0
  542. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/data/store.py +0 -0
  543. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/diagnostics.py +0 -0
  544. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/errors.py +0 -0
  545. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/exceptions.py +0 -0
  546. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/file_integrity.py +0 -0
  547. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  548. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
  549. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/model.py +0 -0
  550. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
  551. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/image_batch.py +0 -0
  552. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/json_output.py +0 -0
  553. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/__init__.py +0 -0
  554. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/prompts.py +0 -0
  555. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/resources.py +0 -0
  556. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/server.py +0 -0
  557. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/setup.py +0 -0
  558. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  559. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/mcp/tools.py +0 -0
  560. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/media.py +0 -0
  561. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/movie_manifest.py +0 -0
  562. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/observability.py +0 -0
  563. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/paths.py +0 -0
  564. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/profile_lease.py +0 -0
  565. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/profile_store.py +0 -0
  566. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/redaction.py +0 -0
  567. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/__init__.py +0 -0
  568. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/catalog_sync.py +0 -0
  569. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/character_create.py +0 -0
  570. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/doctor.py +0 -0
  571. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/services/mentions.py +0 -0
  572. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/storage.py +0 -0
  573. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/__init__.py +0 -0
  574. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/banned.py +0 -0
  575. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  576. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  577. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  578. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  579. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/expander.py +0 -0
  580. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/invocation.py +0 -0
  581. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/loader.py +0 -0
  582. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/registry.py +0 -0
  583. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/runtime.py +0 -0
  584. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/tools/spec.py +0 -0
  585. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/ui/app.py +0 -0
  586. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/ui/server.py +0 -0
  587. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/winsec.py +0 -0
  588. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/codec.py +0 -0
  589. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/daemon.py +0 -0
  590. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/src/gflow_cli/worker/queue.py +0 -0
  591. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tasks/lessons.md +0 -0
  592. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch.json +0 -0
  593. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch.tsv +0 -0
  594. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/test_assets/sample_batch_invalid.tsv +0 -0
  595. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/__init__.py +0 -0
  596. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/__init__.py +0 -0
  597. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/character_gen_response.json +0 -0
  598. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/patch_entity_response.json +0 -0
  599. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  600. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_aisandbox_auth_error.py +0 -0
  601. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
  602. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_bearer_redaction.py +0 -0
  603. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_character.py +0 -0
  604. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client.py +0 -0
  605. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_character.py +0 -0
  606. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_delete_characters.py +0 -0
  607. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_errors.py +0 -0
  608. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_extend.py +0 -0
  609. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_generate_character.py +0 -0
  610. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_image.py +0 -0
  611. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_incidents.py +0 -0
  612. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_launch_kwargs.py +0 -0
  613. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_locale_cache.py +0 -0
  614. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_patch_entity.py +0 -0
  615. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_scene.py +0 -0
  616. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_client_upscale.py +0 -0
  617. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_concurrency.py +0 -0
  618. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_dto.py +0 -0
  619. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_engine.py +0 -0
  620. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_extend_chain.py +0 -0
  621. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image.py +0 -0
  622. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image_dto.py +0 -0
  623. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_image_upscale.py +0 -0
  624. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  625. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_recaptcha.py +0 -0
  626. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_retry.py +0 -0
  627. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes.py +0 -0
  628. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_character.py +0 -0
  629. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_locale.py +0 -0
  630. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_routes_scene.py +0 -0
  631. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_sapisidhash_helper.py +0 -0
  632. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_scene_models.py +0 -0
  633. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video.py +0 -0
  634. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_extend.py +0 -0
  635. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_request.py +0 -0
  636. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/test_video_status_poll.py +0 -0
  637. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/__init__.py +0 -0
  638. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/conftest.py +0 -0
  639. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/__init__.py +0 -0
  640. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_agentic.py +0 -0
  641. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_classic.py +0 -0
  642. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_factory.py +0 -0
  643. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
  644. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
  645. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_base.py +0 -0
  646. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_batchexecute.py +0 -0
  647. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_bearer.py +0 -0
  648. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_common.py +0 -0
  649. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
  650. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_factory.py +0 -0
  651. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_fingerprint.py +0 -0
  652. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_locale_navigation.py +0 -0
  653. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
  654. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
  655. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_migrated_route.py +0 -0
  656. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_mode_control.py +0 -0
  657. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_model_selection_loud.py +0 -0
  658. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_navigation_settled.py +0 -0
  659. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_overlay_precondition.py +0 -0
  660. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_policy_400.py +0 -0
  661. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_sapisidhash.py +0 -0
  662. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_selector_symmetry.py +0 -0
  663. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_transport_timeout.py +0 -0
  664. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation.py +0 -0
  665. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
  666. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  667. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_automation_video.py +0 -0
  668. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_ui_character_editor.py +0 -0
  669. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  670. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/strategies/test_factory.py +0 -0
  671. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/strategies/test_strategies.py +0 -0
  672. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_cookies.py +0 -0
  673. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_real_chrome.py +0 -0
  674. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_verification.py +0 -0
  675. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/auth/test_windows_acl.py +0 -0
  676. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  677. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/__init__.py +0 -0
  678. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_auth_status.py +0 -0
  679. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_auth_list.py +0 -0
  680. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_character.py +0 -0
  681. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_character_create.py +0 -0
  682. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data.py +0 -0
  683. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_errors.py +0 -0
  684. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
  685. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_data_sync.py +0 -0
  686. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_doctor.py +0 -0
  687. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image.py +0 -0
  688. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
  689. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
  690. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_upscale.py +0 -0
  691. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  692. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_instructions.py +0 -0
  693. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_models.py +0 -0
  694. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_movie.py +0 -0
  695. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_run.py +0 -0
  696. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_scene.py +0 -0
  697. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_tools.py +0 -0
  698. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video.py +0 -0
  699. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video_chain.py +0 -0
  700. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_cli_video_extend.py +0 -0
  701. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_error_handling.py +0 -0
  702. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_failure_funnel.py +0 -0
  703. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_helpers.py +0 -0
  704. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_incident_output.py +0 -0
  705. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_movie_manifest.py +0 -0
  706. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  707. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_predictable_output.py +0 -0
  708. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  709. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_settings_validation.py +0 -0
  710. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
  711. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_character.py +0 -0
  712. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_compose_prompt.py +0 -0
  713. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_handoff.py +0 -0
  714. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_style_variants.py +0 -0
  715. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/composition/test_style_variants_e2e.py +0 -0
  716. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/conftest.py +0 -0
  717. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/__init__.py +0 -0
  718. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_chain_repo.py +0 -0
  719. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_failure_recording.py +0 -0
  720. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_find_incomplete_character.py +0 -0
  721. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_models.py +0 -0
  722. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_null_columns_stay_null.py +0 -0
  723. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_packaging.py +0 -0
  724. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_recorder.py +0 -0
  725. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_recorder_character.py +0 -0
  726. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_redaction.py +0 -0
  727. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_repository.py +0 -0
  728. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_scene_persistence.py +0 -0
  729. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_settings_and_errors.py +0 -0
  730. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_store.py +0 -0
  731. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/data/test_store_migrations.py +0 -0
  732. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/dev/test_recording_client.py +0 -0
  733. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/__init__.py +0 -0
  734. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/conftest.py +0 -0
  735. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  736. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  737. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  738. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
  739. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_cancellation_e2e.py +0 -0
  740. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_chain_e2e.py +0 -0
  741. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_character_create_e2e.py +0 -0
  742. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  743. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  744. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_daemon_e2e.py +0 -0
  745. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_data_layer_e2e.py +0 -0
  746. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  747. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  748. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  749. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  750. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_batch_e2e.py +0 -0
  751. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  752. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  753. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
  754. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_json_output_e2e.py +0 -0
  755. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
  756. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  757. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
  758. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_project_naming_e2e.py +0 -0
  759. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  760. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_scene_compose_live.py +0 -0
  761. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  762. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_tools_e2e.py +0 -0
  763. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_transports_e2e.py +0 -0
  764. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  765. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  766. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
  767. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/__init__.py +0 -0
  768. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/asset_tagging.feature +0 -0
  769. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/auth.feature +0 -0
  770. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/auth_login.feature +0 -0
  771. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/character_create.feature +0 -0
  772. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/character_read.feature +0 -0
  773. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/conftest.py +0 -0
  774. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/duration_tab_drift.feature +0 -0
  775. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/entity_provenance.feature +0 -0
  776. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image.feature +0 -0
  777. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image_batch_references.feature +0 -0
  778. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/image_upscale.feature +0 -0
  779. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/incident_diagnostics.feature +0 -0
  780. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/instructions.feature +0 -0
  781. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/latched_locale_recovery.feature +0 -0
  782. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/locale_picker_include.feature +0 -0
  783. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/mcp_tasks.feature +0 -0
  784. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/media_picker_tiers.feature +0 -0
  785. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/migrated_driver.feature +0 -0
  786. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/migrated_host_gate.feature +0 -0
  787. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/output_hardening.feature +0 -0
  788. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_asset_tagging_steps.py +0 -0
  789. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_auth_login_steps.py +0 -0
  790. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_auth_steps.py +0 -0
  791. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_character_create_steps.py +0 -0
  792. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_character_read_steps.py +0 -0
  793. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_image_steps.py +0 -0
  794. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_image_upscale_steps.py +0 -0
  795. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
  796. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_instructions_steps.py +0 -0
  797. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_locale_picker_include_steps.py +0 -0
  798. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_mcp_tasks_steps.py +0 -0
  799. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
  800. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_migrated_driver_steps.py +0 -0
  801. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
  802. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_output_hardening_steps.py +0 -0
  803. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_step_collision_guard.py +0 -0
  804. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_video_agent_ui_steps.py +0 -0
  805. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/test_video_chain_steps.py +0 -0
  806. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/video_agent_ui.feature +0 -0
  807. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/features/video_chain.feature +0 -0
  808. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/__init__.py +0 -0
  809. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/changelog_modal_page.html +0 -0
  810. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/doctor_env.py +0 -0
  811. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/flow_model_inventory.json +0 -0
  812. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/flow_project_listing_media.json +0 -0
  813. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/listing_payload.py +0 -0
  814. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/fixtures/seeded_catalog.py +0 -0
  815. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/__init__.py +0 -0
  816. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_grading.py +0 -0
  817. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_model.py +0 -0
  818. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_model_governance.py +0 -0
  819. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_registry.py +0 -0
  820. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/flow_selectors/test_report.py +0 -0
  821. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/__init__.py +0 -0
  822. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_image_manifest.py +0 -0
  823. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_jitter_config.py +0 -0
  824. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/image_batch/test_observability_events.py +0 -0
  825. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/__init__.py +0 -0
  826. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/conftest.py +0 -0
  827. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/constants.py +0 -0
  828. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_expander_gateway.py +0 -0
  829. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_storage_gcs.py +0 -0
  830. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/integration/test_storage_s3.py +0 -0
  831. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/__init__.py +0 -0
  832. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/conftest.py +0 -0
  833. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_auth_status_tool.py +0 -0
  834. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_error_funnel.py +0 -0
  835. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_http_transport.py +0 -0
  836. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_known_issues_resource.py +0 -0
  837. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_no_spend.py +0 -0
  838. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
  839. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_resources.py +0 -0
  840. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_server.py +0 -0
  841. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_setup.py +0 -0
  842. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_stdio_transport.py +0 -0
  843. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tasks_extension.py +0 -0
  844. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_helpers.py +0 -0
  845. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_instructions.py +0 -0
  846. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/mcp/test_tools_wired.py +0 -0
  847. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  848. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_canary_classify.py +0 -0
  849. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_canary_reexec.py +0 -0
  850. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
  851. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
  852. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_council_memory.py +0 -0
  853. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_materiality.py +0 -0
  854. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_release_artifacts.py +0 -0
  855. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
  856. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_test_count.py +0 -0
  857. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
  858. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_codex_plugin.py +0 -0
  859. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_generate_website_docs.py +0 -0
  860. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
  861. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_materiality_backtest.py +0 -0
  862. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/scripts/test_workflow_hardening.py +0 -0
  863. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/__init__.py +0 -0
  864. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_catalog_sync.py +0 -0
  865. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_create_redaction.py +0 -0
  866. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_create_saga.py +0 -0
  867. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
  868. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_doctor.py +0 -0
  869. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_media_attribution.py +0 -0
  870. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_observability.py +0 -0
  871. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_parse.py +0 -0
  872. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_mentions_resolve.py +0 -0
  873. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/services/test_resolve_and_apply.py +0 -0
  874. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/__init__.py +0 -0
  875. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/test_profile_account_smoke.py +0 -0
  876. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/smoke/test_real_flow.py +0 -0
  877. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_auth.py +0 -0
  878. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_browser_manager.py +0 -0
  879. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_chain.py +0 -0
  880. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_chain_manifest.py +0 -0
  881. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_cli_data.py +0 -0
  882. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_cli_project.py +0 -0
  883. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_config.py +0 -0
  884. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_conftest_isolation.py +0 -0
  885. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_data_queries.py +0 -0
  886. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_bundle.py +0 -0
  887. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_events.py +0 -0
  888. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_journal.py +0 -0
  889. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_recorder.py +0 -0
  890. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_retention.py +0 -0
  891. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_diagnostics_sanitize.py +0 -0
  892. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_documentation_gate.py +0 -0
  893. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_duration_tab_drift.py +0 -0
  894. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_entity_provenance.py +0 -0
  895. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_errors.py +0 -0
  896. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_errors_classification.py +0 -0
  897. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_image_batch_references.py +0 -0
  898. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_incident_generation_requests.py +0 -0
  899. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_json_output.py +0 -0
  900. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_marker_registry.py +0 -0
  901. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_media.py +0 -0
  902. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_observability.py +0 -0
  903. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_overlay_banner_dismissal.py +0 -0
  904. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_paths.py +0 -0
  905. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_playwright_pin.py +0 -0
  906. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_lease.py +0 -0
  907. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_lease_subprocess.py +0 -0
  908. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_store.py +0 -0
  909. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_profile_store_locale.py +0 -0
  910. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_project_list_urls.py +0 -0
  911. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_self_documenting_errors.py +0 -0
  912. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/test_smoke.py +0 -0
  913. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/__init__.py +0 -0
  914. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_banned.py +0 -0
  915. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_expander.py +0 -0
  916. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_invocation.py +0 -0
  917. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_loader.py +0 -0
  918. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_registry.py +0 -0
  919. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_runtime.py +0 -0
  920. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/tools/test_spec.py +0 -0
  921. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/ui/test_app.py +0 -0
  922. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_codec.py +0 -0
  923. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_daemon.py +0 -0
  924. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_mcp_daemon_race.py +0 -0
  925. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue.py +0 -0
  926. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue_multiprocess.py +0 -0
  927. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/tests/worker/test_queue_reconciliation.py +0 -0
  928. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
  929. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/CHARACTER.md +0 -0
  930. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/DATA_LAYER.md +0 -0
  931. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/DEBUGGING.md +0 -0
  932. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/E2E_TESTING.md +0 -0
  933. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
  934. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/INSTRUCTIONS.md +0 -0
  935. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/KNOWN_ISSUES.md +0 -0
  936. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/MEDIA_LIBRARY.md +0 -0
  937. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/MOVIE.md +0 -0
  938. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/PROMPT_EXPANSION.md +0 -0
  939. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/SECURITY.md +0 -0
  940. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/TOOLS.md +0 -0
  941. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/agents.md +0 -0
  942. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/index.md +0 -0
  943. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/onboarding-mockup.html +0 -0
  944. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/onboarding.md +0 -0
  945. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/docs/stylesheets/extra.css +0 -0
  946. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/mkdocs.yml +0 -0
  947. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/requirements.in +0 -0
  948. {gflow_cli-0.67.0 → gflow_cli-0.68.0}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -138,9 +138,10 @@
138
138
  # Holders always run to completion; the waiter takes over on release (#478).
139
139
  # GFLOW_CLI_LEASE_WAIT_SECONDS=0
140
140
 
141
- # Once-a-day best-effort PyPI check printing a one-line notice when a newer
142
- # gflow-cli exists (#479). Never blocks; skipped in CI and for
143
- # editable/source installs. Set to 0 to disable.
141
+ # Once-a-day best-effort PyPI check that shows an update banner on stderr when
142
+ # a newer gflow-cli exists (#479; one plain line when stderr is piped). Never
143
+ # blocks; skipped in CI and for editable/source installs. Set to 0 to disable.
144
+ # Upgrade with `gflow update`.
144
145
  # GFLOW_CLI_UPDATE_CHECK=1
145
146
 
146
147
  # Whether generation prompts (and the prompt-derived display names used as the
@@ -0,0 +1,35 @@
1
+ ## Summary
2
+
3
+ <!-- What changed and why? Link issues with "Fixes #123" when applicable. -->
4
+
5
+ ## Lifecycle
6
+
7
+ <!-- The pipeline every PR is reviewed against: CONTRIBUTING.md § "The development lifecycle"
8
+ and AGENTS.md § "Standard Workflow Sequence". Tick what applies; strike what does not and say why. -->
9
+
10
+ - [ ] Issue triaged with `issue-assessment` (verdict + which surfaces reproduce it: CLI / MCP / both)
11
+ - [ ] `predict` verdict recorded (transport / auth / selector / schema changes only)
12
+ - [ ] `scenario` + `plan` written under `docs/superpowers/plans/<date>-<slug>/` and linked here
13
+ - [ ] `check` green, including the step 1b CLI↔MCP mirror sweep
14
+ - [ ] MCP twin added, or a reasoned exemption in `tests/mcp/test_cli_parity.py`
15
+ - [ ] Live-verified against real Flow where a generation path changed; what could NOT be verified is stated below
16
+ - [ ] Council review run (`pr-council-review` / `branch-review`) and must-fix items addressed
17
+
18
+ ## Validation
19
+
20
+ <!-- List the focused commands you ran, plus any checks you could not run. -->
21
+
22
+ - [ ] Focused tests added or updated for behavior changes
23
+ - [ ] Documentation updated or explicitly marked not applicable
24
+ - [ ] `uv run python scripts/ci/check_doc_links.py`
25
+ - [ ] `uv run ruff check src tests`
26
+ - [ ] `uv run pyright src`
27
+ - [ ] Relevant pytest command:
28
+
29
+ ## Contribution Checklist
30
+
31
+ - [ ] This PR targets `develop`, unless it is a release or emergency fix
32
+ - [ ] My commits use my real Git identity or GitHub noreply email
33
+ - [ ] External contribution commits include `Signed-off-by:` (`git commit -s`)
34
+ - [ ] I did not include secrets, cookies, account tokens, signed URLs, or private captured data
35
+ - [ ] I reviewed any AI-assisted changes before submitting
@@ -43,8 +43,8 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
43
43
 
44
44
  - Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video today; `GFLOW_CLI_FLOW_HOST`).
45
45
  - Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
46
- - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
47
- - Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
46
+ - Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
47
+ - Command surface: `gflow auth`, `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
48
48
  - Works with any Google account that has Flow access. All generations bill against the user's own Google account.
49
49
 
50
50
  ## Headed-browser dependency (architectural reality)
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.68.0] — 2026-09-05
11
+
12
+ ### Added
13
+
14
+ - **`gflow update` — self-update in place.** Runs the package manager that
15
+ installed gflow-cli, read off the install itself rather than guessed from
16
+ `PATH`: `uv-receipt.toml` in the venv root → `uv tool upgrade gflow-cli`,
17
+ `pipx_metadata.json` → `pipx upgrade gflow-cli`, otherwise that venv's own
18
+ `python -m pip install --upgrade gflow-cli`. Asks PyPI first and runs nothing
19
+ when already current; if PyPI is unreachable the manager still runs. After an
20
+ upgrade it re-reads the venv's Playwright version and prints the
21
+ `playwright install chromium` hint only when it moved. `--check` reports
22
+ installed vs latest plus the command that would run; `--json` returns the
23
+ same as a document. The outcome is verified against the venv, not the
24
+ manager's exit code: on Windows the running `gflow.exe` launcher holds its
25
+ own file open, so `uv tool upgrade` installs the new wheel and then exits 1
26
+ copying the launcher — measured — and that is reported as an upgrade with a
27
+ note, because the launcher only points at the venv's python and keeps
28
+ working. Editable / local / VCS / source installs, a manager binary missing
29
+ from `PATH`, a `uv venv` with no `pip` module, and a manager run that leaves
30
+ the version unchanged all surface as `ConfigurationError` (exit 11) — except
31
+ the one honest no-op: PyPI unreachable, manager exit 0, nothing changed, which
32
+ is exit 0. Deliberately no MCP twin (a server must not replace its own code under a live
33
+ session) — recorded as a reasoned exemption in the parity test.
34
+
35
+ ### Changed
36
+
37
+ - **The once-a-day update notice (#479) is now a banner.** On a terminal it is
38
+ a bordered panel on stderr naming the new version, `gflow update`, and the
39
+ release-notes link; when stderr is piped it stays one plain yellow line so
40
+ logs and `2>&1 | jq` pipelines see one line per event. Same cache, same
41
+ gates (`GFLOW_CLI_UPDATE_CHECK=0`, CI, non-index installs). The notice text
42
+ points at `gflow update` instead of listing three manager commands.
43
+ - **CONTRIBUTING.md now routes contributors — and their coding agents — through the
44
+ same lifecycle AGENTS.md defines.** A phase → skill → artifact table (issue
45
+ assessment, predict, scenario/plan, check with the step 1b mirror sweep,
46
+ live-verify, council review, sonar, known-issues) says what a PR is expected to
47
+ have gone through and what it leaves behind for the reviewer; the PR template
48
+ gains a matching *Lifecycle* checklist; the quality-gate list is now identical to
49
+ AGENTS.md's (it had drifted to six of nine commands).
50
+
51
+ ### Fixed
52
+
53
+ - **Migrated host: `video t2v` no longer fails on the submit-enable race (#670,
54
+ @ChandraLiuswanto).** The Angular composer on `flow.google.com` flips the
55
+ `arrow_forward` button from `disabled` roughly 100 ms after `insert_text`
56
+ lands, and the composer read it synchronously, so a fully migrated account got
57
+ `UiSelectorDriftError` ("missing or disabled after the prompt was typed",
58
+ exit 23) on every run before anything was submitted. The composer now waits
59
+ up to 5 s (100 ms polls) for the button to enable; a button that never
60
+ enables is still selector drift, now worded as "stayed disabled for 5s".
61
+ Measured on a moved account: `insert_text` → enabled at the 107 ms sample;
62
+ with the wait, veo-lite t2v completed in 62 s.
63
+
10
64
  ## [0.67.0] — 2026-09-05
11
65
 
12
66
  ### Added
@@ -3880,7 +3934,8 @@ shell-script template that branches on these codes.
3880
3934
 
3881
3935
  First skeleton. Not functional end-to-end yet.
3882
3936
 
3883
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...HEAD
3937
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...HEAD
3938
+ [0.68.0]: https://github.com/ffroliva/gflow-cli/compare/v0.67.0...v0.68.0
3884
3939
  [0.67.0]: https://github.com/ffroliva/gflow-cli/compare/v0.66.3...v0.67.0
3885
3940
  [0.66.3]: https://github.com/ffroliva/gflow-cli/compare/v0.66.2...v0.66.3
3886
3941
  [0.66.2]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...v0.66.2
@@ -27,7 +27,7 @@ it yet" is not a reachable state.
27
27
  ## On every session start
28
28
 
29
29
  1. Read **[docs/INDEX.md](docs/INDEX.md)** — routing layer for all project docs and
30
- commands. Deliberately *not* imported: at 36 KB it is a lookup table, not a rule set,
30
+ commands. Deliberately *not* imported: at ~47 KB it is a lookup table, not a rule set,
31
31
  and AGENTS.md points into it. Read it when you need to find a doc.
32
32
  2. Pull deeper context on demand:
33
33
  - Current task / where we left off → `/gflow:status`
@@ -2,6 +2,46 @@
2
2
 
3
3
  Thanks for considering a contribution! The repo is public and PRs are welcome. Pre-1.0 means APIs may shift between minor versions; check [PLAN.md](PLAN.md) for the active phase before starting a non-trivial change.
4
4
 
5
+ ## The development lifecycle — how a PR gets in without back-and-forth
6
+
7
+ This project is developed through a fixed pipeline, and every PR is reviewed against it.
8
+ The pipeline is written down once, in [AGENTS.md](AGENTS.md) — the **Skill Routing**
9
+ table (which skill to load for which situation) and the **Standard Workflow Sequence**
10
+ (the ten phases, their artifacts, and the gates between them). The skills themselves are
11
+ plain Markdown under [`skills/<name>/SKILL.md`](skills/): agent-agnostic by design, so
12
+ Claude Code (`/gflow:<name>`), Codex (`$gflow:<name>`), Cursor, Aider, Antigravity, or a
13
+ human reading the file all follow the same protocol.
14
+
15
+ **If you use a coding agent, point it at [AGENTS.md](AGENTS.md) first.** Most tools
16
+ auto-discover it; if yours does not, paste the Skill Routing table into its context. A PR
17
+ whose agent skipped the pipeline is the single biggest source of review churn here.
18
+
19
+ What a contributor PR is expected to have gone through, phase by phase:
20
+
21
+ | Phase | Skill (`skills/<name>/SKILL.md`) | What it leaves behind for the reviewer |
22
+ |---|---|---|
23
+ | Touching a GitHub issue | [`issue-assessment`](skills/issue-assessment/SKILL.md) | A verdict (CONFIRMED / LIKELY / NEEDS-INFO …) and which surfaces reproduce it — CLI, MCP, or both |
24
+ | Transport / auth / selector / schema change | [`predict`](skills/predict/SKILL.md) | A GO / CAUTION / STOP verdict **before** code exists; STOP means open an issue instead |
25
+ | Any feature | [`scenario`](skills/scenario/SKILL.md) → [`plan`](skills/plan/SKILL.md) | `docs/superpowers/plans/<date>-<slug>/SCENARIO.md` + `PLAN.md` — the edge-case table and the task list; link them from the PR (they live on the branch and in the PR's history; at release the durable facts are folded into `docs/superpowers/memory/` and the plan dir is removed) |
26
+ | Every commit | [`check`](skills/check/SKILL.md) | The Impeccable Routine green (it is the exact CI gate), plus the **step 1b** CLI↔MCP mirror sweep no CI gate can see |
27
+ | Anything on a generation path | [`live-verify`](skills/live-verify/SKILL.md) | Evidence against real Flow, not just green offline tests — this project drives a black box; say plainly what you could **not** verify |
28
+ | Opening the PR | [`pr-council-review`](skills/pr-council-review/SKILL.md) / [`branch-review`](.claude/commands/gflow/branch-review.md) | The multi-dimension council (correctness, quality, security, tests, memory, YAGNI, parity …); maintainers run it on every PR, so running it yourself first removes a round trip |
29
+ | Red SonarCloud check | [`sonar`](skills/sonar/SKILL.md) | Zero new issues — the gate measures *new* code |
30
+ | Auth or reCAPTCHA | [`known-issues`](skills/known-issues/SKILL.md) | Known-broken surfaces have documented workarounds; rediscovering them costs days |
31
+
32
+ Three rules the pipeline enforces that catch first-time contributors most often:
33
+
34
+ 1. **Ship each capability twice, or say why not.** Every CLI command has an MCP twin or a
35
+ reasoned exemption in `tests/mcp/test_cli_parity.py` — and options, payload keys and tool
36
+ docstrings must stay mirrored (AGENTS.md § *MCP & CLI Schema Symmetry*).
37
+ 2. **Locale-invariant selectors only.** No `has-text(...)` on Flow's DOM, ever
38
+ (AGENTS.md § *Locale-Invariance Discipline*).
39
+ 3. **Verified beats claimed.** If a fix cannot be verified on the affected surface in your
40
+ environment, the PR says so and uses `Refs #N`, not a green checkbox.
41
+
42
+ The PR template's *Lifecycle* checklist mirrors this table. Tick what applies, strike what
43
+ does not, and say why — a reviewer can then start from your evidence instead of re-deriving it.
44
+
5
45
  ## Development setup
6
46
 
7
47
  ```bash
@@ -96,16 +136,24 @@ cost table, and run commands.
96
136
 
97
137
  ## Quality gates (run before commit)
98
138
 
139
+ Prefer the skill — [`skills/check/SKILL.md`](skills/check/SKILL.md) (`/gflow:check` in
140
+ Claude Code, `$gflow:check` in Codex) — because it also carries the step 1b CLI↔MCP mirror
141
+ sweep that no command below can check. The mechanical subset it runs, in order:
142
+
99
143
  ```bash
100
- uv run python scripts/ci/check_repo_hygiene.py # artefact + path hygiene
101
- uv run python scripts/ci/check_doc_links.py # internal Markdown links
144
+ uv run python scripts/ci/check_repo_hygiene.py # artefact + path hygiene
145
+ uv run python scripts/ci/check_doc_links.py # internal Markdown links
146
+ uv run python scripts/ci/check_website_docs_pii.py # no private identifiers in website/docs
147
+ uv run python scripts/ci/generate_website_docs.py --check # website mirror in sync
148
+ uv run python scripts/ci/check_council_memory.py # council memory slugs resolve both ways
102
149
  uv run ruff check src tests # lint
103
- uv run ruff format src tests # auto-format
150
+ uv run ruff format --check src tests # formatting
104
151
  uv run pyright src # type-check (strict on src/gflow_cli/)
105
152
  uv run pytest -q --cov=gflow_cli # tests + coverage
106
153
  ```
107
154
 
108
- CI runs all six on every push. Documentation is part of the merge gate: update
155
+ CI runs all of them on every push (this list is kept identical to AGENTS.md's; a shorter
156
+ copy once shipped a stale website mirror to a green local run and a red CI). Documentation is part of the merge gate: update
109
157
  the relevant docs for behavior, workflow, configuration, architecture, or
110
158
  operator-facing changes. If no documentation change is needed, state that in
111
159
  the PR validation checklist.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.67.0
3
+ Version: 0.68.0
4
4
  Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
5
5
  Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
6
6
  Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
@@ -112,6 +112,7 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
112
112
  # 1 · Install (uv recommended; also: pip install gflow-cli)
113
113
  uv tool install gflow-cli
114
114
  uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
115
+ # later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
115
116
 
116
117
  # 2 · Authenticate (one-time, opens a real Chrome window)
117
118
  gflow auth login --browser chrome
@@ -41,6 +41,7 @@ Same Veo and Imagen models, same quality, same billing against your own Google a
41
41
  # 1 · Install (uv recommended; also: pip install gflow-cli)
42
42
  uv tool install gflow-cli
43
43
  uv tool run --from gflow-cli playwright install chromium # one-time, ~150 MB
44
+ # later: `gflow update` upgrades in place (every command shows a banner when a newer release is out)
44
45
 
45
46
  # 2 · Authenticate (one-time, opens a real Chrome window)
46
47
  gflow auth login --browser chrome
@@ -60,9 +60,13 @@ python -m pip install --pre gflow-cli
60
60
  git branch --show-current
61
61
  git rev-list HEAD..origin/main
62
62
  ```
63
- 3. Run quality gates:
63
+ 3. Run quality gates (`/gflow:check` — the same nine commands AGENTS.md lists):
64
64
  ```bash
65
65
  uv run python scripts/ci/check_repo_hygiene.py
66
+ uv run python scripts/ci/check_doc_links.py
67
+ uv run python scripts/ci/check_website_docs_pii.py
68
+ uv run python scripts/ci/generate_website_docs.py --check
69
+ uv run python scripts/ci/check_council_memory.py
66
70
  uv run ruff check src tests
67
71
  uv run ruff format --check src tests
68
72
  uv run pyright src
@@ -87,12 +91,13 @@ python -m pip install --pre gflow-cli
87
91
  - `pyproject.toml`
88
92
  - `.codex-plugin/plugin.json`
89
93
  - `src/gflow_cli/__init__.py`
94
+ - `uv.lock` (run `uv lock` — the editable package version is pinned there)
90
95
  - any tests that assert the package version
91
96
  7. Move user-visible changes from `CHANGELOG.md` `[Unreleased]` into a dated
92
97
  release section.
93
98
  8. Commit the release prep:
94
99
  ```bash
95
- git add pyproject.toml .codex-plugin/plugin.json src/gflow_cli/__init__.py CHANGELOG.md tests docs
100
+ git add pyproject.toml .codex-plugin/plugin.json src/gflow_cli/__init__.py uv.lock CHANGELOG.md tests docs
96
101
  git commit -m "chore(release): vX.Y.Z"
97
102
  ```
98
103
  9. Tag and push. **Must be a signed annotated tag** (`-s`) — `.github/workflows/release.yml` rejects unsigned or lightweight tags. Requires a GPG or SSH signing key registered with your GitHub account.
@@ -118,7 +118,8 @@ When the project converges on the hexagonal target above, modules graduate to la
118
118
  > `chain*.py`, `composition.py`, `config.py`, `diagnostics.py`, `errors.py`,
119
119
  > `image_batch.py`, `json_output.py`, `media.py`, `movie_manifest.py`,
120
120
  > `observability.py`, `paths.py`, `profile_lease.py`, `profile_store.py`,
121
- > `storage.py`, `update_check.py`, and `winsec.py` (inventory refreshed for
121
+ > `storage.py`, `update_check.py` (the once-a-day notice and `gflow update`'s
122
+ > `run_update`; its Click surface is `cli_update.py`), and `winsec.py` (inventory refreshed for
122
123
  > v0.56.0, #507 — it had drifted a dozen modules behind).
123
124
  > The DDD layout below was deferred indefinitely; converge toward it incrementally
124
125
  > if/when a second `Provider` justifies the split (`gflow serve` shipped as a
@@ -391,7 +391,7 @@ but the installed Playwright bundled Chromium is older (149.x). ...
391
391
  ```
392
392
 
393
393
  Remedies: upgrade so the bundled Chromium is at least the profile's version
394
- (`uv tool upgrade gflow-cli`, then `playwright install chromium`), or re-create
394
+ (`gflow update`, then `playwright install chromium`), or re-create
395
395
  the profile with `gflow auth login` — login is deliberately *not* guarded, it
396
396
  re-mints the session and rewrites the profile, making it the recovery path.
397
397
  The guard is best-effort: profiles under the `chrome` strategy (real Google
@@ -274,10 +274,11 @@ GFLOW_CLI_AUTH_LOGIN_TIMEOUT=120 gflow auth login # abort after 2 minutes
274
274
 
275
275
  ### `GFLOW_CLI_UPDATE_CHECK`
276
276
 
277
- **What:** Once-a-day best-effort PyPI check that prints a one-line stderr notice when a newer gflow-cli exists. The notice is always served from a local cache (`<GFLOW_CLI_HOME>/update_check.json`); a stale cache refreshes on a background daemon thread whose result feeds the *next* invocation — the check never blocks or fails a command, and a failed poll still counts toward the once-a-day cap.
277
+ **What:** Once-a-day best-effort PyPI check that shows an update banner on stderr when a newer gflow-cli exists — a bordered panel with the new version, `gflow update`, and the release-notes link when stderr is a terminal; one plain yellow line when piped. The notice is always served from a local cache (`<GFLOW_CLI_HOME>/update_check.json`); a stale cache refreshes on a background daemon thread whose result feeds the *next* invocation — the check never blocks or fails a command, and a failed poll still counts toward the once-a-day cap. `gflow update` / `gflow update --check` refresh the same cache synchronously.
278
278
  **Values:** `1` (default) | `0` to disable
279
- **Skipped automatically:** in CI (`CI` env var set) and for editable/local-source installs (PEP 610 `direct_url.json` detection) — "upgrade" advice is wrong there.
280
- **Shipped in:** #479.
279
+ **Skipped automatically:** in CI (`CI` set to anything but `0` / `false`) and for editable/local-source installs (PEP 610 `direct_url.json` detection) — "upgrade" advice is wrong there.
280
+ **Upgrading:** [`gflow update`](USAGE.md#gflow-update) runs the installer that put gflow-cli here (`uv tool` / `pipx` / the venv's own `pip`).
281
+ **Shipped in:** #479 (notice); `gflow update` + banner in #668.
281
282
 
282
283
  ### `GFLOW_CLI_LEASE_WAIT_SECONDS`
283
284
 
@@ -63,13 +63,18 @@ Types mirror Conventional Commits: `feature`, `fix`, `docs`, `chore`, `refactor`
63
63
 
64
64
  ```bash
65
65
  uv run python scripts/ci/check_repo_hygiene.py
66
+ uv run python scripts/ci/check_doc_links.py
67
+ uv run python scripts/ci/check_website_docs_pii.py
68
+ uv run python scripts/ci/generate_website_docs.py --check
69
+ uv run python scripts/ci/check_council_memory.py
66
70
  uv run ruff check src tests
67
71
  uv run ruff format --check src tests
68
72
  uv run pyright src
69
73
  uv run python -m pytest -q --cov=gflow_cli
70
74
  ```
71
75
 
72
- CI runs the same five on every push. Do not bypass with `--no-verify`.
76
+ CI runs the same nine on every push (this list is kept identical to AGENTS.md's —
77
+ `/gflow:check` runs it plus the CLI↔MCP mirror sweep). Do not bypass with `--no-verify`.
73
78
  Project pytest defaults exclude `e2e` and `live`; run those credit-spending
74
79
  tests only with an explicit marker expression and profile/env setup.
75
80
  Local agents running inside an MCP/context sandbox may need to split the
@@ -19,7 +19,7 @@ Welcome to the `gflow-cli` documentation. This index is the routing layer: it te
19
19
  | [KNOWN_ISSUES](../KNOWN_ISSUES.md) | Open / mitigated / resolved issues with workarounds | Before opening a bug report; when something feels off |
20
20
  | [DISCLAIMER](../DISCLAIMER.md) | Legal scope, takedown policy, prohibited uses | Before deploying anywhere non-trivial |
21
21
  | [LICENSE](../LICENSE) | MIT license text | Always |
22
- | [CONTRIBUTING](../CONTRIBUTING.md) | TDD workflow, test categories, coverage targets | Before opening a PR |
22
+ | [CONTRIBUTING](../CONTRIBUTING.md) | The development lifecycle a PR is reviewed against (phase → skill → artifact), TDD workflow, test categories, coverage targets | Before opening a PR — and before pointing a coding agent at the repo |
23
23
  | **[docs/DEVELOPMENT.md](DEVELOPMENT.md)** | Branching model, PR protocol, e2e gate, version bump protocol, AI-assisted workflow | Understanding the end-to-end dev process |
24
24
  | **[docs/E2E_TESTING.md](E2E_TESTING.md)** | Layer model, cost sub-markers, run commands, isolation patterns, roadmap to contract/replay layer | Running or extending e2e tests; cost control |
25
25
  | **[docs/AGENT_UI_E2E.md](AGENT_UI_E2E.md)** | Deterministic e2e runbook for the Agentic UI image path (force-agent trigger, validation ledger) | Live-verifying Agentic-UI features |
@@ -144,7 +144,8 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
144
144
  **"What's the standard way to import gflow errors in my code?"** → [USAGE § Programmatic use](USAGE.md#programmatic-use)
145
145
  **"gflow refuses to open my profile after a downgrade (exit 11, 'written by a newer Chromium')"** → [AUTHENTICATION § Chromium downgrade guard](AUTHENTICATION.md#chromium-downgrade-guard)
146
146
  **"Two gflow runs on the same profile — can the second one wait instead of failing (exit 11)?"** → [CONFIGURATION § GFLOW_CLI_LEASE_WAIT_SECONDS](CONFIGURATION.md#gflow_cli_lease_wait_seconds) (v0.56.0 opt-in bounded wait)
147
- **"How do I silence the 'newer version on PyPI' stderr notice?"** → [CONFIGURATION § GFLOW_CLI_UPDATE_CHECK](CONFIGURATION.md#gflow_cli_update_check) (`0` disables; auto-skipped in CI and for editable installs)
147
+ **"How do I silence the 'newer version on PyPI' stderr banner?"** → [CONFIGURATION § GFLOW_CLI_UPDATE_CHECK](CONFIGURATION.md#gflow_cli_update_check) (`0` disables; auto-skipped in CI and for editable installs)
148
+ **"How do I upgrade gflow-cli?"** → [USAGE § `gflow update`](USAGE.md#gflow-update) (`gflow update` runs the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs are refused with exit 11)
148
149
  **"How do I run the MCP server so an agent can't spend credits?"** → [CONFIGURATION § GFLOW_MCP_NO_SPEND](CONFIGURATION.md#gflow_mcp_no_spend) + [MCP § Option A2](MCP.md#option-a2-read-only-server) (`gflow mcp run --no-spend` / `GFLOW_MCP_NO_SPEND=1`; v0.57.0 — both generate tools go unregistered, not merely refused)
149
150
  **"Which Flow UI arm does a run require, and why did it exit 2 or 28?"** → [CONFIGURATION § GFLOW_CLI_UI_MODE](CONFIGURATION.md#gflow_cli_ui_mode) (`auto` ≡ `classic` for **both** images and video — video since v0.57.0/#299, images since #595; unreachable classic aborts pre-submit with exit 28, $0; explicit `agentic` on video exits 2)
150
151
  **"Which Flow frontend does a run drive — labs.google or the migrated flow.google.com — and why did it exit 36 or 11?"** → [CONFIGURATION § GFLOW_CLI_FLOW_HOST](CONFIGURATION.md#gflow_cli_flow_host) (`auto` = flow.google.com for every request it can serve — `t2v` with `--project`, on moved and unmoved accounts; `flow.google.com` forces it; `labs.google` is the kill switch. On a moved account everything except `t2v` exits 36, non-retryable, and `t2v` without `--project` exits 11) · recon: [migrated-host wire protocol](superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md), [handoff mechanism](superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md) · evidence: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md)
@@ -156,13 +157,14 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
156
157
  **"A command failed — where is the incident bundle and what's in it?"** → [DEBUGGING § Automatic incident bundles](DEBUGGING.md#automatic-incident-bundles) (layout, triggers, review-before-sharing); privacy boundaries: [SECURITY § Automatic incident bundles](SECURITY.md#automatic-incident-bundles-gflow_cli_incident_capture-default-on); disable via [CONFIGURATION § GFLOW_CLI_INCIDENT_CAPTURE](CONFIGURATION.md#gflow_cli_incident_capture)
157
158
  **"Flow's UI broke a selector — how do I diagnose it?"** → [DEBUGGING § Inspecting Flow's live UI](DEBUGGING.md#inspecting-flows-live-ui)
158
159
  **"What does each `ui_automation.*` log event mean?"** → [DEBUGGING § Listener & HTTP-layer debugging](DEBUGGING.md#listener--http-layer-debugging)
159
- **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
160
+ **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) (`gflow update` self-upgrading a real `uv tool` and a real `pipx` install from their own running `gflow.exe` to the PyPI release, Windows 11, zero credits — see its own row below) · previous: [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) (the migrated `flow.google.com` driver — see its own row below) · previous: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
160
161
  **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
161
162
  **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
162
163
  **"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of what was then read as a flapping rollout** (superseded 2026-09-04: the handoff is a one-way per-account flag and exit 36 is non-retryable since). On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true` (then; `false` since 2026-09-04), `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.
163
164
 
164
165
  **"What was live-verified for v0.66.0?"** → [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — **#639 Flow's `flow.google.com` migration, verified 2026-09-03 on profile `ffroliva` at ZERO credits.** The maintainer's own account turned out to be inside the rollout, so the fix was proven against the real migrated frontend rather than a reconstructed DOM: a read-only probe of `flow.google.com/project/<id>` measured `i_total: 0` (independently reproducing the reporter's central measurement) and drove the production functions against the live page — `flow_host_kind: "migrated"`, `_check_logged_in: true` (it was `false` before the fix, i.e. a valid session read as logged-out), and `_mode_switch_error` returning `FlowHostMigratedError` / exit 36 / `retryable: true` (then; `false` since 2026-09-04). What read as a flap on ONE account was its one-time switch: a credit-free `image t2i` minutes earlier landed on the OLD host and completed exit 0 with a real 768x1376 JPEG (`ffd8ffe0`, 401,939 bytes, Pillow dims matching the API claim), proving the rewritten host gate does not regress the old path. Also recorded: the migrated URL **drops `/fx/tools/flow` entirely** — it is `/project/<id>` — which is why a substring gate on `labs.google` could never match it; and the migrated composer is not control-less but exposes **no `data-testid`, zero ligature `<i>`, and 13 `button[aria-label]`** (`Settings trigger`, `Start generation`, …), recorded as recon for the follow-up WITH the caveat that `aria-label` is translated and therefore Tier-2 at best under the locale-invariance rule. One item is recorded as NOT verified rather than omitted: gflow **driving** the migrated frontend, which is out of scope and keeps #639 open. Verification also hit pre-existing [#561](https://github.com/ffroliva/gflow-cli/issues/561) (401 on `project.createProject`), A/B'd against unmodified `develop` to prove it was not this change, then routed around with an existing `--project`.
165
166
 
167
+ **"What was live-verified for v0.68.0?"** → [LIVE_VERIFICATION_v0.68.0](LIVE_VERIFICATION_v0.68.0.md) — **`gflow update` against the real package managers and the real PyPI index, run from the installed `gflow.exe` itself.** A wheel lowered to 0.60.1 was installed through `uv tool` and through `pipx`, the pin removed, and `gflow update` upgraded each to PyPI 0.67.0: exit 0 both times. The uv run is the one that shaped the code — uv installed the wheel and *then* exited 1 copying `gflow.exe` over the running launcher (os error 32, which can be neither overwritten nor renamed), so the command reads the venv's installed version back instead of trusting the manager's exit code and reports the stale launcher as a note. `--check --json` changed nothing and returned the documented keys; the piped-stderr notice printed as one line. NOT verified: plain-venv `pip` on Windows, macOS/Linux for any manager, a real interactive-terminal screenshot of the panel, and the first genuine banner (0.68.0 is the first release after the change).
166
168
  **"What was live-verified for v0.67.0?"** → [LIVE_VERIFICATION_v0.67.0](LIVE_VERIFICATION_v0.67.0.md) — **the migrated `flow.google.com` driver, on both maintainer accounts.** `gflow video t2v --project <id>` on the moved account under the default route: exit 0 in 49.9 s, mp4 `ftyp`, byte-exact with the size the backend reported, recorder row; on the unmoved Portuguese-locale account forced onto the host: exit 0 in 50.5 s — the locale-invariance proof (no text label is matched). #650 on the new host: `--model veo-fast --duration 6` aborts pre-submit with exit 11 at zero credits (this cohort renders the duration row for Omni only). Three defects were found by the runs and fixed before the record (status 3 arrives before the URL record; the labs media redirect 404s for migrated ids; `DETAILS[10]` is the poster JPEG). NOT verified: the positive Veo 4/6/8 path (cohort-external), model selection beyond the exit-11 abort, count>1, 9:16, 360p, the kill switch live, the MCP queued path live, any backend failure status.
167
169
  **"What was live-verified for v0.66.3?"** → [LIVE_VERIFICATION_v0.66.3](LIVE_VERIFICATION_v0.66.3.md) — the `<html lang>` hydration race, with the negative result that chose the design: **`readyState` reaches `complete` a full second BEFORE the attribute flips**, so "wait for complete, then read" would have shipped the same bug. Component and end-to-end measurements are reported separately on purpose. NOT verified: the migrated origin (fix proven on the old host, where the race also occurs) and the 4 s bound against a cold first load.
168
170
 
@@ -102,8 +102,11 @@ control … 0 option groups"); fixed in the same change and pinned by
102
102
 
103
103
  ## Post-tag evidence
104
104
 
105
- Filled after the tag push: release workflow run, PyPI version, GitHub Release URL,
106
- `pip install gflow-cli==0.67.0` smoke.
105
+ - Signed tag `v0.67.0` (SSH signature, `git tag -v` good) on `f92978e`, pushed 2026-09-05.
106
+ - Release workflow run [33955032750](https://github.com/ffroliva/gflow-cli/actions/runs/33955032750) — `completed / success`.
107
+ - GitHub Release: <https://github.com/ffroliva/gflow-cli/releases/tag/v0.67.0> (published 2026-09-05T08:22:07Z, 5 assets, not a prerelease).
108
+ - PyPI: `pip index versions gflow-cli` → `gflow-cli (0.67.0)`.
109
+ - Release PR: [#667](https://github.com/ffroliva/gflow-cli/pull/667) `chore/release-v0.67.0 → main`, merged with a merge commit, then back-merged into `develop`.
107
110
 
108
111
  ## NOT verified (recorded, not omitted)
109
112
 
@@ -0,0 +1,105 @@
1
+ # Live verification — v0.68.0 (pre-release evidence, 2026-09-05)
2
+
3
+ **Feature:** `gflow update` — self-update through the installer that put gflow-cli here
4
+ (`src/gflow_cli/update_check.py::run_update`, `src/gflow_cli/cli_update.py`) — and the #479
5
+ once-a-day notice rendered as a stderr banner (`src/gflow_cli/cli.py::_print_update_notice`).
6
+ PR [#668](https://github.com/ffroliva/gflow-cli/pull/668). The implementation plan and
7
+ scenario table were folded into project memory at release time
8
+ (`docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md`), per the doc-review
9
+ skill; this file keeps the measurements.
10
+
11
+ This feature touches no Flow transport, so "live" here means **against the real package
12
+ managers and the real PyPI index, from the installed `gflow.exe` itself** — the surface a
13
+ user actually runs — not against mocks. Nothing in this verification spent credits or
14
+ touched a Flow account.
15
+
16
+ ## Method
17
+
18
+ A wheel was built from the merged branch with the version lowered to **0.60.1**, installed
19
+ through each manager into a scratch tool directory (`UV_TOOL_DIR` / `PIPX_HOME`, via
20
+ `--find-links` — no `direct_url.json`, so it counts as an index install), the install-time
21
+ pin removed from the receipt / metadata, and `gflow update` run **from that install's own
22
+ `gflow.exe`**, upgrading it to the real PyPI **0.67.0**. Windows 11 Pro, uv 0.8.16,
23
+ pipx 1.8 (`pipx[uv]`).
24
+
25
+ ## Runs
26
+
27
+ | # | Manager | Command | Exit | Manager exit | Venv after (`gflow --version` through the old launcher) |
28
+ |---|---|---|---|---|---|
29
+ | 1 | `uv tool` | `gflow update --check --json` | **0** | — | unchanged (0.60.1); JSON `update_available: true`, `command: ["uv","tool","upgrade","gflow-cli"]`, `upgraded: false` |
30
+ | 2 | `uv tool` | `gflow update` | **0** | **1** — `Updated gflow-cli v0.60.1 -> v0.67.0` then `failed to copy … gflow.exe … used by another process (os error 32)` | **0.67.0** |
31
+ | 3 | `pipx` | `gflow update` | **0** | 0 — `upgraded package gflow-cli from 0.60.1 to 0.67.0` | **0.67.0** |
32
+
33
+ Run 2's text output, verbatim shape:
34
+
35
+ ```
36
+ Upgraded gflow-cli 0.60.1 -> 0.67.0 via uv.
37
+ Restart any running `gflow serve` / MCP server to pick it up.
38
+ `uv tool upgrade gflow-cli` exited 1 AFTER installing 0.67.0 — see its output above. On Windows
39
+ this is the running `gflow.exe` launcher, which cannot be replaced while in use; it keeps
40
+ working, and the next update from another shell refreshes it.
41
+ ```
42
+
43
+ ## Five-layer ledger
44
+
45
+ | Layer | Evidence |
46
+ |---|---|
47
+ | 1 · Artifact count | One upgraded venv per manager (2/2); one `--check` report that changed nothing (`uv-receipt.toml` and `Lib/site-packages` untouched, verified by re-running `--version`) |
48
+ | 2 · Magic / identity | `gflow_cli-0.67.0.dist-info` present in both venvs after the run; `gflow_cli-0.60.1.dist-info` gone |
49
+ | 3 · Shape | `--check --json` document carries exactly `{status, installed, latest, update_available, installer, command, upgraded, notes}`; the notes tuple holds the one launcher note on run 2 and nothing on run 3 |
50
+ | 4 · Structlog invariants | `update.installer_detected installer=uv` / `=pipx`, `update.command_finished returncode=1 after=0.67.0` (run 2) and `returncode=0 after=0.67.0` (run 3); the piped-stderr form of the #479 notice printed as **one line** before the command ran (`A newer gflow-cli is available: 0.67.0 (installed 0.60.1). Run \`gflow update\` to upgrade. …`) |
51
+ | 5 · User-confirmable | `gflow --version` → `gflow, version 0.67.0` from the very launcher that was running during the upgrade |
52
+
53
+ ## What the runs changed in the code
54
+
55
+ 1. **A running uv trampoline can be neither overwritten nor renamed.** `os.replace` and
56
+ `mv` on a running `gflow.exe` both fail (error 32 / "Device or resource busy", measured
57
+ against `gflow serve`). The first design — rename the launcher aside, restore on failure
58
+ — moved the idle `flow.exe` and never the one that mattered; it was deleted.
59
+ 2. **The manager's exit code is not the outcome.** uv had already installed the wheel when
60
+ it exited 1. `run_update` re-reads `importlib.metadata.version("gflow-cli")` from a fresh
61
+ interpreter after the run and reports that (run 2: exit 0 with a note; a zero exit with an
62
+ unmoved version is exit 11).
63
+ 3. `uv tool upgrade` honours an install-time pin silently, and uv's wheel cache is keyed by
64
+ filename — both bit the test harness before they could bite a user, and both are recorded
65
+ in the published memory slug.
66
+
67
+ ## Banner
68
+
69
+ - Piped stderr (subprocess capture): one plain line — layer 4 above, measured on runs 2/3.
70
+ - Terminal: the bordered panel was rendered through the same `Panel` call with a forced
71
+ terminal console and read back (title `Update available`, version line, `gflow update`
72
+ line, release-notes URL, silence hint); the `sys.stderr.isatty()` gate is unit-tested on
73
+ both branches (`tests/test_cli_update.py`). A real interactive-terminal screenshot was
74
+ **not** taken this cycle.
75
+
76
+ ## Pre-tag gates (filled before signing)
77
+
78
+ | Gate | Result |
79
+ |---|---|
80
+ | Impeccable Routine on `develop` at 9525cb5 (hygiene, doc links, website PII, website mirror, council memory, ruff, format, pyright) | all green |
81
+ | Offline pytest (`not live and not e2e and not smoke`) on 9525cb5 | 3849 passed, 24 skipped, 1 failed in 6:54 — `tests/features/test_incident_diagnostics_steps.py::test_remote_errors_do_not_expose_local_incident_paths`, a file untouched since July that passes in isolation (1.25 s); a second session was running pytest in the same checkout during the sweep. The release PR's CI run is the authority for the full suite |
82
+ | Branch council on PR #668 (9 dimensions) | D1/D4/D5/D9 YELLOW → all must-fix applied in a7b95ff; D3/D8/D14/D15 GREEN; D2 did not return |
83
+ | PR #668 CI (15 checks incl. SonarCloud) | green on b8b59a3 |
84
+ | Manager runs (this file) | uv: exit 0 + note; pipx: exit 0 |
85
+ | `/gflow:doc-review` mechanical pass (sections 1–7) | PASS — version refs, INDEX cue, evidence file, doc links, website PII + mirror, skill files, CHANGELOG footer, memory index |
86
+ | `/gflow:doc-review` council (3 auditors) | Completeness YELLOW, Cross-reference YELLOW, Drift GREEN. 0 Tier 1. Tier 2 fixed in aedeaaa (llms.txt names `gflow update`; ARCHITECTURE inventory; USER_GUIDE upgrade hop; CI / cache-refresh wording; CONTRIBUTING plan-consolidation note) and in the follow-up doc commit (five-command gate lists in DEVELOPMENT.md and RELEASE.md aligned to the nine; `uv.lock` in RELEASE.md's bump list; NOT-verified lists aligned; CLAUDE.md INDEX size). Tier 3 deferred: `gflow doctor` absent from llms.txt before this pass (now added), verdict-name abbreviations in CONTRIBUTING. Council reports at `tmp/council/0{1,2,3}-*.md` (local-only) |
87
+
88
+ ## Post-tag evidence
89
+
90
+ To be appended after the tag push: release workflow run URL, `gh release view v0.68.0`,
91
+ PyPI page, and one `pip index versions gflow-cli` read showing 0.68.0.
92
+
93
+ ## NOT verified this cycle (recorded, not omitted)
94
+
95
+ - **Plain-venv `pip` on Windows** — no venv on this machine runs `gflow.exe` from a pip
96
+ install; pip removes `Scripts/gflow.exe` and is likely to hit the same lock. The
97
+ `uv venv`-without-`pip` refusal is unit-tested only.
98
+ - **macOS / Linux for any manager** — POSIX allows replacing a running binary, so the
99
+ manager should exit 0 there; same code path, same venv-is-truth check. LIKELY, not
100
+ CONFIRMED.
101
+ - **A real interactive-terminal screenshot of the panel** — rendered through a forced
102
+ terminal console and read back (see "Banner" above), not photographed on a live tty.
103
+ - **A real newer release on PyPI** for the banner from a normal install — 0.68.0 is the
104
+ first release after the change, so the first genuine banner a user sees will be for
105
+ 0.68.1 or later. The #479 mechanism itself was live-verified at v0.56.0.
@@ -94,7 +94,7 @@ The server registers three protocol surfaces:
94
94
  * `gflow_instructions_toggle_mode(project, enabled, profile)`: Flips the brief-level master switch; cards are left untouched.
95
95
  * `gflow_instructions_apply(project, cards, profile)`: Declarative **full-sync** — REPLACES all cards with the given set (destructive; same entry shape as the CLI `instructions apply` file).
96
96
 
97
- CLI↔MCP parity is enforced programmatically: `tests/mcp/test_cli_parity.py` walks every CLI leaf command and fails when one has neither a mapped MCP tool nor an explicit exemption with a stated reason. Note the deliberate asymmetry: `gflow_generate_video` has **no** `instructions` param (unlike `gflow_generate_image`) because the video pipeline (`GenerateVideoRequest` / the worker) has no instructions support — agentic-video is a typed divergence, and a dead parameter would be silently dropped. Both `gflow_generate_image` and `gflow_generate_video` support an `output` parameter mirroring the CLI `-o`/`--output` flag (#414, #415), decoding explicit output destinations in the worker daemon.
97
+ CLI↔MCP parity is enforced programmatically: `tests/mcp/test_cli_parity.py` walks every CLI leaf command and fails when one has neither a mapped MCP tool nor an explicit exemption with a stated reason. Note the deliberate asymmetry: `gflow_generate_video` has **no** `instructions` param (unlike `gflow_generate_image`) because the video pipeline (`GenerateVideoRequest` / the worker) has no instructions support — agentic-video is a typed divergence, and a dead parameter would be silently dropped. Both `gflow_generate_image` and `gflow_generate_video` support an `output` parameter mirroring the CLI `-o`/`--output` flag (#414, #415), decoding explicit output destinations in the worker daemon. `gflow update` is a considered exemption, not a backlog item: the package manager would replace the venv under a live `gflow mcp run` and write its output onto the JSON-RPC stdout channel — the operator runs it and restarts the server. A read-only twin of `gflow update --check` would be harmless; it is the upgrade path if agents ever need version awareness beyond the `initialize` handshake.
98
98
 
99
99
  ### Prompts (Orchestration templates)
100
100
  * `expand_prompt`: Helps the agent structure simple ideas into Google's official 5-component prompt formula (Subject + Action + Location + Composition + Style) before sending them to the generation tools.