drydock-cli 2.2.3__tar.gz → 2.2.4__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 (516) hide show
  1. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/CLAUDE.md +114 -12
  2. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/PKG-INFO +1 -1
  3. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/pyproject.toml +1 -1
  4. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/CODEOWNERS +0 -0
  5. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  6. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  7. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  8. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/workflows/build-and-upload.yml +0 -0
  9. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/workflows/ci.yml +0 -0
  10. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/workflows/issue-labeler.yml +0 -0
  11. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.github/workflows/release.yml +0 -0
  12. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.gitignore +0 -0
  13. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.pre-commit-config.yaml +0 -0
  14. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.python-version +0 -0
  15. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.typos.toml +0 -0
  16. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.vscode/extensions.json +0 -0
  17. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.vscode/launch.json +0 -0
  18. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/.vscode/settings.json +0 -0
  19. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/AGENTS.md +0 -0
  20. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/CHANGELOG.md +0 -0
  21. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/CONTRIBUTING.md +0 -0
  22. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/Drydock_rebrand.md +0 -0
  23. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/LICENSE +0 -0
  24. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/NOTICE +0 -0
  25. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/PRD.md +0 -0
  26. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/README.md +0 -0
  27. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/action.yml +0 -0
  28. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/distribution/zed/LICENSE +0 -0
  29. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/distribution/zed/extension.toml +0 -0
  30. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/distribution/zed/icons/mistral_vibe.svg +0 -0
  31. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/docs/README.md +0 -0
  32. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/docs/acp-setup.md +0 -0
  33. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/docs/proxy-setup.md +0 -0
  34. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/__init__.py +0 -0
  35. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/__init__.py +0 -0
  36. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/acp_agent_loop.py +0 -0
  37. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/acp_logger.py +0 -0
  38. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/entrypoint.py +0 -0
  39. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/__init__.py +0 -0
  40. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/base.py +0 -0
  41. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/builtins/bash.py +0 -0
  42. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/builtins/read_file.py +0 -0
  43. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/builtins/search_replace.py +0 -0
  44. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/builtins/todo.py +0 -0
  45. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/builtins/write_file.py +0 -0
  46. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/tools/session_update.py +0 -0
  47. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/acp/utils.py +0 -0
  48. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/__init__.py +0 -0
  49. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/autocompletion/__init__.py +0 -0
  50. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/autocompletion/base.py +0 -0
  51. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/autocompletion/path_completion.py +0 -0
  52. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/autocompletion/slash_command.py +0 -0
  53. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/cli.py +0 -0
  54. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/clipboard.py +0 -0
  55. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/commands.py +0 -0
  56. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/entrypoint.py +0 -0
  57. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/history_manager.py +0 -0
  58. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  59. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  60. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  61. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/terminal_setup.py +0 -0
  62. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/__init__.py +0 -0
  63. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  64. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/app.py +0 -0
  65. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/app.tcss +0 -0
  66. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/external_editor.py +0 -0
  67. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  68. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  69. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  70. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  71. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  72. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  73. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  74. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  75. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  76. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  77. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  78. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  79. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  80. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  81. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  82. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  83. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  84. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  85. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  86. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  87. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  88. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  89. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  90. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  91. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  92. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  93. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  94. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  95. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  96. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  97. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  98. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  99. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  100. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  101. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  102. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  103. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/windowing/history.py +0 -0
  104. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  105. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/textual_ui/windowing/state.py +0 -0
  106. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/__init__.py +0 -0
  107. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  108. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  109. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  110. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  111. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  112. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/update.py +0 -0
  113. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/cli/update_notifier/whats_new.py +0 -0
  114. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/__init__.py +0 -0
  115. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/agent_loop.py +0 -0
  116. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/agents/__init__.py +0 -0
  117. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/agents/manager.py +0 -0
  118. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/agents/models.py +0 -0
  119. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/auth/__init__.py +0 -0
  120. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/auth/crypto.py +0 -0
  121. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/auth/github.py +0 -0
  122. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/__init__.py +0 -0
  123. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/completers.py +0 -0
  124. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  125. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  126. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  127. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  128. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  129. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/fuzzy.py +0 -0
  130. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/path_prompt.py +0 -0
  131. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  132. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/build_orchestrator.py +0 -0
  133. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/config/__init__.py +0 -0
  134. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/config/_settings.py +0 -0
  135. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/config/harness_files/__init__.py +0 -0
  136. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  137. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/config/harness_files/_paths.py +0 -0
  138. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/consultant.py +0 -0
  139. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/drydock_states.py +0 -0
  140. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/hooks.py +0 -0
  141. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/__init__.py +0 -0
  142. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/anthropic.py +0 -0
  143. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/base.py +0 -0
  144. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/factory.py +0 -0
  145. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/generic.py +0 -0
  146. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/mistral.py +0 -0
  147. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  148. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/backend/vertex.py +0 -0
  149. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/exceptions.py +0 -0
  150. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/format.py +0 -0
  151. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/message_utils.py +0 -0
  152. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/llm/types.py +0 -0
  153. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/logger.py +0 -0
  154. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/middleware.py +0 -0
  155. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/output_formatters.py +0 -0
  156. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/paths/__init__.py +0 -0
  157. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/paths/_local_config_walk.py +0 -0
  158. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/paths/_vibe_home.py +0 -0
  159. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/paths/conventions.py +0 -0
  160. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/plan_session.py +0 -0
  161. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/plugins.py +0 -0
  162. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/programmatic.py +0 -0
  163. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/__init__.py +0 -0
  164. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/builder.md +0 -0
  165. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/cli.md +0 -0
  166. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/compact.md +0 -0
  167. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/dangerous_directory.md +0 -0
  168. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/diagnostic.md +0 -0
  169. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/explore.md +0 -0
  170. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/planner.md +0 -0
  171. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/project_context.md +0 -0
  172. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/prompts/tests.md +0 -0
  173. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/proxy_setup.py +0 -0
  174. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/agent_memory.py +0 -0
  175. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/checkpoints.py +0 -0
  176. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/session_loader.py +0 -0
  177. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/session_logger.py +0 -0
  178. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/session_migration.py +0 -0
  179. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/session/state_file.py +0 -0
  180. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/skills/__init__.py +0 -0
  181. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/skills/manager.py +0 -0
  182. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/skills/models.py +0 -0
  183. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/skills/parser.py +0 -0
  184. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/slug.py +0 -0
  185. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/system_prompt.py +0 -0
  186. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/telemetry/__init__.py +0 -0
  187. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/telemetry/send.py +0 -0
  188. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/teleport/errors.py +0 -0
  189. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/teleport/git.py +0 -0
  190. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/teleport/nuage.py +0 -0
  191. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/teleport/teleport.py +0 -0
  192. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/teleport/types.py +0 -0
  193. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/base.py +0 -0
  194. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  195. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/bash.py +0 -0
  196. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/cron.py +0 -0
  197. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  198. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/glob_tool.py +0 -0
  199. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/grep.py +0 -0
  200. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  201. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/lsp.py +0 -0
  202. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  203. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  204. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/powershell.py +0 -0
  205. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  206. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  207. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  208. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  209. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  210. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  211. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  212. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  213. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  214. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  215. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  216. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  217. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  218. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  219. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/task.md +0 -0
  220. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  221. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  222. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  223. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  224. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  225. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  226. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  227. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/read_file.py +0 -0
  228. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/search_replace.py +0 -0
  229. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/task.py +0 -0
  230. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/task_manager.py +0 -0
  231. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/todo.py +0 -0
  232. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/tool_search.py +0 -0
  233. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/webfetch.py +0 -0
  234. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/websearch.py +0 -0
  235. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/worktree.py +0 -0
  236. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/builtins/write_file.py +0 -0
  237. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/injection_guard.py +0 -0
  238. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/manager.py +0 -0
  239. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/mcp/__init__.py +0 -0
  240. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/mcp/registry.py +0 -0
  241. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/mcp/tools.py +0 -0
  242. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/mcp_sampling.py +0 -0
  243. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/ui.py +0 -0
  244. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/tools/utils.py +0 -0
  245. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/trusted_folders.py +0 -0
  246. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/types.py +0 -0
  247. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/core/utils.py +0 -0
  248. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/__init__.py +0 -0
  249. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/base.py +0 -0
  250. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/onboarding.tcss +0 -0
  251. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/screens/__init__.py +0 -0
  252. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/screens/api_key.py +0 -0
  253. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/onboarding/screens/welcome.py +0 -0
  254. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  255. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  256. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/__init__.py +0 -0
  257. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/batch/SKILL.md +0 -0
  258. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/create-presentation/SKILL.md +0 -0
  259. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/deep-research/SKILL.md +0 -0
  260. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/investigate/SKILL.md +0 -0
  261. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/review/SKILL.md +0 -0
  262. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/ship/SKILL.md +0 -0
  263. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/skills/simplify/SKILL.md +0 -0
  264. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock/whats_new.md +0 -0
  265. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock-acp.spec +0 -0
  266. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/drydock_terms.md +0 -0
  267. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/flake.lock +0 -0
  268. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/flake.nix +0 -0
  269. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/README.md +0 -0
  270. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/auto_test_loop.sh +0 -0
  271. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/backup.sh +0 -0
  272. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/bump_version.py +0 -0
  273. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/deploy_to_github.sh +0 -0
  274. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/install.sh +0 -0
  275. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/monitor_swebench.sh +0 -0
  276. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/monitor_test_battery.sh +0 -0
  277. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/notify_release.py +0 -0
  278. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/overnight_agents_test.sh +0 -0
  279. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/prepare_release.py +0 -0
  280. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/publish_to_pypi.sh +0 -0
  281. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/test_bank.sh +0 -0
  282. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/test_full.sh +0 -0
  283. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/scripts/test_smoke.sh +0 -0
  284. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/__init__.py +0 -0
  285. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/conftest.py +0 -0
  286. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_acp.py +0 -0
  287. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_agent_thought.py +0 -0
  288. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_bash.py +0 -0
  289. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_compact_session_updates.py +0 -0
  290. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_content.py +0 -0
  291. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_initialize.py +0 -0
  292. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_list_sessions.py +0 -0
  293. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_load_session.py +0 -0
  294. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_multi_session.py +0 -0
  295. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_new_session.py +0 -0
  296. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_proxy_setup_acp.py +0 -0
  297. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_read_file.py +0 -0
  298. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_search_replace.py +0 -0
  299. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_set_config_option.py +0 -0
  300. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_set_mode.py +0 -0
  301. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_set_model.py +0 -0
  302. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_tool_call_session_update.py +0 -0
  303. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_utils.py +0 -0
  304. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/acp/test_write_file.py +0 -0
  305. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_file_indexer.py +0 -0
  306. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_fuzzy.py +0 -0
  307. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  308. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  309. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_path_completion_controller.py +0 -0
  310. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  311. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_slash_command_controller.py +0 -0
  312. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  313. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/__init__.py +0 -0
  314. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/data/__init__.py +0 -0
  315. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/data/fireworks.py +0 -0
  316. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/data/mistral.py +0 -0
  317. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/test_anthropic_adapter.py +0 -0
  318. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/test_backend.py +0 -0
  319. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/test_reasoning_adapter.py +0 -0
  320. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  321. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  322. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  323. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  324. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_bell_notifications.py +0 -0
  325. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_braille_renderer.py +0 -0
  326. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_clipboard.py +0 -0
  327. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_commands.py +0 -0
  328. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_copy_shortcuts.py +0 -0
  329. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_external_editor.py +0 -0
  330. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_no_markup_static.py +0 -0
  331. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_question_app.py +0 -0
  332. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_spinner.py +0 -0
  333. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_switching_mode.py +0 -0
  334. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  335. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  336. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_ui_session_resume.py +0 -0
  337. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/test_ui_skill_dispatch.py +0 -0
  338. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/textual_ui/__init__.py +0 -0
  339. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/cli/textual_ui/test_session_picker.py +0 -0
  340. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/conftest.py +0 -0
  341. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_agents.py +0 -0
  342. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_auth_crypto.py +0 -0
  343. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_auth_github.py +0 -0
  344. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_config_load_dotenv.py +0 -0
  345. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_config_paths.py +0 -0
  346. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_config_resolution.py +0 -0
  347. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_file_logging.py +0 -0
  348. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_plan_session.py +0 -0
  349. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_proxy_setup.py +0 -0
  350. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_slug.py +0 -0
  351. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_telemetry_send.py +0 -0
  352. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_teleport_git.py +0 -0
  353. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_teleport_nuage.py +0 -0
  354. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_teleport_service.py +0 -0
  355. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_trusted_folders.py +0 -0
  356. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/core/test_utils.py +0 -0
  357. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/common.py +0 -0
  358. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/conftest.py +0 -0
  359. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/mock_server.py +0 -0
  360. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  361. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/test_cli_tui_streaming.py +0 -0
  362. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  363. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/mock/__init__.py +0 -0
  364. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/mock/mock_backend_factory.py +0 -0
  365. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/mock/mock_entrypoint.py +0 -0
  366. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/mock/utils.py +0 -0
  367. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/onboarding/test_run_onboarding.py +0 -0
  368. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/onboarding/test_ui_onboarding.py +0 -0
  369. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/session/test_session_loader.py +0 -0
  370. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/session/test_session_logger.py +0 -0
  371. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/session/test_session_migration.py +0 -0
  372. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/skills/conftest.py +0 -0
  373. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/skills/test_manager.py +0 -0
  374. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/skills/test_models.py +0 -0
  375. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/skills/test_parser.py +0 -0
  376. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  377. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  378. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  379. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  380. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  381. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  382. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  383. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  384. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  385. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  386. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  387. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  388. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  389. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  390. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  391. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  392. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  393. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  394. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  395. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  396. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  397. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  398. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  399. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  400. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  401. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  402. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  403. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  404. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  405. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  406. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  407. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  408. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  409. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  410. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  411. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  412. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  413. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  414. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  415. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  416. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  417. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  418. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  419. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  420. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  421. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  422. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  423. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  424. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  425. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  426. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  427. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  428. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  429. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  430. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  431. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  432. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  433. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  434. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  435. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  436. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/base_snapshot_test_app.py +0 -0
  437. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/conftest.py +0 -0
  438. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/snap_compare.py +0 -0
  439. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  440. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  441. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  442. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  443. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  444. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  445. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  446. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  447. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  448. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  449. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  450. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  451. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  452. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  453. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/stubs/fake_backend.py +0 -0
  454. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/stubs/fake_client.py +0 -0
  455. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/stubs/fake_tool.py +0 -0
  456. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_auto_compact.py +0 -0
  457. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_backend.py +0 -0
  458. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_observer_streaming.py +0 -0
  459. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_stats.py +0 -0
  460. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_tasks.py +0 -0
  461. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agent_tool_call.py +0 -0
  462. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_agents.py +0 -0
  463. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_build.py +0 -0
  464. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_debug.py +0 -0
  465. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_multiagent.py +0 -0
  466. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_prd.py +0 -0
  467. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_prd_extended.py +0 -0
  468. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_tools.py +0 -0
  469. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_bank_update.py +0 -0
  470. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_build_projects.py +0 -0
  471. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_cli_programmatic_preload.py +0 -0
  472. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_current_bugs.py +0 -0
  473. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_drydock_regression.py +0 -0
  474. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_drydock_tasks.py +0 -0
  475. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_full_regression.py +0 -0
  476. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_history_manager.py +0 -0
  477. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_integration.py +0 -0
  478. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_loop_detection.py +0 -0
  479. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_message_id.py +0 -0
  480. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_message_merging.py +0 -0
  481. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_middleware.py +0 -0
  482. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_multi_agent.py +0 -0
  483. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_real_failures.py +0 -0
  484. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_real_issues.py +0 -0
  485. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_real_workflow.py +0 -0
  486. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_reasoning_content.py +0 -0
  487. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_smoke.py +0 -0
  488. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_system_prompt.py +0 -0
  489. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_tagged_text.py +0 -0
  490. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_ui_external_editor.py +0 -0
  491. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_ui_input_history.py +0 -0
  492. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_user_issues.py +0 -0
  493. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/test_workloads.py +0 -0
  494. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/testbank_helpers.py +0 -0
  495. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_ask_user_question.py +0 -0
  496. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_bash.py +0 -0
  497. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_exit_plan_mode.py +0 -0
  498. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_grep.py +0 -0
  499. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_invoke_context.py +0 -0
  500. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_manager_get_tool_config.py +0 -0
  501. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_mcp.py +0 -0
  502. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_mcp_sampling.py +0 -0
  503. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_task.py +0 -0
  504. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_ui_bash_execution.py +0 -0
  505. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_webfetch.py +0 -0
  506. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/tools/test_websearch.py +0 -0
  507. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  508. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  509. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_do_update.py +0 -0
  510. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  511. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_github_update_gateway.py +0 -0
  512. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  513. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_ui_update_notification.py +0 -0
  514. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_update_use_case.py +0 -0
  515. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/tests/update_notifier/test_whats_new.py +0 -0
  516. {drydock_cli-2.2.3 → drydock_cli-2.2.4}/uv.lock +0 -0
@@ -4,13 +4,40 @@
4
4
 
5
5
  Drydock is a local CLI coding agent (fork of mistral-vibe, Apache 2.0).
6
6
  - **Repo:** https://github.com/fbobe321/drydock
7
- - **PyPI:** https://pypi.org/project/drydock-cli/ (v2.2.1)
7
+ - **PyPI:** https://pypi.org/project/drydock-cli/ (v2.2.1 for v2, v3.0.0 for v3)
8
8
  - **Goal:** Best-in-class SWE-bench Verified pass rate with local LLMs
9
- - **Hardware:** 2x RTX 4060 Ti 16GB, devstral-24B-AWQ-4bit via vLLM at localhost:8000
9
+ - **Hardware:** 2x RTX 4060 Ti 16GB, Gemma 4 26B MoE (A4B) via vLLM Docker at localhost:8000
10
10
  - **Server:** remus (Ubuntu 22.04, user: bobef)
11
+ - **Active model:** Gemma 4 26B-A4B-it-AWQ-4bit (replaced devstral-24B — 3-4x faster, better results)
12
+ - **Active codebase:** DryDock v3 at `/data3/drydock-v3/` (clean rewrite)
11
13
 
12
14
  ## Build & Test
13
15
 
16
+ ### DryDock v3 (active)
17
+
18
+ ```bash
19
+ # Install (minimal deps: only openai>=1.0)
20
+ cd /data3/drydock-v3 && pip install -e .
21
+
22
+ # Run drydock CLI (defaults to gemma4 model)
23
+ python -m drydock
24
+ python -m drydock --model gemma4
25
+
26
+ # Run programmatically (headless, for benchmarks)
27
+ PYTHONPATH=/data3/drydock-v3 python3 -c "import sys; sys.path.insert(0, '/data3/drydock-v3'); from drydock.cli import main; main()"
28
+
29
+ # Start Gemma 4 model server
30
+ bash /data3/Models/start_gemma4.sh
31
+
32
+ # Check model is running
33
+ curl http://localhost:8000/v1/models
34
+
35
+ # Syntax check modified files
36
+ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
37
+ ```
38
+
39
+ ### DryDock v2 (legacy)
40
+
14
41
  ```bash
15
42
  # Install
16
43
  uv sync
@@ -30,7 +57,20 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
30
57
 
31
58
  ## Key Architecture
32
59
 
33
- - `drydock/core/agent_loop.py` Main agent loop. Loop detection, message ordering, tool execution. **Most changes go here.**
60
+ ### DryDock v3 (active clean rewrite at `/data3/drydock-v3/`)
61
+
62
+ v3 is a from-scratch rewrite using nano-claude-code as foundation. 4 core files, ~750 lines total. Provider-agnostic, works with any OpenAI-compatible endpoint.
63
+
64
+ - `drydock/agent.py` — Core agent loop (161 lines). Multi-turn tool calling, event-driven. **Most changes go here.**
65
+ - `drydock/providers.py` — LLM abstraction (209 lines). Provider registry (vLLM, Ollama, LM Studio, OpenAI, Anthropic). Streams responses, filters Gemma 4 thinking tokens.
66
+ - `drydock/tool_registry.py` — Tool plugin system (46 lines). Register/execute tools by name.
67
+ - `drydock/tools/__init__.py` — 6 built-in tools (258 lines): Read, Write, Edit, Bash, Glob, Grep
68
+ - `drydock/cli.py` — CLI entry point (213 lines). Default model: gemma4.
69
+ - `drydock/compaction.py` — Two-tier context management (119 lines). Normal compaction + emergency compaction on 400 errors.
70
+
71
+ ### DryDock v2 (legacy at `/data3/drydock/`)
72
+
73
+ - `drydock/core/agent_loop.py` — Main agent loop. Loop detection, message ordering, tool execution.
34
74
  - `drydock/core/programmatic.py` — Headless API entry point used by SWE-bench harness
35
75
  - `drydock/core/build_orchestrator.py` — Multi-phase build pipeline (currently disabled, model drives builds)
36
76
  - `drydock/core/tools/builtins/bash.py` — Shell tool with allowlist/denylist, conda support
@@ -47,16 +87,35 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
47
87
 
48
88
  ## Critical Constraints
49
89
 
90
+ ### v3 Constraints
91
+ - **Gemma 4 leaks thinking tokens.** The model emits `<|channel>thought<channel|>` tokens that must be filtered out. `providers.py` strips these via regex before displaying output.
92
+ - **Two-tier compaction.** Normal compaction truncates old tool results. Emergency compaction triggers on 400 errors (context overflow) with aggressive truncation.
93
+ - **Provider-agnostic design.** No model-specific hacks in the agent loop. All model quirks handled in `providers.py`.
94
+
95
+ ### v2 Constraints (still apply to v2 codebase)
50
96
  - **MessageList is not a plain list.** Never `self.messages = [...]`. Use `self.messages.reset([...])`.
51
97
  - **vLLM/Mistral rejects `user` after `tool` messages.** `_sanitize_message_ordering()` runs before every LLM call. All injection must use `_inject_system_note()`.
52
98
  - **`os._exit()` in programmatic.py** — necessary because async cleanup hangs. Ensure stdout is flushed before calling.
53
99
  - **AGENTS.md is CRITICAL for devstral.** Without per-project instructions, the model loops on ls/bash. Auto-created by `_ensure_agents_md()`.
100
+
101
+ ### Shared Constraints
54
102
  - **"Restate the goal" blocks tool calling.** Never ask the model to output text before its first tool call — it pre-empts the tool-calling mechanism.
55
103
  - **Additive-only harness changes.** Every control flow modification (circuit breaker, orchestrator, nudges) caused regressions. Just inject better context before the agent loop.
56
104
  - **Circuit breaker is disabled.** It blocked valid retries. Loop detection prunes duplicates and nudges instead. Never stops the session.
57
105
  - **Loop detection never stops.** Only prunes repeated tool calls and injects guidance. The only hard stop is MAX_TOOL_TURNS (200).
58
106
 
59
- ## Mistral/devstral Tool Calling
107
+ ## Gemma 4 Tool Calling (v3 — active)
108
+
109
+ - **Model:** Gemma-4-26B-A4B-it-AWQ-4bit (26B MoE, only 4B active params per token)
110
+ - **Serving:** vLLM Docker image `vllm/vllm-openai:gemma4` with `--tool-call-parser gemma4 --enable-auto-tool-choice`
111
+ - **Start script:** `/data3/Models/start_gemma4.sh` (Docker: 2 GPU tensor parallel, 131K context, fp8 KV cache)
112
+ - **Performance:** 3-4x faster than devstral-24B, 0% timeouts on SWE-bench, 70% file match (vs 60% devstral)
113
+ - **Thinking tokens:** Model leaks `<|channel>thought<channel|>` — filtered in `providers.py` via regex
114
+ - **Tool choice:** `tool_choice="auto"` (default), model natively decides tool vs text
115
+ - **No AGENTS.md dependency:** Gemma 4 does not loop without AGENTS.md (unlike devstral)
116
+ - **Docker management:** `docker stop gemma4 && docker rm gemma4` to restart
117
+
118
+ ## Mistral/devstral Tool Calling (v2 — legacy)
60
119
 
61
120
  - `tool_choice="auto"` (default): model decides whether to call a tool or respond with text
62
121
  - Never ask for text before first tool call — blocks tool calling
@@ -67,10 +126,28 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
67
126
  ## File Locations
68
127
 
69
128
  ```
70
- /data3/drydock/ Main repo (git)
129
+ /data3/drydock-v3/ DryDock v3 (active, clean rewrite)
130
+ ├── drydock/ ← Python package (~750 lines total)
131
+ │ ├── agent.py ← Core agent loop (THE most important file)
132
+ │ ├── providers.py ← LLM abstraction (vLLM, Ollama, etc.)
133
+ │ ├── tool_registry.py ← Tool plugin system
134
+ │ ├── tools/__init__.py ← 6 built-in tools (Read, Write, Edit, Bash, Glob, Grep)
135
+ │ ├── cli.py ← CLI entry point
136
+ │ ├── compaction.py ← Two-tier context management
137
+ │ ├── memory/ ← Memory system
138
+ │ └── skills/ ← Skill framework
139
+ ├── scripts/
140
+ │ └── monitor.sh ← Process monitor (restarts Gemma 4 if needed)
141
+ ├── logs/ ← Runtime logs
142
+ ├── pyproject.toml ← v3.0.0, depends only on openai>=1.0
143
+ └── AGENTS.md ← Project instructions
144
+ ```
145
+
146
+ ```
147
+ /data3/drydock/ ← DryDock v2 (legacy, original codebase)
71
148
  ├── drydock/ ← Python package
72
149
  │ ├── core/
73
- │ │ ├── agent_loop.py ← THE most important file
150
+ │ │ ├── agent_loop.py ← v2 agent loop
74
151
  │ │ ├── prompts/cli.md ← System prompt
75
152
  │ │ ├── build_orchestrator.py ← Multi-phase builder (disabled)
76
153
  │ │ ├── tools/builtins/ ← 24 builtin tools
@@ -93,11 +170,18 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
93
170
 
94
171
  ```
95
172
  /data3/swe_bench_runs/ ← SWE-bench infrastructure (separate)
96
- ├── harness.py ← Runs drydock on SWE-bench tasks
97
- ├── continuous_bench.sh ← Continuous improvement loop
173
+ ├── harness.py ← Runs drydock on SWE-bench tasks (supports v2 + v3 backends)
174
+ ├── continuous_bench.sh ← Continuous improvement loop (v2/devstral)
175
+ ├── continuous_gemma4.sh ← Continuous improvement loop (v3/Gemma 4, 20-task batches)
98
176
  └── logs/ ← Batch results
99
177
  ```
100
178
 
179
+ ```
180
+ /data3/Models/ ← Model files and startup scripts
181
+ ├── Gemma-4-26B-A4B-it-AWQ-4bit/ ← Gemma 4 model weights
182
+ └── start_gemma4.sh ← Docker startup (vLLM + Gemma 4)
183
+ ```
184
+
101
185
  ## Configuration Management
102
186
 
103
187
  **All scripts use explicit Python path:** `/home/bobef/miniconda3/bin/python3`
@@ -119,12 +203,18 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
119
203
 
120
204
  ## SWE-bench
121
205
 
122
- - Current: 42% file match, 62% real patches (50-task eval)
123
- - Target: 68% (devstral-small-2 published score)
124
- - Harness at `/data3/swe_bench_runs/harness.py` uses DryDock directly
206
+ ### Current Results (Gemma 4 + DryDock v3)
207
+ - **70% file match** (vs 60% devstral v2), 0% timeouts, 8x faster per task
208
+ - Harness at `/data3/swe_bench_runs/harness.py` supports both v2 (devstral) and v3 (gemma4) backends
209
+ - Continuous bench loop: `/data3/swe_bench_runs/continuous_gemma4.sh` (20-task batches with Telegram updates)
125
210
  - AGENTS.md auto-created per task with bug-fix workflow
126
211
  - Environment bootstrapping (Meta-Harness technique) gathers repo structure before first LLM call
127
212
 
213
+ ### Previous Results (devstral + DryDock v2)
214
+ - 42% file match, 62% real patches (50-task eval)
215
+ - Target was 68% (devstral-small-2 published score)
216
+ - Continuous bench loop: `/data3/swe_bench_runs/continuous_bench.sh`
217
+
128
218
  ## Improvement Backlog (from research papers + industry analysis)
129
219
 
130
220
  **Meta-Harness (arXiv:2603.28052) — still TODO:**
@@ -151,12 +241,18 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
151
241
  - ✅ "Task Completed" false claim detection
152
242
  - ✅ Loop guidance (never stops, only redirects)
153
243
  - ✅ Composable prompt (static first, dynamic after)
244
+ - ✅ DryDock v3 clean rewrite (provider-agnostic, ~750 lines)
245
+ - ✅ Gemma 4 MoE model (3-4x faster, 70% file match)
246
+ - ✅ Two-tier context compaction (normal + emergency on 400 errors)
247
+ - ✅ Docker-based model serving (vLLM + Gemma 4)
248
+ - ✅ Multi-backend SWE-bench harness (v2/devstral + v3/gemma4)
249
+ - ✅ Thinking token filtering (Gemma 4 `<|channel>` leak)
154
250
 
155
251
  **Legal note:** All patterns are standard design concepts implemented from scratch. No proprietary code copied.
156
252
 
157
253
  ## Key Learnings
158
254
 
159
- 1. AGENTS.md is essential — devstral loops without it
255
+ 1. AGENTS.md is essential — devstral loops without it (Gemma 4 does not have this problem)
160
256
  2. "Restate the goal" blocked tool calling for months — one line
161
257
  3. Additive-only changes work best — control flow mods regress
162
258
  4. The harness matters as much as the model (Meta-Harness paper)
@@ -166,6 +262,12 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
166
262
  8. Loop detection should guide, never stop
167
263
  9. Test the installed package, not source (different Python envs)
168
264
  10. Never wait for full test runs — fix issues from early results
265
+ 11. Clean rewrites beat incremental fixes — v3 (~750 lines) outperforms v2 (~5000+ lines)
266
+ 12. Model choice matters more than agent complexity — Gemma 4 MoE gives 3-4x speed + better accuracy than devstral
267
+ 13. Gemma 4 leaks thinking tokens (`<|channel>thought<channel|>`) — must filter in provider layer
268
+ 14. Two-tier compaction (normal + emergency on 400) is more robust than single-tier
269
+ 15. Provider-agnostic design enables fast model switching — v3 works with any OpenAI-compatible endpoint
270
+ 16. Docker-based model serving (vLLM) is more reliable than bare-metal — easier restarts, GPU management
169
271
 
170
272
  ## When Compacting
171
273
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.2.3
3
+ Version: 2.2.4
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.2.3"
3
+ version = "2.2.4"
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
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