minitest-cli 0.32.0__tar.gz → 0.34.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/PKG-INFO +32 -9
  2. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/README.md +31 -8
  3. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/pyproject.toml +1 -1
  4. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_skill.py +1 -1
  5. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/apps.py +2 -18
  6. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/apps_dependencies.py +4 -4
  7. minitest_cli-0.34.0/src/minitest_cli/commands/apps_table.py +28 -0
  8. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/batch.py +26 -19
  9. minitest_cli-0.34.0/src/minitest_cli/commands/deprecated_alias.py +57 -0
  10. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/draft_feature.py +10 -6
  11. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/draft_feature_apply.py +1 -1
  12. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/draft_feature_conflicts.py +1 -1
  13. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/draft_feature_helpers.py +3 -1
  14. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/draft_feature_show.py +1 -1
  15. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/flow_types_write.py +1 -1
  16. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/issues.py +10 -8
  17. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/issues_fix.py +1 -1
  18. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/issues_helpers.py +1 -1
  19. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/maintenance.py +3 -3
  20. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/maintenance_callbacks.py +1 -1
  21. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run.py +11 -9
  22. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_cancel.py +13 -6
  23. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_commit.py +17 -9
  24. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_display.py +1 -1
  25. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_helpers.py +3 -3
  26. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_recording.py +7 -2
  27. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_recording_helpers.py +5 -3
  28. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/skill.py +4 -1
  29. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/tags_helpers.py +2 -1
  30. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile.py +3 -1
  31. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile_default.py +1 -1
  32. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story.py +14 -10
  33. minitest_cli-0.34.0/src/minitest_cli/commands/user_story_app_skills.py +51 -0
  34. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_bindings.py +15 -44
  35. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_create.py +6 -6
  36. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_delete.py +3 -3
  37. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_helpers.py +3 -4
  38. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_modify.py +5 -5
  39. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_setup_commit.py +7 -7
  40. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_update.py +1 -1
  41. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/verdicts.py +3 -3
  42. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/main.py +3 -0
  43. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/app.py +7 -0
  44. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/dependency_sim.py +3 -3
  45. minitest_cli-0.34.0/tests/conftest.py +11 -0
  46. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_app_skill_commands.py +6 -3
  47. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_apps_commands.py +15 -1
  48. minitest_cli-0.34.0/tests/test_deprecated_commands.py +86 -0
  49. minitest_cli-0.34.0/tests/test_deprecated_flags.py +102 -0
  50. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_draft_feature_commands.py +4 -4
  51. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_issues.py +1 -1
  52. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_run_cancel.py +1 -1
  53. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_user_story_commands.py +1 -1
  54. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/uv.lock +1 -1
  55. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.env.example +0 -0
  56. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.github/workflows/ci.yml +0 -0
  57. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.github/workflows/install-scripts.yml +0 -0
  58. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.github/workflows/release.yml +0 -0
  59. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.gitignore +0 -0
  60. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/.opencode/skill/release/SKILL.md +0 -0
  61. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/AGENTS.md +0 -0
  62. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/RELEASE.md +0 -0
  63. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/install.ps1 +0 -0
  64. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/install.sh +0 -0
  65. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/pyrightconfig.json +0 -0
  66. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/renovate.json +0 -0
  67. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/__init__.py +0 -0
  68. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/api/__init__.py +0 -0
  69. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/api/apps_manager_client.py +0 -0
  70. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/api/client.py +0 -0
  71. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/api/errors.py +0 -0
  72. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/assets/__init__.py +0 -0
  73. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/assets/callback.html +0 -0
  74. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/__init__.py +0 -0
  75. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/_response_errors.py +0 -0
  76. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_knowledge.py +0 -0
  77. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_knowledge_helpers.py +0 -0
  78. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_skill_helpers.py +0 -0
  79. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_skill_secret.py +0 -0
  80. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/app_skill_write.py +0 -0
  81. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/apps_get.py +0 -0
  82. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/apps_helpers.py +0 -0
  83. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/auth.py +0 -0
  84. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/auth_api_key.py +0 -0
  85. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/batch_helpers.py +0 -0
  86. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/batch_warnings.py +0 -0
  87. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/build.py +0 -0
  88. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/build_commit.py +0 -0
  89. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/build_fix_prompts.py +0 -0
  90. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/build_helpers.py +0 -0
  91. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/capabilities.py +0 -0
  92. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/commit_helpers.py +0 -0
  93. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/env.py +0 -0
  94. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/env_helpers.py +0 -0
  95. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/flow_types.py +0 -0
  96. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/flow_types_helpers.py +0 -0
  97. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/init.py +0 -0
  98. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/init_helpers.py +0 -0
  99. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/init_playbook.py +0 -0
  100. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/issues_projection.py +0 -0
  101. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/issues_service.py +0 -0
  102. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/maintenance_helpers.py +0 -0
  103. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/maintenance_state.py +0 -0
  104. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/recording_timeline.py +0 -0
  105. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_commit_helpers.py +0 -0
  106. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_feedback.py +0 -0
  107. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_tagged.py +0 -0
  108. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/run_targets.py +0 -0
  109. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/screens.py +0 -0
  110. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/screens_detail.py +0 -0
  111. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/screens_format.py +0 -0
  112. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/screens_helpers.py +0 -0
  113. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/screens_tree.py +0 -0
  114. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/tags.py +0 -0
  115. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_file.py +0 -0
  116. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_file_helpers.py +0 -0
  117. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_file_list.py +0 -0
  118. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile_card.py +0 -0
  119. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile_helpers.py +0 -0
  120. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile_list.py +0 -0
  121. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/test_profile_update.py +0 -0
  122. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/upgrade.py +0 -0
  123. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_camera.py +0 -0
  124. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_criteria.py +0 -0
  125. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_criterion_edits.py +0 -0
  126. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_device_count.py +0 -0
  127. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_overrides.py +0 -0
  128. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/user_story_profiles.py +0 -0
  129. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/verdicts_helpers.py +0 -0
  130. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/commands/verdicts_projection.py +0 -0
  131. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/__init__.py +0 -0
  132. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/app_context.py +0 -0
  133. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/auth.py +0 -0
  134. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/config.py +0 -0
  135. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/credentials.py +0 -0
  136. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/oauth.py +0 -0
  137. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/tenants.py +0 -0
  138. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/core/token_exchange.py +0 -0
  139. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/__init__.py +0 -0
  140. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/app_env_vars.py +0 -0
  141. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/app_failure.py +0 -0
  142. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/app_screen.py +0 -0
  143. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/base.py +0 -0
  144. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/batch.py +0 -0
  145. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/build.py +0 -0
  146. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/commit_build.py +0 -0
  147. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/draft_feature.py +0 -0
  148. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/flow_type.py +0 -0
  149. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/issues.py +0 -0
  150. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/recording.py +0 -0
  151. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/story_run.py +0 -0
  152. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/tag.py +0 -0
  153. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/targets.py +0 -0
  154. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/models/user_story.py +0 -0
  155. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/__init__.py +0 -0
  156. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/confirm.py +0 -0
  157. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/mermaid.py +0 -0
  158. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/output.py +0 -0
  159. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/skill_refresh.py +0 -0
  160. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/update_check.py +0 -0
  161. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/src/minitest_cli/utils/video_frames.py +0 -0
  162. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/__init__.py +0 -0
  163. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/_commit_transport.py +0 -0
  164. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_api_client_auth.py +0 -0
  165. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_app_knowledge_commands.py +0 -0
  166. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_apps_dependencies.py +0 -0
  167. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_auth.py +0 -0
  168. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_auth_api_key.py +0 -0
  169. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_auth_commands.py +0 -0
  170. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_batch_commands.py +0 -0
  171. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_build_commands.py +0 -0
  172. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_build_fix_prompts.py +0 -0
  173. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_capabilities_command.py +0 -0
  174. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_channel_header.py +0 -0
  175. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_code_quality.py +0 -0
  176. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_commit_commands.py +0 -0
  177. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_env.py +0 -0
  178. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_flow_types_commands.py +0 -0
  179. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_init_command.py +0 -0
  180. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_issues_commands.py +0 -0
  181. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_mermaid.py +0 -0
  182. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_native_device_types.py +0 -0
  183. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_network_errors.py +0 -0
  184. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_recording_timeline.py +0 -0
  185. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_response_errors.py +0 -0
  186. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_run_commands.py +0 -0
  187. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_run_frames_command.py +0 -0
  188. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_screens_commands.py +0 -0
  189. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_skill_command.py +0 -0
  190. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_suite_change_provenance.py +0 -0
  191. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_tags_commands.py +0 -0
  192. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_test_file_commands.py +0 -0
  193. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_test_profile_commands.py +0 -0
  194. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_upgrade_command.py +0 -0
  195. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_user_story_bindings_commands.py +0 -0
  196. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_user_story_setup_commit.py +0 -0
  197. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_verdicts.py +0 -0
  198. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_verdicts_actionable.py +0 -0
  199. {minitest_cli-0.32.0 → minitest_cli-0.34.0}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: minitest-cli
3
- Version: 0.32.0
3
+ Version: 0.34.0
4
4
  Summary: Minitest CLI – command-line interface for the Minitest testing platform
5
5
  Project-URL: Homepage, https://minitap.ai/
6
6
  Project-URL: Source, https://github.com/minitap-ai/minitest-cli
@@ -167,19 +167,42 @@ app defaults.
167
167
  | ---------------- | ------------------------- |
168
168
  | `minitest auth` | Authentication management |
169
169
  | `minitest apps` | List, inspect, and create apps |
170
- | `minitest user-story` | User-story operations |
171
- | `minitest df` | Draft features — branches of the test suite |
172
- | `minitest flow-types` | List flow types, create/rename/delete custom ones |
170
+ | `minitest scenario` | Create, update, list and delete scenarios |
171
+ | `minitest scenario-binding` | Bind test accounts, test files or app skills to scenarios |
172
+ | `minitest draft` | Drafts — branches of the test suite |
173
+ | `minitest test-profile` | Test profiles (Test accounts in the webapp) |
174
+ | `minitest tags` | List, create, update and delete scenario tags |
175
+ | `minitest app-skill` | App skills (Skills in the webapp): procedures Mini loads to arrange test state |
173
176
  | `minitest screens` | Inspect the screens exploration mapped for an app |
174
177
  | `minitest build` | Native iOS/Android build management |
175
- | `minitest run` | Test execution for mobile and web lanes |
176
- | `minitest maintenance` | CLI-only test-flow maintenance against local code |
178
+ | `minitest run` | Start runs and inspect their scenario runs |
179
+ | `minitest batch` | List, inspect and cancel runs (a batch is a Run in the webapp) |
180
+ | `minitest issues` | Read app issues and their fix prompts, mark them fixed |
181
+ | `minitest maintenance` | CLI-only scenario maintenance against local code |
182
+ | `minitest skill` | Print the CLI skill for your AI coding agent (not app skills) |
183
+
184
+ ### Deprecated names
185
+
186
+ Old names keep working as hidden aliases: they print a deprecation warning on
187
+ stderr and leave `--json` stdout unchanged. Switch to the new names.
188
+
189
+ | Deprecated | Use instead |
190
+ | ---------- | ----------- |
191
+ | `minitest user-story` | `minitest scenario` |
192
+ | `minitest user-story-binding` | `minitest scenario-binding` |
193
+ | `minitest scenario-binding set-skills` | `minitest scenario-binding set-app-skills` |
194
+ | `minitest df` | `minitest draft` |
195
+ | `minitest flow-types` | `minitest tags` |
196
+ | `run from-commit --user-story` / `-u` | `run from-commit --scenario` / `-s` |
197
+ | `batch list --user-story-id` | `batch list --scenario` |
198
+ | `run cancel --srp`, `run recording --srp` | `--target-id` |
199
+ | `--type` on `scenario create/update/list` | `--tag` |
177
200
 
178
201
  ## CLI-only maintenance
179
202
 
180
- `minitest maintenance` lets a coding agent keep Minitest user stories in sync
203
+ `minitest maintenance` lets a coding agent keep Minitest scenarios in sync
181
204
  without connecting GitHub. Run it from the app repository: the code stays on the
182
- machine, while the CLI sends only proposed test-flow edits and the local HEAD SHA.
205
+ machine, while the CLI sends only proposed scenario edits and the local HEAD SHA.
183
206
 
184
207
  ```bash
185
208
  # Print the server-composed maintenance instructions for your coding agent
@@ -189,7 +212,7 @@ minitest maintenance --agent
189
212
  minitest --json maintenance context
190
213
  minitest maintenance affected --file affected.json
191
214
  minitest maintenance change --file change.json
192
- minitest maintenance status --phase writing --message "Updating affected stories"
215
+ minitest maintenance status --phase writing --message "Updating affected scenarios"
193
216
  minitest maintenance complete --changed
194
217
 
195
218
  # Apply proposed edits now, or open the web review queue
@@ -134,19 +134,42 @@ app defaults.
134
134
  | ---------------- | ------------------------- |
135
135
  | `minitest auth` | Authentication management |
136
136
  | `minitest apps` | List, inspect, and create apps |
137
- | `minitest user-story` | User-story operations |
138
- | `minitest df` | Draft features — branches of the test suite |
139
- | `minitest flow-types` | List flow types, create/rename/delete custom ones |
137
+ | `minitest scenario` | Create, update, list and delete scenarios |
138
+ | `minitest scenario-binding` | Bind test accounts, test files or app skills to scenarios |
139
+ | `minitest draft` | Drafts — branches of the test suite |
140
+ | `minitest test-profile` | Test profiles (Test accounts in the webapp) |
141
+ | `minitest tags` | List, create, update and delete scenario tags |
142
+ | `minitest app-skill` | App skills (Skills in the webapp): procedures Mini loads to arrange test state |
140
143
  | `minitest screens` | Inspect the screens exploration mapped for an app |
141
144
  | `minitest build` | Native iOS/Android build management |
142
- | `minitest run` | Test execution for mobile and web lanes |
143
- | `minitest maintenance` | CLI-only test-flow maintenance against local code |
145
+ | `minitest run` | Start runs and inspect their scenario runs |
146
+ | `minitest batch` | List, inspect and cancel runs (a batch is a Run in the webapp) |
147
+ | `minitest issues` | Read app issues and their fix prompts, mark them fixed |
148
+ | `minitest maintenance` | CLI-only scenario maintenance against local code |
149
+ | `minitest skill` | Print the CLI skill for your AI coding agent (not app skills) |
150
+
151
+ ### Deprecated names
152
+
153
+ Old names keep working as hidden aliases: they print a deprecation warning on
154
+ stderr and leave `--json` stdout unchanged. Switch to the new names.
155
+
156
+ | Deprecated | Use instead |
157
+ | ---------- | ----------- |
158
+ | `minitest user-story` | `minitest scenario` |
159
+ | `minitest user-story-binding` | `minitest scenario-binding` |
160
+ | `minitest scenario-binding set-skills` | `minitest scenario-binding set-app-skills` |
161
+ | `minitest df` | `minitest draft` |
162
+ | `minitest flow-types` | `minitest tags` |
163
+ | `run from-commit --user-story` / `-u` | `run from-commit --scenario` / `-s` |
164
+ | `batch list --user-story-id` | `batch list --scenario` |
165
+ | `run cancel --srp`, `run recording --srp` | `--target-id` |
166
+ | `--type` on `scenario create/update/list` | `--tag` |
144
167
 
145
168
  ## CLI-only maintenance
146
169
 
147
- `minitest maintenance` lets a coding agent keep Minitest user stories in sync
170
+ `minitest maintenance` lets a coding agent keep Minitest scenarios in sync
148
171
  without connecting GitHub. Run it from the app repository: the code stays on the
149
- machine, while the CLI sends only proposed test-flow edits and the local HEAD SHA.
172
+ machine, while the CLI sends only proposed scenario edits and the local HEAD SHA.
150
173
 
151
174
  ```bash
152
175
  # Print the server-composed maintenance instructions for your coding agent
@@ -156,7 +179,7 @@ minitest maintenance --agent
156
179
  minitest --json maintenance context
157
180
  minitest maintenance affected --file affected.json
158
181
  minitest maintenance change --file change.json
159
- minitest maintenance status --phase writing --message "Updating affected stories"
182
+ minitest maintenance status --phase writing --message "Updating affected scenarios"
160
183
  minitest maintenance complete --changed
161
184
 
162
185
  # Apply proposed edits now, or open the web review queue
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "minitest-cli"
3
- version = "0.32.0"
3
+ version = "0.34.0"
4
4
  description = "Minitest CLI – command-line interface for the Minitest testing platform"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -21,7 +21,7 @@ from minitest_cli.utils.output import print_info, print_json, print_success, pri
21
21
 
22
22
  app = typer.Typer(
23
23
  name="app-skill",
24
- help="Manage app skills: procedures Mini loads to arrange test state.",
24
+ help="Manage app skills (Skills in the webapp): procedures Mini loads to arrange test state.",
25
25
  no_args_is_help=True,
26
26
  )
27
27
  app.add_typer(app_skill_secret.app)
@@ -12,6 +12,7 @@ from minitest_cli.api.client import ApiClient
12
12
  from minitest_cli.api.errors import format_network_error
13
13
  from minitest_cli.commands import apps_dependencies, apps_get
14
14
  from minitest_cli.commands.apps_helpers import create_app_request
15
+ from minitest_cli.commands.apps_table import APP_TABLE_HEADERS, app_row
15
16
  from minitest_cli.core.auth import require_auth
16
17
  from minitest_cli.core.config import Settings
17
18
  from minitest_cli.core.tenants import fetch_user_tenants, resolve_tenant_id
@@ -36,22 +37,6 @@ def _callback() -> None:
36
37
  """App management."""
37
38
 
38
39
 
39
- APP_TABLE_HEADERS = ["ID", "Name", "Platform"]
40
-
41
- _PLATFORM_LABELS: dict[str, str] = {
42
- "android": "Android",
43
- "ios": "iOS",
44
- "web": "Web",
45
- }
46
-
47
-
48
- def _format_platforms(values: list[str]) -> str:
49
- """Render an app's platform lanes for the table."""
50
- if not values:
51
- return "—"
52
- return ", ".join(_PLATFORM_LABELS.get(v, v) for v in values)
53
-
54
-
55
40
  def _get_settings() -> Settings:
56
41
  return typer.Context.settings # type: ignore[attr-defined]
57
42
 
@@ -92,8 +77,7 @@ def list_apps() -> None:
92
77
  print_json([a.model_dump(mode="json", by_alias=True) for a in data.apps])
93
78
  return
94
79
 
95
- rows = [[a.id, a.name, _format_platforms(a.platforms)] for a in data.apps]
96
- print_table(APP_TABLE_HEADERS, rows, title="Apps")
80
+ print_table(APP_TABLE_HEADERS, [app_row(a) for a in data.apps], title="Apps")
97
81
 
98
82
 
99
83
  @app.command(name="create")
@@ -45,7 +45,7 @@ def dependencies(
45
45
  "--simulate",
46
46
  help=(
47
47
  "Simulate dependency edits without writing: reports cycle "
48
- "verdict, affected stories, and the new run order."
48
+ "verdict, affected scenarios, and the new run order."
49
49
  ),
50
50
  ),
51
51
  ] = False,
@@ -54,7 +54,7 @@ def dependencies(
54
54
  typer.Option(
55
55
  "--add",
56
56
  help=(
57
- "Edge to add, as <story_id>:<depends_on_id> — the story will "
57
+ "Edge to add, as <story_id>:<depends_on_id> — the scenario will "
58
58
  "depend on (run after) the second id. Repeatable; requires --simulate."
59
59
  ),
60
60
  ),
@@ -69,7 +69,7 @@ def dependencies(
69
69
  ),
70
70
  ] = None,
71
71
  ) -> None:
72
- """Print the user-story dependency graph as a Mermaid flowchart.
72
+ """Print the scenario dependency graph as a Mermaid flowchart.
73
73
 
74
74
  Fetches the dependency graph for the app and renders it as a Mermaid
75
75
  ``flowchart TD`` diagram to stdout. With ``--json``, outputs the raw
@@ -129,7 +129,7 @@ def dependencies(
129
129
 
130
130
  mermaid = build_dependency_graph(nodes, edges)
131
131
  if not mermaid:
132
- print_info("No user stories found for this app.")
132
+ print_info("No scenarios found for this app.")
133
133
  raise typer.Exit(code=0)
134
134
 
135
135
  print(mermaid) # noqa: T201
@@ -0,0 +1,28 @@
1
+ """Rows of the `apps list` table."""
2
+
3
+ from minitest_cli.models.app import AppResponse
4
+
5
+ APP_TABLE_HEADERS = ["ID", "Name", "Platform", "Repository", "Folder"]
6
+
7
+ _PLATFORM_LABELS: dict[str, str] = {
8
+ "android": "Android",
9
+ "ios": "iOS",
10
+ "web": "Web",
11
+ }
12
+
13
+
14
+ def _format_platforms(values: list[str]) -> str:
15
+ if not values:
16
+ return "—"
17
+ return ", ".join(_PLATFORM_LABELS.get(v, v) for v in values)
18
+
19
+
20
+ def app_row(app: AppResponse) -> list[str]:
21
+ repo = app.repository
22
+ return [
23
+ app.id,
24
+ app.name,
25
+ _format_platforms(app.platforms),
26
+ repo.full_name if repo else "—",
27
+ (repo.folder or "/") if repo else "—",
28
+ ]
@@ -7,6 +7,7 @@ import typer
7
7
 
8
8
  from minitest_cli.api.client import ApiClient
9
9
  from minitest_cli.commands.batch_helpers import batches_base_path
10
+ from minitest_cli.commands.deprecated_alias import deprecated_option, merge_deprecated_option
10
11
  from minitest_cli.commands.run_display import _derive_run_status
11
12
  from minitest_cli.commands.run_helpers import (
12
13
  ensure_uuid,
@@ -26,7 +27,7 @@ from minitest_cli.utils.output import (
26
27
  print_table,
27
28
  )
28
29
 
29
- app = typer.Typer(name="batch", help="Manage batch runs (multi-story executions).")
30
+ app = typer.Typer(name="batch", help="List, inspect and cancel runs (Runs in the webapp).")
30
31
 
31
32
  BATCH_TABLE_HEADERS = ["ID", "Status", "Source", "Commit", "Tag", "Targets", "Created"]
32
33
 
@@ -57,26 +58,32 @@ def list_batches(
57
58
  typer.Option("--result", help="Filter by derived result (repeatable)."),
58
59
  ] = None,
59
60
  commit_sha: Annotated[str | None, typer.Option("--commit-sha")] = None,
60
- user_story_id: Annotated[str | None, typer.Option("--user-story-id")] = None,
61
+ scenario_id: Annotated[
62
+ str | None, typer.Option("--scenario", help="Only runs that include this scenario ID.")
63
+ ] = None,
64
+ legacy_user_story_id: Annotated[
65
+ str | None, deprecated_option("--user-story-id", new_flag="--scenario")
66
+ ] = None,
61
67
  search: Annotated[str | None, typer.Option("--search")] = None,
62
68
  all_pages: Annotated[bool, typer.Option("--all", help="Fetch all pages.")] = False,
63
69
  ) -> None:
64
- """List batches for the current app."""
70
+ """List the runs (batches) of the current app."""
65
71
  settings, app_id, json_mode = resolve_app()
66
72
  if all_pages:
67
73
  page, page_size = 1, 100
68
74
 
75
+ scenario_id = merge_deprecated_option(
76
+ scenario_id, legacy_user_story_id, old_flag="--user-story-id", new_flag="--scenario"
77
+ )
78
+ filters = {
79
+ "status": status_filter,
80
+ "result": result_filter,
81
+ "commit_sha": commit_sha,
82
+ "user_story_id": scenario_id,
83
+ "search": search,
84
+ }
69
85
  params: dict[str, object] = {"page": page, "page_size": page_size}
70
- if status_filter:
71
- params["status"] = status_filter
72
- if result_filter:
73
- params["result"] = result_filter
74
- if commit_sha:
75
- params["commit_sha"] = commit_sha
76
- if user_story_id:
77
- params["user_story_id"] = user_story_id
78
- if search:
79
- params["search"] = search
86
+ params.update({key: value for key, value in filters.items() if value})
80
87
 
81
88
  async def _list() -> BatchListResponse:
82
89
  async with ApiClient(settings) as client:
@@ -108,9 +115,9 @@ def list_batches(
108
115
 
109
116
  @app.command(name="get")
110
117
  def get_batch(
111
- batch_id: Annotated[str, typer.Argument(help="Batch ID.")],
118
+ batch_id: Annotated[str, typer.Argument(help="Run (batch) ID.")],
112
119
  ) -> None:
113
- """Get a single batch with its story runs."""
120
+ """Get one run (batch) with its scenario runs."""
114
121
  settings, app_id, json_mode = resolve_app()
115
122
  ensure_uuid(batch_id, kind="batch id")
116
123
 
@@ -165,17 +172,17 @@ def get_batch(
165
172
  )
166
173
  if rows:
167
174
  print_table(
168
- ["Run ID", "User Story", "Status", "Created"],
175
+ ["Run ID", "Scenario", "Status", "Created"],
169
176
  rows,
170
- title=f"Story runs ({len(rows)})",
177
+ title=f"Scenario runs ({len(rows)})",
171
178
  )
172
179
 
173
180
 
174
181
  @app.command()
175
182
  def cancel(
176
- batch_id: Annotated[str, typer.Argument(help="Batch ID to cancel.")],
183
+ batch_id: Annotated[str, typer.Argument(help="Run (batch) ID to cancel.")],
177
184
  ) -> None:
178
- """Cancel a batch and all its pending/running story runs."""
185
+ """Cancel a run (batch) and all its pending/running scenario runs."""
179
186
  settings, app_id, json_mode = resolve_app()
180
187
  ensure_uuid(batch_id, kind="batch id")
181
188
 
@@ -0,0 +1,57 @@
1
+ import functools
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+
5
+ import typer
6
+
7
+ from minitest_cli.utils.output import print_error, print_warning
8
+
9
+
10
+ def deprecated_alias(source: typer.Typer, *, old_name: str) -> typer.Typer:
11
+ """Expose ``source``'s commands under a hidden legacy name that warns on stderr."""
12
+ new_name = source.info.name
13
+ alias = typer.Typer(name=old_name, help=f"Deprecated: use `minitest {new_name}`.", hidden=True)
14
+
15
+ @alias.callback()
16
+ def _warn() -> None:
17
+ print_warning(f"`minitest {old_name}` is deprecated; use `minitest {new_name}` instead.")
18
+
19
+ alias.registered_commands = source.registered_commands
20
+ return alias
21
+
22
+
23
+ def deprecated_command(
24
+ group: typer.Typer, command: Callable[..., Any], *, old_name: str, new_name: str
25
+ ) -> None:
26
+ """Register ``command`` again under a hidden legacy subcommand name that warns on stderr."""
27
+ group_name = group.info.name
28
+
29
+ @functools.wraps(command)
30
+ def _legacy(*args: Any, **kwargs: Any) -> Any:
31
+ print_warning(
32
+ f"`minitest {group_name} {old_name}` is deprecated; "
33
+ f"use `minitest {group_name} {new_name}` instead."
34
+ )
35
+ return command(*args, **kwargs)
36
+
37
+ group.command(name=old_name, hidden=True, help=f"Deprecated: use `{new_name}`.")(_legacy)
38
+
39
+
40
+ def deprecated_option(*param_decls: str, new_flag: str) -> Any:
41
+ """A hidden option kept for a renamed flag; pair it with ``merge_deprecated_option``."""
42
+ return typer.Option(*param_decls, hidden=True, help=f"Deprecated alias for {new_flag}.")
43
+
44
+
45
+ def merge_deprecated_option[T](
46
+ new: T | None, old: T | None, *, old_flag: str, new_flag: str
47
+ ) -> T | None:
48
+ """Return the renamed flag's value, falling back to its deprecated alias with a warning."""
49
+ if old is None:
50
+ return new
51
+ print_warning(f"{old_flag} is deprecated; use {new_flag} instead.")
52
+ if new is None:
53
+ return old
54
+ if isinstance(new, list) and isinstance(old, list):
55
+ return [*new, *old] # type: ignore[return-value]
56
+ print_error(f"Use either {new_flag} or {old_flag}, not both.")
57
+ raise typer.Exit(code=1)
@@ -11,6 +11,7 @@ import typer
11
11
 
12
12
  from minitest_cli.api.client import ApiClient
13
13
  from minitest_cli.commands import draft_feature_apply, draft_feature_show
14
+ from minitest_cli.commands.deprecated_alias import deprecated_alias
14
15
  from minitest_cli.commands.draft_feature_helpers import (
15
16
  DRAFT_FEATURE_TABLE_HEADERS,
16
17
  base_path,
@@ -21,7 +22,7 @@ from minitest_cli.commands.run_helpers import ensure_uuid, resolve_app, run_api_
21
22
  from minitest_cli.models.draft_feature import DraftFeatureResponse, DraftFeatureStatus
22
23
  from minitest_cli.utils.output import output, print_error, print_info, print_success, print_table
23
24
 
24
- app = typer.Typer(name="df", help="Draft features — branches of the app's test suite.")
25
+ app = typer.Typer(name="draft", help="Drafts — branches of the app's test suite.")
25
26
  draft_feature_show.register(app)
26
27
  draft_feature_apply.register(app)
27
28
 
@@ -42,7 +43,7 @@ def list_draft_features(
42
43
  async def _list() -> list[DraftFeatureResponse]:
43
44
  async with ApiClient(settings) as client:
44
45
  resp = await client.get(base_path(app_id), params=params)
45
- handle_response_error(resp, resource="Draft features")
46
+ handle_response_error(resp, resource="Drafts")
46
47
  return [DraftFeatureResponse.model_validate(item) for item in resp.json()]
47
48
 
48
49
  features = run_api_call(_list())
@@ -51,12 +52,12 @@ def list_draft_features(
51
52
  output([f.model_dump(mode="json", by_alias=True) for f in features], json_mode=True)
52
53
  return
53
54
  if not features:
54
- print_info("No draft features found.")
55
+ print_info("No drafts found.")
55
56
  return
56
57
  print_table(
57
58
  DRAFT_FEATURE_TABLE_HEADERS,
58
59
  [format_draft_feature_row(f) for f in features],
59
- title=f"Draft features ({len(features)})",
60
+ title=f"Drafts ({len(features)})",
60
61
  )
61
62
 
62
63
 
@@ -88,7 +89,7 @@ def create_draft_feature(
88
89
 
89
90
  feature = run_api_call(_create())
90
91
  if not json_mode:
91
- print_success(f"Draft feature created: {feature.id}")
92
+ print_success(f"Draft created: {feature.id}")
92
93
  output(feature.model_dump(mode="json", by_alias=True), json_mode=json_mode)
93
94
 
94
95
 
@@ -114,4 +115,7 @@ def delete_draft_feature(
114
115
  if json_mode:
115
116
  output(feature.model_dump(mode="json", by_alias=True), json_mode=True)
116
117
  else:
117
- print_success(f"Draft feature abandoned: {feature.id} (status: {feature.status.value})")
118
+ print_success(f"Draft abandoned: {feature.id} (status: {feature.status.value})")
119
+
120
+
121
+ legacy_app = deprecated_alias(app, old_name="df")
@@ -1,4 +1,4 @@
1
- """`minitest df apply` — post a changeset file to a branch."""
1
+ """`minitest draft apply` — post a changeset file to a branch."""
2
2
 
3
3
  from pathlib import Path
4
4
  from typing import Annotated
@@ -1,4 +1,4 @@
1
- """Rendering for `minitest df show --view conflicts`.
1
+ """Rendering for `minitest draft show --view conflicts`.
2
2
 
3
3
  The three sides of a conflict are whole story tuples, so printing them as three
4
4
  JSON blobs in a table makes the one thing a resolver needs — which key is in
@@ -59,7 +59,9 @@ def handle_response_error(resp: httpx.Response, *, resource: str = "Draft featur
59
59
  if resp.status_code == 409:
60
60
  detail = extract_detail(resp)
61
61
  print_error(detail or f"{resource} changed since it was read.")
62
- print_info("Re-run `df show --view diff`, rebuild against the mainRev it returns, retry.")
62
+ print_info(
63
+ "Re-run `draft show --view diff`, rebuild against the mainRev it returns, retry."
64
+ )
63
65
  raise typer.Exit(code=EXIT_CONFLICT)
64
66
  if resp.status_code >= 400:
65
67
  detail = extract_detail(resp)
@@ -1,4 +1,4 @@
1
- """`minitest df show` — read a branch as a diff, as the suite it would run, or as its conflicts."""
1
+ """`minitest draft show` — read a branch as a diff, as the suite it runs, or as its conflicts."""
2
2
 
3
3
  from enum import StrEnum
4
4
  from typing import Annotated
@@ -48,7 +48,7 @@ def create_flow_type(
48
48
  color: Annotated[str, typer.Option("--color", help="Tailwind color name.")] = "gray",
49
49
  usage_prompt: UsagePromptOption = None,
50
50
  ) -> None:
51
- """Create a custom flow type, usable as --type on any user-story command.
51
+ """Create a custom flow type, usable as --type on any scenario command.
52
52
 
53
53
  Custom types are tenant-scoped: every app on your tenant can use them.
54
54
  """
@@ -1,4 +1,4 @@
1
- """Commands for reading app findings, their fix prompts, and closing them."""
1
+ """Commands for reading app issues, their fix prompts, and closing them."""
2
2
 
3
3
  from enum import StrEnum
4
4
  from typing import Annotated
@@ -23,27 +23,29 @@ class IssueCriticality(StrEnum):
23
23
 
24
24
 
25
25
  app = typer.Typer(
26
- name="issues", help="Read app findings, fix prompts, and mark them fixed.", no_args_is_help=True
26
+ name="issues", help="Read app issues, fix prompts, and mark them fixed.", no_args_is_help=True
27
27
  )
28
28
  app.command()(fix)
29
29
 
30
30
 
31
31
  @app.command("list")
32
32
  def list_issues(
33
- issue: Annotated[str | None, typer.Option("--issue", help="Scope to one failure ID.")] = None,
34
- run: Annotated[str | None, typer.Option("--run", help="Scope to one story run ID.")] = None,
35
- batch: Annotated[str | None, typer.Option("--batch", help="Scope to one batch ID.")] = None,
33
+ issue: Annotated[str | None, typer.Option("--issue", help="Scope to one issue ID.")] = None,
34
+ run: Annotated[str | None, typer.Option("--run", help="Scope to one scenario run ID.")] = None,
35
+ batch: Annotated[
36
+ str | None, typer.Option("--batch", help="Scope to one run (batch) ID.")
37
+ ] = None,
36
38
  platform: Annotated[
37
39
  IssuePlatform | None, typer.Option(help="Filter by execution platform.")
38
40
  ] = None,
39
41
  criticality: Annotated[
40
- IssueCriticality | None, typer.Option(help="Filter by finding criticality.")
42
+ IssueCriticality | None, typer.Option(help="Filter by issue criticality.")
41
43
  ] = None,
42
44
  include_resolved: Annotated[
43
- bool, typer.Option("--include-resolved", help="Include resolved findings.")
45
+ bool, typer.Option("--include-resolved", help="Include resolved issues.")
44
46
  ] = False,
45
47
  ) -> None:
46
- """Return scoped findings, build provenance, fix prompts, and deeplinks as JSON."""
48
+ """Return scoped issues, build provenance, fix prompts, and deeplinks as JSON."""
47
49
  scopes = {"issue": issue, "run": run, "batch": batch}
48
50
  selected = [(kind, value) for kind, value in scopes.items() if value is not None]
49
51
  if len(selected) > 1:
@@ -74,7 +74,7 @@ def fix(
74
74
  typer.Argument(help="One or more app-failure IDs to mark as fixed."),
75
75
  ],
76
76
  ) -> None:
77
- """Mark findings as fixed, reporting one result per ID."""
77
+ """Mark issues as fixed, reporting one result per ID."""
78
78
  settings, app_id, _ = resolve_app()
79
79
  results, exit_codes = run_api_call(_fix_issues(settings, app_id, issue_ids))
80
80
  fixed = sum(result["status"] == "fixed" for result in results)
@@ -122,7 +122,7 @@ async def _reject_batch_id_passed_as_run(client: ApiClient, app_id: str, given_i
122
122
  """
123
123
  if await fetch_optional_batch(client, app_id, given_id) is None:
124
124
  return
125
- print_error(f"Run not found: {given_id} is a batch id, not a story-run id.")
125
+ print_error(f"Run not found: {given_id} is a batch id, not a scenario-run id.")
126
126
  err_console.print(" [dim]The webapp path[/dim] /test/runs/<id> [dim]carries a batch id.[/dim]")
127
127
  err_console.print(f" [yellow]Try:[/yellow] [bold]--batch {given_id}[/bold]")
128
128
  raise typer.Exit(code=EXIT_NOT_FOUND)
@@ -1,4 +1,4 @@
1
- """`minitest maintenance` — keep test flows in sync with local app code, no GitHub.
1
+ """`minitest maintenance` — keep scenarios in sync with local app code, no GitHub.
2
2
 
3
3
  The customer's own coding agent runs the reasoning locally against their checkout;
4
4
  only the proposed criteria edits and an opaque commit sha reach Minitest. The maintenance
@@ -41,7 +41,7 @@ from minitest_cli.utils.output import (
41
41
 
42
42
  app = typer.Typer(
43
43
  name="maintenance",
44
- help="Maintain test flows against local app code (CLI-only, no GitHub).",
44
+ help="Keep scenarios in sync with local app code (CLI-only, no GitHub).",
45
45
  )
46
46
  register_callback_commands(app)
47
47
 
@@ -69,7 +69,7 @@ def maintenance(
69
69
 
70
70
  @app.command()
71
71
  def context() -> None:
72
- """Open a maintenance run and emit its context (mode, fromSha, stories) as JSON.
72
+ """Open a maintenance run and emit its context (mode, fromSha, scenarios) as JSON.
73
73
 
74
74
  First run for an app has no watermark → audit mode (review the whole suite). Later runs
75
75
  return the previous sha so the agent diffs `git diff <fromSha>..HEAD` locally.
@@ -19,7 +19,7 @@ def register_callback_commands(app: typer.Typer) -> None:
19
19
  def affected(
20
20
  file: Annotated[Path, typer.Option("--file", help="JSON file: {stories:[...]}.")],
21
21
  ) -> None:
22
- """Declare which stories the change affects (idempotent per run)."""
22
+ """Declare which scenarios the change affects (idempotent per run)."""
23
23
  _post_file(file, sub_path="affected-stories")
24
24
 
25
25
  @app.command()