drydock-cli 2.6.6__tar.gz → 2.6.8__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 (553) hide show
  1. drydock_cli-2.6.8/.auto_release.lock +1 -0
  2. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/PKG-INFO +1 -1
  3. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/cli.py +7 -3
  4. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/app.py +10 -2
  5. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/agent_loop.py +4 -4
  6. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/gemma4.md +1 -1
  7. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/manager.py +1 -1
  8. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/pyproject.toml +1 -1
  9. drydock_cli-2.6.8/tests/test_user_issues.py +67 -0
  10. drydock_cli-2.6.6/.auto_release.lock +0 -1
  11. drydock_cli-2.6.6/tests/test_user_issues.py +0 -265
  12. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/CODEOWNERS +0 -0
  13. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  14. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  15. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  16. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/workflows/build-and-upload.yml +0 -0
  17. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/workflows/ci.yml +0 -0
  18. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/workflows/issue-labeler.yml +0 -0
  19. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.github/workflows/release.yml +0 -0
  20. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.gitignore +0 -0
  21. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.pre-commit-config.yaml +0 -0
  22. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.python-version +0 -0
  23. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.typos.toml +0 -0
  24. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.vscode/extensions.json +0 -0
  25. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.vscode/launch.json +0 -0
  26. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/.vscode/settings.json +0 -0
  27. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/AGENTS.md +0 -0
  28. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/CHANGELOG.md +0 -0
  29. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/CLAUDE.md +0 -0
  30. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/CONTRIBUTING.md +0 -0
  31. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/Drydock_rebrand.md +0 -0
  32. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/LICENSE +0 -0
  33. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/NOTICE +0 -0
  34. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/PRD.md +0 -0
  35. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/README.md +0 -0
  36. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/action.yml +0 -0
  37. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/distribution/zed/LICENSE +0 -0
  38. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/distribution/zed/extension.toml +0 -0
  39. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/distribution/zed/icons/mistral_vibe.svg +0 -0
  40. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/docs/README.md +0 -0
  41. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/docs/acp-setup.md +0 -0
  42. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/docs/proxy-setup.md +0 -0
  43. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/__init__.py +0 -0
  44. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/__init__.py +0 -0
  45. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/acp_agent_loop.py +0 -0
  46. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/acp_logger.py +0 -0
  47. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/entrypoint.py +0 -0
  48. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/__init__.py +0 -0
  49. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/base.py +0 -0
  50. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/builtins/bash.py +0 -0
  51. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/builtins/read_file.py +0 -0
  52. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/builtins/search_replace.py +0 -0
  53. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/builtins/todo.py +0 -0
  54. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/builtins/write_file.py +0 -0
  55. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/tools/session_update.py +0 -0
  56. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/acp/utils.py +0 -0
  57. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/__init__.py +0 -0
  58. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/autocompletion/__init__.py +0 -0
  59. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/autocompletion/base.py +0 -0
  60. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/autocompletion/path_completion.py +0 -0
  61. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/autocompletion/slash_command.py +0 -0
  62. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/clipboard.py +0 -0
  63. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/commands.py +0 -0
  64. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/entrypoint.py +0 -0
  65. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/history_manager.py +0 -0
  66. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  67. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  68. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  69. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/terminal_setup.py +0 -0
  70. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/__init__.py +0 -0
  71. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  72. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/app.tcss +0 -0
  73. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/external_editor.py +0 -0
  74. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  75. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  76. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  77. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  78. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  79. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  80. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  81. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  82. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  83. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  84. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  85. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  86. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  87. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  88. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  89. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  90. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  91. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  92. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  93. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  94. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  95. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  96. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  97. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  98. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  99. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  100. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  101. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  102. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  103. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  104. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  105. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  106. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  107. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  108. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  109. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  110. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/windowing/history.py +0 -0
  111. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  112. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/textual_ui/windowing/state.py +0 -0
  113. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/__init__.py +0 -0
  114. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  115. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  116. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  117. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  118. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  119. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/update.py +0 -0
  120. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/cli/update_notifier/whats_new.py +0 -0
  121. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/__init__.py +0 -0
  122. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/agents/__init__.py +0 -0
  123. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/agents/manager.py +0 -0
  124. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/agents/models.py +0 -0
  125. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/auth/__init__.py +0 -0
  126. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/auth/crypto.py +0 -0
  127. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/auth/github.py +0 -0
  128. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/__init__.py +0 -0
  129. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/completers.py +0 -0
  130. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  131. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  132. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  133. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  134. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  135. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/fuzzy.py +0 -0
  136. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/path_prompt.py +0 -0
  137. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  138. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/build_orchestrator.py +0 -0
  139. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/config/__init__.py +0 -0
  140. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/config/_settings.py +0 -0
  141. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/config/harness_files/__init__.py +0 -0
  142. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  143. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/config/harness_files/_paths.py +0 -0
  144. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/consultant.py +0 -0
  145. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/drydock_states.py +0 -0
  146. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/hooks.py +0 -0
  147. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/__init__.py +0 -0
  148. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/anthropic.py +0 -0
  149. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/base.py +0 -0
  150. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/factory.py +0 -0
  151. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/generic.py +0 -0
  152. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/mistral.py +0 -0
  153. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  154. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/backend/vertex.py +0 -0
  155. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/exceptions.py +0 -0
  156. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/format.py +0 -0
  157. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/message_utils.py +0 -0
  158. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/llm/types.py +0 -0
  159. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/logger.py +0 -0
  160. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/middleware.py +0 -0
  161. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/output_formatters.py +0 -0
  162. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/paths/__init__.py +0 -0
  163. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/paths/_local_config_walk.py +0 -0
  164. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/paths/_vibe_home.py +0 -0
  165. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/paths/conventions.py +0 -0
  166. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/plan_session.py +0 -0
  167. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/plugins.py +0 -0
  168. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/programmatic.py +0 -0
  169. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/__init__.py +0 -0
  170. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/builder.md +0 -0
  171. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/cli.md +0 -0
  172. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/compact.md +0 -0
  173. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/dangerous_directory.md +0 -0
  174. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/diagnostic.md +0 -0
  175. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/explore.md +0 -0
  176. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/planner.md +0 -0
  177. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/project_context.md +0 -0
  178. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/prompts/tests.md +0 -0
  179. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/proxy_setup.py +0 -0
  180. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/agent_memory.py +0 -0
  181. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/checkpoints.py +0 -0
  182. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/session_loader.py +0 -0
  183. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/session_logger.py +0 -0
  184. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/session_migration.py +0 -0
  185. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session/state_file.py +0 -0
  186. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/session_checker.py +0 -0
  187. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/skills/__init__.py +0 -0
  188. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/skills/manager.py +0 -0
  189. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/skills/models.py +0 -0
  190. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/skills/parser.py +0 -0
  191. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/slug.py +0 -0
  192. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/system_prompt.py +0 -0
  193. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/telemetry/__init__.py +0 -0
  194. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/telemetry/send.py +0 -0
  195. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/teleport/errors.py +0 -0
  196. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/teleport/git.py +0 -0
  197. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/teleport/nuage.py +0 -0
  198. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/teleport/teleport.py +0 -0
  199. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/teleport/types.py +0 -0
  200. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/base.py +0 -0
  201. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  202. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/bash.py +0 -0
  203. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/cron.py +0 -0
  204. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  205. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/glob_tool.py +0 -0
  206. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/grep.py +0 -0
  207. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  208. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/lsp.py +0 -0
  209. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  210. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  211. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/powershell.py +0 -0
  212. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  213. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  214. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  215. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  216. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  217. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  218. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  219. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  220. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  221. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  222. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  223. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  224. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  225. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  226. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/task.md +0 -0
  227. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  228. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  229. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  230. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  231. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  232. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  233. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  234. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/read_file.py +0 -0
  235. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/search_replace.py +0 -0
  236. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/task.py +0 -0
  237. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/task_manager.py +0 -0
  238. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/todo.py +0 -0
  239. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/tool_search.py +0 -0
  240. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/webfetch.py +0 -0
  241. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/websearch.py +0 -0
  242. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/worktree.py +0 -0
  243. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/builtins/write_file.py +0 -0
  244. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/injection_guard.py +0 -0
  245. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/mcp/__init__.py +0 -0
  246. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/mcp/registry.py +0 -0
  247. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/mcp/tools.py +0 -0
  248. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/mcp_sampling.py +0 -0
  249. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/ui.py +0 -0
  250. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/tools/utils.py +0 -0
  251. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/trusted_folders.py +0 -0
  252. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/types.py +0 -0
  253. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/core/utils.py +0 -0
  254. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/__init__.py +0 -0
  255. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/base.py +0 -0
  256. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/onboarding.tcss +0 -0
  257. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/screens/__init__.py +0 -0
  258. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/screens/api_key.py +0 -0
  259. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/onboarding/screens/welcome.py +0 -0
  260. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  261. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  262. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/__init__.py +0 -0
  263. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/api-design/SKILL.md +0 -0
  264. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/batch/SKILL.md +0 -0
  265. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/commit-code/SKILL.md +0 -0
  266. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/context-summary/SKILL.md +0 -0
  267. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/create-presentation/SKILL.md +0 -0
  268. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/deep-research/SKILL.md +0 -0
  269. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/deploy/SKILL.md +0 -0
  270. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/diff-review/SKILL.md +0 -0
  271. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/doc-gen/SKILL.md +0 -0
  272. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/explain-code/SKILL.md +0 -0
  273. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/explore-code/SKILL.md +0 -0
  274. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/fix-issue/SKILL.md +0 -0
  275. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/git-ops/SKILL.md +0 -0
  276. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/init-project/SKILL.md +0 -0
  277. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/investigate/SKILL.md +0 -0
  278. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/loop/SKILL.md +0 -0
  279. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/migrate/SKILL.md +0 -0
  280. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/perf-analyze/SKILL.md +0 -0
  281. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/plan-impl/SKILL.md +0 -0
  282. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/pr-review/SKILL.md +0 -0
  283. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/refactor/SKILL.md +0 -0
  284. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/regex-help/SKILL.md +0 -0
  285. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/review/SKILL.md +0 -0
  286. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/security-review/SKILL.md +0 -0
  287. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/ship/SKILL.md +0 -0
  288. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/simplify/SKILL.md +0 -0
  289. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/skills/test-verify/SKILL.md +0 -0
  290. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock/whats_new.md +0 -0
  291. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock-acp.spec +0 -0
  292. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/drydock_terms.md +0 -0
  293. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/flake.lock +0 -0
  294. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/flake.nix +0 -0
  295. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/log_analyzer/__init__.py +0 -0
  296. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/log_analyzer/__main__.py +0 -0
  297. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/log_analyzer/analyzer.py +0 -0
  298. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/log_analyzer/cli.py +0 -0
  299. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/README.md +0 -0
  300. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/auto_release.sh +0 -0
  301. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/auto_test_loop.sh +0 -0
  302. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/backup.sh +0 -0
  303. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/bump_version.py +0 -0
  304. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/deploy_to_github.sh +0 -0
  305. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/discover_cli_tools.sh +0 -0
  306. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/install.sh +0 -0
  307. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/llm_balancer.py +0 -0
  308. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/monitor_swebench.sh +0 -0
  309. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/monitor_test_battery.sh +0 -0
  310. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/notify_release.py +0 -0
  311. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/overnight_agents_test.sh +0 -0
  312. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/prepare_release.py +0 -0
  313. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/publish_to_pypi.sh +0 -0
  314. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/telegram_bot.py +0 -0
  315. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/test_bank.sh +0 -0
  316. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/test_full.sh +0 -0
  317. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/test_smoke.sh +0 -0
  318. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/test_tui_path.py +0 -0
  319. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/tui_test.py +0 -0
  320. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/scripts/vllm_failover.sh +0 -0
  321. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/__init__.py +0 -0
  322. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/conftest.py +0 -0
  323. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_acp.py +0 -0
  324. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_agent_thought.py +0 -0
  325. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_bash.py +0 -0
  326. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_compact_session_updates.py +0 -0
  327. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_content.py +0 -0
  328. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_initialize.py +0 -0
  329. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_list_sessions.py +0 -0
  330. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_load_session.py +0 -0
  331. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_multi_session.py +0 -0
  332. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_new_session.py +0 -0
  333. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_proxy_setup_acp.py +0 -0
  334. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_read_file.py +0 -0
  335. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_search_replace.py +0 -0
  336. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_set_config_option.py +0 -0
  337. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_set_mode.py +0 -0
  338. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_set_model.py +0 -0
  339. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_tool_call_session_update.py +0 -0
  340. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_utils.py +0 -0
  341. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/acp/test_write_file.py +0 -0
  342. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_file_indexer.py +0 -0
  343. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_fuzzy.py +0 -0
  344. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  345. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  346. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_path_completion_controller.py +0 -0
  347. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  348. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_slash_command_controller.py +0 -0
  349. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  350. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/__init__.py +0 -0
  351. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/data/__init__.py +0 -0
  352. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/data/fireworks.py +0 -0
  353. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/data/mistral.py +0 -0
  354. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/test_anthropic_adapter.py +0 -0
  355. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/test_backend.py +0 -0
  356. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/test_reasoning_adapter.py +0 -0
  357. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  358. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  359. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  360. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  361. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_bell_notifications.py +0 -0
  362. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_braille_renderer.py +0 -0
  363. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_clipboard.py +0 -0
  364. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_commands.py +0 -0
  365. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_copy_shortcuts.py +0 -0
  366. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_external_editor.py +0 -0
  367. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_no_markup_static.py +0 -0
  368. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_question_app.py +0 -0
  369. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_spinner.py +0 -0
  370. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_switching_mode.py +0 -0
  371. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  372. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  373. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_ui_session_resume.py +0 -0
  374. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/test_ui_skill_dispatch.py +0 -0
  375. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/textual_ui/__init__.py +0 -0
  376. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/cli/textual_ui/test_session_picker.py +0 -0
  377. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/conftest.py +0 -0
  378. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_agents.py +0 -0
  379. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_auth_crypto.py +0 -0
  380. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_auth_github.py +0 -0
  381. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_config_load_dotenv.py +0 -0
  382. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_config_paths.py +0 -0
  383. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_config_resolution.py +0 -0
  384. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_file_logging.py +0 -0
  385. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_plan_session.py +0 -0
  386. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_proxy_setup.py +0 -0
  387. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_slug.py +0 -0
  388. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_telemetry_send.py +0 -0
  389. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_teleport_git.py +0 -0
  390. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_teleport_nuage.py +0 -0
  391. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_teleport_service.py +0 -0
  392. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_trusted_folders.py +0 -0
  393. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/core/test_utils.py +0 -0
  394. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/common.py +0 -0
  395. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/conftest.py +0 -0
  396. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/mock_server.py +0 -0
  397. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  398. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/test_cli_tui_streaming.py +0 -0
  399. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  400. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/mock/__init__.py +0 -0
  401. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/mock/mock_backend_factory.py +0 -0
  402. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/mock/mock_entrypoint.py +0 -0
  403. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/mock/utils.py +0 -0
  404. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/onboarding/test_run_onboarding.py +0 -0
  405. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/onboarding/test_ui_onboarding.py +0 -0
  406. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/session/test_session_loader.py +0 -0
  407. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/session/test_session_logger.py +0 -0
  408. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/session/test_session_migration.py +0 -0
  409. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/skills/conftest.py +0 -0
  410. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/skills/test_manager.py +0 -0
  411. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/skills/test_models.py +0 -0
  412. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/skills/test_parser.py +0 -0
  413. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  414. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  415. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  416. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  417. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  418. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  419. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  420. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  421. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  422. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  423. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  424. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  425. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  426. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  427. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  428. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  429. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  430. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  431. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  432. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  433. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  434. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  435. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  436. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  437. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  438. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  439. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  440. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  441. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  442. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  443. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  444. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  445. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  446. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  447. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  448. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  449. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  450. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  451. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  452. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  453. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  454. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  455. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  456. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  457. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  458. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  459. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  460. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  461. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  462. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  463. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  464. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  465. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  466. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  467. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  468. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  469. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  470. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  471. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  472. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  473. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/base_snapshot_test_app.py +0 -0
  474. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/conftest.py +0 -0
  475. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/snap_compare.py +0 -0
  476. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  477. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  478. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  479. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  480. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  481. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  482. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  483. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  484. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  485. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  486. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  487. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  488. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  489. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  490. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/stubs/fake_backend.py +0 -0
  491. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/stubs/fake_client.py +0 -0
  492. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/stubs/fake_tool.py +0 -0
  493. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_auto_compact.py +0 -0
  494. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_backend.py +0 -0
  495. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_observer_streaming.py +0 -0
  496. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_stats.py +0 -0
  497. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_tasks.py +0 -0
  498. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agent_tool_call.py +0 -0
  499. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_agents.py +0 -0
  500. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_build.py +0 -0
  501. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_debug.py +0 -0
  502. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_multiagent.py +0 -0
  503. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_prd.py +0 -0
  504. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_prd_extended.py +0 -0
  505. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_tools.py +0 -0
  506. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_bank_update.py +0 -0
  507. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_build_projects.py +0 -0
  508. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_cli_programmatic_preload.py +0 -0
  509. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_current_bugs.py +0 -0
  510. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_drydock_regression.py +0 -0
  511. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_drydock_tasks.py +0 -0
  512. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_full_regression.py +0 -0
  513. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_history_manager.py +0 -0
  514. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_integration.py +0 -0
  515. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_loop_detection.py +0 -0
  516. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_message_id.py +0 -0
  517. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_message_merging.py +0 -0
  518. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_middleware.py +0 -0
  519. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_multi_agent.py +0 -0
  520. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_real_failures.py +0 -0
  521. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_real_issues.py +0 -0
  522. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_real_workflow.py +0 -0
  523. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_reasoning_content.py +0 -0
  524. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_smoke.py +0 -0
  525. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_system_prompt.py +0 -0
  526. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_tagged_text.py +0 -0
  527. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_tool_args.py +0 -0
  528. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_ui_external_editor.py +0 -0
  529. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_ui_input_history.py +0 -0
  530. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/test_workloads.py +0 -0
  531. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/testbank_helpers.py +0 -0
  532. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_ask_user_question.py +0 -0
  533. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_bash.py +0 -0
  534. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_exit_plan_mode.py +0 -0
  535. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_grep.py +0 -0
  536. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_invoke_context.py +0 -0
  537. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_manager_get_tool_config.py +0 -0
  538. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_mcp.py +0 -0
  539. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_mcp_sampling.py +0 -0
  540. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_task.py +0 -0
  541. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_ui_bash_execution.py +0 -0
  542. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_webfetch.py +0 -0
  543. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/tools/test_websearch.py +0 -0
  544. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  545. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  546. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_do_update.py +0 -0
  547. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  548. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_github_update_gateway.py +0 -0
  549. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  550. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_ui_update_notification.py +0 -0
  551. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_update_use_case.py +0 -0
  552. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/tests/update_notifier/test_whats_new.py +0 -0
  553. {drydock_cli-2.6.6 → drydock_cli-2.6.8}/uv.lock +0 -0
@@ -0,0 +1 @@
1
+ 3923516
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.6.6
3
+ Version: 2.6.8
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
@@ -163,9 +163,13 @@ def run_cli(args: argparse.Namespace) -> None:
163
163
  if not hasattr(args, 'initial_prompt') or not args.initial_prompt:
164
164
  args.initial_prompt = args.prompt or stdin_prompt
165
165
 
166
- # No tools disabled let the model use whatever it wants.
167
- # Tools with validation errors (empty args) will just return errors
168
- # and the model will self-correct.
166
+ # Auto-enable thinking mode for Gemma 4 if not set
167
+ try:
168
+ active = config.get_active_model()
169
+ if "gemma" in active.name.lower() and active.thinking == "off":
170
+ active.thinking = "high"
171
+ except Exception:
172
+ pass
169
173
 
170
174
  # Disable streaming for Gemma 4 — streaming tool call accumulation
171
175
  # produces empty arguments (14 write_file calls → 0 files)
@@ -394,10 +394,18 @@ class VibeApp(App): # noqa: PLR0904
394
394
  input_widget.value = ""
395
395
 
396
396
  if self._agent_running:
397
- # Queue the message instead of interrupting process after current task
397
+ # Queue the message join rapid-fire inputs (multi-line paste)
398
398
  if not hasattr(self, "_pending_messages"):
399
399
  self._pending_messages: list[str] = []
400
- self._pending_messages.append(value)
400
+ import time
401
+ now = time.time()
402
+ last_queue_time = getattr(self, "_last_queue_time", 0)
403
+ if now - last_queue_time < 0.5 and self._pending_messages:
404
+ # Rapid input (< 500ms apart) = likely paste — join with newline
405
+ self._pending_messages[-1] += "\n" + value
406
+ else:
407
+ self._pending_messages.append(value)
408
+ self._last_queue_time = now
401
409
  preview = value[:60] + "..." if len(value) > 60 else value
402
410
  self.notify(f"Queued: \"{preview}\" ({len(self._pending_messages)} pending)")
403
411
  return
@@ -752,7 +752,7 @@ class AgentLoop:
752
752
  - Other (bash with commands): block after 3
753
753
  """
754
754
  args_str = json.dumps(tool_call.args_dict, sort_keys=True, default=str)
755
- sig = hashlib.md5(
755
+ sig = hashlib.sha256(
756
756
  f"{tool_call.tool_name}:{args_str}".encode()
757
757
  ).hexdigest()
758
758
 
@@ -804,7 +804,7 @@ class AgentLoop:
804
804
  def _circuit_breaker_record(self, tool_call: ResolvedToolCall, result_text: str) -> None:
805
805
  """Record a tool call execution for circuit breaker tracking."""
806
806
  args_str = json.dumps(tool_call.args_dict, sort_keys=True, default=str)
807
- sig = hashlib.md5(
807
+ sig = hashlib.sha256(
808
808
  f"{tool_call.tool_name}:{args_str}".encode()
809
809
  ).hexdigest()
810
810
  count, _ = self._tool_call_history.get(sig, (0, ""))
@@ -1509,7 +1509,7 @@ class AgentLoop:
1509
1509
  f"{tc.function.name}:{tc.function.arguments}"
1510
1510
  )
1511
1511
  tool_names.append(tc.function.name or "")
1512
- sig = hashlib.md5(
1512
+ sig = hashlib.sha256(
1513
1513
  "|".join(sorted(call_parts)).encode()
1514
1514
  ).hexdigest()[:16]
1515
1515
  sigs.append(sig)
@@ -1942,7 +1942,7 @@ class AgentLoop:
1942
1942
  except (json.JSONDecodeError, TypeError):
1943
1943
  pass
1944
1944
  call_parts.append(f"{fn_name}:{fn_args}")
1945
- sig = hashlib.md5("|".join(sorted(call_parts)).encode()).hexdigest()[:16]
1945
+ sig = hashlib.sha256("|".join(sorted(call_parts)).encode()).hexdigest()[:16]
1946
1946
 
1947
1947
  if sig in seen_sigs:
1948
1948
  # Duplicate — mark for removal (assistant msg + next tool result)
@@ -1,6 +1,6 @@
1
1
  You are DryDock, a CLI coding agent. You write code, fix bugs, and build projects.
2
2
 
3
- ACT IMMEDIATELY. Do NOT ask for permission. Do NOT explain what you will do. Just do it.
3
+ ACT IMMEDIATELY. Your FIRST response must be a tool call — not text. Do NOT explain, plan, or ask. Call a tool NOW.
4
4
 
5
5
  Your tools: read_file, write_file, search_replace, grep, glob, bash.
6
6
 
@@ -49,7 +49,7 @@ def _compute_module_name(path: Path) -> str:
49
49
  return canonical
50
50
 
51
51
  resolved = path.resolve()
52
- path_hash = hashlib.md5(str(resolved).encode()).hexdigest()[:8]
52
+ path_hash = hashlib.sha256(str(resolved).encode()).hexdigest()[:8]
53
53
  stem = re.sub(r"[^0-9A-Za-z_]", "_", path.stem) or "mod"
54
54
  return f"vibe_tools_discovered_{stem}_{path_hash}"
55
55
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.6.6"
3
+ version = "2.6.8"
4
4
  description = "Drydock — nautical CLI coding agent"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,67 @@
1
+ """Tests for user-reported issues (2026-04-07).
2
+
3
+ Each test should FAIL before the fix and PASS after.
4
+ """
5
+ import hashlib
6
+ import pytest
7
+ from unittest.mock import patch, MagicMock
8
+
9
+
10
+ class TestMD5Crash:
11
+ """#61: Crash after install — md5 error in manager.py."""
12
+
13
+ def test_md5_usedforsecurity(self):
14
+ """md5 should work with usedforsecurity=False."""
15
+ h = hashlib.md5(b"test", usedforsecurity=False)
16
+ assert h.hexdigest() == "098f6bcd4621d373cade4e832627b4f6"
17
+
18
+ def test_tool_manager_import(self):
19
+ """Tool manager should not crash on import."""
20
+ from drydock.core.tools.manager import ToolManager
21
+ assert ToolManager is not None
22
+
23
+
24
+ class TestSearchReplaceGarbled:
25
+ """#55: search_replace garbled characters."""
26
+
27
+ def test_garbled_detection(self):
28
+ from drydock.core.tools.builtins.search_replace import SearchReplaceArgs
29
+ args = SearchReplaceArgs.model_validate({
30
+ "file_path": "test.py",
31
+ "content": "<<<<<<< SEARCH\nold text\n=======\nnew text\n>>>>>>> REPLACE",
32
+ })
33
+ assert args.file_path == "test.py"
34
+
35
+
36
+ class TestTodoEnumQuotes:
37
+ """#60: Todo enum quoting issues."""
38
+
39
+ def test_double_quoted(self):
40
+ from drydock.core.tools.builtins.todo import TodoItem
41
+ item = TodoItem.model_validate({
42
+ "id": "1", "content": "test",
43
+ "status": '"completed"', "priority": '"high"',
44
+ })
45
+ assert item.status.value == "completed"
46
+
47
+ def test_single_quoted(self):
48
+ from drydock.core.tools.builtins.todo import TodoItem
49
+ item = TodoItem.model_validate({
50
+ "id": "1", "content": "test",
51
+ "status": "'completed'", "priority": "'high'",
52
+ })
53
+ assert item.status.value == "completed"
54
+
55
+
56
+ class TestEmptyState:
57
+ """#58: IndexError on empty lists."""
58
+
59
+ def test_empty_tool_calls(self):
60
+ from drydock.core.types import LLMMessage, Role
61
+ msg = LLMMessage(role=Role.assistant, content="hello", tool_calls=None)
62
+ calls = msg.tool_calls or []
63
+ assert calls == []
64
+
65
+
66
+ if __name__ == "__main__":
67
+ pytest.main([__file__, "-v"])
@@ -1 +0,0 @@
1
- 3840919
@@ -1,265 +0,0 @@
1
- """Tests for user-reported issues.
2
-
3
- Each test should FAIL before the fix, proving the issue exists.
4
- After fixing, all should pass.
5
- """
6
-
7
- from __future__ import annotations
8
-
9
- import inspect
10
- import os
11
- from pathlib import Path
12
- from types import SimpleNamespace
13
- from unittest.mock import patch
14
-
15
- import pytest
16
-
17
-
18
- # ============================================================================
19
- # Issue 1: "DryDock" branding — should be DryDock not Drydock everywhere
20
- # ============================================================================
21
-
22
- class TestBranding:
23
- def test_readme_says_drydock_capital(self):
24
- readme = Path(__file__).parent.parent / "README.md"
25
- content = readme.read_text()
26
- # Title should be "# DryDock" not "# Drydock"
27
- assert "# DryDock" in content
28
-
29
- def test_system_prompt_says_drydock(self):
30
- prompt = Path(__file__).parent.parent / "drydock" / "core" / "prompts" / "cli.md"
31
- content = prompt.read_text()
32
- # Should say "DryDock" not "Drydock" as the product name
33
- assert "DryDock" in content
34
-
35
- def test_loading_widget_says_drydock(self):
36
- from drydock.cli.textual_ui.widgets.loading import LoadingWidget
37
- widget = LoadingWidget.__new__(LoadingWidget)
38
- status = widget._get_default_status()
39
- # Anchor emoji is fine, but product references should be DryDock
40
- assert status # Just verify it doesn't crash
41
-
42
-
43
- # ============================================================================
44
- # Issue 5: What conda env is pip using? Should preserve user's env
45
- # ============================================================================
46
-
47
- class TestCondaEnv:
48
- def test_bash_env_preserves_active_conda(self):
49
- """If user has CONDA_DEFAULT_ENV set, bash should preserve it."""
50
- from drydock.core.tools.builtins.bash import _get_base_env
51
- with patch.dict(os.environ, {"CONDA_DEFAULT_ENV": "myproject", "CONDA_EXE": "/opt/conda/bin/conda"}):
52
- env = _get_base_env()
53
- # BASH_ENV should reference the user's env, not just base
54
- if "BASH_ENV" in env:
55
- bash_env_content = Path(env["BASH_ENV"]).read_text() if Path(env["BASH_ENV"]).exists() else ""
56
- # Should activate the user's env, not just source conda.sh
57
- assert "myproject" in bash_env_content or "CONDA_DEFAULT_ENV" in str(env)
58
-
59
-
60
- # ============================================================================
61
- # Issue 6: Circuit breaker shows message but still repeats
62
- # ============================================================================
63
-
64
- class TestCircuitBreakerEnforcement:
65
- def test_circuit_breaker_disabled(self):
66
- """Circuit breaker is disabled — even failed commands are never blocked."""
67
- from drydock.core.agent_loop import AgentLoop
68
- from drydock.core.types import MessageList
69
-
70
- al = object.__new__(AgentLoop)
71
- al.messages = MessageList()
72
- al._tool_call_history = {}
73
-
74
- tc = SimpleNamespace(tool_name="bash", args_dict={"command": "bad_cmd"})
75
- for _ in range(3):
76
- al._circuit_breaker_record(tc, "FAILED: command not found")
77
-
78
- # CB is disabled — always returns None
79
- assert al._circuit_breaker_check(tc) is None
80
-
81
- def test_circuit_breaker_resets_for_new_conversation(self):
82
- """Circuit breaker history is clearable between conversations."""
83
- from drydock.core.agent_loop import AgentLoop
84
- from drydock.core.types import MessageList
85
-
86
- al = object.__new__(AgentLoop)
87
- al.messages = MessageList()
88
- al._tool_call_history = {}
89
-
90
- tc = SimpleNamespace(tool_name="bash", args_dict={"command": "bad_cmd"})
91
- for _ in range(3):
92
- al._circuit_breaker_record(tc, "FAILED: command not found")
93
- # CB is disabled — returns None even before clearing
94
- assert al._circuit_breaker_check(tc) is None
95
-
96
- # Simulate new conversation — history should be clearable
97
- al._tool_call_history.clear()
98
- assert al._circuit_breaker_check(tc) is None # Still None
99
-
100
-
101
- # ============================================================================
102
- # Issue 7: "Understood" after errors then stops
103
- # ============================================================================
104
-
105
- class TestUnderstoodBug:
106
- def test_no_understood_in_agent(self):
107
- """The agent should not inject 'Understood.' which causes premature stops."""
108
- from drydock.core.agent_loop import AgentLoop
109
- src = inspect.getsource(AgentLoop)
110
- # "Understood." was causing the model to think conversation ended
111
- assert "Understood" not in src, \
112
- "'Understood' found in agent_loop — should use 'Continuing...' instead"
113
-
114
-
115
- # ============================================================================
116
- # Issue 10: Circuit breaker too sensitive — same command later should be OK
117
- # ============================================================================
118
-
119
- class TestCircuitBreakerSensitivity:
120
- def test_successful_commands_never_blocked(self):
121
- """Successful commands are never blocked."""
122
- from drydock.core.agent_loop import AgentLoop
123
- from drydock.core.types import MessageList
124
-
125
- al = object.__new__(AgentLoop)
126
- al.messages = MessageList()
127
- al._tool_call_history = {}
128
-
129
- tc = SimpleNamespace(tool_name="bash", args_dict={"command": "git status"})
130
- for _ in range(10):
131
- al._circuit_breaker_record(tc, "clean")
132
- assert al._circuit_breaker_check(tc) is None # Never blocked
133
-
134
- def test_failed_commands_not_blocked_cb_disabled(self):
135
- """CB disabled — failed commands are NOT blocked even after 3 repeats."""
136
- from drydock.core.agent_loop import AgentLoop
137
- from drydock.core.types import MessageList
138
-
139
- al = object.__new__(AgentLoop)
140
- al.messages = MessageList()
141
- al._tool_call_history = {}
142
-
143
- tc = SimpleNamespace(tool_name="bash", args_dict={"command": "git status"})
144
- for _ in range(3):
145
- al._circuit_breaker_record(tc, "FAILED: not a git repo")
146
- assert al._circuit_breaker_check(tc) is None # CB disabled
147
-
148
-
149
- # ============================================================================
150
- # Issue 11: /consult needs to show which model is being used
151
- # ============================================================================
152
-
153
- class TestConsultModelDisplay:
154
- def test_consult_handler_shows_model_name(self):
155
- """The /consult response should include the model name."""
156
- from drydock.cli.textual_ui.app import VibeApp
157
- src = inspect.getsource(VibeApp._consult_command)
158
- # Should display which model is being used
159
- assert "consultant_model" in src or "model" in src
160
-
161
- def test_consult_help_shows_config_instructions(self):
162
- """Typing /consult with no args should show how to configure."""
163
- from drydock.cli.textual_ui.app import VibeApp
164
- src = inspect.getsource(VibeApp._consult_command)
165
- assert "config.toml" in src or "consultant_model" in src
166
-
167
-
168
- # ============================================================================
169
- # Issue 12: SSL error on websearch — should use -k / DRYDOCK_INSECURE
170
- # ============================================================================
171
-
172
- class TestWebSearchSSL:
173
- def test_websearch_respects_insecure_flag(self):
174
- """WebSearch should check DRYDOCK_INSECURE env var."""
175
- from drydock.core.tools.builtins.websearch import WebSearch
176
- src = inspect.getsource(WebSearch)
177
- assert "DRYDOCK_INSECURE" in src or "insecure" in src.lower() or "verify" in src
178
-
179
- def test_webfetch_respects_insecure_flag(self):
180
- """WebFetch should check DRYDOCK_INSECURE env var."""
181
- from drydock.core.tools.builtins.webfetch import WebFetch
182
- src = inspect.getsource(WebFetch)
183
- assert "DRYDOCK_INSECURE" in src
184
-
185
-
186
- # ============================================================================
187
- # Issue 14: Config.toml consultant_model setup
188
- # ============================================================================
189
-
190
- class TestConsultantConfig:
191
- def test_config_has_consultant_model_field(self):
192
- """VibeConfig should have consultant_model field."""
193
- from drydock.core.config import VibeConfig
194
- assert hasattr(VibeConfig, "model_fields")
195
- assert "consultant_model" in VibeConfig.model_fields
196
-
197
- def test_consultant_model_documented_in_readme(self):
198
- """README should mention how to set consultant_model."""
199
- readme = Path(__file__).parent.parent / "README.md"
200
- content = readme.read_text()
201
- assert "consultant_model" in content or "consultant" in content.lower()
202
-
203
-
204
- # ============================================================================
205
- # Issue 15: Auto-consult agent — model should ask consultant when stuck
206
- # ============================================================================
207
-
208
- class TestAutoConsult:
209
- def test_circuit_breaker_disabled_returns_none(self):
210
- """CB is disabled — returns None even for repeatedly failed commands."""
211
- from drydock.core.agent_loop import AgentLoop
212
- from drydock.core.types import MessageList
213
-
214
- al = object.__new__(AgentLoop)
215
- al.messages = MessageList()
216
- al._tool_call_history = {}
217
-
218
- tc = SimpleNamespace(tool_name="bash", args_dict={"command": "bad_cmd"})
219
- for _ in range(3):
220
- al._circuit_breaker_record(tc, "FAILED: command not found")
221
- assert al._circuit_breaker_check(tc) is None
222
-
223
-
224
- # ============================================================================
225
- # Issue 16: /consult should include conversation history
226
- # ============================================================================
227
-
228
- class TestConsultHistory:
229
- def test_consult_sends_context(self):
230
- """/consult handler should send conversation context to consultant."""
231
- from drydock.core.consultant import ask_consultant
232
- src = inspect.getsource(ask_consultant)
233
- # Should accept and use context/conversation history
234
- assert "context" in src or "messages" in src or "history" in src
235
-
236
-
237
- # ============================================================================
238
- # Issue 17: Deep research skill should exist
239
- # ============================================================================
240
-
241
- class TestDeepResearchSkill:
242
- def test_research_skill_exists(self):
243
- """A deep-research skill should be bundled."""
244
- skills_dir = Path(__file__).parent.parent / "drydock" / "skills"
245
- skill_dirs = [d.name for d in skills_dir.iterdir() if d.is_dir()] if skills_dir.exists() else []
246
- has_research = any("research" in d for d in skill_dirs)
247
- assert has_research, f"No research skill found. Available: {skill_dirs}"
248
-
249
-
250
- # ============================================================================
251
- # Issue 18: Not using agents — explore/diagnostic agents should be utilized
252
- # ============================================================================
253
-
254
- class TestAgentsAvailable:
255
- def test_explore_agent_registered(self):
256
- """The 'explore' agent should be registered."""
257
- from drydock.core.agents.models import BuiltinAgentName
258
- assert hasattr(BuiltinAgentName, "EXPLORE") or "explore" in dir(BuiltinAgentName)
259
-
260
- def test_system_prompt_mentions_agents(self):
261
- """System prompt should tell the model about available agents."""
262
- prompt = Path(__file__).parent.parent / "drydock" / "core" / "prompts" / "cli.md"
263
- content = prompt.read_text()
264
- has_agent_ref = "agent" in content.lower() or "subagent" in content.lower() or "task" in content.lower()
265
- assert has_agent_ref
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes