gflow-cli 0.92.0__tar.gz → 0.93.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.
- gflow_cli-0.93.0/.codex-plugin/plugin.json +34 -0
- gflow_cli-0.93.0/.github/workflows/ci.yml +565 -0
- gflow_cli-0.93.0/.github/workflows/deps-watch.yml +83 -0
- gflow_cli-0.93.0/.github/workflows/governance-advisory.yml +48 -0
- gflow_cli-0.93.0/.github/workflows/governance-benchmark.yml +30 -0
- gflow_cli-0.93.0/.github/workflows/pages.yml +62 -0
- gflow_cli-0.93.0/.github/workflows/release.yml +121 -0
- gflow_cli-0.93.0/.github/workflows/scorecard.yml +52 -0
- gflow_cli-0.93.0/.gitignore +131 -0
- gflow_cli-0.93.0/AGENTS.md +422 -0
- gflow_cli-0.93.0/CHANGELOG.md +6955 -0
- gflow_cli-0.93.0/KNOWN_ISSUES.md +1944 -0
- gflow_cli-0.93.0/PKG-INFO +314 -0
- gflow_cli-0.93.0/conftest.py +82 -0
- gflow_cli-0.93.0/dev/sharpit_app.py +18 -0
- gflow_cli-0.93.0/docker/Dockerfile +53 -0
- gflow_cli-0.93.0/docs/ARCHITECTURE.md +460 -0
- gflow_cli-0.93.0/docs/AUTHENTICATION.md +577 -0
- gflow_cli-0.93.0/docs/CONFIGURATION.md +707 -0
- gflow_cli-0.93.0/docs/E2E_TESTING.md +601 -0
- gflow_cli-0.93.0/docs/GITHUB.md +316 -0
- gflow_cli-0.93.0/docs/INDEX.md +201 -0
- gflow_cli-0.93.0/docs/LIVE_VERIFICATION_v0.92.1.md +76 -0
- gflow_cli-0.93.0/docs/LIVE_VERIFICATION_v0.93.0.md +90 -0
- gflow_cli-0.93.0/docs/MCP.md +581 -0
- gflow_cli-0.93.0/docs/PROJECT_STATUS.md +876 -0
- gflow_cli-0.93.0/docs/REFERENCE_STRATEGIES.md +176 -0
- gflow_cli-0.93.0/docs/SECURITY.md +330 -0
- gflow_cli-0.93.0/docs/USAGE.md +2329 -0
- gflow_cli-0.93.0/docs/superpowers/spikes/2026-11-04-external-prs-1142-1145.md +73 -0
- gflow_cli-0.93.0/docs/superpowers/spikes/2026-11-04-t2v-lost-submit-reply.md +72 -0
- gflow_cli-0.93.0/docs/superpowers/spikes/2026-11-05-clip-url-is-a-thumbnail.md +36 -0
- gflow_cli-0.93.0/docs/superpowers/spikes/2026-11-05-revoked-session-workspace.md +44 -0
- gflow_cli-0.93.0/llms.txt +45 -0
- gflow_cli-0.93.0/plugins/gflow/.claude-plugin/plugin.json +30 -0
- gflow_cli-0.93.0/plugins/gflow/skills/gflow-cli/SKILL.md +313 -0
- gflow_cli-0.93.0/pyproject.toml +271 -0
- gflow_cli-0.93.0/pytest-speed.toml +8 -0
- gflow_cli-0.93.0/scripts/ci/check_test_count.py +60 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/VERSION +2 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/__main__.py +241 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/ab.py +80 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/check.py +194 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/compare.py +83 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/durations.py +17 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/fixture_timer.py +62 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/junit.py +52 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/rebuild_log.py +67 -0
- gflow_cli-0.93.0/scripts/ci/pytest_speed/vendor.py +45 -0
- gflow_cli-0.93.0/scripts/ci/shard_tests.py +98 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/README.md +36 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/cases.json +74 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/package-lock.json +1899 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/package.json +19 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/run.mjs +126 -0
- gflow_cli-0.93.0/scripts/dev/mcpjam/stub.mjs +17 -0
- gflow_cli-0.93.0/scripts/dev/spike_agent_only_cli_path.py +60 -0
- gflow_cli-0.93.0/scripts/dev/spike_agent_only_reload.py +89 -0
- gflow_cli-0.93.0/scripts/dev/spike_clip_url_redirect.py +71 -0
- gflow_cli-0.93.0/scripts/dev/spike_lost_submit_recovery.py +269 -0
- gflow_cli-0.93.0/scripts/dev/spike_mention_empty_picker.py +265 -0
- gflow_cli-0.93.0/scripts/dev/spike_revoked_session.py +68 -0
- gflow_cli-0.93.0/scripts/dev/spike_t2v_two_runs.py +131 -0
- gflow_cli-0.93.0/scripts/dev/spike_t2v_two_runs_read.py +87 -0
- gflow_cli-0.93.0/scripts/dev/spike_workspace_oracle.py +103 -0
- gflow_cli-0.93.0/server.json +42 -0
- gflow_cli-0.93.0/skills/gflow-cli/SKILL.md +313 -0
- gflow_cli-0.93.0/src/gflow_cli/__init__.py +3 -0
- gflow_cli-0.93.0/src/gflow_cli/api/client.py +4161 -0
- gflow_cli-0.93.0/src/gflow_cli/api/image.py +574 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/batchexecute.py +418 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/experimental/sapisidhash.py +335 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/migrated_composer.py +4475 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/migrated_extend.py +583 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/migrated_recover.py +266 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/ui_automation.py +4468 -0
- gflow_cli-0.93.0/src/gflow_cli/api/transports/ui_automation_video.py +4186 -0
- gflow_cli-0.93.0/src/gflow_cli/auth/internal_chromium.py +498 -0
- gflow_cli-0.93.0/src/gflow_cli/auth/real_chrome.py +511 -0
- gflow_cli-0.93.0/src/gflow_cli/auth/verification.py +691 -0
- gflow_cli-0.93.0/src/gflow_cli/cli.py +842 -0
- gflow_cli-0.93.0/src/gflow_cli/cli_data.py +919 -0
- gflow_cli-0.93.0/src/gflow_cli/data/repository.py +1303 -0
- gflow_cli-0.93.0/src/gflow_cli/errors.py +1565 -0
- gflow_cli-0.93.0/src/gflow_cli/image_batch.py +1566 -0
- gflow_cli-0.93.0/src/gflow_cli/mcp/tools.py +2526 -0
- gflow_cli-0.93.0/src/gflow_cli/winsec.py +120 -0
- gflow_cli-0.93.0/src/gflow_cli/worker/queue.py +399 -0
- gflow_cli-0.93.0/tests/api/test_client_launch_kwargs.py +474 -0
- gflow_cli-0.93.0/tests/api/transports/conftest.py +83 -0
- gflow_cli-0.93.0/tests/api/transports/drivers/test_agentic.py +1246 -0
- gflow_cli-0.93.0/tests/api/transports/test_bearer.py +519 -0
- gflow_cli-0.93.0/tests/api/transports/test_locale_navigation.py +195 -0
- gflow_cli-0.93.0/tests/api/transports/test_migrated_composer.py +4208 -0
- gflow_cli-0.93.0/tests/api/transports/test_migrated_r2v.py +690 -0
- gflow_cli-0.93.0/tests/api/transports/test_overlay_precondition.py +449 -0
- gflow_cli-0.93.0/tests/api/transports/test_page_fixture_shares_browser.py +34 -0
- gflow_cli-0.93.0/tests/api/transports/test_sapisidhash.py +455 -0
- gflow_cli-0.93.0/tests/api/transports/test_transport_timeout.py +107 -0
- gflow_cli-0.93.0/tests/api/transports/test_ui_automation.py +3558 -0
- gflow_cli-0.93.0/tests/api/transports/test_ui_automation_batch.py +1256 -0
- gflow_cli-0.93.0/tests/api/transports/test_ui_automation_image_mode.py +248 -0
- gflow_cli-0.93.0/tests/api/transports/test_ui_automation_video.py +3970 -0
- gflow_cli-0.93.0/tests/api/transports/test_ui_character_editor.py +1670 -0
- gflow_cli-0.93.0/tests/auth/test_real_chrome.py +900 -0
- gflow_cli-0.93.0/tests/auth/test_verification.py +1185 -0
- gflow_cli-0.93.0/tests/auth/test_workspace_oracle.py +72 -0
- gflow_cli-0.93.0/tests/cli/test_cli_models.py +122 -0
- gflow_cli-0.93.0/tests/data/test_repository.py +876 -0
- gflow_cli-0.93.0/tests/dev/test_sharpit_wrapper_outside_wheel.py +36 -0
- gflow_cli-0.93.0/tests/e2e/test_account_chooser_e2e.py +301 -0
- gflow_cli-0.93.0/tests/e2e/test_landing_state_diagnosis_bdd.py +342 -0
- gflow_cli-0.93.0/tests/e2e/test_login_window_position_e2e.py +59 -0
- gflow_cli-0.93.0/tests/e2e/test_mention_chip_order_bdd.py +179 -0
- gflow_cli-0.93.0/tests/e2e/test_migrated_submit_body_loss_bdd.py +299 -0
- gflow_cli-0.93.0/tests/e2e/test_workspace_oracle_e2e.py +47 -0
- gflow_cli-0.93.0/tests/fakes.py +32 -0
- gflow_cli-0.93.0/tests/features/mention_chip_order.feature +29 -0
- gflow_cli-0.93.0/tests/features/migrated_video_submit_body_loss.feature +32 -0
- gflow_cli-0.93.0/tests/features/test_media_picker_tiers_steps.py +223 -0
- gflow_cli-0.93.0/tests/features/test_video_agent_ui_steps.py +722 -0
- gflow_cli-0.93.0/tests/mcp/test_output_boundary_documented.py +24 -0
- gflow_cli-0.93.0/tests/mcp/test_reference_and_tools_params_documented.py +50 -0
- gflow_cli-0.93.0/tests/mcp/test_wait_false_runs.py +395 -0
- gflow_cli-0.93.0/tests/scripts/test_check_test_count.py +88 -0
- gflow_cli-0.93.0/tests/scripts/test_shard_tests.py +84 -0
- gflow_cli-0.93.0/tests/test_browser_manager.py +457 -0
- gflow_cli-0.93.0/tests/test_durations.json +344 -0
- gflow_cli-0.93.0/tests/test_fakes.py +9 -0
- gflow_cli-0.93.0/tests/test_overlay_banner_dismissal.py +175 -0
- gflow_cli-0.93.0/tests/test_vendored_pytest_speed.py +23 -0
- gflow_cli-0.93.0/tests/tools/__init__.py +0 -0
- gflow_cli-0.93.0/uv.lock +3668 -0
- gflow_cli-0.93.0/website/docs/ARCHITECTURE.md +460 -0
- gflow_cli-0.93.0/website/docs/AUTHENTICATION.md +577 -0
- gflow_cli-0.93.0/website/docs/CONFIGURATION.md +707 -0
- gflow_cli-0.93.0/website/docs/E2E_TESTING.md +601 -0
- gflow_cli-0.93.0/website/docs/KNOWN_ISSUES.md +1944 -0
- gflow_cli-0.93.0/website/docs/MCP.md +581 -0
- gflow_cli-0.93.0/website/docs/SECURITY.md +330 -0
- gflow_cli-0.93.0/website/docs/USAGE.md +2329 -0
- gflow_cli-0.93.0/website/requirements.in +3 -0
- gflow_cli-0.93.0/website/requirements.txt +493 -0
- gflow_cli-0.92.0/.codex-plugin/plugin.json +0 -34
- gflow_cli-0.92.0/.github/workflows/ci.yml +0 -403
- gflow_cli-0.92.0/.github/workflows/deps-watch.yml +0 -83
- gflow_cli-0.92.0/.github/workflows/governance-advisory.yml +0 -48
- gflow_cli-0.92.0/.github/workflows/governance-benchmark.yml +0 -30
- gflow_cli-0.92.0/.github/workflows/pages.yml +0 -62
- gflow_cli-0.92.0/.github/workflows/release.yml +0 -121
- gflow_cli-0.92.0/.github/workflows/scorecard.yml +0 -52
- gflow_cli-0.92.0/.gitignore +0 -127
- gflow_cli-0.92.0/AGENTS.md +0 -422
- gflow_cli-0.92.0/CHANGELOG.md +0 -6880
- gflow_cli-0.92.0/KNOWN_ISSUES.md +0 -1943
- gflow_cli-0.92.0/PKG-INFO +0 -314
- gflow_cli-0.92.0/conftest.py +0 -48
- gflow_cli-0.92.0/docker/Dockerfile +0 -53
- gflow_cli-0.92.0/docs/ARCHITECTURE.md +0 -460
- gflow_cli-0.92.0/docs/AUTHENTICATION.md +0 -571
- gflow_cli-0.92.0/docs/CONFIGURATION.md +0 -704
- gflow_cli-0.92.0/docs/E2E_TESTING.md +0 -601
- gflow_cli-0.92.0/docs/GITHUB.md +0 -289
- gflow_cli-0.92.0/docs/INDEX.md +0 -201
- gflow_cli-0.92.0/docs/MCP.md +0 -579
- gflow_cli-0.92.0/docs/PROJECT_STATUS.md +0 -836
- gflow_cli-0.92.0/docs/REFERENCE_STRATEGIES.md +0 -176
- gflow_cli-0.92.0/docs/SECURITY.md +0 -330
- gflow_cli-0.92.0/docs/USAGE.md +0 -2330
- gflow_cli-0.92.0/llms.txt +0 -45
- gflow_cli-0.92.0/plugins/gflow/.claude-plugin/plugin.json +0 -30
- gflow_cli-0.92.0/plugins/gflow/skills/gflow-cli/SKILL.md +0 -313
- gflow_cli-0.92.0/pyproject.toml +0 -261
- gflow_cli-0.92.0/scripts/ci/check_test_count.py +0 -52
- gflow_cli-0.92.0/scripts/dev/spike_lost_submit_recovery.py +0 -234
- gflow_cli-0.92.0/server.json +0 -42
- gflow_cli-0.92.0/skills/gflow-cli/SKILL.md +0 -313
- gflow_cli-0.92.0/src/gflow_cli/__init__.py +0 -3
- gflow_cli-0.92.0/src/gflow_cli/api/client.py +0 -4155
- gflow_cli-0.92.0/src/gflow_cli/api/image.py +0 -573
- gflow_cli-0.92.0/src/gflow_cli/api/transports/batchexecute.py +0 -384
- gflow_cli-0.92.0/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -335
- gflow_cli-0.92.0/src/gflow_cli/api/transports/migrated_composer.py +0 -4313
- gflow_cli-0.92.0/src/gflow_cli/api/transports/migrated_extend.py +0 -583
- gflow_cli-0.92.0/src/gflow_cli/api/transports/migrated_recover.py +0 -255
- gflow_cli-0.92.0/src/gflow_cli/api/transports/ui_automation.py +0 -4464
- gflow_cli-0.92.0/src/gflow_cli/api/transports/ui_automation_video.py +0 -4180
- gflow_cli-0.92.0/src/gflow_cli/auth/internal_chromium.py +0 -496
- gflow_cli-0.92.0/src/gflow_cli/auth/real_chrome.py +0 -512
- gflow_cli-0.92.0/src/gflow_cli/auth/verification.py +0 -621
- gflow_cli-0.92.0/src/gflow_cli/cli.py +0 -842
- gflow_cli-0.92.0/src/gflow_cli/cli_data.py +0 -920
- gflow_cli-0.92.0/src/gflow_cli/data/repository.py +0 -1303
- gflow_cli-0.92.0/src/gflow_cli/errors.py +0 -1564
- gflow_cli-0.92.0/src/gflow_cli/image_batch.py +0 -1565
- gflow_cli-0.92.0/src/gflow_cli/mcp/tools.py +0 -2492
- gflow_cli-0.92.0/src/gflow_cli/winsec.py +0 -120
- gflow_cli-0.92.0/src/gflow_cli/worker/queue.py +0 -399
- gflow_cli-0.92.0/tests/api/test_client_launch_kwargs.py +0 -472
- gflow_cli-0.92.0/tests/api/transports/conftest.py +0 -59
- gflow_cli-0.92.0/tests/api/transports/drivers/test_agentic.py +0 -1245
- gflow_cli-0.92.0/tests/api/transports/test_bearer.py +0 -514
- gflow_cli-0.92.0/tests/api/transports/test_locale_navigation.py +0 -194
- gflow_cli-0.92.0/tests/api/transports/test_migrated_composer.py +0 -3880
- gflow_cli-0.92.0/tests/api/transports/test_migrated_r2v.py +0 -621
- gflow_cli-0.92.0/tests/api/transports/test_overlay_precondition.py +0 -448
- gflow_cli-0.92.0/tests/api/transports/test_sapisidhash.py +0 -451
- gflow_cli-0.92.0/tests/api/transports/test_transport_timeout.py +0 -98
- gflow_cli-0.92.0/tests/api/transports/test_ui_automation.py +0 -3554
- gflow_cli-0.92.0/tests/api/transports/test_ui_automation_batch.py +0 -1254
- gflow_cli-0.92.0/tests/api/transports/test_ui_automation_image_mode.py +0 -247
- gflow_cli-0.92.0/tests/api/transports/test_ui_automation_video.py +0 -3968
- gflow_cli-0.92.0/tests/api/transports/test_ui_character_editor.py +0 -1669
- gflow_cli-0.92.0/tests/auth/test_real_chrome.py +0 -866
- gflow_cli-0.92.0/tests/auth/test_verification.py +0 -1156
- gflow_cli-0.92.0/tests/cli/test_cli_models.py +0 -122
- gflow_cli-0.92.0/tests/data/test_repository.py +0 -875
- gflow_cli-0.92.0/tests/e2e/test_account_chooser_e2e.py +0 -297
- gflow_cli-0.92.0/tests/e2e/test_landing_state_diagnosis_bdd.py +0 -329
- gflow_cli-0.92.0/tests/e2e/test_mention_chip_order_bdd.py +0 -148
- gflow_cli-0.92.0/tests/e2e/test_migrated_submit_body_loss_bdd.py +0 -285
- gflow_cli-0.92.0/tests/features/mention_chip_order.feature +0 -21
- gflow_cli-0.92.0/tests/features/migrated_video_submit_body_loss.feature +0 -24
- gflow_cli-0.92.0/tests/features/test_media_picker_tiers_steps.py +0 -222
- gflow_cli-0.92.0/tests/features/test_video_agent_ui_steps.py +0 -721
- gflow_cli-0.92.0/tests/mcp/test_wait_false_runs.py +0 -392
- gflow_cli-0.92.0/tests/scripts/test_check_test_count.py +0 -66
- gflow_cli-0.92.0/tests/test_browser_manager.py +0 -456
- gflow_cli-0.92.0/tests/test_overlay_banner_dismissal.py +0 -173
- gflow_cli-0.92.0/uv.lock +0 -3668
- gflow_cli-0.92.0/website/docs/ARCHITECTURE.md +0 -460
- gflow_cli-0.92.0/website/docs/AUTHENTICATION.md +0 -571
- gflow_cli-0.92.0/website/docs/CONFIGURATION.md +0 -704
- gflow_cli-0.92.0/website/docs/E2E_TESTING.md +0 -601
- gflow_cli-0.92.0/website/docs/KNOWN_ISSUES.md +0 -1943
- gflow_cli-0.92.0/website/docs/MCP.md +0 -579
- gflow_cli-0.92.0/website/docs/SECURITY.md +0 -330
- gflow_cli-0.92.0/website/docs/USAGE.md +0 -2330
- gflow_cli-0.92.0/website/requirements.in +0 -3
- gflow_cli-0.92.0/website/requirements.txt +0 -493
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.claude-plugin/marketplace.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.env.template +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.gitattributes +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/mcp-registry.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/sponsors.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/.secrets.baseline +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/CLAUDE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/LICENSE +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/RELEASE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/ROADMAP.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docker/Dockerfile.test +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docker/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docker/docker-compose.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docker/dockerignore.example +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docker-compose.yml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/CHARACTER_RECON.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/CONTAINER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/DISTRIBUTION.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.71.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.71.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.72.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.73.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.73.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.73.2.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.74.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.75.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.76.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.77.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.77.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.78.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.79.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.79.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.80.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.81.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.82.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.82.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.83.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.83.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.83.2.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.84.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.85.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.86.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.87.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.87.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.88.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.89.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.89.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.90.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.91.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_v0.92.0.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/MARKETPLACES.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/SPONSORS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/medium_tutorial.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/content-policy-text-scan-false-positives-on-page-chrome.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/drive-the-page-dont-replay-the-rpc.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/migrated-refusal-is-a-dom-card-not-a-wire-record.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-14-community-feedback-uplift/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/ASSESSMENT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/PREDICT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-15-agent-only-composer-driver/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-17-gflow-docs-command/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-09-17-project-create-bundle/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/PREDICT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-17-migrated-video-extend/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PLAN.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/PREDICT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/plans/2026-10-19-catalog-refs-in-project/SCENARIO.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-10-about-redirect-stability.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-10-migrated-click-blocked.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-decided-client-side.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-11-about-redirect-is-stable-for-an-account.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-11-migrated-cookie-bar-blocks-the-composer.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-11-nano2-lite-capability.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-13-frames-picker-confirm.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-14-credits-on-migrated-host.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-14-generation-wire-no-push-channel.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-14-two-domain-protocol-survey.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-14-video-poll-is-a-fixed-client-timer.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-15-agent-only-composer-drive-surface.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-15-container-transport-viability.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-15-unentitled-account-signal.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-16-networkidle-costs-3x-it-does-not-hang.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-17-migrated-end-frame-submit-contract.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-17-project-create-on-flow-google-com.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-17-stranded-clip-recovery.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-19-migrated-video-extend-wire.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-20-warm-client-premint-on-about-blank.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-22-playwright-max-retries-econnreset.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-23-about-cta-leads-to-google-reauth.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-27-migrated-refusal-is-on-the-wire.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-27-stealth-fingerprint-delta.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-09-30-migrated-upscale-wire.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-01-batch-ref-dropped.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-01-recaptcha-error-shape.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-06-948-record-slot3-null.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-08-nano-banana-21-replaced-2.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-10-duration-locale-and-notice-only-cookie-bar.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-13-migrated-image-character-mention.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-14-labs-nextauth-silent-refresh.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-17-agent-only-cohort-profiles.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-17-migrated-extend-ui-path.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-18-rpc-response-body-readback.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-19-earlier-run-ref-in-place.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-19-fourth-ref-caret.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-19-minio-replacement.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-20-migrated-upload-reply-body-eviction.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-21-migrated-submit-reply-body-loss.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-22-credits-balance-on-nzlxg.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-22-image-upscale-lost-body.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-22-labs-session-oracle-gone.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-25-mcp-detached-task-shutdown.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-27-lost-video-submit-recovery.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/docs/superpowers/spikes/2026-10-29-cross-device-relocate.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/glama.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/hatch_build.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/index.html +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/mempalace.yaml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/.mcp.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/composition.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/plugins/gflow/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_deletions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_fork_pr_ci.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/generate_plugin_skills.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.92.0/src/gflow_cli/tools → gflow_cli-0.93.0/scripts/ci/pytest_speed}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/ci/update_sponsors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/acceptance/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/acceptance/bench.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/acceptance/domain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/acceptance/judge.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/acceptance/settings.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/cleanup.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_1114_cross_device_relocate.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_948_project_records.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_948_submit_envelope.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_963_duration_locale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_995_earlier_run_ref.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_997_fourth_ref_caret.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_about_cta_recovery.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_about_redirect_cause.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_about_redirect_stability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_confirm_radios.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_only_cohort_profiles.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_only_composer.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_only_video_ready.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_only_video_tile.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_agent_settings_defaults.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_batch_ref_dropped.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_batch_ref_existing_media.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_create_project_401.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_credits_balance_carrier.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_credits_migrated_surface.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_flow_unavailable_signal.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_frames_picker_confirm.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_generation_wire_survey.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_gif_export_delivery.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_host_lane.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_model_attribution.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_submit_references.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_labs_nextauth_refresh.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_mcp_detached_shutdown.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_mention_existing_media.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_aspect_radios.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_click_blocked.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_composer_arms.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_cookie_bar.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_create_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_end_frame.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_extend_ui_path.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_image_submit.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_queue_read.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_refusal_envelope.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_submit_body_loss.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_upload_body_eviction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_upload_wire.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_mint_on_about_blank.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_nano2_lite_capability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_nano_banana_21_wire.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_networkidle_bootstrap_cost.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_offscreen_window.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_picker_chip_removal.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_picker_entity_marker.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_playwright_chrome_login.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_playwright_max_retries.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_project_media_status.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_recaptcha_error_shape.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_recover_stranded_clip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_ref_gate.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_s3_test_backend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_session_oracle.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_stealth_fingerprint_delta.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_two_domain_protocol_survey.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_upload_token_join.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_upscale_lost_body.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_upscale_menu_anchors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_video_workflow_id.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/spike_warm_client_unported_form.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/README.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/spike/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/SKILL.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/failure-modes.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/sonar-project.properties +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/agent_only_composer.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/migrated_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/migrated_video_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/renew.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/browser_manager.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_credits.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_docs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/config.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/docs_catalog.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/media_recovery.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/services/reference_uploads.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.92.0/src/gflow_cli/tools/builtin → gflow_cli-0.93.0/src/gflow_cli/tools}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.92.0/tests → gflow_cli-0.93.0/src/gflow_cli/tools/builtin}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.92.0/tests/api → gflow_cli-0.93.0/tests}/__init__.py +0 -0
- {gflow_cli-0.92.0/tests/api/transports → gflow_cli-0.93.0/tests/api}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/_upscale_fakes.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_aisandbox_auth_remediation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_bootstrap_chooser.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_project_host.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_client_window_position.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_diagnostics_boundary_890.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_image_capability_and_cookie_bar.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_migrated_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_migrated_video_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_profile_in_use.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_served_route_parked_page.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_upload_reference.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.92.0/tests/api/transports/drivers → gflow_cli-0.93.0/tests/api/transports}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/_ogiz0b.py +0 -0
- {gflow_cli-0.92.0/tests/cli → gflow_cli-0.93.0/tests/api/transports/drivers}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_agent_only_composer.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_agent_only_composer_driver.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_click_attribution.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_diagnostics_boundary_1062.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_flow_access_unavailable.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_hidden_model_picker.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_ligature_carrier.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_existing_refs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_extend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_images.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_mention_order.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_recover.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_missing_project_landing_paths.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_signed_media_retry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_upscale_tile_listed_late.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/strategies/test_strategies.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/test_account_autoselect.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/test_renew.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.92.0/tests/data → gflow_cli-0.93.0/tests/cli}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_auth_renew.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_auth_error_paths.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_docs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cli_video_upscale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_cloud_storage_local_output.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_default_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_docs_catalog_real_docs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_error_handling.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/cli/test_video_recording_busy.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/conftest.py +0 -0
- {gflow_cli-0.92.0/tests/e2e → gflow_cli-0.93.0/tests/data}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/data/test_store_transaction_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.92.0/tests/features → gflow_cli-0.93.0/tests/e2e}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_agent_only_composer_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_auth_renew_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_auth_status_mcp_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_blocking_dialog_dismissal_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_browser_proxy_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_click_attribution_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_credits_on_flow_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_credits_refresh_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_data_download_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_default_project_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_earlier_run_ref_in_place_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_frame_picker_binding_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_image_download_failure_records_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_local_ref_uploaded_once_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_login_identity_recheck_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_manifest_refs_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_mcp_wait_false_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_host_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_image_character_mention_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_locale_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_presubmit_gate_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_r2v_character_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_r2v_character_matrix_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_refusal_live_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_rpc_readback_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_selector_drift_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_migrated_upscale_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_missing_project_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_missing_project_upscale_extend_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_project_create_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_project_create_slow_link_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_recaptcha_error_shape_bdd.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_retired_labs_route_diagnosis_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_run_resume_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_signed_url_http_error_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_standalone_window_position_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_t2i_batch_project_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_video_extend_migrated_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/e2e/test_warm_client_upscale_e2e.py +0 -0
- {gflow_cli-0.92.0/tests/fixtures → gflow_cli-0.93.0/tests/features}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/agent_only_composer_live.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/blocking_dialog_dismissal.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/click_attribution.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/credits.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/credits_on_flow.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/earlier_run_ref_in_place.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/frame_picker_binding.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/image_download_failure_records.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/landing_state_diagnosis.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/local_ref_uploaded_once.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/manifest_refs_live.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/mcp_wait_false.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_host_images.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_image_character_mention.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_r2v_character.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_r2v_character_matrix.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_refusal_envelope.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_refusal_live.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_rpc_readback.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/migrated_submit_body_loss.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/recaptcha_error_shape.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_e2e_binding_guard.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_migrated_host_images_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_migrated_refusal_envelope_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.92.0/tests/flow_selectors → gflow_cli-0.93.0/tests/fixtures}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/fixtures/settings_mock.py +0 -0
- {gflow_cli-0.92.0/tests/image_batch → gflow_cli-0.93.0/tests/flow_selectors}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.92.0/tests/integration → gflow_cli-0.93.0/tests/image_batch}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.92.0/tests/services → gflow_cli-0.93.0/tests/integration}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/test_docs_ships_in_wheel.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/test_migrated_video_storage_s3.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_download_error_envelope.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_mcp_profile_contention.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_output_confinement.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_payload_key_round_trip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_serve_auth.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_upscale_tool.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/mcp/test_wait_parameter_documented.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_deletions.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_fork_pr_ci.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_cleanup.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_frame_acceptance.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_spike_page_pool.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_spike_profile_lease.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_update_sponsors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.92.0/tests/smoke → gflow_cli-0.93.0/tests/services}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_media_recovery.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_reference_uploads.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.92.0/tests/tools → gflow_cli-0.93.0/tests/smoke}/__init__.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_about_landing_guard.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_batch_outcomes.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_batch_recording.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_batch_ref_wiring.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_browser_proxy.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_config.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_config_agent_confirm.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_dockerfile_version_pin.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_e2e_env_home.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_glama_build_spec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_image_download_failure_records.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_manifest_refs.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_media.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_plugin_manifests.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_release_version_sites.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_rich_markup_safety.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_server_json.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_storage_write_error.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_codec_image_ref_project.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/DEBUGGING.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/PROMPT_EXPANSION.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/SPONSORS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/USER_GUIDE.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/index.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/onboarding-mockup.html +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/onboarding.md +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.92.0 → gflow_cli-0.93.0}/website/mkdocs.yml +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gflow",
|
|
3
|
+
"version": "0.93.0",
|
|
4
|
+
"description": "Reusable development and operations workflows for gflow-cli",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Flavio Oliva",
|
|
7
|
+
"url": "https://github.com/ffroliva"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/ffroliva/gflow-cli",
|
|
10
|
+
"repository": "https://github.com/ffroliva/gflow-cli",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"gflow-cli",
|
|
14
|
+
"codex",
|
|
15
|
+
"google-flow"
|
|
16
|
+
],
|
|
17
|
+
"skills": "./plugins/gflow/skills/",
|
|
18
|
+
"interface": {
|
|
19
|
+
"displayName": "gflow-cli",
|
|
20
|
+
"shortDescription": "Develop, validate, review, and operate gflow-cli.",
|
|
21
|
+
"longDescription": "Project workflows for planning, validation, issue handling, reviews, releases, and Google Flow CLI operations.",
|
|
22
|
+
"developerName": "Flavio Oliva",
|
|
23
|
+
"category": "Developer Tools",
|
|
24
|
+
"capabilities": [
|
|
25
|
+
"Interactive",
|
|
26
|
+
"Write"
|
|
27
|
+
],
|
|
28
|
+
"websiteURL": "https://github.com/ffroliva/gflow-cli",
|
|
29
|
+
"defaultPrompt": [
|
|
30
|
+
"Show the current gflow-cli task with $gflow:status.",
|
|
31
|
+
"Run the gflow-cli quality gates with $gflow:check."
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [develop, main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
# Least-privilege default token for every job (OpenSSF Scorecard:
|
|
9
|
+
# Token-Permissions). Jobs that need more elevate per-job below.
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
env:
|
|
14
|
+
# Suppress Node.js deprecation warnings and align with user request to use Node 22/remove noise.
|
|
15
|
+
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
|
|
16
|
+
NODE_VERSION: '22'
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
# ── Security gate: runs first, on every push/PR, never skippable ──────────
|
|
20
|
+
secrets-scan:
|
|
21
|
+
name: Secret scan (gitleaks)
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
pull-requests: write # gitleaks-action PR feedback comments
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
28
|
+
with:
|
|
29
|
+
persist-credentials: false
|
|
30
|
+
fetch-depth: 0 # full history so gitleaks can diff against base
|
|
31
|
+
|
|
32
|
+
- name: Run gitleaks
|
|
33
|
+
uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3
|
|
34
|
+
env:
|
|
35
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
36
|
+
|
|
37
|
+
# ── Security gate: dependency CVE audit against locked deps ──────────────
|
|
38
|
+
deps-audit:
|
|
39
|
+
name: Dependency audit (pip-audit)
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
43
|
+
with:
|
|
44
|
+
persist-credentials: false
|
|
45
|
+
- name: Install uv
|
|
46
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
47
|
+
- name: Audit locked dependencies for known CVEs
|
|
48
|
+
# Fails the build on any known advisory. Accept later via: pip-audit --ignore-vuln <GHSA-id>
|
|
49
|
+
#
|
|
50
|
+
# `--all-extras` is REQUIRED, not tidiness. Without it `uv export` emits
|
|
51
|
+
# only the default dependency group, so everything reachable solely
|
|
52
|
+
# through an optional extra is never audited. That blind spot was real:
|
|
53
|
+
# aiohttp 3.13.5 and pyasn1 0.6.3 sat in uv.lock with published high
|
|
54
|
+
# advisories while this gate reported clean, because both arrive via the
|
|
55
|
+
# `gcs`/`s3` extras (gcsfs / s3fs / google-auth). GitHub's Dependabot
|
|
56
|
+
# alerts flagged them against uv.lock; this gate could not see them.
|
|
57
|
+
run: |
|
|
58
|
+
uv export --frozen --all-extras --format requirements-txt --no-emit-project > requirements-audit.txt
|
|
59
|
+
# pip-audit version pinned for a reproducible gate (uvx has no
|
|
60
|
+
# dependabot ecosystem — bump by hand when it drifts).
|
|
61
|
+
uvx pip-audit==2.10.1 -r requirements-audit.txt
|
|
62
|
+
|
|
63
|
+
# ── Security gate: static analysis of the workflows themselves ───────────
|
|
64
|
+
# Everything else in this file audits the Python we ship. Nothing audited the
|
|
65
|
+
# CI that ships it, and CI is a supply-chain surface in its own right: it
|
|
66
|
+
# holds a repository token, it publishes to PyPI, and its inputs (branch
|
|
67
|
+
# names, PR titles, fork content) are attacker-controllable text.
|
|
68
|
+
#
|
|
69
|
+
# zizmor is what turns that into a gate. It found real defects on its first
|
|
70
|
+
# run over this repo (#565): 12 checkouts persisting the job token into the
|
|
71
|
+
# workspace, and `${{ github.base_ref }}` interpolated straight into a
|
|
72
|
+
# governance-advisory shell script. Both are fixed; this job is what stops
|
|
73
|
+
# them coming back one copy-pasted step at a time.
|
|
74
|
+
workflow-audit:
|
|
75
|
+
name: Workflow audit (zizmor)
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
steps:
|
|
78
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
79
|
+
with:
|
|
80
|
+
persist-credentials: false
|
|
81
|
+
|
|
82
|
+
- name: Install uv
|
|
83
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
84
|
+
|
|
85
|
+
- name: Audit workflows (zizmor)
|
|
86
|
+
# --offline: the online audits need a GH token and reach the network, so
|
|
87
|
+
# they would make this gate non-deterministic and unrunnable on fork
|
|
88
|
+
# PRs. Action freshness/pinning is already covered by Dependabot plus
|
|
89
|
+
# Scorecard's Pinned-Dependencies check.
|
|
90
|
+
# --min-severity low: informational findings are advisory, not defects.
|
|
91
|
+
# The one open today is `superfluous-actions` on
|
|
92
|
+
# softprops/action-gh-release; rewriting the release publisher is not
|
|
93
|
+
# a hardening change and is deliberately declined (docs/GITHUB.md).
|
|
94
|
+
# Version pinned for a reproducible gate — uvx has no Dependabot
|
|
95
|
+
# ecosystem, so bump it by hand (the pin is asserted by
|
|
96
|
+
# tests/scripts/test_workflow_hardening.py, which fails if the two drift).
|
|
97
|
+
run: uvx zizmor==1.29.0 --offline --min-severity low .github/workflows/
|
|
98
|
+
|
|
99
|
+
# ── Supply-chain gate: resolve WITHOUT the lockfile ───────────────────────
|
|
100
|
+
# Every other job installs via `uv sync`, which honours uv.lock. That means CI
|
|
101
|
+
# never exercises the version RANGES in pyproject.toml — the exact blind spot
|
|
102
|
+
# that let `mcp>=1.0.0` (unbounded) ship a broken MCP surface to every fresh
|
|
103
|
+
# `pip install gflow-cli` while CI stayed green: mcp 2.0.0 deleted
|
|
104
|
+
# `mcp.server.fastmcp`, which the server imports at module load.
|
|
105
|
+
#
|
|
106
|
+
# This job installs the way a USER does — from the declared ranges, newest
|
|
107
|
+
# compatible versions, no lockfile — and smoke-imports the surfaces that break
|
|
108
|
+
# first. It is what turns "a dependency published a major bump" from a user
|
|
109
|
+
# bug report into a CI failure.
|
|
110
|
+
resolve-drift:
|
|
111
|
+
name: Dependency resolution drift (no lockfile)
|
|
112
|
+
runs-on: ubuntu-latest
|
|
113
|
+
steps:
|
|
114
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
115
|
+
with:
|
|
116
|
+
persist-credentials: false
|
|
117
|
+
|
|
118
|
+
- name: Install uv
|
|
119
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
120
|
+
|
|
121
|
+
- name: Set up Python
|
|
122
|
+
run: uv python install 3.13
|
|
123
|
+
|
|
124
|
+
- name: Install from pyproject ranges (ignore uv.lock)
|
|
125
|
+
# --upgrade resolves to the newest versions the ranges allow, so a newly
|
|
126
|
+
# published major that our bounds do not exclude is caught here.
|
|
127
|
+
run: |
|
|
128
|
+
uv venv
|
|
129
|
+
uv pip install --upgrade .
|
|
130
|
+
|
|
131
|
+
- name: Smoke-import the MCP surface
|
|
132
|
+
# Import-time failures (deleted modules, moved symbols) surface here.
|
|
133
|
+
# Registration is a decorator side effect, so a successful import with a
|
|
134
|
+
# non-empty tool registry proves the whole surface still wires up.
|
|
135
|
+
run: |
|
|
136
|
+
uv run --no-sync python - <<'PY'
|
|
137
|
+
from gflow_cli.mcp.server import server, run_stdio, run_http, run_sse
|
|
138
|
+
from gflow_cli.mcp import prompts, resources, tools # noqa: F401
|
|
139
|
+
|
|
140
|
+
n_tools = len(server._tool_manager._tools)
|
|
141
|
+
n_resources = len(server._resource_manager._resources)
|
|
142
|
+
n_prompts = len(server._prompt_manager._prompts)
|
|
143
|
+
print(f"tools={n_tools} resources={n_resources} prompts={n_prompts}")
|
|
144
|
+
assert n_tools, "no MCP tools registered"
|
|
145
|
+
assert n_resources, "no MCP resources registered"
|
|
146
|
+
assert n_prompts, "no MCP prompts registered"
|
|
147
|
+
|
|
148
|
+
import mcp.types as t
|
|
149
|
+
print("negotiable protocol ceiling:", t.LATEST_PROTOCOL_VERSION)
|
|
150
|
+
PY
|
|
151
|
+
|
|
152
|
+
- name: Smoke-run the CLI entry points
|
|
153
|
+
run: |
|
|
154
|
+
uv run --no-sync gflow --version
|
|
155
|
+
uv run --no-sync gflow --help
|
|
156
|
+
uv run --no-sync gflow serve --help
|
|
157
|
+
|
|
158
|
+
- name: Report the resolved versions
|
|
159
|
+
# Printed unconditionally so a green run still records what was resolved.
|
|
160
|
+
if: always()
|
|
161
|
+
run: uv pip list
|
|
162
|
+
|
|
163
|
+
# ── Main test matrix ──────────────────────────────────────────────────────
|
|
164
|
+
# 3.11 and 3.12 run everything in one job each. 3.13 is the coverage job and was
|
|
165
|
+
# the critical path (Chromium, real-DOM tests, the hermetic e2e), so it runs as
|
|
166
|
+
# parallel shards below and `test-313` aggregates them under the required name.
|
|
167
|
+
test:
|
|
168
|
+
runs-on: ubuntu-latest
|
|
169
|
+
strategy:
|
|
170
|
+
matrix:
|
|
171
|
+
python-version: ["3.11", "3.12"]
|
|
172
|
+
steps:
|
|
173
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
174
|
+
with:
|
|
175
|
+
persist-credentials: false
|
|
176
|
+
|
|
177
|
+
- name: Install uv
|
|
178
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
179
|
+
|
|
180
|
+
- name: Set up Python
|
|
181
|
+
run: uv python install ${{ matrix.python-version }}
|
|
182
|
+
|
|
183
|
+
# --frozen: install from the committed uv.lock without re-resolving it.
|
|
184
|
+
# Plain `uv sync` REWRITES uv.lock in place, which would silently repair
|
|
185
|
+
# the exact version drift the hygiene gate below exists to catch.
|
|
186
|
+
- name: Install deps
|
|
187
|
+
run: uv sync --frozen --extra dev
|
|
188
|
+
|
|
189
|
+
# --no-sync for the same reason: `uv run` re-locks before running.
|
|
190
|
+
- name: Repo hygiene (no artefacts, no hardcoded paths, version lockstep)
|
|
191
|
+
run: uv run --no-sync python scripts/ci/check_repo_hygiene.py
|
|
192
|
+
|
|
193
|
+
- name: Documentation links
|
|
194
|
+
run: uv run python scripts/ci/check_doc_links.py
|
|
195
|
+
|
|
196
|
+
- name: Website docs PII guard (no private identifiers in the published mirror)
|
|
197
|
+
run: uv run python scripts/ci/check_website_docs_pii.py
|
|
198
|
+
|
|
199
|
+
- name: Website docs mirror in sync (regenerate-and-diff)
|
|
200
|
+
run: uv run python scripts/ci/generate_website_docs.py --check
|
|
201
|
+
|
|
202
|
+
- name: Council memory (every cited slug resolves, every file is cited)
|
|
203
|
+
run: uv run python scripts/ci/check_council_memory.py
|
|
204
|
+
|
|
205
|
+
- name: Plugin skills in sync (curated payload, no maintainer-only skill shipped)
|
|
206
|
+
run: uv run python scripts/ci/generate_plugin_skills.py --check
|
|
207
|
+
|
|
208
|
+
- name: Lint
|
|
209
|
+
run: uv run ruff check src tests
|
|
210
|
+
|
|
211
|
+
- name: Format check
|
|
212
|
+
run: uv run ruff format --check src tests
|
|
213
|
+
|
|
214
|
+
- name: Type check
|
|
215
|
+
run: uv run pyright src
|
|
216
|
+
|
|
217
|
+
- name: Test (smoke only)
|
|
218
|
+
# e2e/live tests require a logged-in Chromium profile and may spend
|
|
219
|
+
# Flow credits. pyproject.toml excludes both markers by default; CI
|
|
220
|
+
# intentionally relies on that default smoke set.
|
|
221
|
+
# -n auto: pytest-xdist, one worker per runner vCPU (~2x on the full suite;
|
|
222
|
+
# 198 s vs ~390 s measured locally at -n 8).
|
|
223
|
+
# --dist worksteal: the default `load` hands each worker a fixed chunk up
|
|
224
|
+
# front, and test_agent_only_composer_driver.py's 85 contiguous tests all
|
|
225
|
+
# landed on one worker (338 s there, ~20 s on the other three, measured).
|
|
226
|
+
run: uv run python -m pytest -q -n auto --dist worksteal --junitxml=pytest-report.xml
|
|
227
|
+
|
|
228
|
+
- name: Test-count guard (a green build that ran nothing is not green)
|
|
229
|
+
# Floor well below the real count (~2900): catches collection collapse
|
|
230
|
+
# (bad marker/-k filter, broken conftest), never routine deletions.
|
|
231
|
+
run: uv run python scripts/ci/check_test_count.py pytest-report.xml 2000
|
|
232
|
+
|
|
233
|
+
# ── 3.13: three unit shards + the hermetic e2e, in parallel ───────────────
|
|
234
|
+
# GFLOW_TEST_SHARD=k/N makes root conftest.py keep only shard k's files, split
|
|
235
|
+
# by whole file and balanced on tests/test_durations.json
|
|
236
|
+
# (scripts/ci/shard_tests.py). Every file runs in exactly one shard; the count
|
|
237
|
+
# floor is checked over the SUM in `test-313`, never per shard.
|
|
238
|
+
test-313-shard:
|
|
239
|
+
name: test 3.13 (${{ matrix.shard }})
|
|
240
|
+
runs-on: ubuntu-latest
|
|
241
|
+
strategy:
|
|
242
|
+
fail-fast: false
|
|
243
|
+
matrix:
|
|
244
|
+
shard: ["1/3", "2/3", "3/3", "e2e"]
|
|
245
|
+
env:
|
|
246
|
+
SHARD: ${{ matrix.shard }}
|
|
247
|
+
steps:
|
|
248
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
249
|
+
with:
|
|
250
|
+
persist-credentials: false
|
|
251
|
+
|
|
252
|
+
- name: Install uv
|
|
253
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
254
|
+
|
|
255
|
+
- name: Set up Python
|
|
256
|
+
run: uv python install 3.13
|
|
257
|
+
|
|
258
|
+
- name: Install deps
|
|
259
|
+
run: uv sync --frozen --extra dev
|
|
260
|
+
|
|
261
|
+
# The repo gates are version-independent except pyright; 3.11/3.12 run them
|
|
262
|
+
# too. On 3.13 they ride on the first unit shard, the lightest after the split.
|
|
263
|
+
- name: Repo gates (hygiene, docs, plugin skills, lint, format, types)
|
|
264
|
+
if: matrix.shard == '1/3'
|
|
265
|
+
run: |
|
|
266
|
+
uv run --no-sync python scripts/ci/check_repo_hygiene.py
|
|
267
|
+
uv run python scripts/ci/check_doc_links.py
|
|
268
|
+
uv run python scripts/ci/check_website_docs_pii.py
|
|
269
|
+
uv run python scripts/ci/generate_website_docs.py --check
|
|
270
|
+
uv run python scripts/ci/check_council_memory.py
|
|
271
|
+
uv run python scripts/ci/generate_plugin_skills.py --check
|
|
272
|
+
uv run ruff check src tests
|
|
273
|
+
uv run ruff format --check src tests
|
|
274
|
+
uv run pyright src
|
|
275
|
+
|
|
276
|
+
# The overlay-precondition tests (#593) drive the captured changelog markup in
|
|
277
|
+
# a real headless Chromium — a mock cannot tell you whether
|
|
278
|
+
# `[role='dialog']:has(a[href*='changelog']) button` resolves against Flow's
|
|
279
|
+
# actual DOM, only a real CSS engine can. They skip cleanly when the browser is
|
|
280
|
+
# absent, which would make them silently decorative in CI, so every 3.13 shard
|
|
281
|
+
# installs it. No account, no network, no credits.
|
|
282
|
+
- name: Install Chromium (real-DOM fixture tests)
|
|
283
|
+
run: uv run playwright install chromium --with-deps
|
|
284
|
+
|
|
285
|
+
- name: Test shard + coverage
|
|
286
|
+
if: matrix.shard != 'e2e'
|
|
287
|
+
env:
|
|
288
|
+
GFLOW_TEST_SHARD: ${{ matrix.shard }}
|
|
289
|
+
run: uv run python -m pytest -q -n auto --dist worksteal --cov=gflow_cli --cov-report= --junitxml=pytest-report.xml
|
|
290
|
+
|
|
291
|
+
# Five files under tests/e2e/ are hermetic: every Flow origin is served by
|
|
292
|
+
# `page.route(...).fulfill(...)`, so they need no account, no profile, no
|
|
293
|
+
# network and no credits — only the Chromium installed above. They are the
|
|
294
|
+
# regression tests for #593, #773, #859 and #860, and because `-m e2e` is
|
|
295
|
+
# excluded by pyproject's addopts and no job overrode it, they ran nowhere:
|
|
296
|
+
# a regression of any of those fixes would have gone green. They are the
|
|
297
|
+
# only e2e tests that CAN run here; the other 42 need a logged-in profile.
|
|
298
|
+
- name: E2E (hermetic subset — route-intercepted, $0, no profile)
|
|
299
|
+
if: matrix.shard == 'e2e'
|
|
300
|
+
run: >
|
|
301
|
+
uv run python -m pytest -q -m e2e
|
|
302
|
+
tests/e2e/test_account_chooser_e2e.py
|
|
303
|
+
tests/e2e/test_blocking_dialog_dismissal_bdd.py
|
|
304
|
+
tests/e2e/test_click_attribution_bdd.py
|
|
305
|
+
tests/e2e/test_frame_picker_binding_bdd.py
|
|
306
|
+
tests/e2e/test_landing_state_diagnosis_bdd.py
|
|
307
|
+
--junitxml=pytest-e2e-hermetic.xml
|
|
308
|
+
|
|
309
|
+
- name: E2E-count guard (an empty e2e run is not a passing e2e run)
|
|
310
|
+
if: matrix.shard == 'e2e'
|
|
311
|
+
run: uv run python scripts/ci/check_test_count.py pytest-e2e-hermetic.xml 10
|
|
312
|
+
|
|
313
|
+
# `.coverage` is a dotfile, which upload-artifact skips unless told otherwise.
|
|
314
|
+
- name: Upload shard report + coverage data
|
|
315
|
+
if: matrix.shard != 'e2e'
|
|
316
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
317
|
+
with:
|
|
318
|
+
name: shard-${{ strategy.job-index }}
|
|
319
|
+
path: |
|
|
320
|
+
pytest-report.xml
|
|
321
|
+
.coverage
|
|
322
|
+
include-hidden-files: true
|
|
323
|
+
if-no-files-found: error
|
|
324
|
+
retention-days: 1
|
|
325
|
+
|
|
326
|
+
# The required check `test (3.13)` lives HERE, so the ruleset needs no edit.
|
|
327
|
+
# `if: always()` plus the result gate are both load-bearing: GitHub reports a
|
|
328
|
+
# SKIPPED required check as passing, so without them a failed shard would skip
|
|
329
|
+
# this job and the PR would merge green.
|
|
330
|
+
test-313:
|
|
331
|
+
name: test (3.13)
|
|
332
|
+
runs-on: ubuntu-latest
|
|
333
|
+
needs: test-313-shard
|
|
334
|
+
if: always()
|
|
335
|
+
steps:
|
|
336
|
+
- name: Every 3.13 shard passed
|
|
337
|
+
env:
|
|
338
|
+
SHARDS: ${{ needs.test-313-shard.result }}
|
|
339
|
+
run: |
|
|
340
|
+
if [ "$SHARDS" != "success" ]; then
|
|
341
|
+
echo "::error::a 3.13 shard ended '$SHARDS' — see the test 3.13 (...) jobs"
|
|
342
|
+
exit 1
|
|
343
|
+
fi
|
|
344
|
+
|
|
345
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
346
|
+
with:
|
|
347
|
+
persist-credentials: false
|
|
348
|
+
|
|
349
|
+
- name: Install uv
|
|
350
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
351
|
+
|
|
352
|
+
- name: Set up Python
|
|
353
|
+
run: uv python install 3.13
|
|
354
|
+
|
|
355
|
+
- name: Install deps
|
|
356
|
+
run: uv sync --frozen --extra dev
|
|
357
|
+
|
|
358
|
+
- name: Download shard reports
|
|
359
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
|
|
360
|
+
with:
|
|
361
|
+
pattern: shard-*
|
|
362
|
+
|
|
363
|
+
# Each shard is named, not globbed: a shard that uploaded nothing must fail
|
|
364
|
+
# here rather than shrink the sum.
|
|
365
|
+
- name: Test-count guard over every shard (a green build that ran nothing is not green)
|
|
366
|
+
# Floor well below the real count (~2900): catches collection collapse
|
|
367
|
+
# (bad marker/-k filter, broken conftest, a lost shard), never routine deletions.
|
|
368
|
+
run: >
|
|
369
|
+
uv run --no-sync python scripts/ci/check_test_count.py
|
|
370
|
+
shard-0/pytest-report.xml shard-1/pytest-report.xml shard-2/pytest-report.xml 2000
|
|
371
|
+
|
|
372
|
+
- name: Combine shard coverage
|
|
373
|
+
run: |
|
|
374
|
+
uv run --no-sync coverage combine shard-0/.coverage shard-1/.coverage shard-2/.coverage
|
|
375
|
+
uv run --no-sync coverage xml -o coverage.xml
|
|
376
|
+
uv run --no-sync coverage report --format=total
|
|
377
|
+
|
|
378
|
+
# Upload coverage XML so the sonar job can consume it. It must come from the
|
|
379
|
+
# Chromium-installing 3.13 shards: the real-DOM fixture tests skip everywhere
|
|
380
|
+
# else, so a 3.11 upload counted every browser-tested module as uncovered
|
|
381
|
+
# (#989's agent_only_composer.py measured 39% new coverage with its tests green).
|
|
382
|
+
- name: Upload coverage report
|
|
383
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
384
|
+
with:
|
|
385
|
+
name: coverage-xml
|
|
386
|
+
path: coverage.xml
|
|
387
|
+
retention-days: 1
|
|
388
|
+
|
|
389
|
+
# Report-only (watch mode): `continue-on-error` and the brace group mean nothing
|
|
390
|
+
# in this step can turn the job red. Reads the shard-*/pytest-report.xml already
|
|
391
|
+
# downloaded above (copied alone so the scan never sees coverage.xml or the repo); no new upload.
|
|
392
|
+
- name: Speed check (report only)
|
|
393
|
+
continue-on-error: true
|
|
394
|
+
run: |
|
|
395
|
+
{ mkdir speed-in && cp --parents shard-*/pytest-report.xml speed-in/ \
|
|
396
|
+
&& uv run --no-sync python -m scripts.ci.pytest_speed check speed-in --config pytest-speed.toml --out speed.md \
|
|
397
|
+
&& cat speed.md >> "$GITHUB_STEP_SUMMARY"; } || echo "speed check: not run" >> "$GITHUB_STEP_SUMMARY"
|
|
398
|
+
|
|
399
|
+
# ── Focused OS matrix: ProfileLease cross-process contract (Task D2) ──────
|
|
400
|
+
# Everything else in this file runs Ubuntu-only (the `test` job above).
|
|
401
|
+
# This job exists because ProfileLease's kernel lock is genuinely
|
|
402
|
+
# OS-specific (msvcrt.locking on Windows vs. fcntl.flock on POSIX) and D1's
|
|
403
|
+
# local Windows-only run left the POSIX fcntl branch reasoned-but-unexecuted
|
|
404
|
+
# (see .superpowers/sdd/task-D1-report.md). Runs ONLY the lease unit +
|
|
405
|
+
# subprocess tests, not the full suite.
|
|
406
|
+
profile-lease-matrix:
|
|
407
|
+
name: ProfileLease (${{ matrix.os }})
|
|
408
|
+
runs-on: ${{ matrix.os }}
|
|
409
|
+
env:
|
|
410
|
+
PYTHONUTF8: "1"
|
|
411
|
+
strategy:
|
|
412
|
+
fail-fast: false
|
|
413
|
+
matrix:
|
|
414
|
+
os: [windows-latest, macos-latest, ubuntu-latest]
|
|
415
|
+
steps:
|
|
416
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
417
|
+
with:
|
|
418
|
+
persist-credentials: false
|
|
419
|
+
|
|
420
|
+
- name: Install uv
|
|
421
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
422
|
+
|
|
423
|
+
- name: Set up Python
|
|
424
|
+
run: uv python install 3.13
|
|
425
|
+
|
|
426
|
+
- name: Install deps
|
|
427
|
+
run: uv sync --extra dev
|
|
428
|
+
|
|
429
|
+
- name: ProfileLease unit + subprocess tests
|
|
430
|
+
run: uv run python -m pytest tests/test_profile_lease.py tests/test_profile_lease_subprocess.py -q --junitxml=pytest-lease.xml
|
|
431
|
+
|
|
432
|
+
- name: Test-count guard (lease matrix ran its suite)
|
|
433
|
+
# Floor well below the ~29 executed per OS leg — catches collapse, not
|
|
434
|
+
# routine test consolidation.
|
|
435
|
+
run: uv run python scripts/ci/check_test_count.py pytest-lease.xml 10
|
|
436
|
+
|
|
437
|
+
# ── Storage container tests (S3 via RustFS, GCS via fake-gcs-server) ───────
|
|
438
|
+
# Nothing ran `-m containers` before this job, so the pinned MinIO image was
|
|
439
|
+
# deleted from Docker Hub and the S3 tests rotted unnoticed. A registry
|
|
440
|
+
# deletion or a broken backend now turns CI red. The count guard catches the
|
|
441
|
+
# other silent failure: every fixture `importorskip`s, so a missing dependency
|
|
442
|
+
# would skip all 12 tests and still exit 0.
|
|
443
|
+
storage-containers:
|
|
444
|
+
name: Storage container tests
|
|
445
|
+
runs-on: ubuntu-latest
|
|
446
|
+
timeout-minutes: 15
|
|
447
|
+
env:
|
|
448
|
+
PYTHONUTF8: "1"
|
|
449
|
+
steps:
|
|
450
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
451
|
+
with:
|
|
452
|
+
persist-credentials: false
|
|
453
|
+
|
|
454
|
+
- name: Install uv
|
|
455
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
456
|
+
|
|
457
|
+
- name: Set up Python
|
|
458
|
+
run: uv python install 3.13
|
|
459
|
+
|
|
460
|
+
- name: Install deps
|
|
461
|
+
run: uv sync --frozen --group containers
|
|
462
|
+
|
|
463
|
+
- name: Container tests
|
|
464
|
+
run: uv run --no-sync python -m pytest -m containers tests/integration/ -q --junitxml=pytest-containers.xml
|
|
465
|
+
|
|
466
|
+
# 9 S3 (incl. the #1003 migrated-clip upload) + 4 GCS. The expander-gateway
|
|
467
|
+
# tests share the marker but skip without an LLM endpoint; skips do not count.
|
|
468
|
+
- name: Test-count guard (all storage tests executed, none skipped)
|
|
469
|
+
run: uv run --no-sync python scripts/ci/check_test_count.py pytest-containers.xml 13
|
|
470
|
+
|
|
471
|
+
# ── SonarCloud analysis ───────────────────────────────────────────────────
|
|
472
|
+
sonar:
|
|
473
|
+
name: SonarCloud analysis
|
|
474
|
+
runs-on: ubuntu-latest
|
|
475
|
+
needs: [test, test-313] # wait for tests + the combined coverage report
|
|
476
|
+
permissions:
|
|
477
|
+
contents: read
|
|
478
|
+
pull-requests: read # PR-context analysis / decoration lookups
|
|
479
|
+
# Forked pull_request runs do not receive repository secrets, so SONAR_TOKEN
|
|
480
|
+
# is empty there and the scanner fails before analysis. Dependabot-triggered
|
|
481
|
+
# runs are the same case: GitHub serves them the separate Dependabot secrets
|
|
482
|
+
# namespace, so SONAR_TOKEN is also empty even though the branch is in-repo.
|
|
483
|
+
# Keep SonarCloud on trusted pushes/internal PRs where the token is available.
|
|
484
|
+
if: >
|
|
485
|
+
always() &&
|
|
486
|
+
github.actor != 'dependabot[bot]' &&
|
|
487
|
+
(
|
|
488
|
+
github.event_name != 'pull_request' ||
|
|
489
|
+
github.event.pull_request.head.repo.full_name == github.repository
|
|
490
|
+
)
|
|
491
|
+
steps:
|
|
492
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
493
|
+
with:
|
|
494
|
+
persist-credentials: false
|
|
495
|
+
fetch-depth: 0 # shallow clones break blame / new-code detection
|
|
496
|
+
|
|
497
|
+
- name: Download coverage report
|
|
498
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
|
|
499
|
+
with:
|
|
500
|
+
name: coverage-xml
|
|
501
|
+
continue-on-error: true # graceful if coverage upload was skipped
|
|
502
|
+
|
|
503
|
+
# SonarCloud is a third-party service; it does have outages (seen live
|
|
504
|
+
# 2026-07-16, ~504s across its whole API including the unauthenticated
|
|
505
|
+
# /api/system/status endpoint). Reassessed fresh on every run — no manual
|
|
506
|
+
# flag to remember to flip back once it recovers. A skip here still lets
|
|
507
|
+
# the job COMPLETE (green), it just doesn't run the scan step; local
|
|
508
|
+
# coverage during an outage comes from the shared SonarQube instance
|
|
509
|
+
# (scripts/dev/sonar-local-scan.sh) — see docs/GITHUB.md § SonarCloud
|
|
510
|
+
# outage handling.
|
|
511
|
+
- name: Check SonarCloud availability
|
|
512
|
+
id: sonarcloud_health
|
|
513
|
+
run: |
|
|
514
|
+
if curl -sf -m 10 "https://sonarcloud.io/api/system/status" | grep -q '"status":"UP"'; then
|
|
515
|
+
echo "up=true" >> "$GITHUB_OUTPUT"
|
|
516
|
+
else
|
|
517
|
+
echo "up=false" >> "$GITHUB_OUTPUT"
|
|
518
|
+
echo "::warning::SonarCloud is unreachable or degraded — skipping the scan for this run (not a code quality failure). Verify locally with scripts/dev/sonar-local-scan.sh before merging if this persists, and re-run this job once SonarCloud recovers."
|
|
519
|
+
fi
|
|
520
|
+
|
|
521
|
+
- name: SonarCloud scan
|
|
522
|
+
if: steps.sonarcloud_health.outputs.up == 'true'
|
|
523
|
+
# sonarcloud-github-action is ARCHIVED upstream (dependabot never bumps
|
|
524
|
+
# archived actions, so its pin would rot silently); sonarqube-scan-action
|
|
525
|
+
# is SonarSource's maintained successor and serves SonarCloud when
|
|
526
|
+
# SONAR_HOST_URL points at it.
|
|
527
|
+
uses: SonarSource/sonarqube-scan-action@4d1dc0c91ee400dcf8a6dddf2f705ac36542e304 # v8.4.0
|
|
528
|
+
env:
|
|
529
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # PR decoration
|
|
530
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # set in repo → Settings → Secrets
|
|
531
|
+
SONAR_HOST_URL: https://sonarcloud.io
|
|
532
|
+
|
|
533
|
+
# Fails on N+1 queries and swallowed programming errors (see dev/sharpit_app.py). sharpit is pinned: a new release
|
|
534
|
+
# can add findings, so upgrading it is a change of its own.
|
|
535
|
+
sharpit:
|
|
536
|
+
runs-on: ubuntu-latest
|
|
537
|
+
steps:
|
|
538
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
539
|
+
with:
|
|
540
|
+
persist-credentials: false
|
|
541
|
+
|
|
542
|
+
- name: Install uv
|
|
543
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
544
|
+
|
|
545
|
+
- name: Set up Python
|
|
546
|
+
run: uv python install 3.12
|
|
547
|
+
|
|
548
|
+
- name: Install deps
|
|
549
|
+
run: uv sync --frozen --extra dev
|
|
550
|
+
|
|
551
|
+
# --with adds sharpit to this run only; uv.lock and the wheel never depend on it.
|
|
552
|
+
- name: Test suite under pytest --sharpit
|
|
553
|
+
run: >-
|
|
554
|
+
uv run --no-sync --with "sharpit==0.4.0" python -m pytest -q -n auto
|
|
555
|
+
--sharpit --sharpit-no-advisors
|
|
556
|
+
--sharpit-report=sharpit-report.json --sharpit-junit=sharpit-junit.xml
|
|
557
|
+
|
|
558
|
+
- name: Upload the sharpit reports
|
|
559
|
+
if: always()
|
|
560
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
561
|
+
with:
|
|
562
|
+
name: sharpit-report
|
|
563
|
+
path: |
|
|
564
|
+
sharpit-report.json
|
|
565
|
+
sharpit-junit.xml
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: Dependency watch
|
|
2
|
+
|
|
3
|
+
# ── Why this exists, on a CLOCK ──────────────────────────────────────────────
|
|
4
|
+
# CI's `deps-audit` job runs the same pip-audit command, but only `on: push` and
|
|
5
|
+
# `on: pull_request`. That gate has no clock: an advisory published *after* the
|
|
6
|
+
# last push stays invisible until someone happens to push. That is exactly how
|
|
7
|
+
# CVE-2026-69247 (cryptography 49.0.0) reached the v0.50.0 release PR — the
|
|
8
|
+
# lockfile had been sitting on the vulnerable version for days and nothing was
|
|
9
|
+
# scheduled to re-check it. This workflow gives that gate a timer.
|
|
10
|
+
#
|
|
11
|
+
# It also answers the question no existing job answers: "what CAN we update?"
|
|
12
|
+
# Every other job installs via `uv sync` against uv.lock, so the lockfile hides
|
|
13
|
+
# both halves of the picture — what upstream has published, and what our own
|
|
14
|
+
# declared bounds are currently refusing. Both are printed below.
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
schedule:
|
|
18
|
+
# Mondays 07:00 UTC — one hour before Dependabot's 08:00 Europe/Lisbon run,
|
|
19
|
+
# so the audit result is already on screen when the bump PRs land.
|
|
20
|
+
- cron: "0 7 * * 1"
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
watch:
|
|
28
|
+
name: Audit + report upgradable dependencies
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
32
|
+
with:
|
|
33
|
+
persist-credentials: false
|
|
34
|
+
|
|
35
|
+
- name: Install uv
|
|
36
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
37
|
+
|
|
38
|
+
- name: Set up Python
|
|
39
|
+
run: uv python install 3.13
|
|
40
|
+
|
|
41
|
+
# ── The gate: fails the run, which emails the repo owner ───────────────
|
|
42
|
+
- name: Audit locked dependencies for known CVEs
|
|
43
|
+
run: |
|
|
44
|
+
# --all-extras: without it only the default group is exported, so
|
|
45
|
+
# anything reachable solely through an optional extra goes unaudited.
|
|
46
|
+
# See the matching note in ci.yml — this is how aiohttp/pyasn1 hid.
|
|
47
|
+
uv export --frozen --all-extras --format requirements-txt --no-emit-project > requirements-audit.txt
|
|
48
|
+
# pip-audit deliberately floats here (unlike the pinned gate in
|
|
49
|
+
# ci.yml): this weekly watch job never gates a merge, and fresh
|
|
50
|
+
# advisory tooling is exactly what it is for.
|
|
51
|
+
uvx pip-audit -r requirements-audit.txt
|
|
52
|
+
|
|
53
|
+
# ── The reports: never fail the run, and still run when the audit fails
|
|
54
|
+
# (a red audit is precisely when you want to know what's upgradable) ─
|
|
55
|
+
- name: Report what our bounds allow us to take now
|
|
56
|
+
if: always()
|
|
57
|
+
# Resolves the newest versions pyproject.toml's ranges permit, without
|
|
58
|
+
# writing uv.lock. This is the "safe to merge today" list.
|
|
59
|
+
run: |
|
|
60
|
+
echo '## Upgradable within current bounds' >> "$GITHUB_STEP_SUMMARY"
|
|
61
|
+
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
|
62
|
+
# uv writes this report to STDERR, so it must be folded into stdout
|
|
63
|
+
# BEFORE the pipe. `... 2>&1 >> file` would be wrong: that order sends
|
|
64
|
+
# stdout to the file and leaves stderr on the terminal, which silently
|
|
65
|
+
# published an empty summary section. tee keeps both destinations.
|
|
66
|
+
uv lock --upgrade --dry-run 2>&1 | tee -a "$GITHUB_STEP_SUMMARY"
|
|
67
|
+
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
|
68
|
+
|
|
69
|
+
- name: Report what upstream has published
|
|
70
|
+
if: always()
|
|
71
|
+
# Unlike the step above, this ignores our constraints and reports the
|
|
72
|
+
# true latest on PyPI — so a package frozen by one of OUR upper bounds
|
|
73
|
+
# shows up here and nowhere else. This is the expiry alarm for those
|
|
74
|
+
# bounds: `playwright>=1.61.0,<1.62.0` is deliberate (an untested driver
|
|
75
|
+
# silently wedged video generation — see the comment in pyproject.toml),
|
|
76
|
+
# but a deliberate pin still needs a periodic "how stale is it now?"
|
|
77
|
+
# signal, and raising it requires a live-verified generation first.
|
|
78
|
+
run: |
|
|
79
|
+
uv sync --frozen
|
|
80
|
+
echo '## Latest upstream (ignores our bounds)' >> "$GITHUB_STEP_SUMMARY"
|
|
81
|
+
echo '```' >> "$GITHUB_STEP_SUMMARY"
|
|
82
|
+
uv pip list --outdated 2>&1 | tee -a "$GITHUB_STEP_SUMMARY"
|
|
83
|
+
echo '```' >> "$GITHUB_STEP_SUMMARY"
|