drydock-cli 0.4.2__tar.gz → 0.5.1__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 (460) hide show
  1. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/CLAUDE.md +6 -6
  2. drydock_cli-0.5.1/PKG-INFO +245 -0
  3. drydock_cli-0.5.1/README.md +191 -0
  4. drydock_cli-0.5.1/drydock/__init__.py +7 -0
  5. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/acp_agent_loop.py +14 -14
  6. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/entrypoint.py +7 -7
  7. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/base.py +4 -4
  8. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/builtins/bash.py +6 -6
  9. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/builtins/read_file.py +4 -4
  10. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/builtins/search_replace.py +5 -5
  11. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/builtins/todo.py +4 -4
  12. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/builtins/write_file.py +5 -5
  13. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/tools/session_update.py +4 -4
  14. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/utils.py +5 -5
  15. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/autocompletion/path_completion.py +2 -2
  16. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/autocompletion/slash_command.py +2 -2
  17. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/cli.py +13 -13
  18. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/entrypoint.py +6 -6
  19. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/plan_offer/adapters/http_whoami_gateway.py +1 -1
  20. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/plan_offer/decide_plan_offer.py +2 -2
  21. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/app.py +40 -40
  22. drydock_cli-0.5.1/drydock/cli/textual_ui/handlers/__init__.py +5 -0
  23. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/handlers/event_handler.py +9 -9
  24. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/notifications/__init__.py +2 -2
  25. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +1 -1
  26. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/approval_app.py +3 -3
  27. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/banner/banner.py +5 -5
  28. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/banner/petit_chat.py +1 -1
  29. drydock_cli-0.5.1/drydock/cli/textual_ui/widgets/chat_input/__init__.py +7 -0
  30. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/chat_input/body.py +4 -4
  31. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/chat_input/completion_manager.py +1 -1
  32. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/chat_input/container.py +9 -9
  33. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/chat_input/text_area.py +4 -4
  34. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/compact.py +2 -2
  35. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/config_app.py +2 -2
  36. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/context_progress.py +1 -1
  37. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/loading.py +3 -3
  38. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/messages.py +3 -3
  39. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/path_display.py +1 -1
  40. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/proxy_setup_app.py +3 -3
  41. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/question_app.py +5 -5
  42. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/session_picker.py +2 -2
  43. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/spinner.py +1 -1
  44. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/status_message.py +3 -3
  45. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/teleport_message.py +1 -1
  46. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/tool_widgets.py +9 -9
  47. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/tools.py +6 -6
  48. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/windowing/__init__.py +3 -3
  49. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/windowing/history.py +3 -3
  50. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/windowing/history_windowing.py +3 -3
  51. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/windowing/state.py +2 -2
  52. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/__init__.py +7 -7
  53. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/adapters/filesystem_update_cache_repository.py +2 -2
  54. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/adapters/github_update_gateway.py +1 -1
  55. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/adapters/pypi_update_gateway.py +1 -1
  56. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/update.py +1 -1
  57. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/whats_new.py +2 -2
  58. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/__init__.py +1 -1
  59. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/agent_loop.py +29 -29
  60. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/agents/__init__.py +2 -2
  61. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/agents/manager.py +5 -5
  62. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/agents/models.py +3 -3
  63. drydock_cli-0.5.1/drydock/core/auth/__init__.py +6 -0
  64. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/completers.py +2 -2
  65. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/file_indexer/__init__.py +2 -2
  66. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/file_indexer/indexer.py +3 -3
  67. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/file_indexer/store.py +2 -2
  68. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/path_prompt_adapter.py +1 -1
  69. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/config/__init__.py +1 -1
  70. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/config/_settings.py +5 -5
  71. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/config/harness_files/__init__.py +1 -1
  72. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/config/harness_files/_harness_manager.py +4 -4
  73. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/config/harness_files/_paths.py +1 -1
  74. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/anthropic.py +3 -3
  75. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/base.py +2 -2
  76. drydock_cli-0.5.1/drydock/core/llm/backend/factory.py +7 -0
  77. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/generic.py +9 -9
  78. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/mistral.py +5 -5
  79. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/reasoning_adapter.py +4 -4
  80. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/backend/vertex.py +4 -4
  81. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/exceptions.py +1 -1
  82. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/format.py +3 -3
  83. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/message_utils.py +1 -1
  84. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/llm/types.py +2 -2
  85. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/logger.py +1 -1
  86. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/middleware.py +4 -4
  87. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/output_formatters.py +1 -1
  88. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/paths/__init__.py +3 -3
  89. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/paths/_local_config_walk.py +1 -1
  90. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/paths/_vibe_home.py +1 -1
  91. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/plan_session.py +2 -2
  92. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/programmatic.py +8 -8
  93. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/__init__.py +1 -1
  94. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/proxy_setup.py +1 -1
  95. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/session/session_loader.py +2 -2
  96. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/session/session_logger.py +6 -6
  97. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/session/session_migration.py +2 -2
  98. drydock_cli-0.5.1/drydock/core/skills/__init__.py +7 -0
  99. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/skills/manager.py +6 -6
  100. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/system_prompt.py +7 -7
  101. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/telemetry/send.py +5 -5
  102. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/teleport/git.py +2 -2
  103. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/teleport/nuage.py +2 -2
  104. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/teleport/teleport.py +6 -6
  105. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/teleport/types.py +1 -1
  106. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/base.py +4 -4
  107. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/ask_user_question.py +3 -3
  108. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/bash.py +4 -4
  109. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/exit_plan_mode.py +4 -4
  110. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/grep.py +4 -4
  111. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/read_file.py +5 -5
  112. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/search_replace.py +4 -4
  113. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/task.py +6 -6
  114. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/todo.py +3 -3
  115. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/webfetch.py +4 -4
  116. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/websearch.py +6 -6
  117. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/write_file.py +4 -4
  118. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/manager.py +7 -7
  119. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/mcp/__init__.py +2 -2
  120. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/mcp/registry.py +5 -5
  121. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/mcp/tools.py +6 -6
  122. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/mcp_sampling.py +2 -2
  123. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/ui.py +1 -1
  124. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/utils.py +1 -1
  125. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/trusted_folders.py +1 -1
  126. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/types.py +1 -1
  127. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/utils.py +3 -3
  128. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/onboarding/__init__.py +2 -2
  129. drydock_cli-0.5.1/drydock/setup/onboarding/screens/__init__.py +6 -0
  130. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/onboarding/screens/api_key.py +6 -6
  131. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/onboarding/screens/welcome.py +2 -2
  132. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/trusted_folders/trust_folder_dialog.py +2 -2
  133. drydock_cli-0.4.2/vibe-acp.spec → drydock_cli-0.5.1/drydock-acp.spec +10 -12
  134. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/pyproject.toml +9 -10
  135. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/conftest.py +4 -4
  136. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_acp.py +2 -2
  137. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_agent_thought.py +4 -4
  138. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_bash.py +3 -3
  139. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_compact_session_updates.py +3 -3
  140. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_content.py +2 -2
  141. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_initialize.py +1 -1
  142. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_list_sessions.py +9 -9
  143. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_load_session.py +6 -6
  144. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_multi_session.py +2 -2
  145. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_new_session.py +6 -6
  146. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_proxy_setup_acp.py +8 -8
  147. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_read_file.py +3 -3
  148. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_search_replace.py +4 -4
  149. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_set_config_option.py +7 -7
  150. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_set_mode.py +2 -2
  151. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_set_model.py +7 -7
  152. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_tool_call_session_update.py +3 -3
  153. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_utils.py +3 -3
  154. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/acp/test_write_file.py +5 -5
  155. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_file_indexer.py +1 -1
  156. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_fuzzy.py +1 -1
  157. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_path_completer_fuzzy.py +1 -1
  158. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_path_completer_recursive.py +1 -1
  159. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_path_completion_controller.py +3 -3
  160. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_path_prompt_transformer.py +1 -1
  161. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_slash_command_controller.py +3 -3
  162. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/autocompletion/test_ui_chat_autocompletion.py +4 -4
  163. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/test_anthropic_adapter.py +3 -3
  164. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/test_backend.py +8 -8
  165. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/test_reasoning_adapter.py +3 -3
  166. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/test_vertex_anthropic_adapter.py +8 -8
  167. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +1 -1
  168. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/plan_offer/test_decide_plan_offer.py +3 -3
  169. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/plan_offer/test_http_whoami_gateway.py +2 -2
  170. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_bell_notifications.py +1 -1
  171. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_braille_renderer.py +1 -1
  172. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_clipboard.py +14 -14
  173. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_commands.py +1 -1
  174. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_copy_shortcuts.py +4 -4
  175. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_external_editor.py +1 -1
  176. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_no_markup_static.py +1 -1
  177. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_question_app.py +33 -33
  178. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_spinner.py +1 -1
  179. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_switching_mode.py +3 -3
  180. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_ui_clipboard_notifications.py +3 -3
  181. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_ui_session_incremental_renderer.py +7 -7
  182. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_ui_session_resume.py +7 -7
  183. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/test_ui_skill_dispatch.py +3 -3
  184. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/cli/textual_ui/test_session_picker.py +2 -2
  185. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/conftest.py +10 -10
  186. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_agents.py +2 -2
  187. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_auth_crypto.py +1 -1
  188. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_auth_github.py +17 -17
  189. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_config_load_dotenv.py +1 -1
  190. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_config_paths.py +8 -8
  191. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_config_resolution.py +7 -7
  192. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_file_logging.py +12 -12
  193. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_plan_session.py +2 -2
  194. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_proxy_setup.py +3 -3
  195. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_slug.py +1 -1
  196. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_telemetry_send.py +23 -23
  197. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_teleport_git.py +2 -2
  198. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_teleport_nuage.py +6 -6
  199. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_teleport_service.py +7 -7
  200. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_trusted_folders.py +2 -2
  201. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/core/test_utils.py +1 -1
  202. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/mock/mock_backend_factory.py +2 -2
  203. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/mock/mock_entrypoint.py +7 -7
  204. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/mock/utils.py +1 -1
  205. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/onboarding/test_run_onboarding.py +1 -1
  206. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/onboarding/test_ui_onboarding.py +3 -3
  207. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/session/test_session_loader.py +3 -3
  208. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/session/test_session_logger.py +11 -11
  209. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/session/test_session_migration.py +2 -2
  210. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/skills/conftest.py +1 -1
  211. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/skills/test_manager.py +3 -3
  212. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/skills/test_models.py +1 -1
  213. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/skills/test_parser.py +1 -1
  214. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/base_snapshot_test_app.py +5 -5
  215. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/conftest.py +1 -1
  216. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_ask_user_question.py +3 -3
  217. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +1 -1
  218. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +4 -4
  219. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_proxy_setup.py +2 -2
  220. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_question_app.py +2 -2
  221. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_reasoning_content.py +1 -1
  222. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_release_update_notification.py +2 -2
  223. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_session_resume.py +1 -1
  224. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +4 -4
  225. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_teleport.py +3 -3
  226. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_whats_new.py +6 -6
  227. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/stubs/fake_backend.py +1 -1
  228. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/stubs/fake_tool.py +2 -2
  229. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agent_auto_compact.py +2 -2
  230. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agent_backend.py +2 -2
  231. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agent_observer_streaming.py +8 -8
  232. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agent_stats.py +4 -4
  233. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agent_tool_call.py +11 -11
  234. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_agents.py +10 -10
  235. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_cli_programmatic_preload.py +6 -6
  236. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_drydock_regression.py +37 -35
  237. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_drydock_tasks.py +33 -33
  238. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_history_manager.py +1 -1
  239. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_message_id.py +1 -1
  240. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_message_merging.py +2 -2
  241. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_middleware.py +4 -4
  242. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_reasoning_content.py +5 -5
  243. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_system_prompt.py +4 -4
  244. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_tagged_text.py +1 -1
  245. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_ui_external_editor.py +4 -4
  246. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/test_ui_input_history.py +4 -4
  247. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_ask_user_question.py +4 -4
  248. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_bash.py +2 -2
  249. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_exit_plan_mode.py +4 -4
  250. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_grep.py +2 -2
  251. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_invoke_context.py +2 -2
  252. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_manager_get_tool_config.py +8 -8
  253. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_mcp.py +7 -7
  254. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_mcp_sampling.py +2 -2
  255. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_task.py +8 -8
  256. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_ui_bash_execution.py +3 -3
  257. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_webfetch.py +2 -2
  258. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/tools/test_websearch.py +3 -3
  259. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/adapters/fake_update_cache_repository.py +1 -1
  260. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/adapters/fake_update_gateway.py +1 -1
  261. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_do_update.py +7 -7
  262. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_filesystem_update_cache_repository.py +2 -2
  263. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_github_update_gateway.py +1 -1
  264. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_pypi_update_gateway.py +2 -2
  265. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_ui_update_notification.py +10 -10
  266. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_update_use_case.py +2 -2
  267. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/update_notifier/test_whats_new.py +7 -7
  268. drydock_cli-0.4.2/PKG-INFO +0 -681
  269. drydock_cli-0.4.2/README.md +0 -627
  270. drydock_cli-0.4.2/vibe/__init__.py +0 -6
  271. drydock_cli-0.4.2/vibe/cli/textual_ui/handlers/__init__.py +0 -5
  272. drydock_cli-0.4.2/vibe/cli/textual_ui/widgets/chat_input/__init__.py +0 -7
  273. drydock_cli-0.4.2/vibe/core/auth/__init__.py +0 -6
  274. drydock_cli-0.4.2/vibe/core/llm/backend/factory.py +0 -7
  275. drydock_cli-0.4.2/vibe/core/skills/__init__.py +0 -7
  276. drydock_cli-0.4.2/vibe/setup/onboarding/screens/__init__.py +0 -6
  277. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/CODEOWNERS +0 -0
  278. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  279. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  280. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  281. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/workflows/build-and-upload.yml +0 -0
  282. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/workflows/ci.yml +0 -0
  283. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/workflows/issue-labeler.yml +0 -0
  284. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.github/workflows/release.yml +0 -0
  285. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.gitignore +0 -0
  286. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.pre-commit-config.yaml +0 -0
  287. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.python-version +0 -0
  288. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.typos.toml +0 -0
  289. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.vscode/extensions.json +0 -0
  290. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.vscode/launch.json +0 -0
  291. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/.vscode/settings.json +0 -0
  292. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/AGENTS.md +0 -0
  293. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/CHANGELOG.md +0 -0
  294. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/CONTRIBUTING.md +0 -0
  295. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/Drydock_rebrand.md +0 -0
  296. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/LICENSE +0 -0
  297. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/NOTICE +0 -0
  298. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/PRD.md +0 -0
  299. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/action.yml +0 -0
  300. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/distribution/zed/LICENSE +0 -0
  301. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/distribution/zed/extension.toml +0 -0
  302. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/distribution/zed/icons/mistral_vibe.svg +0 -0
  303. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/docs/README.md +0 -0
  304. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/docs/acp-setup.md +0 -0
  305. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/docs/proxy-setup.md +0 -0
  306. {drydock_cli-0.4.2/tests/backend → drydock_cli-0.5.1/drydock/acp}/__init__.py +0 -0
  307. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/acp/acp_logger.py +0 -0
  308. {drydock_cli-0.4.2/tests/cli/textual_ui → drydock_cli-0.5.1/drydock/acp/tools}/__init__.py +0 -0
  309. {drydock_cli-0.4.2/tests/mock → drydock_cli-0.5.1/drydock/cli}/__init__.py +0 -0
  310. {drydock_cli-0.4.2/vibe/acp → drydock_cli-0.5.1/drydock/cli/autocompletion}/__init__.py +0 -0
  311. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/autocompletion/base.py +0 -0
  312. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/clipboard.py +0 -0
  313. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/commands.py +0 -0
  314. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/history_manager.py +0 -0
  315. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/plan_offer/ports/whoami_gateway.py +0 -0
  316. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/terminal_setup.py +0 -0
  317. {drydock_cli-0.4.2/vibe/acp/tools → drydock_cli-0.5.1/drydock/cli/textual_ui}/__init__.py +0 -0
  318. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/ansi_markdown.py +0 -0
  319. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/app.tcss +0 -0
  320. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/external_editor.py +0 -0
  321. {drydock_cli-0.4.2/vibe/cli → drydock_cli-0.5.1/drydock/cli/textual_ui/notifications/adapters}/__init__.py +0 -0
  322. {drydock_cli-0.4.2/vibe/cli/autocompletion → drydock_cli-0.5.1/drydock/cli/textual_ui/notifications/ports}/__init__.py +0 -0
  323. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  324. {drydock_cli-0.4.2/vibe/cli/textual_ui → drydock_cli-0.5.1/drydock/cli/textual_ui/widgets}/__init__.py +0 -0
  325. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/braille_renderer.py +0 -0
  326. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  327. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/load_more.py +0 -0
  328. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/no_markup_static.py +0 -0
  329. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/textual_ui/widgets/vscode_compat.py +0 -0
  330. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/ports/update_cache_repository.py +0 -0
  331. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/cli/update_notifier/ports/update_gateway.py +0 -0
  332. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/auth/crypto.py +0 -0
  333. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/auth/github.py +0 -0
  334. {drydock_cli-0.4.2/vibe/cli/textual_ui/notifications/adapters → drydock_cli-0.5.1/drydock/core/autocompletion}/__init__.py +0 -0
  335. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  336. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/file_indexer/watcher.py +0 -0
  337. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/fuzzy.py +0 -0
  338. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/autocompletion/path_prompt.py +0 -0
  339. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/drydock_states.py +0 -0
  340. {drydock_cli-0.4.2/vibe/cli/textual_ui/notifications/ports → drydock_cli-0.5.1/drydock/core/llm}/__init__.py +0 -0
  341. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/paths/conventions.py +0 -0
  342. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/cli.md +0 -0
  343. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/compact.md +0 -0
  344. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/dangerous_directory.md +0 -0
  345. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/diagnostic.md +0 -0
  346. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/explore.md +0 -0
  347. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/planner.md +0 -0
  348. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/project_context.md +0 -0
  349. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/prompts/tests.md +0 -0
  350. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/skills/models.py +0 -0
  351. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/skills/parser.py +0 -0
  352. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/slug.py +0 -0
  353. {drydock_cli-0.4.2/vibe/cli/textual_ui/widgets → drydock_cli-0.5.1/drydock/core/telemetry}/__init__.py +0 -0
  354. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/teleport/errors.py +0 -0
  355. {drydock_cli-0.4.2/vibe/core/autocompletion → drydock_cli-0.5.1/drydock/core/tools/builtins/prompts}/__init__.py +0 -0
  356. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/ask_user_question.md +0 -0
  357. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/bash.md +0 -0
  358. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/grep.md +0 -0
  359. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/read_file.md +0 -0
  360. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/search_replace.md +0 -0
  361. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/swe_bench.md +0 -0
  362. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/task.md +0 -0
  363. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/todo.md +0 -0
  364. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/webfetch.md +0 -0
  365. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/websearch.md +0 -0
  366. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/core/tools/builtins/prompts/write_file.md +0 -0
  367. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/onboarding/base.py +0 -0
  368. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/onboarding/onboarding.tcss +0 -0
  369. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  370. {drydock_cli-0.4.2/vibe/core/llm → drydock_cli-0.5.1/drydock/skills}/__init__.py +0 -0
  371. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/skills/create-presentation/SKILL.md +0 -0
  372. {drydock_cli-0.4.2/vibe → drydock_cli-0.5.1/drydock}/whats_new.md +0 -0
  373. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/drydock_terms.md +0 -0
  374. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/flake.lock +0 -0
  375. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/flake.nix +0 -0
  376. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/README.md +0 -0
  377. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/bump_version.py +0 -0
  378. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/deploy_to_github.sh +0 -0
  379. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/install.sh +0 -0
  380. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/prepare_release.py +0 -0
  381. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/scripts/publish_to_pypi.sh +0 -0
  382. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/__init__.py +0 -0
  383. {drydock_cli-0.4.2/vibe/core/telemetry → drydock_cli-0.5.1/tests/backend}/__init__.py +0 -0
  384. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/data/__init__.py +0 -0
  385. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/data/fireworks.py +0 -0
  386. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/backend/data/mistral.py +0 -0
  387. {drydock_cli-0.4.2/vibe/core/tools/builtins/prompts → drydock_cli-0.5.1/tests/cli/textual_ui}/__init__.py +0 -0
  388. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/common.py +0 -0
  389. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/conftest.py +0 -0
  390. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/mock_server.py +0 -0
  391. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  392. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/test_cli_tui_streaming.py +0 -0
  393. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  394. {drydock_cli-0.4.2/vibe/skills → drydock_cli-0.5.1/tests/mock}/__init__.py +0 -0
  395. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  396. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  397. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  398. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  399. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  400. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  401. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  402. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  403. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  404. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  405. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  406. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  407. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  408. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  409. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  410. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  411. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  412. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  413. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  414. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  415. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  416. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  417. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  418. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  419. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  420. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  421. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  422. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  423. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  424. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  425. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  426. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  427. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  428. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  429. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  430. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  431. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  432. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  433. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  434. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  435. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  436. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  437. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  438. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  439. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  440. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  441. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  442. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  443. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  444. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  445. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  446. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  447. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  448. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  449. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  450. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  451. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  452. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  453. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  454. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  455. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/snap_compare.py +0 -0
  456. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  457. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  458. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  459. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/tests/stubs/fake_client.py +0 -0
  460. {drydock_cli-0.4.2 → drydock_cli-0.5.1}/uv.lock +0 -0
@@ -28,12 +28,12 @@ python3 -c "import ast; ast.parse(open('path/to/file.py').read())"
28
28
 
29
29
  ## Key Architecture
30
30
 
31
- - `vibe/core/agent_loop.py` — Main agent loop. Loop detection, message ordering, tool execution. **Most changes go here.**
32
- - `vibe/core/programmatic.py` — Headless API entry point used by SWE-bench harness
33
- - `vibe/core/tools/builtins/bash.py` — Shell tool with allowlist/denylist, conda support
34
- - `vibe/core/tools/builtins/search_replace.py` — File editing tool with fuzzy matching
35
- - `vibe/core/prompts/cli.md` — System prompt (two-phase workflow, SWE-bench rules)
36
- - `vibe/core/types.py` — `MessageList` (custom Sequence, use `.reset()` not `=[]`)
31
+ - `drydock/core/agent_loop.py` — Main agent loop. Loop detection, message ordering, tool execution. **Most changes go here.**
32
+ - `drydock/core/programmatic.py` — Headless API entry point used by SWE-bench harness
33
+ - `drydock/core/tools/builtins/bash.py` — Shell tool with allowlist/denylist, conda support
34
+ - `drydock/core/tools/builtins/search_replace.py` — File editing tool with fuzzy matching
35
+ - `drydock/core/prompts/cli.md` — System prompt (two-phase workflow, SWE-bench rules)
36
+ - `drydock/core/types.py` — `MessageList` (custom Sequence, use `.reset()` not `=[]`)
37
37
 
38
38
  ## Critical Constraints
39
39
 
@@ -0,0 +1,245 @@
1
+ Metadata-Version: 2.4
2
+ Name: drydock-cli
3
+ Version: 0.5.1
4
+ Summary: Drydock — nautical CLI coding agent
5
+ Project-URL: Homepage, https://github.com/fbobe321/drydock
6
+ Project-URL: Repository, https://github.com/fbobe321/drydock
7
+ Project-URL: Issues, https://github.com/fbobe321/drydock/issues
8
+ Project-URL: Documentation, https://github.com/fbobe321/drydock#readme
9
+ Author: Drydock contributors, Mistral AI (original)
10
+ License: Apache-2.0
11
+ License-File: LICENSE
12
+ License-File: NOTICE
13
+ Keywords: ai,cli,coding-assistant,developer-tools,drydock,llm,nautical
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: Apache Software License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development
22
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
+ Classifier: Topic :: Utilities
24
+ Requires-Python: >=3.12
25
+ Requires-Dist: agent-client-protocol==0.8.1
26
+ Requires-Dist: anyio>=4.12.0
27
+ Requires-Dist: cachetools>=5.5.0
28
+ Requires-Dist: cryptography<=46.0.3,>=44.0.0
29
+ Requires-Dist: gitpython>=3.1.46
30
+ Requires-Dist: giturlparse>=0.14.0
31
+ Requires-Dist: google-auth>=2.0.0
32
+ Requires-Dist: httpx>=0.28.1
33
+ Requires-Dist: keyring>=25.6.0
34
+ Requires-Dist: markdownify>=1.2.2
35
+ Requires-Dist: mcp>=1.14.0
36
+ Requires-Dist: mistralai==1.12.4
37
+ Requires-Dist: packaging>=24.1
38
+ Requires-Dist: pexpect>=4.9.0
39
+ Requires-Dist: pydantic-settings>=2.12.0
40
+ Requires-Dist: pydantic>=2.12.4
41
+ Requires-Dist: pyperclip>=1.11.0
42
+ Requires-Dist: python-dotenv>=1.0.0
43
+ Requires-Dist: pyyaml>=6.0.0
44
+ Requires-Dist: requests>=2.20.0
45
+ Requires-Dist: rich>=14.0.0
46
+ Requires-Dist: textual-speedups>=0.2.1
47
+ Requires-Dist: textual>=7.4.0
48
+ Requires-Dist: tomli-w>=1.2.0
49
+ Requires-Dist: tree-sitter-bash>=0.25.1
50
+ Requires-Dist: tree-sitter>=0.25.2
51
+ Requires-Dist: watchfiles>=1.1.1
52
+ Requires-Dist: zstandard>=0.25.0
53
+ Description-Content-Type: text/markdown
54
+
55
+ # DryDock
56
+
57
+ [![Python Version](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/downloads/release/python-3120/)
58
+ [![License](https://img.shields.io/github/license/fbobe321/drydock)](https://github.com/fbobe321/drydock/blob/main/LICENSE)
59
+
60
+ ```
61
+ | | |
62
+ )_) )_) )_)
63
+ )___))___))___)\
64
+ )____)____)_____)\\
65
+ _____|____|____|____\\\__
66
+ ---\ /----
67
+ \_________________/
68
+ ~~~~ ~~~ ~~~~ ~~~ ~~~~
69
+ ~~~ ~~~~ ~~~ ~~~ ~~~
70
+ ```
71
+
72
+ **Nautical CLI coding agent. Chart your course. Execute with precision.**
73
+
74
+ DryDock is a command-line coding assistant that works with any LLM provider. It provides a conversational interface to your codebase, allowing you to use natural language to explore, modify, and interact with your projects through a powerful set of tools.
75
+
76
+ > [!WARNING]
77
+ > DryDock works on Windows, but we officially support and target UNIX environments.
78
+
79
+ ### Install
80
+
81
+ ```bash
82
+ pip install drydock-cli
83
+ ```
84
+
85
+ Or with uv:
86
+
87
+ ```bash
88
+ uv tool install drydock-cli
89
+ ```
90
+
91
+ ## Features
92
+
93
+ - **Interactive Chat**: A conversational AI agent that understands your requests and breaks down complex tasks.
94
+ - **Powerful Toolset**: Read, write, and patch files. Execute shell commands. Search code with `grep`. Manage todos. Delegate to subagents.
95
+ - **Project-Aware Context**: DryDock automatically scans your project's file structure and Git status.
96
+ - **Conda/Pip Support**: Auto-approves `pip install`, `conda install`, `pytest`, and other dev commands.
97
+ - **Bundled Skills**: Ships with skills like `create-presentation` for PowerPoint generation.
98
+ - **MCP Support**: Connect Model Context Protocol servers for extended capabilities.
99
+ - **Safety First**: Tool execution approval with `--dangerously-skip-permissions` for full auto-approve.
100
+
101
+ ### Built-in Agents
102
+
103
+ - **`default`**: Standard agent that requires approval for tool executions.
104
+ - **`plan`**: Read-only agent for exploration and planning.
105
+ - **`accept-edits`**: Auto-approves file edits only.
106
+ - **`auto-approve`**: Auto-approves all tool executions.
107
+
108
+ ```bash
109
+ drydock --agent plan
110
+ ```
111
+
112
+ ## Quick Start
113
+
114
+ 1. Navigate to your project directory and run:
115
+
116
+ ```bash
117
+ drydock
118
+ ```
119
+
120
+ 2. First run creates a config at `~/.drydock/config.toml` and prompts for your API key.
121
+
122
+ 3. Start chatting:
123
+
124
+ ```
125
+ > Can you find all TODO comments in this project?
126
+ ```
127
+
128
+ ## Usage
129
+
130
+ ### Interactive Mode
131
+
132
+ ```bash
133
+ drydock # Start interactive session
134
+ drydock "Fix the login bug" # Start with a prompt
135
+ drydock --continue # Resume last session
136
+ drydock --resume abc123 # Resume specific session
137
+ ```
138
+
139
+ **Keyboard shortcuts:**
140
+ - `Ctrl+C` — Cancel current operation (double-tap to quit)
141
+ - `Shift+Tab` — Toggle auto-approve mode
142
+ - `Ctrl+O` — Toggle tool output
143
+ - `Ctrl+G` — Open external editor
144
+ - `@` — File path autocompletion
145
+ - `!command` — Run shell command directly
146
+
147
+ ### Programmatic Mode
148
+
149
+ ```bash
150
+ drydock --prompt "Analyze the codebase" --max-turns 5 --output json
151
+ drydock --dangerously-skip-permissions -p "Fix all lint errors"
152
+ ```
153
+
154
+ ### Trust Folder System
155
+
156
+ DryDock includes a trust folder system. When you run DryDock in a directory with a `.drydock` folder, it asks you to confirm trust. Managed via `~/.drydock/trusted_folders.toml`.
157
+
158
+ ## Configuration
159
+
160
+ DryDock is configured via `config.toml`. It looks first in `./.drydock/config.toml`, then `~/.drydock/config.toml`.
161
+
162
+ ### API Key
163
+
164
+ ```bash
165
+ drydock --setup # Interactive setup
166
+ export MISTRAL_API_KEY="your_key" # Or set env var
167
+ ```
168
+
169
+ Keys are saved to `~/.drydock/.env`.
170
+
171
+ ### Custom Agents
172
+
173
+ Create agent configs in `~/.drydock/agents/`:
174
+
175
+ ```toml
176
+ # ~/.drydock/agents/redteam.toml
177
+ active_model = "devstral-2"
178
+ system_prompt_id = "redteam"
179
+ disabled_tools = ["search_replace", "write_file"]
180
+ ```
181
+
182
+ ```bash
183
+ drydock --agent redteam
184
+ ```
185
+
186
+ ### Custom Prompts
187
+
188
+ Create markdown files in `~/.drydock/prompts/`:
189
+
190
+ ```toml
191
+ system_prompt_id = "my_custom_prompt"
192
+ ```
193
+
194
+ ### Skills
195
+
196
+ DryDock discovers skills from:
197
+ 1. Custom paths in `config.toml` via `skill_paths`
198
+ 2. Project `.drydock/skills/` or `.agents/skills/`
199
+ 3. Global `~/.drydock/skills/`
200
+ 4. Bundled skills (shipped with the package)
201
+
202
+ ### MCP Servers
203
+
204
+ ```toml
205
+ [[mcp_servers]]
206
+ name = "fetch_server"
207
+ transport = "stdio"
208
+ command = "uvx"
209
+ args = ["mcp-server-fetch"]
210
+ ```
211
+
212
+ ### Custom DryDock Home
213
+
214
+ ```bash
215
+ export DRYDOCK_HOME="/path/to/custom/home"
216
+ ```
217
+
218
+ This affects where DryDock looks for `config.toml`, `.env`, `agents/`, `prompts/`, `skills/`, and `logs/`.
219
+
220
+ ## Slash Commands
221
+
222
+ Type `/help` in the input for available commands. Create custom slash commands via the skills system.
223
+
224
+ ## Session Management
225
+
226
+ ```bash
227
+ drydock --continue # Continue last session
228
+ drydock --resume abc123 # Resume specific session
229
+ drydock --workdir /path/to/dir # Set working directory
230
+ ```
231
+
232
+ ## Resources
233
+
234
+ - [CHANGELOG](CHANGELOG.md)
235
+ - [CONTRIBUTING](CONTRIBUTING.md)
236
+ - [ACP Setup](docs/acp-setup.md) — Editor/IDE integration
237
+
238
+ ## License
239
+
240
+ Copyright 2025 Mistral AI (original work)
241
+ Copyright 2026 DryDock contributors (modifications)
242
+
243
+ Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.
244
+
245
+ DryDock is a fork of [mistralai/mistral-vibe](https://github.com/mistralai/mistral-vibe) (Apache 2.0). See [NOTICE](NOTICE) for attribution.
@@ -0,0 +1,191 @@
1
+ # DryDock
2
+
3
+ [![Python Version](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/downloads/release/python-3120/)
4
+ [![License](https://img.shields.io/github/license/fbobe321/drydock)](https://github.com/fbobe321/drydock/blob/main/LICENSE)
5
+
6
+ ```
7
+ | | |
8
+ )_) )_) )_)
9
+ )___))___))___)\
10
+ )____)____)_____)\\
11
+ _____|____|____|____\\\__
12
+ ---\ /----
13
+ \_________________/
14
+ ~~~~ ~~~ ~~~~ ~~~ ~~~~
15
+ ~~~ ~~~~ ~~~ ~~~ ~~~
16
+ ```
17
+
18
+ **Nautical CLI coding agent. Chart your course. Execute with precision.**
19
+
20
+ DryDock is a command-line coding assistant that works with any LLM provider. It provides a conversational interface to your codebase, allowing you to use natural language to explore, modify, and interact with your projects through a powerful set of tools.
21
+
22
+ > [!WARNING]
23
+ > DryDock works on Windows, but we officially support and target UNIX environments.
24
+
25
+ ### Install
26
+
27
+ ```bash
28
+ pip install drydock-cli
29
+ ```
30
+
31
+ Or with uv:
32
+
33
+ ```bash
34
+ uv tool install drydock-cli
35
+ ```
36
+
37
+ ## Features
38
+
39
+ - **Interactive Chat**: A conversational AI agent that understands your requests and breaks down complex tasks.
40
+ - **Powerful Toolset**: Read, write, and patch files. Execute shell commands. Search code with `grep`. Manage todos. Delegate to subagents.
41
+ - **Project-Aware Context**: DryDock automatically scans your project's file structure and Git status.
42
+ - **Conda/Pip Support**: Auto-approves `pip install`, `conda install`, `pytest`, and other dev commands.
43
+ - **Bundled Skills**: Ships with skills like `create-presentation` for PowerPoint generation.
44
+ - **MCP Support**: Connect Model Context Protocol servers for extended capabilities.
45
+ - **Safety First**: Tool execution approval with `--dangerously-skip-permissions` for full auto-approve.
46
+
47
+ ### Built-in Agents
48
+
49
+ - **`default`**: Standard agent that requires approval for tool executions.
50
+ - **`plan`**: Read-only agent for exploration and planning.
51
+ - **`accept-edits`**: Auto-approves file edits only.
52
+ - **`auto-approve`**: Auto-approves all tool executions.
53
+
54
+ ```bash
55
+ drydock --agent plan
56
+ ```
57
+
58
+ ## Quick Start
59
+
60
+ 1. Navigate to your project directory and run:
61
+
62
+ ```bash
63
+ drydock
64
+ ```
65
+
66
+ 2. First run creates a config at `~/.drydock/config.toml` and prompts for your API key.
67
+
68
+ 3. Start chatting:
69
+
70
+ ```
71
+ > Can you find all TODO comments in this project?
72
+ ```
73
+
74
+ ## Usage
75
+
76
+ ### Interactive Mode
77
+
78
+ ```bash
79
+ drydock # Start interactive session
80
+ drydock "Fix the login bug" # Start with a prompt
81
+ drydock --continue # Resume last session
82
+ drydock --resume abc123 # Resume specific session
83
+ ```
84
+
85
+ **Keyboard shortcuts:**
86
+ - `Ctrl+C` — Cancel current operation (double-tap to quit)
87
+ - `Shift+Tab` — Toggle auto-approve mode
88
+ - `Ctrl+O` — Toggle tool output
89
+ - `Ctrl+G` — Open external editor
90
+ - `@` — File path autocompletion
91
+ - `!command` — Run shell command directly
92
+
93
+ ### Programmatic Mode
94
+
95
+ ```bash
96
+ drydock --prompt "Analyze the codebase" --max-turns 5 --output json
97
+ drydock --dangerously-skip-permissions -p "Fix all lint errors"
98
+ ```
99
+
100
+ ### Trust Folder System
101
+
102
+ DryDock includes a trust folder system. When you run DryDock in a directory with a `.drydock` folder, it asks you to confirm trust. Managed via `~/.drydock/trusted_folders.toml`.
103
+
104
+ ## Configuration
105
+
106
+ DryDock is configured via `config.toml`. It looks first in `./.drydock/config.toml`, then `~/.drydock/config.toml`.
107
+
108
+ ### API Key
109
+
110
+ ```bash
111
+ drydock --setup # Interactive setup
112
+ export MISTRAL_API_KEY="your_key" # Or set env var
113
+ ```
114
+
115
+ Keys are saved to `~/.drydock/.env`.
116
+
117
+ ### Custom Agents
118
+
119
+ Create agent configs in `~/.drydock/agents/`:
120
+
121
+ ```toml
122
+ # ~/.drydock/agents/redteam.toml
123
+ active_model = "devstral-2"
124
+ system_prompt_id = "redteam"
125
+ disabled_tools = ["search_replace", "write_file"]
126
+ ```
127
+
128
+ ```bash
129
+ drydock --agent redteam
130
+ ```
131
+
132
+ ### Custom Prompts
133
+
134
+ Create markdown files in `~/.drydock/prompts/`:
135
+
136
+ ```toml
137
+ system_prompt_id = "my_custom_prompt"
138
+ ```
139
+
140
+ ### Skills
141
+
142
+ DryDock discovers skills from:
143
+ 1. Custom paths in `config.toml` via `skill_paths`
144
+ 2. Project `.drydock/skills/` or `.agents/skills/`
145
+ 3. Global `~/.drydock/skills/`
146
+ 4. Bundled skills (shipped with the package)
147
+
148
+ ### MCP Servers
149
+
150
+ ```toml
151
+ [[mcp_servers]]
152
+ name = "fetch_server"
153
+ transport = "stdio"
154
+ command = "uvx"
155
+ args = ["mcp-server-fetch"]
156
+ ```
157
+
158
+ ### Custom DryDock Home
159
+
160
+ ```bash
161
+ export DRYDOCK_HOME="/path/to/custom/home"
162
+ ```
163
+
164
+ This affects where DryDock looks for `config.toml`, `.env`, `agents/`, `prompts/`, `skills/`, and `logs/`.
165
+
166
+ ## Slash Commands
167
+
168
+ Type `/help` in the input for available commands. Create custom slash commands via the skills system.
169
+
170
+ ## Session Management
171
+
172
+ ```bash
173
+ drydock --continue # Continue last session
174
+ drydock --resume abc123 # Resume specific session
175
+ drydock --workdir /path/to/dir # Set working directory
176
+ ```
177
+
178
+ ## Resources
179
+
180
+ - [CHANGELOG](CHANGELOG.md)
181
+ - [CONTRIBUTING](CONTRIBUTING.md)
182
+ - [ACP Setup](docs/acp-setup.md) — Editor/IDE integration
183
+
184
+ ## License
185
+
186
+ Copyright 2025 Mistral AI (original work)
187
+ Copyright 2026 DryDock contributors (modifications)
188
+
189
+ Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.
190
+
191
+ DryDock is a fork of [mistralai/mistral-vibe](https://github.com/mistralai/mistral-vibe) (Apache 2.0). See [NOTICE](NOTICE) for attribution.
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+ DRYDOCK_ROOT = Path(__file__).parent
6
+ VIBE_ROOT = DRYDOCK_ROOT # Backward compatibility alias
7
+ __version__ = "0.5.0"
@@ -53,14 +53,14 @@ from acp.schema import (
53
53
  )
54
54
  from pydantic import BaseModel, ConfigDict
55
55
 
56
- from vibe import VIBE_ROOT, __version__
57
- from vibe.acp.acp_logger import acp_message_observer
58
- from vibe.acp.tools.base import BaseAcpTool
59
- from vibe.acp.tools.session_update import (
56
+ from drydock import VIBE_ROOT, __version__
57
+ from drydock.acp.acp_logger import acp_message_observer
58
+ from drydock.acp.tools.base import BaseAcpTool
59
+ from drydock.acp.tools.session_update import (
60
60
  tool_call_session_update,
61
61
  tool_result_session_update,
62
62
  )
63
- from vibe.acp.utils import (
63
+ from drydock.acp.utils import (
64
64
  TOOL_OPTIONS,
65
65
  ToolOption,
66
66
  create_assistant_message_replay,
@@ -75,24 +75,24 @@ from vibe.acp.utils import (
75
75
  make_mode_response,
76
76
  make_model_response,
77
77
  )
78
- from vibe.core.agent_loop import AgentLoop
79
- from vibe.core.agents.models import CHAT as CHAT_AGENT, BuiltinAgentName
80
- from vibe.core.autocompletion.path_prompt_adapter import render_path_prompt
81
- from vibe.core.config import (
78
+ from drydock.core.agent_loop import AgentLoop
79
+ from drydock.core.agents.models import CHAT as CHAT_AGENT, BuiltinAgentName
80
+ from drydock.core.autocompletion.path_prompt_adapter import render_path_prompt
81
+ from drydock.core.config import (
82
82
  MissingAPIKeyError,
83
83
  SessionLoggingConfig,
84
84
  VibeConfig,
85
85
  load_dotenv_values,
86
86
  )
87
- from vibe.core.proxy_setup import (
87
+ from drydock.core.proxy_setup import (
88
88
  ProxySetupError,
89
89
  parse_proxy_command,
90
90
  set_proxy_var,
91
91
  unset_proxy_var,
92
92
  )
93
- from vibe.core.session.session_loader import SessionLoader
94
- from vibe.core.tools.base import BaseToolConfig, ToolPermission
95
- from vibe.core.types import (
93
+ from drydock.core.session.session_loader import SessionLoader
94
+ from drydock.core.tools.base import BaseToolConfig, ToolPermission
95
+ from drydock.core.types import (
96
96
  ApprovalResponse,
97
97
  AssistantEvent,
98
98
  AsyncApprovalCallback,
@@ -107,7 +107,7 @@ from vibe.core.types import (
107
107
  ToolStreamEvent,
108
108
  UserMessageEvent,
109
109
  )
110
- from vibe.core.utils import CancellationReason, get_user_cancellation_message
110
+ from drydock.core.utils import CancellationReason, get_user_cancellation_message
111
111
 
112
112
 
113
113
  class AcpSessionLoop(BaseModel):
@@ -7,14 +7,14 @@ import sys
7
7
 
8
8
  import tomli_w
9
9
 
10
- from vibe import __version__
11
- from vibe.core.config import VibeConfig
12
- from vibe.core.config.harness_files import (
10
+ from drydock import __version__
11
+ from drydock.core.config import VibeConfig
12
+ from drydock.core.config.harness_files import (
13
13
  get_harness_files_manager,
14
14
  init_harness_files_manager,
15
15
  )
16
- from vibe.core.logger import logger
17
- from vibe.core.paths import HISTORY_FILE
16
+ from drydock.core.logger import logger
17
+ from drydock.core.paths import HISTORY_FILE
18
18
 
19
19
  # Configure line buffering for subprocess communication
20
20
  sys.stdout.reconfigure(line_buffering=True) # pyright: ignore[reportAttributeAccessIssue]
@@ -77,8 +77,8 @@ def main() -> None:
77
77
  handle_debug_mode()
78
78
  init_harness_files_manager("user", "project")
79
79
 
80
- from vibe.acp.acp_agent_loop import run_acp_server
81
- from vibe.setup.onboarding import run_onboarding
80
+ from drydock.acp.acp_agent_loop import run_acp_server
81
+ from drydock.setup.onboarding import run_onboarding
82
82
 
83
83
  bootstrap_config_files()
84
84
  args = parse_arguments()
@@ -8,10 +8,10 @@ from acp.helpers import SessionUpdate, ToolCallContentVariant
8
8
  from acp.schema import ToolCallProgress
9
9
  from pydantic import BaseModel, ConfigDict, Field, SkipValidation
10
10
 
11
- from vibe.core.logger import logger
12
- from vibe.core.tools.base import BaseTool, ToolError
13
- from vibe.core.tools.manager import ToolManager
14
- from vibe.core.types import ToolCallEvent, ToolResultEvent
11
+ from drydock.core.logger import logger
12
+ from drydock.core.tools.base import BaseTool, ToolError
13
+ from drydock.core.tools.manager import ToolManager
14
+ from drydock.core.types import ToolCallEvent, ToolResultEvent
15
15
 
16
16
 
17
17
  @runtime_checkable
@@ -11,12 +11,12 @@ from acp.schema import (
11
11
  WaitForTerminalExitResponse,
12
12
  )
13
13
 
14
- from vibe import VIBE_ROOT
15
- from vibe.acp.tools.base import AcpToolState, BaseAcpTool
16
- from vibe.core.logger import logger
17
- from vibe.core.tools.base import BaseToolState, InvokeContext, ToolError
18
- from vibe.core.tools.builtins.bash import Bash as CoreBashTool, BashArgs, BashResult
19
- from vibe.core.types import ToolCallEvent, ToolResultEvent, ToolStreamEvent
14
+ from drydock import VIBE_ROOT
15
+ from drydock.acp.tools.base import AcpToolState, BaseAcpTool
16
+ from drydock.core.logger import logger
17
+ from drydock.core.tools.base import BaseToolState, InvokeContext, ToolError
18
+ from drydock.core.tools.builtins.bash import Bash as CoreBashTool, BashArgs, BashResult
19
+ from drydock.core.types import ToolCallEvent, ToolResultEvent, ToolStreamEvent
20
20
 
21
21
 
22
22
  class AcpBashState(BaseToolState, AcpToolState):
@@ -2,10 +2,10 @@ from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
4
 
5
- from vibe import VIBE_ROOT
6
- from vibe.acp.tools.base import AcpToolState, BaseAcpTool
7
- from vibe.core.tools.base import BaseToolState, ToolError
8
- from vibe.core.tools.builtins.read_file import (
5
+ from drydock import VIBE_ROOT
6
+ from drydock.acp.tools.base import AcpToolState, BaseAcpTool
7
+ from drydock.core.tools.base import BaseToolState, ToolError
8
+ from drydock.core.tools.builtins.read_file import (
9
9
  ReadFile as CoreReadFileTool,
10
10
  ReadFileArgs,
11
11
  ReadFileResult,
@@ -10,15 +10,15 @@ from acp.schema import (
10
10
  ToolCallStart,
11
11
  )
12
12
 
13
- from vibe import VIBE_ROOT
14
- from vibe.acp.tools.base import AcpToolState, BaseAcpTool
15
- from vibe.core.tools.base import BaseToolState, ToolError
16
- from vibe.core.tools.builtins.search_replace import (
13
+ from drydock import VIBE_ROOT
14
+ from drydock.acp.tools.base import AcpToolState, BaseAcpTool
15
+ from drydock.core.tools.base import BaseToolState, ToolError
16
+ from drydock.core.tools.builtins.search_replace import (
17
17
  SearchReplace as CoreSearchReplaceTool,
18
18
  SearchReplaceArgs,
19
19
  SearchReplaceResult,
20
20
  )
21
- from vibe.core.types import ToolCallEvent, ToolResultEvent
21
+ from drydock.core.types import ToolCallEvent, ToolResultEvent
22
22
 
23
23
 
24
24
  class AcpSearchReplaceState(BaseToolState, AcpToolState):
@@ -5,9 +5,9 @@ from typing import cast
5
5
  from acp.helpers import SessionUpdate
6
6
  from acp.schema import AgentPlanUpdate, PlanEntry, PlanEntryPriority, PlanEntryStatus
7
7
 
8
- from vibe import VIBE_ROOT
9
- from vibe.acp.tools.base import AcpToolState, BaseAcpTool
10
- from vibe.core.tools.builtins.todo import (
8
+ from drydock import VIBE_ROOT
9
+ from drydock.acp.tools.base import AcpToolState, BaseAcpTool
10
+ from drydock.core.tools.builtins.todo import (
11
11
  Todo as CoreTodoTool,
12
12
  TodoArgs,
13
13
  TodoPriority,
@@ -15,7 +15,7 @@ from vibe.core.tools.builtins.todo import (
15
15
  TodoState,
16
16
  TodoStatus,
17
17
  )
18
- from vibe.core.types import ToolCallEvent, ToolResultEvent
18
+ from drydock.core.types import ToolCallEvent, ToolResultEvent
19
19
 
20
20
  TodoArgs = TodoArgs
21
21
 
@@ -10,15 +10,15 @@ from acp.schema import (
10
10
  ToolCallStart,
11
11
  )
12
12
 
13
- from vibe import VIBE_ROOT
14
- from vibe.acp.tools.base import AcpToolState, BaseAcpTool
15
- from vibe.core.tools.base import BaseToolState, ToolError
16
- from vibe.core.tools.builtins.write_file import (
13
+ from drydock import VIBE_ROOT
14
+ from drydock.acp.tools.base import AcpToolState, BaseAcpTool
15
+ from drydock.core.tools.base import BaseToolState, ToolError
16
+ from drydock.core.tools.builtins.write_file import (
17
17
  WriteFile as CoreWriteFileTool,
18
18
  WriteFileArgs,
19
19
  WriteFileResult,
20
20
  )
21
- from vibe.core.types import ToolCallEvent, ToolResultEvent
21
+ from drydock.core.types import ToolCallEvent, ToolResultEvent
22
22
 
23
23
 
24
24
  class AcpWriteFileState(BaseToolState, AcpToolState):