drydock-cli 2.3.1__tar.gz → 2.3.2__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 (536) hide show
  1. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/PKG-INFO +1 -1
  2. drydock_cli-2.3.2/drydock/skills/api-design/SKILL.md +32 -0
  3. drydock_cli-2.3.2/drydock/skills/commit-code/SKILL.md +27 -0
  4. drydock_cli-2.3.2/drydock/skills/context-summary/SKILL.md +19 -0
  5. drydock_cli-2.3.2/drydock/skills/deploy/SKILL.md +26 -0
  6. drydock_cli-2.3.2/drydock/skills/diff-review/SKILL.md +16 -0
  7. drydock_cli-2.3.2/drydock/skills/doc-gen/SKILL.md +28 -0
  8. drydock_cli-2.3.2/drydock/skills/explain-code/SKILL.md +27 -0
  9. drydock_cli-2.3.2/drydock/skills/explore-code/SKILL.md +42 -0
  10. drydock_cli-2.3.2/drydock/skills/fix-issue/SKILL.md +33 -0
  11. drydock_cli-2.3.2/drydock/skills/git-ops/SKILL.md +32 -0
  12. drydock_cli-2.3.2/drydock/skills/init-project/SKILL.md +33 -0
  13. drydock_cli-2.3.2/drydock/skills/loop/SKILL.md +22 -0
  14. drydock_cli-2.3.2/drydock/skills/migrate/SKILL.md +25 -0
  15. drydock_cli-2.3.2/drydock/skills/perf-analyze/SKILL.md +29 -0
  16. drydock_cli-2.3.2/drydock/skills/plan-impl/SKILL.md +45 -0
  17. drydock_cli-2.3.2/drydock/skills/pr-review/SKILL.md +32 -0
  18. drydock_cli-2.3.2/drydock/skills/refactor/SKILL.md +37 -0
  19. drydock_cli-2.3.2/drydock/skills/regex-help/SKILL.md +30 -0
  20. drydock_cli-2.3.2/drydock/skills/security-review/SKILL.md +31 -0
  21. drydock_cli-2.3.2/drydock/skills/test-verify/SKILL.md +27 -0
  22. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/pyproject.toml +1 -1
  23. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/CODEOWNERS +0 -0
  24. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  25. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  26. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/workflows/build-and-upload.yml +0 -0
  28. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/workflows/ci.yml +0 -0
  29. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/workflows/issue-labeler.yml +0 -0
  30. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.github/workflows/release.yml +0 -0
  31. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.gitignore +0 -0
  32. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.pre-commit-config.yaml +0 -0
  33. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.python-version +0 -0
  34. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.typos.toml +0 -0
  35. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.vscode/extensions.json +0 -0
  36. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.vscode/launch.json +0 -0
  37. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/.vscode/settings.json +0 -0
  38. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/AGENTS.md +0 -0
  39. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/CHANGELOG.md +0 -0
  40. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/CLAUDE.md +0 -0
  41. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/CONTRIBUTING.md +0 -0
  42. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/Drydock_rebrand.md +0 -0
  43. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/LICENSE +0 -0
  44. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/NOTICE +0 -0
  45. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/PRD.md +0 -0
  46. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/README.md +0 -0
  47. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/action.yml +0 -0
  48. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/distribution/zed/LICENSE +0 -0
  49. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/distribution/zed/extension.toml +0 -0
  50. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/distribution/zed/icons/mistral_vibe.svg +0 -0
  51. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/docs/README.md +0 -0
  52. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/docs/acp-setup.md +0 -0
  53. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/docs/proxy-setup.md +0 -0
  54. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/__init__.py +0 -0
  55. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/__init__.py +0 -0
  56. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/acp_agent_loop.py +0 -0
  57. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/acp_logger.py +0 -0
  58. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/entrypoint.py +0 -0
  59. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/__init__.py +0 -0
  60. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/base.py +0 -0
  61. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/builtins/bash.py +0 -0
  62. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/builtins/read_file.py +0 -0
  63. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/builtins/search_replace.py +0 -0
  64. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/builtins/todo.py +0 -0
  65. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/builtins/write_file.py +0 -0
  66. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/tools/session_update.py +0 -0
  67. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/acp/utils.py +0 -0
  68. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/__init__.py +0 -0
  69. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/autocompletion/__init__.py +0 -0
  70. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/autocompletion/base.py +0 -0
  71. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/autocompletion/path_completion.py +0 -0
  72. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/autocompletion/slash_command.py +0 -0
  73. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/cli.py +0 -0
  74. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/clipboard.py +0 -0
  75. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/commands.py +0 -0
  76. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/entrypoint.py +0 -0
  77. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/history_manager.py +0 -0
  78. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  79. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  80. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  81. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/terminal_setup.py +0 -0
  82. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/__init__.py +0 -0
  83. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  84. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/app.py +0 -0
  85. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/app.tcss +0 -0
  86. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/external_editor.py +0 -0
  87. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  88. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  89. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  90. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  91. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  92. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  93. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  94. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  95. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  96. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  97. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  98. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  99. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  100. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  101. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  102. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  103. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  104. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  105. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  106. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  107. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  108. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  109. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  110. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  111. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  112. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  113. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  114. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  115. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  116. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  117. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  118. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  119. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  120. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  121. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  122. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  123. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/windowing/history.py +0 -0
  124. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  125. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/textual_ui/windowing/state.py +0 -0
  126. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/__init__.py +0 -0
  127. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  128. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  129. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  130. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  131. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  132. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/update.py +0 -0
  133. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/cli/update_notifier/whats_new.py +0 -0
  134. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/__init__.py +0 -0
  135. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/agent_loop.py +0 -0
  136. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/agents/__init__.py +0 -0
  137. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/agents/manager.py +0 -0
  138. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/agents/models.py +0 -0
  139. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/auth/__init__.py +0 -0
  140. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/auth/crypto.py +0 -0
  141. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/auth/github.py +0 -0
  142. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/__init__.py +0 -0
  143. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/completers.py +0 -0
  144. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  145. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  146. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  147. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  148. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  149. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/fuzzy.py +0 -0
  150. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/path_prompt.py +0 -0
  151. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  152. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/build_orchestrator.py +0 -0
  153. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/config/__init__.py +0 -0
  154. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/config/_settings.py +0 -0
  155. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/config/harness_files/__init__.py +0 -0
  156. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  157. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/config/harness_files/_paths.py +0 -0
  158. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/consultant.py +0 -0
  159. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/drydock_states.py +0 -0
  160. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/hooks.py +0 -0
  161. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/__init__.py +0 -0
  162. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/anthropic.py +0 -0
  163. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/base.py +0 -0
  164. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/factory.py +0 -0
  165. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/generic.py +0 -0
  166. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/mistral.py +0 -0
  167. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  168. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/backend/vertex.py +0 -0
  169. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/exceptions.py +0 -0
  170. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/format.py +0 -0
  171. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/message_utils.py +0 -0
  172. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/llm/types.py +0 -0
  173. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/logger.py +0 -0
  174. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/middleware.py +0 -0
  175. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/output_formatters.py +0 -0
  176. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/paths/__init__.py +0 -0
  177. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/paths/_local_config_walk.py +0 -0
  178. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/paths/_vibe_home.py +0 -0
  179. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/paths/conventions.py +0 -0
  180. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/plan_session.py +0 -0
  181. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/plugins.py +0 -0
  182. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/programmatic.py +0 -0
  183. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/__init__.py +0 -0
  184. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/builder.md +0 -0
  185. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/cli.md +0 -0
  186. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/compact.md +0 -0
  187. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/dangerous_directory.md +0 -0
  188. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/diagnostic.md +0 -0
  189. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/explore.md +0 -0
  190. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/planner.md +0 -0
  191. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/project_context.md +0 -0
  192. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/prompts/tests.md +0 -0
  193. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/proxy_setup.py +0 -0
  194. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/agent_memory.py +0 -0
  195. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/checkpoints.py +0 -0
  196. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/session_loader.py +0 -0
  197. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/session_logger.py +0 -0
  198. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/session_migration.py +0 -0
  199. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/session/state_file.py +0 -0
  200. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/skills/__init__.py +0 -0
  201. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/skills/manager.py +0 -0
  202. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/skills/models.py +0 -0
  203. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/skills/parser.py +0 -0
  204. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/slug.py +0 -0
  205. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/system_prompt.py +0 -0
  206. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/telemetry/__init__.py +0 -0
  207. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/telemetry/send.py +0 -0
  208. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/teleport/errors.py +0 -0
  209. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/teleport/git.py +0 -0
  210. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/teleport/nuage.py +0 -0
  211. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/teleport/teleport.py +0 -0
  212. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/teleport/types.py +0 -0
  213. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/base.py +0 -0
  214. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  215. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/bash.py +0 -0
  216. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/cron.py +0 -0
  217. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  218. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/glob_tool.py +0 -0
  219. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/grep.py +0 -0
  220. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  221. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/lsp.py +0 -0
  222. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  223. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  224. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/powershell.py +0 -0
  225. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  226. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  227. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  228. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  229. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  230. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  231. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  232. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  233. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  234. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  235. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  236. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  237. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  238. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  239. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/task.md +0 -0
  240. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  241. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  242. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  243. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  244. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  245. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  246. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  247. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/read_file.py +0 -0
  248. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/search_replace.py +0 -0
  249. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/task.py +0 -0
  250. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/task_manager.py +0 -0
  251. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/todo.py +0 -0
  252. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/tool_search.py +0 -0
  253. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/webfetch.py +0 -0
  254. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/websearch.py +0 -0
  255. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/worktree.py +0 -0
  256. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/builtins/write_file.py +0 -0
  257. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/injection_guard.py +0 -0
  258. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/manager.py +0 -0
  259. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/mcp/__init__.py +0 -0
  260. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/mcp/registry.py +0 -0
  261. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/mcp/tools.py +0 -0
  262. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/mcp_sampling.py +0 -0
  263. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/ui.py +0 -0
  264. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/tools/utils.py +0 -0
  265. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/trusted_folders.py +0 -0
  266. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/types.py +0 -0
  267. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/core/utils.py +0 -0
  268. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/__init__.py +0 -0
  269. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/base.py +0 -0
  270. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/onboarding.tcss +0 -0
  271. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/screens/__init__.py +0 -0
  272. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/screens/api_key.py +0 -0
  273. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/onboarding/screens/welcome.py +0 -0
  274. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  275. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  276. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/__init__.py +0 -0
  277. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/batch/SKILL.md +0 -0
  278. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/create-presentation/SKILL.md +0 -0
  279. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/deep-research/SKILL.md +0 -0
  280. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/investigate/SKILL.md +0 -0
  281. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/review/SKILL.md +0 -0
  282. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/ship/SKILL.md +0 -0
  283. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/skills/simplify/SKILL.md +0 -0
  284. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock/whats_new.md +0 -0
  285. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock-acp.spec +0 -0
  286. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/drydock_terms.md +0 -0
  287. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/flake.lock +0 -0
  288. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/flake.nix +0 -0
  289. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/README.md +0 -0
  290. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/auto_test_loop.sh +0 -0
  291. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/backup.sh +0 -0
  292. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/bump_version.py +0 -0
  293. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/deploy_to_github.sh +0 -0
  294. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/install.sh +0 -0
  295. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/monitor_swebench.sh +0 -0
  296. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/monitor_test_battery.sh +0 -0
  297. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/notify_release.py +0 -0
  298. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/overnight_agents_test.sh +0 -0
  299. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/prepare_release.py +0 -0
  300. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/publish_to_pypi.sh +0 -0
  301. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/test_bank.sh +0 -0
  302. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/test_full.sh +0 -0
  303. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/scripts/test_smoke.sh +0 -0
  304. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/__init__.py +0 -0
  305. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/conftest.py +0 -0
  306. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_acp.py +0 -0
  307. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_agent_thought.py +0 -0
  308. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_bash.py +0 -0
  309. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_compact_session_updates.py +0 -0
  310. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_content.py +0 -0
  311. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_initialize.py +0 -0
  312. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_list_sessions.py +0 -0
  313. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_load_session.py +0 -0
  314. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_multi_session.py +0 -0
  315. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_new_session.py +0 -0
  316. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_proxy_setup_acp.py +0 -0
  317. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_read_file.py +0 -0
  318. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_search_replace.py +0 -0
  319. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_set_config_option.py +0 -0
  320. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_set_mode.py +0 -0
  321. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_set_model.py +0 -0
  322. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_tool_call_session_update.py +0 -0
  323. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_utils.py +0 -0
  324. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/acp/test_write_file.py +0 -0
  325. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_file_indexer.py +0 -0
  326. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_fuzzy.py +0 -0
  327. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  328. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  329. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_path_completion_controller.py +0 -0
  330. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  331. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_slash_command_controller.py +0 -0
  332. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  333. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/__init__.py +0 -0
  334. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/data/__init__.py +0 -0
  335. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/data/fireworks.py +0 -0
  336. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/data/mistral.py +0 -0
  337. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/test_anthropic_adapter.py +0 -0
  338. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/test_backend.py +0 -0
  339. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/test_reasoning_adapter.py +0 -0
  340. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  341. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  342. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  343. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  344. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_bell_notifications.py +0 -0
  345. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_braille_renderer.py +0 -0
  346. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_clipboard.py +0 -0
  347. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_commands.py +0 -0
  348. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_copy_shortcuts.py +0 -0
  349. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_external_editor.py +0 -0
  350. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_no_markup_static.py +0 -0
  351. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_question_app.py +0 -0
  352. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_spinner.py +0 -0
  353. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_switching_mode.py +0 -0
  354. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  355. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  356. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_ui_session_resume.py +0 -0
  357. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/test_ui_skill_dispatch.py +0 -0
  358. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/textual_ui/__init__.py +0 -0
  359. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/cli/textual_ui/test_session_picker.py +0 -0
  360. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/conftest.py +0 -0
  361. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_agents.py +0 -0
  362. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_auth_crypto.py +0 -0
  363. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_auth_github.py +0 -0
  364. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_config_load_dotenv.py +0 -0
  365. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_config_paths.py +0 -0
  366. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_config_resolution.py +0 -0
  367. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_file_logging.py +0 -0
  368. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_plan_session.py +0 -0
  369. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_proxy_setup.py +0 -0
  370. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_slug.py +0 -0
  371. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_telemetry_send.py +0 -0
  372. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_teleport_git.py +0 -0
  373. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_teleport_nuage.py +0 -0
  374. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_teleport_service.py +0 -0
  375. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_trusted_folders.py +0 -0
  376. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/core/test_utils.py +0 -0
  377. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/common.py +0 -0
  378. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/conftest.py +0 -0
  379. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/mock_server.py +0 -0
  380. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  381. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/test_cli_tui_streaming.py +0 -0
  382. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  383. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/mock/__init__.py +0 -0
  384. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/mock/mock_backend_factory.py +0 -0
  385. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/mock/mock_entrypoint.py +0 -0
  386. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/mock/utils.py +0 -0
  387. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/onboarding/test_run_onboarding.py +0 -0
  388. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/onboarding/test_ui_onboarding.py +0 -0
  389. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/session/test_session_loader.py +0 -0
  390. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/session/test_session_logger.py +0 -0
  391. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/session/test_session_migration.py +0 -0
  392. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/skills/conftest.py +0 -0
  393. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/skills/test_manager.py +0 -0
  394. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/skills/test_models.py +0 -0
  395. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/skills/test_parser.py +0 -0
  396. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  397. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  398. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  399. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  400. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  401. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  402. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  403. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  404. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  405. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  406. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  407. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  408. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  409. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  410. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  411. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  412. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  413. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  414. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  415. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  416. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  417. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  418. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  419. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  420. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  421. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  422. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  423. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  424. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  425. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  426. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  427. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  428. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  429. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  430. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  431. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  432. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  433. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  434. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  435. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  436. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  437. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  438. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  439. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  440. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  441. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  442. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  443. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  444. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  445. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  446. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  447. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  448. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  449. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  450. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  451. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  452. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  453. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  454. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  455. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  456. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/base_snapshot_test_app.py +0 -0
  457. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/conftest.py +0 -0
  458. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/snap_compare.py +0 -0
  459. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  460. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  461. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  462. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  463. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  464. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  465. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  466. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  467. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  468. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  469. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  470. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  471. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  472. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  473. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/stubs/fake_backend.py +0 -0
  474. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/stubs/fake_client.py +0 -0
  475. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/stubs/fake_tool.py +0 -0
  476. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_auto_compact.py +0 -0
  477. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_backend.py +0 -0
  478. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_observer_streaming.py +0 -0
  479. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_stats.py +0 -0
  480. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_tasks.py +0 -0
  481. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agent_tool_call.py +0 -0
  482. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_agents.py +0 -0
  483. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_build.py +0 -0
  484. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_debug.py +0 -0
  485. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_multiagent.py +0 -0
  486. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_prd.py +0 -0
  487. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_prd_extended.py +0 -0
  488. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_tools.py +0 -0
  489. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_bank_update.py +0 -0
  490. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_build_projects.py +0 -0
  491. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_cli_programmatic_preload.py +0 -0
  492. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_current_bugs.py +0 -0
  493. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_drydock_regression.py +0 -0
  494. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_drydock_tasks.py +0 -0
  495. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_full_regression.py +0 -0
  496. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_history_manager.py +0 -0
  497. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_integration.py +0 -0
  498. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_loop_detection.py +0 -0
  499. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_message_id.py +0 -0
  500. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_message_merging.py +0 -0
  501. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_middleware.py +0 -0
  502. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_multi_agent.py +0 -0
  503. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_real_failures.py +0 -0
  504. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_real_issues.py +0 -0
  505. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_real_workflow.py +0 -0
  506. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_reasoning_content.py +0 -0
  507. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_smoke.py +0 -0
  508. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_system_prompt.py +0 -0
  509. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_tagged_text.py +0 -0
  510. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_ui_external_editor.py +0 -0
  511. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_ui_input_history.py +0 -0
  512. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_user_issues.py +0 -0
  513. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/test_workloads.py +0 -0
  514. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/testbank_helpers.py +0 -0
  515. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_ask_user_question.py +0 -0
  516. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_bash.py +0 -0
  517. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_exit_plan_mode.py +0 -0
  518. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_grep.py +0 -0
  519. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_invoke_context.py +0 -0
  520. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_manager_get_tool_config.py +0 -0
  521. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_mcp.py +0 -0
  522. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_mcp_sampling.py +0 -0
  523. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_task.py +0 -0
  524. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_ui_bash_execution.py +0 -0
  525. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_webfetch.py +0 -0
  526. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/tools/test_websearch.py +0 -0
  527. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  528. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  529. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_do_update.py +0 -0
  530. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  531. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_github_update_gateway.py +0 -0
  532. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  533. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_ui_update_notification.py +0 -0
  534. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_update_use_case.py +0 -0
  535. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/tests/update_notifier/test_whats_new.py +0 -0
  536. {drydock_cli-2.3.1 → drydock_cli-2.3.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.3.1
3
+ Version: 2.3.2
4
4
  Summary: Drydock — nautical CLI coding agent
5
5
  Project-URL: Homepage, https://github.com/fbobe321/drydock
6
6
  Project-URL: Repository, https://github.com/fbobe321/drydock
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: api-design
3
+ description: Design and review REST/GraphQL APIs. Schema validation, endpoint design, error handling patterns.
4
+ allowed-tools: read_file grep glob write_file bash
5
+ user-invocable: true
6
+ ---
7
+
8
+ # API Design Review
9
+
10
+ Analyze or design an API ($ARGUMENTS).
11
+
12
+ ## For existing APIs:
13
+ 1. Find route/endpoint definitions
14
+ 2. Check for consistency in naming, HTTP methods, status codes
15
+ 3. Verify error handling and validation
16
+ 4. Check authentication/authorization
17
+ 5. Review request/response schemas
18
+
19
+ ## For new APIs:
20
+ 1. Define resources and relationships
21
+ 2. Design endpoints following REST conventions
22
+ 3. Define request/response schemas
23
+ 4. Plan error codes and messages
24
+ 5. Generate OpenAPI/Swagger spec if requested
25
+
26
+ ## Best Practices
27
+ - Use plural nouns for resources (/users, not /user)
28
+ - Use HTTP methods correctly (GET=read, POST=create, PUT=update, DELETE=delete)
29
+ - Return appropriate status codes (201 for create, 204 for delete)
30
+ - Use consistent error format: `{"error": {"code": "...", "message": "..."}}`
31
+ - Version the API (/v1/, /v2/)
32
+ - Paginate list endpoints
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: commit-code
3
+ description: Create a git commit with a well-crafted message. Stages changes, reviews diff, writes conventional commit.
4
+ allowed-tools: bash read_file grep
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Commit Workflow
9
+
10
+ 1. Run `git status` and `git diff --stat` to see what changed
11
+ 2. Run `git diff` to read the actual changes (limit to 200 lines)
12
+ 3. Write a commit message following conventional commits:
13
+ - `fix:` for bug fixes
14
+ - `feat:` for new features
15
+ - `refactor:` for refactoring
16
+ - `docs:` for documentation
17
+ - `test:` for test changes
18
+ - `chore:` for maintenance
19
+ 4. Stage relevant files with `git add` (specific files, not -A)
20
+ 5. Create the commit with `git commit -m "message"`
21
+ 6. Show `git log --oneline -3` to confirm
22
+
23
+ Rules:
24
+ - NEVER commit .env, credentials, or secrets
25
+ - Keep the first line under 72 characters
26
+ - Add a body if the change is complex
27
+ - If $ARGUMENTS is provided, use it as context for the commit message
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: context-summary
3
+ description: Summarize the current session context. What files were read, edited, what's the current state.
4
+ allowed-tools: bash read_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Context Summary
9
+
10
+ Produce a summary of the current working state:
11
+
12
+ 1. **Git status**: `git status --short`
13
+ 2. **Recent changes**: `git diff --stat`
14
+ 3. **Recent commits**: `git log --oneline -5`
15
+ 4. **Modified files**: List files changed in this session
16
+ 5. **Current task**: What was the user's original request?
17
+ 6. **Progress**: What's been done, what remains?
18
+
19
+ Output as a clean summary the user can quickly scan.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: deploy
3
+ description: Deployment workflow. Build, test, tag, push, deploy. Supports PyPI, Docker, GitHub releases.
4
+ allowed-tools: bash read_file grep
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Deployment Workflow
9
+
10
+ ## Steps
11
+ 1. Run tests: `python -m pytest -x -q`
12
+ 2. Check version in pyproject.toml or setup.py
13
+ 3. Build: `python -m build` or `docker build .`
14
+ 4. Deploy based on target ($ARGUMENTS):
15
+ - **pypi**: `twine upload dist/*`
16
+ - **docker**: `docker push`
17
+ - **github**: `gh release create`
18
+ - **server**: `rsync` or `ssh` deploy
19
+ 5. Tag: `git tag vX.Y.Z && git push --tags`
20
+ 6. Notify: output deployment summary
21
+
22
+ ## Rules
23
+ - ALWAYS run tests before deploying
24
+ - NEVER deploy with uncommitted changes
25
+ - Check that version was bumped
26
+ - Verify the deployment succeeded
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: diff-review
3
+ description: Show and analyze uncommitted changes. Summarize what changed and why.
4
+ allowed-tools: bash read_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Diff Review
9
+
10
+ 1. Show uncommitted changes: `git diff --stat`
11
+ 2. Show the full diff: `git diff`
12
+ 3. For each changed file, analyze:
13
+ - What was the intent of the change?
14
+ - Is the change correct and complete?
15
+ - Any issues or improvements?
16
+ 4. Provide a summary suitable for a commit message
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: doc-gen
3
+ description: Generate documentation for code. Docstrings, README, API docs, usage examples.
4
+ allowed-tools: read_file grep glob search_replace write_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Documentation Generator
9
+
10
+ Generate documentation for the specified code ($ARGUMENTS or current project).
11
+
12
+ ## Modes
13
+ 1. **Docstrings**: Add/update docstrings for functions, classes, methods
14
+ 2. **README**: Generate or update README.md with usage, installation, API
15
+ 3. **API docs**: Generate API reference documentation
16
+ 4. **Examples**: Create usage examples
17
+
18
+ ## Workflow
19
+ 1. Read the source files to document
20
+ 2. Understand the public API (exported functions, classes)
21
+ 3. Generate documentation in the appropriate format
22
+ 4. Write the documentation files
23
+
24
+ ## Rules
25
+ - Follow Google-style or NumPy-style docstrings (match existing style)
26
+ - Include type hints in docstrings if not in code
27
+ - Document parameters, return values, exceptions
28
+ - Add usage examples for non-obvious functions
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: explain-code
3
+ description: Explain code in detail. What it does, how it works, why it's written that way.
4
+ allowed-tools: read_file grep glob
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Code Explanation
9
+
10
+ Explain the code specified in $ARGUMENTS (file path, function name, or concept).
11
+
12
+ ## Approach
13
+ 1. Find and read the relevant code
14
+ 2. Explain at three levels:
15
+ - **What**: One sentence summary of what this code does
16
+ - **How**: Step-by-step walkthrough of the logic
17
+ - **Why**: Design decisions, tradeoffs, alternatives
18
+ 3. Call out any:
19
+ - Non-obvious patterns or idioms
20
+ - Potential gotchas or edge cases
21
+ - Performance characteristics
22
+ - Dependencies on other parts of the codebase
23
+
24
+ ## Format
25
+ Keep explanations clear and concise. Use code snippets to reference specific lines.
26
+ Adjust detail level to the complexity — simple code gets a brief explanation,
27
+ complex algorithms get detailed walkthroughs.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: explore-code
3
+ description: Structured codebase exploration. Map architecture, find entry points, understand dependencies.
4
+ allowed-tools: bash read_file grep glob
5
+ context: fork
6
+ agent: explore
7
+ user-invocable: true
8
+ ---
9
+
10
+ # Codebase Exploration
11
+
12
+ 1. **Structure**: List top-level directories and key files
13
+ - `find . -maxdepth 2 -type f -name "*.py" | head -30`
14
+ - Look for: README, setup.py/pyproject.toml, main entry points
15
+
16
+ 2. **Entry points**: Find how the code starts
17
+ - Look for __main__.py, cli.py, app.py, manage.py
18
+ - Read the main entry point (first 50 lines)
19
+
20
+ 3. **Architecture**: Map the module structure
21
+ - List packages (directories with __init__.py)
22
+ - Identify the core modules vs utilities vs tests
23
+
24
+ 4. **Dependencies**: Check what's imported
25
+ - `grep -r "^import\|^from" --include="*.py" | sort -u | head -30`
26
+ - Check requirements.txt or pyproject.toml dependencies
27
+
28
+ 5. **Tests**: Find the test structure
29
+ - `find . -name "test_*.py" -o -name "*_test.py" | head -20`
30
+
31
+ 6. **Report**: Summarize findings in this format:
32
+ ```
33
+ PROJECT: name
34
+ LANGUAGE: Python X.Y
35
+ STRUCTURE: package/module layout
36
+ ENTRY POINTS: main files
37
+ KEY MODULES: core functionality
38
+ TEST FRAMEWORK: pytest/unittest/etc
39
+ DEPENDENCIES: key external deps
40
+ ```
41
+
42
+ If $ARGUMENTS is provided, focus exploration on that specific area.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: fix-issue
3
+ description: Structured bug fix workflow. Locate, hypothesize, fix, verify. Designed for SWE-bench style tasks.
4
+ allowed-tools: bash read_file grep glob search_replace write_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Fix Issue Workflow
9
+
10
+ ## Phase 1: Locate
11
+ 1. Grep for the class/function/error mentioned in the bug description
12
+ 2. Read the relevant source file (use offset/limit, 50-100 lines)
13
+ 3. Identify the root cause — which line(s) need to change
14
+
15
+ ## Phase 2: Hypothesize
16
+ 4. Form a hypothesis: "The bug is caused by X because Y"
17
+ 5. Identify the minimal fix — usually 1-5 lines in 1 file
18
+
19
+ ## Phase 3: Fix
20
+ 6. Apply the fix with search_replace (exact text match)
21
+ 7. If search_replace fails, re-read the file first, then retry with EXACT text
22
+ 8. Read back the changed lines to verify the edit applied
23
+
24
+ ## Phase 4: Verify
25
+ 9. Run relevant tests if available: `python -m pytest <test_file> -x -q`
26
+ 10. If tests pass, done. If tests fail, read the failure and iterate.
27
+
28
+ ## Rules
29
+ - NEVER edit test files — the bug is in source code
30
+ - Keep changes minimal — no refactoring
31
+ - A wrong fix attempt is better than no fix
32
+ - Maximum 3 fix attempts before trying a different approach
33
+ - If $ARGUMENTS provided, treat it as the bug description
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: git-ops
3
+ description: Git operations helper. Branching, merging, rebasing, conflict resolution, history analysis.
4
+ allowed-tools: bash read_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Git Operations
9
+
10
+ Handle git tasks based on $ARGUMENTS:
11
+
12
+ ## Common Operations
13
+ - **branch**: `git checkout -b feature/$0`
14
+ - **merge**: `git merge $0` with conflict resolution
15
+ - **rebase**: `git rebase $0` — fix conflicts if any
16
+ - **stash**: `git stash` / `git stash pop`
17
+ - **cherry-pick**: `git cherry-pick $0`
18
+ - **log**: `git log --oneline --graph -20`
19
+ - **blame**: `git blame $0`
20
+ - **bisect**: Binary search for the commit that introduced a bug
21
+ - **clean**: `git clean -fd` (with confirmation)
22
+
23
+ ## Conflict Resolution
24
+ 1. Show conflicted files: `git diff --name-only --diff-filter=U`
25
+ 2. For each conflict, read the file and resolve
26
+ 3. Stage resolved files: `git add <file>`
27
+ 4. Continue: `git rebase --continue` or `git merge --continue`
28
+
29
+ ## Rules
30
+ - NEVER force push to main/master
31
+ - Always stash before destructive operations
32
+ - Show the user what will happen before doing it
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: init-project
3
+ description: Initialize a new project with standard structure, README, tests, CI config.
4
+ allowed-tools: bash write_file read_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Project Initialization
9
+
10
+ Create a new project with standard Python structure.
11
+
12
+ 1. Create directory structure:
13
+ ```
14
+ $0/
15
+ ├── $0/
16
+ │ ├── __init__.py
17
+ │ ├── __main__.py
18
+ │ └── cli.py
19
+ ├── tests/
20
+ │ ├── __init__.py
21
+ │ └── test_$0.py
22
+ ├── pyproject.toml
23
+ ├── README.md
24
+ └── .gitignore
25
+ ```
26
+ 2. Write pyproject.toml with project metadata
27
+ 3. Write a basic README.md
28
+ 4. Write __init__.py with version
29
+ 5. Write __main__.py entry point
30
+ 6. Write a sample test
31
+ 7. Initialize git: `git init && git add -A && git commit -m "Initial commit"`
32
+
33
+ If $ARGUMENTS specifies a framework (flask, fastapi, django), adapt the structure.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: loop
3
+ description: Run a prompt repeatedly on an interval. Useful for monitoring, polling, or iterative tasks.
4
+ allowed-tools: bash read_file grep glob search_replace write_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Loop Execution
9
+
10
+ Run the given task repeatedly. Usage: `/loop [interval_seconds] <task>`
11
+
12
+ Default interval: 60 seconds.
13
+
14
+ 1. Parse interval from $0 (if numeric), otherwise default to 60
15
+ 2. Execute the task: $ARGUMENTS
16
+ 3. Wait for the interval
17
+ 4. Repeat until interrupted or task reports completion
18
+
19
+ ## Common uses:
20
+ - `/loop 30 check if the build passed` — poll CI every 30s
21
+ - `/loop 60 run tests and fix failures` — continuous test-fix loop
22
+ - `/loop 120 check PR comments and respond` — monitor PR
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: migrate
3
+ description: Help with code migrations. Python version upgrades, framework migrations, dependency updates.
4
+ allowed-tools: bash read_file grep glob search_replace write_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Migration Helper
9
+
10
+ Assist with migrating code ($ARGUMENTS describes the migration).
11
+
12
+ ## Common Migrations
13
+ - **Python 2→3**: Fix print statements, dict methods, string handling
14
+ - **Django version**: Update deprecated APIs, new settings
15
+ - **Flask→FastAPI**: Convert routes, add async, update schemas
16
+ - **unittest→pytest**: Convert test classes, assertions, fixtures
17
+ - **requirements.txt→pyproject.toml**: Convert dependency format
18
+ - **JavaScript→TypeScript**: Add types, rename files
19
+
20
+ ## Workflow
21
+ 1. Identify what needs to change (grep for deprecated patterns)
22
+ 2. Plan the migration order (dependencies first)
23
+ 3. Apply changes file by file
24
+ 4. Run tests after each file
25
+ 5. Fix any breakage
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: perf-analyze
3
+ description: Performance analysis. Profile code, find bottlenecks, suggest optimizations.
4
+ allowed-tools: bash read_file grep glob
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Performance Analysis
9
+
10
+ Analyze code performance for $ARGUMENTS (or recent changes).
11
+
12
+ ## Steps
13
+ 1. Identify hot paths — which functions are called most?
14
+ 2. Look for common performance issues:
15
+ - N+1 queries (loops with database calls)
16
+ - Unnecessary list copies/conversions
17
+ - Missing caching for repeated computations
18
+ - Blocking I/O in async code
19
+ - Large memory allocations in loops
20
+ - String concatenation in loops (use join)
21
+ 3. Profile if possible: `python -m cProfile -s cumtime script.py 2>&1 | head -30`
22
+ 4. Suggest specific optimizations with before/after examples
23
+
24
+ ## Output
25
+ ### Bottlenecks Found
26
+ - [file:line] Description — estimated impact
27
+
28
+ ### Recommended Optimizations
29
+ 1. [Change] — expected improvement
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: plan-impl
3
+ description: Create a detailed implementation plan before coding. Identifies files, dependencies, order of changes.
4
+ allowed-tools: read_file grep glob
5
+ context: fork
6
+ agent: planner
7
+ user-invocable: true
8
+ ---
9
+
10
+ # Implementation Planning
11
+
12
+ Given a task description ($ARGUMENTS), create a comprehensive plan.
13
+
14
+ ## Steps
15
+ 1. Analyze the requirements
16
+ 2. Explore the existing codebase to understand constraints
17
+ 3. Identify all files that need to be created or modified
18
+ 4. Determine the order of changes (dependencies first)
19
+ 5. Estimate complexity per file
20
+
21
+ ## Output Format
22
+ ```
23
+ # Implementation Plan: [title]
24
+
25
+ ## Overview
26
+ [1-2 sentence summary]
27
+
28
+ ## Files to Change
29
+ 1. `path/to/file.py` — [what changes] (complexity: low/med/high)
30
+ 2. `path/to/other.py` — [what changes] (complexity: low/med/high)
31
+
32
+ ## New Files
33
+ 1. `path/to/new.py` — [purpose]
34
+
35
+ ## Order of Implementation
36
+ 1. [first thing to do and why]
37
+ 2. [second thing]
38
+ 3. [etc]
39
+
40
+ ## Risks & Considerations
41
+ - [potential issues]
42
+
43
+ ## Testing Strategy
44
+ - [how to verify the changes work]
45
+ ```
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: pr-review
3
+ description: Review a pull request. Fetches diff, analyzes changes, checks for bugs, security issues, and style.
4
+ allowed-tools: bash read_file grep glob
5
+ user-invocable: true
6
+ ---
7
+
8
+ # PR Review Workflow
9
+
10
+ 1. Get the PR diff: `git diff main...HEAD` (or `!`git diff main...HEAD``)
11
+ 2. List changed files: `git diff --name-only main...HEAD`
12
+ 3. For each changed file:
13
+ a. Read the full diff for that file
14
+ b. Check for: bugs, security issues, performance problems, missing error handling
15
+ c. Check for: style consistency, naming conventions, dead code
16
+ 4. Produce a structured review:
17
+
18
+ ## Review Output Format
19
+ ### Critical Issues (must fix)
20
+ - [file:line] Description of issue
21
+
22
+ ### Suggestions (should fix)
23
+ - [file:line] Description of improvement
24
+
25
+ ### Nits (optional)
26
+ - [file:line] Minor style/preference items
27
+
28
+ ### Summary
29
+ - Overall assessment: APPROVE / REQUEST_CHANGES / COMMENT
30
+ - One paragraph summary of the changes
31
+
32
+ If $0 is a PR number, fetch it with: `gh pr diff $0`
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: refactor
3
+ description: Structured code refactoring. Identify patterns, plan changes, apply safely, verify.
4
+ allowed-tools: bash read_file grep glob search_replace write_file
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Refactoring Workflow
9
+
10
+ ## Phase 1: Understand
11
+ 1. Read the code to refactor (specified in $ARGUMENTS or recent changes)
12
+ 2. Identify the refactoring type:
13
+ - Extract function/method
14
+ - Rename variable/function/class
15
+ - Simplify conditionals
16
+ - Remove duplication
17
+ - Split large function
18
+ - Move code to better location
19
+
20
+ ## Phase 2: Plan
21
+ 3. List every file that will change
22
+ 4. For each file, describe the specific change
23
+ 5. Identify risks: what could break?
24
+
25
+ ## Phase 3: Apply
26
+ 6. Make changes one file at a time with search_replace
27
+ 7. After each change, verify syntax: `python -c "import ast; ast.parse(open('file').read())"`
28
+
29
+ ## Phase 4: Verify
30
+ 8. Run tests if available
31
+ 9. Check imports still resolve
32
+ 10. Verify no functionality changed (refactor = same behavior, better structure)
33
+
34
+ ## Rules
35
+ - One refactoring at a time — don't combine multiple refactors
36
+ - Preserve all existing behavior
37
+ - Run tests after each change
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: regex-help
3
+ description: Build, explain, and test regular expressions. Supports Python re module syntax.
4
+ allowed-tools: bash
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Regex Helper
9
+
10
+ Help with regular expressions based on $ARGUMENTS.
11
+
12
+ ## Modes
13
+ - **Build**: "match email addresses" → provide the regex
14
+ - **Explain**: Given a regex, explain what it matches
15
+ - **Test**: Test a regex against sample strings
16
+ - **Debug**: Fix a regex that's not matching correctly
17
+
18
+ ## Testing
19
+ ```python
20
+ python3 -c "
21
+ import re
22
+ pattern = r'YOUR_REGEX'
23
+ tests = ['test1', 'test2', 'test3']
24
+ for t in tests:
25
+ m = re.search(pattern, t)
26
+ print(f'{t!r}: {\"MATCH\" if m else \"no match\"} {m.groups() if m else \"\"}' )
27
+ "
28
+ ```
29
+
30
+ Always provide the regex in Python `re` module syntax with raw strings (r'...').
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: security-review
3
+ description: Security audit of code changes. Checks OWASP Top 10, secrets, injection, auth issues.
4
+ allowed-tools: bash read_file grep glob
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Security Review
9
+
10
+ Analyze the current changes (or specified files) for security vulnerabilities.
11
+
12
+ ## Checks
13
+ 1. **Secrets/Credentials**: grep for API keys, passwords, tokens, private keys
14
+ - `grep -rn "password\|secret\|api_key\|token\|private_key\|AWS_" --include="*.py" | head -20`
15
+ 2. **SQL Injection**: Look for string formatting in SQL queries
16
+ - `grep -rn "f\".*SELECT\|\.format.*SELECT\|%.*SELECT" --include="*.py"`
17
+ 3. **Command Injection**: Look for shell=True, os.system, subprocess with user input
18
+ - `grep -rn "shell=True\|os\.system\|subprocess.*shell" --include="*.py"`
19
+ 4. **XSS**: Look for unescaped user input in HTML/templates
20
+ 5. **Path Traversal**: Look for user-controlled file paths without sanitization
21
+ 6. **Auth/AuthZ**: Check for missing authentication or authorization checks
22
+ 7. **Sensitive Data**: Check logging for PII, credentials in error messages
23
+ 8. **Dependencies**: Check for known vulnerable packages
24
+
25
+ ## Output Format
26
+ ### CRITICAL (immediate fix required)
27
+ ### HIGH (fix before merge)
28
+ ### MEDIUM (fix soon)
29
+ ### LOW (informational)
30
+
31
+ Each finding: [SEVERITY] file:line — description + recommended fix
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: test-verify
3
+ description: Run tests, parse failures, fix failing tests. Structured test-driven debugging.
4
+ allowed-tools: bash read_file grep search_replace
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Test Verification Workflow
9
+
10
+ 1. Discover test framework: look for pytest.ini, setup.cfg, tox.ini, or pyproject.toml
11
+ 2. Run tests: `python -m pytest $ARGUMENTS -x -q --tb=short 2>&1 | head -50`
12
+ 3. Parse the output:
13
+ - Count: passed, failed, errors, skipped
14
+ - For each failure: extract test name, file, line, assertion message
15
+ 4. For each failing test:
16
+ a. Read the test code to understand what it expects
17
+ b. Read the source code it tests
18
+ c. Identify the mismatch
19
+ d. Fix the source (not the test) with search_replace
20
+ 5. Re-run the failing test to verify: `python -m pytest <test_file>::<test_name> -x -q`
21
+ 6. Report results
22
+
23
+ ## Rules
24
+ - Fix source code, not tests (unless the test itself is wrong)
25
+ - Run only the specific failing test when verifying, not the full suite
26
+ - If a test fails due to environment issues (missing deps), report it instead of fixing
27
+ - Maximum 3 iterations per failing test
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.3.1"
3
+ version = "2.3.2"
4
4
  description = "Drydock — nautical CLI coding agent"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
File without changes
File without changes
File without changes