drydock-cli 2.6.81__tar.gz → 2.6.82__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 (594) hide show
  1. drydock_cli-2.6.82/.auto_release.lock +1 -0
  2. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/PKG-INFO +1 -1
  3. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/handlers/event_handler.py +10 -1
  4. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/format.py +36 -9
  5. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/bash.py +5 -18
  6. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/write_file.py +21 -78
  7. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/pyproject.toml +1 -1
  8. drydock_cli-2.6.81/.auto_release.lock +0 -1
  9. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.claude/scheduled_tasks.lock +0 -0
  10. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/CODEOWNERS +0 -0
  11. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  12. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  13. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  14. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/workflows/build-and-upload.yml +0 -0
  15. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/workflows/ci.yml +0 -0
  16. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/workflows/issue-labeler.yml +0 -0
  17. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.github/workflows/release.yml +0 -0
  18. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.gitignore +0 -0
  19. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.pre-commit-config.yaml +0 -0
  20. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.python-version +0 -0
  21. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.typos.toml +0 -0
  22. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.vscode/extensions.json +0 -0
  23. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.vscode/launch.json +0 -0
  24. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/.vscode/settings.json +0 -0
  25. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/AGENTS.md +0 -0
  26. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/BASELINE_412.md +0 -0
  27. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/CHANGELOG.md +0 -0
  28. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/CLAUDE.md +0 -0
  29. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/CONTRIBUTING.md +0 -0
  30. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/Drydock_rebrand.md +0 -0
  31. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/LICENSE +0 -0
  32. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/MODEL_SHORTCOMINGS.md +0 -0
  33. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/NOTICE +0 -0
  34. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/OVERNIGHT_REPORT_2026_04_13.md +0 -0
  35. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/PRD.md +0 -0
  36. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/README.md +0 -0
  37. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/action.yml +0 -0
  38. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/README.md +0 -0
  39. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results1.tsv +0 -0
  40. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results13.tsv +0 -0
  41. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results14.tsv +0 -0
  42. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results15.tsv +0 -0
  43. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results16.tsv +0 -0
  44. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results17.tsv +0 -0
  45. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results18.tsv +0 -0
  46. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results19.tsv +0 -0
  47. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results2.tsv +0 -0
  48. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results20.tsv +0 -0
  49. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results3.tsv +0 -0
  50. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results4.tsv +0 -0
  51. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results5.tsv +0 -0
  52. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results6.tsv +0 -0
  53. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results7.tsv +0 -0
  54. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results8.tsv +0 -0
  55. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results9.tsv +0 -0
  56. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/baseline_history/results_evolved_v1.tsv +0 -0
  57. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/distribution/zed/LICENSE +0 -0
  58. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/distribution/zed/extension.toml +0 -0
  59. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/distribution/zed/icons/mistral_vibe.svg +0 -0
  60. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/docs/README.md +0 -0
  61. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/docs/acp-setup.md +0 -0
  62. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/docs/proxy-setup.md +0 -0
  63. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/__init__.py +0 -0
  64. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/__init__.py +0 -0
  65. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/acp_agent_loop.py +0 -0
  66. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/acp_logger.py +0 -0
  67. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/entrypoint.py +0 -0
  68. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/__init__.py +0 -0
  69. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/base.py +0 -0
  70. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/builtins/bash.py +0 -0
  71. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/builtins/read_file.py +0 -0
  72. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/builtins/search_replace.py +0 -0
  73. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/builtins/todo.py +0 -0
  74. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/builtins/write_file.py +0 -0
  75. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/tools/session_update.py +0 -0
  76. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/acp/utils.py +0 -0
  77. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/__init__.py +0 -0
  78. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/autocompletion/__init__.py +0 -0
  79. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/autocompletion/base.py +0 -0
  80. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/autocompletion/path_completion.py +0 -0
  81. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/autocompletion/slash_command.py +0 -0
  82. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/cli.py +0 -0
  83. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/clipboard.py +0 -0
  84. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/commands.py +0 -0
  85. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/entrypoint.py +0 -0
  86. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/history_manager.py +0 -0
  87. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  88. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  89. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  90. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/terminal_setup.py +0 -0
  91. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/__init__.py +0 -0
  92. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  93. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/app.py +0 -0
  94. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/app.tcss +0 -0
  95. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/external_editor.py +0 -0
  96. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  97. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  98. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  99. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  100. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  101. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  102. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  103. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  104. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  105. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  106. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  107. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  108. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  109. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  110. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  111. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  112. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  113. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  114. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  115. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  116. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  117. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  118. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  119. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  120. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  121. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  122. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  123. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  124. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  125. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  126. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  127. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  128. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  129. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  130. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  131. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/windowing/history.py +0 -0
  132. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  133. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/textual_ui/windowing/state.py +0 -0
  134. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/__init__.py +0 -0
  135. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  136. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  137. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  138. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  139. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  140. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/update.py +0 -0
  141. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/cli/update_notifier/whats_new.py +0 -0
  142. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/__init__.py +0 -0
  143. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/agent_loop.py +0 -0
  144. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/agents/__init__.py +0 -0
  145. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/agents/manager.py +0 -0
  146. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/agents/models.py +0 -0
  147. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/auth/__init__.py +0 -0
  148. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/auth/crypto.py +0 -0
  149. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/auth/github.py +0 -0
  150. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/__init__.py +0 -0
  151. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/completers.py +0 -0
  152. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  153. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  154. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  155. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  156. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  157. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/fuzzy.py +0 -0
  158. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/path_prompt.py +0 -0
  159. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  160. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/build_orchestrator.py +0 -0
  161. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/config/__init__.py +0 -0
  162. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/config/_settings.py +0 -0
  163. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/config/harness_files/__init__.py +0 -0
  164. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  165. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/config/harness_files/_paths.py +0 -0
  166. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/consultant.py +0 -0
  167. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/drydock_states.py +0 -0
  168. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/hooks.py +0 -0
  169. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/__init__.py +0 -0
  170. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/anthropic.py +0 -0
  171. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/base.py +0 -0
  172. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/factory.py +0 -0
  173. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/generic.py +0 -0
  174. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/mistral.py +0 -0
  175. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  176. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/backend/vertex.py +0 -0
  177. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/exceptions.py +0 -0
  178. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/message_utils.py +0 -0
  179. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/llm/types.py +0 -0
  180. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/logger.py +0 -0
  181. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/middleware.py +0 -0
  182. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/output_formatters.py +0 -0
  183. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/paths/__init__.py +0 -0
  184. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/paths/_local_config_walk.py +0 -0
  185. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/paths/_vibe_home.py +0 -0
  186. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/paths/conventions.py +0 -0
  187. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/plan_session.py +0 -0
  188. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/plugins.py +0 -0
  189. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/programmatic.py +0 -0
  190. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/__init__.py +0 -0
  191. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/builder.md +0 -0
  192. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/cli.md +0 -0
  193. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/compact.md +0 -0
  194. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/dangerous_directory.md +0 -0
  195. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/diagnostic.md +0 -0
  196. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/explore.md +0 -0
  197. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/gemma4.md +0 -0
  198. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/planner.md +0 -0
  199. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/project_context.md +0 -0
  200. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/prompts/tests.md +0 -0
  201. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/proxy_setup.py +0 -0
  202. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/agent_memory.py +0 -0
  203. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/checkpoints.py +0 -0
  204. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/session_loader.py +0 -0
  205. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/session_logger.py +0 -0
  206. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/session_migration.py +0 -0
  207. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session/state_file.py +0 -0
  208. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/session_checker.py +0 -0
  209. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/skills/__init__.py +0 -0
  210. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/skills/manager.py +0 -0
  211. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/skills/models.py +0 -0
  212. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/skills/parser.py +0 -0
  213. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/slug.py +0 -0
  214. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/system_prompt.py +0 -0
  215. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/telemetry/__init__.py +0 -0
  216. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/telemetry/send.py +0 -0
  217. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/teleport/errors.py +0 -0
  218. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/teleport/git.py +0 -0
  219. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/teleport/nuage.py +0 -0
  220. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/teleport/teleport.py +0 -0
  221. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/teleport/types.py +0 -0
  222. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/base.py +0 -0
  223. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/_task_manager.py +0 -0
  224. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  225. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/cron.py +0 -0
  226. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  227. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/glob_tool.py +0 -0
  228. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/grep.py +0 -0
  229. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  230. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/lsp.py +0 -0
  231. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  232. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  233. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/powershell.py +0 -0
  234. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  235. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  236. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  237. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  238. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  239. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  240. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  241. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  242. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  243. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  244. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  245. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  246. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  247. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  248. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/task.md +0 -0
  249. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  250. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  251. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  252. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  253. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  254. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  255. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  256. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/read_file.py +0 -0
  257. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/search_replace.py +0 -0
  258. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/task.py +0 -0
  259. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/todo.py +0 -0
  260. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/tool_search.py +0 -0
  261. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/webfetch.py +0 -0
  262. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/websearch.py +0 -0
  263. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/builtins/worktree.py +0 -0
  264. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/injection_guard.py +0 -0
  265. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/manager.py +0 -0
  266. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/mcp/__init__.py +0 -0
  267. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/mcp/registry.py +0 -0
  268. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/mcp/tools.py +0 -0
  269. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/mcp_sampling.py +0 -0
  270. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/ui.py +0 -0
  271. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/tools/utils.py +0 -0
  272. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/trusted_folders.py +0 -0
  273. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/types.py +0 -0
  274. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/core/utils.py +0 -0
  275. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/__init__.py +0 -0
  276. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/base.py +0 -0
  277. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/onboarding.tcss +0 -0
  278. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/screens/__init__.py +0 -0
  279. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/screens/api_key.py +0 -0
  280. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/onboarding/screens/welcome.py +0 -0
  281. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  282. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  283. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/__init__.py +0 -0
  284. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/api-design/SKILL.md +0 -0
  285. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/audit-tests/SKILL.md +0 -0
  286. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/batch/SKILL.md +0 -0
  287. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/commit-code/SKILL.md +0 -0
  288. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/context-summary/SKILL.md +0 -0
  289. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/create-presentation/SKILL.md +0 -0
  290. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/deep-research/SKILL.md +0 -0
  291. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/deploy/SKILL.md +0 -0
  292. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/diff-review/SKILL.md +0 -0
  293. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/doc-gen/SKILL.md +0 -0
  294. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/explain-code/SKILL.md +0 -0
  295. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/explore-code/SKILL.md +0 -0
  296. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/fix-issue/SKILL.md +0 -0
  297. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/git-ops/SKILL.md +0 -0
  298. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/init-project/SKILL.md +0 -0
  299. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/investigate/SKILL.md +0 -0
  300. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/loop/SKILL.md +0 -0
  301. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/migrate/SKILL.md +0 -0
  302. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/perf-analyze/SKILL.md +0 -0
  303. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/plan-impl/SKILL.md +0 -0
  304. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/pr-review/SKILL.md +0 -0
  305. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/refactor/SKILL.md +0 -0
  306. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/regex-help/SKILL.md +0 -0
  307. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/review/SKILL.md +0 -0
  308. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/security-review/SKILL.md +0 -0
  309. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/ship/SKILL.md +0 -0
  310. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/simplify/SKILL.md +0 -0
  311. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/strong-tests/SKILL.md +0 -0
  312. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/skills/test-verify/SKILL.md +0 -0
  313. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock/whats_new.md +0 -0
  314. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock-acp.spec +0 -0
  315. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/drydock_terms.md +0 -0
  316. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/flake.lock +0 -0
  317. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/flake.nix +0 -0
  318. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/README.md +0 -0
  319. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/audit_sampler.py +0 -0
  320. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/auto_generate_tests.py +0 -0
  321. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/auto_release.sh +0 -0
  322. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/auto_test_loop.sh +0 -0
  323. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/backup.sh +0 -0
  324. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/bump_version.py +0 -0
  325. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/comprehensive_loop.py +0 -0
  326. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/deploy_to_github.sh +0 -0
  327. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/discover_cli_tools.sh +0 -0
  328. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/evolve_tests.py +0 -0
  329. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/install.sh +0 -0
  330. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/llm_balancer.py +0 -0
  331. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/mega_loop.py +0 -0
  332. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/meta_ralph_loop.py +0 -0
  333. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/monitor_swebench.sh +0 -0
  334. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/monitor_test_battery.sh +0 -0
  335. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/notify_release.py +0 -0
  336. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/oss_task_harness.py +0 -0
  337. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/overnight_agents_test.sh +0 -0
  338. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/port_task.py +0 -0
  339. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/prepare_release.py +0 -0
  340. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/publish_to_pypi.sh +0 -0
  341. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/ralph_loop.py +0 -0
  342. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/session_loop_audit.py +0 -0
  343. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/shakedown.py +0 -0
  344. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/shakedown_interactive.py +0 -0
  345. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/shakedown_regression.sh +0 -0
  346. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/shakedown_suite.sh +0 -0
  347. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/shakedown_variance.sh +0 -0
  348. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/telegram_bot.py +0 -0
  349. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/test_bank.sh +0 -0
  350. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/test_full.sh +0 -0
  351. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/test_smoke.sh +0 -0
  352. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/test_tui_path.py +0 -0
  353. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/tui_test.py +0 -0
  354. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/scripts/vllm_failover.sh +0 -0
  355. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/__init__.py +0 -0
  356. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/conftest.py +0 -0
  357. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_acp.py +0 -0
  358. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_agent_thought.py +0 -0
  359. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_bash.py +0 -0
  360. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_compact_session_updates.py +0 -0
  361. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_content.py +0 -0
  362. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_initialize.py +0 -0
  363. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_list_sessions.py +0 -0
  364. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_load_session.py +0 -0
  365. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_multi_session.py +0 -0
  366. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_new_session.py +0 -0
  367. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_proxy_setup_acp.py +0 -0
  368. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_read_file.py +0 -0
  369. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_search_replace.py +0 -0
  370. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_set_config_option.py +0 -0
  371. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_set_mode.py +0 -0
  372. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_set_model.py +0 -0
  373. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_tool_call_session_update.py +0 -0
  374. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_utils.py +0 -0
  375. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/acp/test_write_file.py +0 -0
  376. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_file_indexer.py +0 -0
  377. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_fuzzy.py +0 -0
  378. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  379. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  380. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_path_completion_controller.py +0 -0
  381. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  382. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_slash_command_controller.py +0 -0
  383. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  384. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/__init__.py +0 -0
  385. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/data/__init__.py +0 -0
  386. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/data/fireworks.py +0 -0
  387. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/data/mistral.py +0 -0
  388. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/test_anthropic_adapter.py +0 -0
  389. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/test_backend.py +0 -0
  390. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/test_reasoning_adapter.py +0 -0
  391. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  392. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  393. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  394. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  395. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_bell_notifications.py +0 -0
  396. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_braille_renderer.py +0 -0
  397. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_clipboard.py +0 -0
  398. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_commands.py +0 -0
  399. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_copy_shortcuts.py +0 -0
  400. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_external_editor.py +0 -0
  401. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_no_markup_static.py +0 -0
  402. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_question_app.py +0 -0
  403. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_spinner.py +0 -0
  404. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_switching_mode.py +0 -0
  405. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  406. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  407. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_ui_session_resume.py +0 -0
  408. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/test_ui_skill_dispatch.py +0 -0
  409. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/textual_ui/__init__.py +0 -0
  410. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/cli/textual_ui/test_session_picker.py +0 -0
  411. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/conftest.py +0 -0
  412. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_agents.py +0 -0
  413. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_auth_crypto.py +0 -0
  414. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_auth_github.py +0 -0
  415. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_config_load_dotenv.py +0 -0
  416. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_config_paths.py +0 -0
  417. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_config_resolution.py +0 -0
  418. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_file_logging.py +0 -0
  419. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_plan_session.py +0 -0
  420. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_proxy_setup.py +0 -0
  421. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_slug.py +0 -0
  422. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_telemetry_send.py +0 -0
  423. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_teleport_git.py +0 -0
  424. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_teleport_nuage.py +0 -0
  425. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_teleport_service.py +0 -0
  426. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_trusted_folders.py +0 -0
  427. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/core/test_utils.py +0 -0
  428. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/common.py +0 -0
  429. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/conftest.py +0 -0
  430. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/mock_server.py +0 -0
  431. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  432. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/test_cli_tui_streaming.py +0 -0
  433. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  434. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/fixtures/doc_qa_system_prd.md +0 -0
  435. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/mock/__init__.py +0 -0
  436. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/mock/mock_backend_factory.py +0 -0
  437. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/mock/mock_entrypoint.py +0 -0
  438. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/mock/utils.py +0 -0
  439. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/onboarding/test_run_onboarding.py +0 -0
  440. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/onboarding/test_ui_onboarding.py +0 -0
  441. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/session/test_session_loader.py +0 -0
  442. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/session/test_session_logger.py +0 -0
  443. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/session/test_session_migration.py +0 -0
  444. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/skills/conftest.py +0 -0
  445. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/skills/test_manager.py +0 -0
  446. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/skills/test_models.py +0 -0
  447. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/skills/test_parser.py +0 -0
  448. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  449. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  450. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  451. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  452. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  453. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  454. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  455. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  456. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  457. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  458. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  459. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  460. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  461. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  462. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  463. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  464. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  465. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  466. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  467. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  468. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  469. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  470. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  471. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  472. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  473. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  474. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  475. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  476. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  477. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  478. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  479. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  480. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  481. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  482. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  483. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  484. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  485. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  486. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  487. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  488. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  489. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  490. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  491. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  492. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  493. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  494. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  495. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  496. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  497. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  498. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  499. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  500. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  501. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  502. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  503. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  504. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  505. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  506. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  507. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  508. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/base_snapshot_test_app.py +0 -0
  509. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/conftest.py +0 -0
  510. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/snap_compare.py +0 -0
  511. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  512. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  513. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  514. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  515. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  516. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  517. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  518. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  519. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  520. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  521. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  522. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  523. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  524. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  525. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/stubs/fake_backend.py +0 -0
  526. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/stubs/fake_client.py +0 -0
  527. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/stubs/fake_tool.py +0 -0
  528. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_auto_compact.py +0 -0
  529. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_backend.py +0 -0
  530. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_observer_streaming.py +0 -0
  531. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_stats.py +0 -0
  532. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_tasks.py +0 -0
  533. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agent_tool_call.py +0 -0
  534. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_agents.py +0 -0
  535. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_build.py +0 -0
  536. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_debug.py +0 -0
  537. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_multiagent.py +0 -0
  538. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_prd.py +0 -0
  539. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_prd_extended.py +0 -0
  540. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_tools.py +0 -0
  541. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_bank_update.py +0 -0
  542. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_build_projects.py +0 -0
  543. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_cli_programmatic_preload.py +0 -0
  544. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_current_bugs.py +0 -0
  545. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_drydock_regression.py +0 -0
  546. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_drydock_tasks.py +0 -0
  547. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_full_regression.py +0 -0
  548. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_history_manager.py +0 -0
  549. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_integration.py +0 -0
  550. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_loop_detection.py +0 -0
  551. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_message_id.py +0 -0
  552. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_message_merging.py +0 -0
  553. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_middleware.py +0 -0
  554. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_multi_agent.py +0 -0
  555. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_real_failures.py +0 -0
  556. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_real_issues.py +0 -0
  557. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_real_workflow.py +0 -0
  558. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_reasoning_content.py +0 -0
  559. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_smoke.py +0 -0
  560. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_system_prompt.py +0 -0
  561. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_tagged_text.py +0 -0
  562. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_tool_args.py +0 -0
  563. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_ui_external_editor.py +0 -0
  564. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_ui_input_history.py +0 -0
  565. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_user_issues.py +0 -0
  566. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/test_workloads.py +0 -0
  567. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/testbank_helpers.py +0 -0
  568. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_ask_user_question.py +0 -0
  569. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_bash.py +0 -0
  570. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_exit_plan_mode.py +0 -0
  571. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_grep.py +0 -0
  572. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_invoke_context.py +0 -0
  573. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_manager_get_tool_config.py +0 -0
  574. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_mcp.py +0 -0
  575. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_mcp_sampling.py +0 -0
  576. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_task.py +0 -0
  577. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_ui_bash_execution.py +0 -0
  578. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_webfetch.py +0 -0
  579. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/tools/test_websearch.py +0 -0
  580. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  581. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  582. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_do_update.py +0 -0
  583. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  584. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_github_update_gateway.py +0 -0
  585. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  586. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_ui_update_notification.py +0 -0
  587. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_update_use_case.py +0 -0
  588. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/tests/update_notifier/test_whats_new.py +0 -0
  589. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/uv.lock +0 -0
  590. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/worked_examples/README.md +0 -0
  591. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/worked_examples/cli_subcommand_dispatch.py +0 -0
  592. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/worked_examples/lookup.json +0 -0
  593. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/worked_examples/sql_parser.py +0 -0
  594. {drydock_cli-2.6.81 → drydock_cli-2.6.82}/worked_examples/tree_walking_interpreter.py +0 -0
@@ -0,0 +1 @@
1
+ 1419074
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.6.81
3
+ Version: 2.6.82
4
4
  Summary: Local-first CLI coding agent — tested with Gemma 4 26B via vLLM
5
5
  Project-URL: Homepage, https://github.com/fbobe321/drydock
6
6
  Project-URL: Repository, https://github.com/fbobe321/drydock
@@ -84,7 +84,16 @@ class EventHandler:
84
84
  )
85
85
  await self._handle_assistant_message(event)
86
86
  case ToolCallEvent():
87
- await self.finalize_streaming()
87
+ # Finalize assistant content stream (user-visible text) but
88
+ # KEEP the reasoning widget open across tool calls. Closing
89
+ # it spawns a fresh "Thought" widget for every reasoning
90
+ # chunk between calls — a turn with N tool calls shows N
91
+ # "Thought" widgets stacked down the screen.
92
+ if self.current_streaming_message is not None:
93
+ await self.current_streaming_message.stop_stream()
94
+ if self.current_streaming_message.is_stripped_content_empty():
95
+ await self.current_streaming_message.remove()
96
+ self.current_streaming_message = None
88
97
  return await self._handle_tool_call(event, loading_widget)
89
98
  case ToolResultEvent():
90
99
  await self.finalize_streaming()
@@ -164,25 +164,52 @@ class APIToolFormatHandler:
164
164
  try:
165
165
  args = json.loads(raw_json)
166
166
  except json.JSONDecodeError:
167
- # Don't silently use {} log the malformed args and skip
167
+ # Gemma 4 frequently leaks thinking-token markers INSIDE
168
+ # JSON string values. Tokens like "<|\Fix" make `\F` an
169
+ # invalid JSON escape, which crashes the decoder and loses
170
+ # the whole tool call. Sanitize and retry before giving up.
168
171
  import logging
172
+ import re as _re
169
173
  logging.getLogger(__name__).warning(
170
174
  "Malformed tool call JSON for %s: %s",
171
175
  function_call.name,
172
176
  (function_call.arguments or "")[:200],
173
177
  )
174
- # Try to salvage partial JSON by closing brackets
175
178
  raw = (function_call.arguments or "").strip()
179
+ args = {}
176
180
  if raw:
177
- # Count open/close braces and try to fix
178
- opens = raw.count('{') - raw.count('}')
179
- raw_fixed = raw + '}' * max(0, opens)
181
+ sanitized = raw
182
+ # Strip complete <|channel>...<channel|>/<tool_call|> blocks
183
+ sanitized = _re.sub(
184
+ r"<\|channel\>.*?(?:<channel\|>|<tool_call\|>)",
185
+ "", sanitized, flags=_re.DOTALL,
186
+ )
187
+ sanitized = _re.sub(
188
+ r"<\|tool_call\>.*?<tool_call\|>",
189
+ "", sanitized, flags=_re.DOTALL,
190
+ )
191
+ # Strip unpaired/truncated <|...|> and <|...> tokens.
192
+ sanitized = _re.sub(r"<\|[^>]{0,200}\|>", "", sanitized)
193
+ sanitized = _re.sub(r"<\|[^>]{0,200}>", "", sanitized)
194
+ sanitized = _re.sub(r"<[^>]{0,200}\|>", "", sanitized)
195
+ # Escape any remaining invalid backslash escapes (JSON
196
+ # only allows \" \\ \/ \b \f \n \r \t \u). Catches e.g.
197
+ # `<|\Fix` residue where `\F` would abort the decoder.
198
+ sanitized = _re.sub(
199
+ r'\\(?!["\\/bfnrtu])', r'\\\\', sanitized,
200
+ )
180
201
  try:
181
- args = json.loads(raw_fixed)
202
+ args = json.loads(sanitized)
182
203
  except json.JSONDecodeError:
183
- args = {"_parse_error": f"Malformed JSON: {raw[:100]}..."}
184
- else:
185
- args = {}
204
+ # Last-ditch: try closing any unbalanced braces.
205
+ opens = sanitized.count("{") - sanitized.count("}")
206
+ if opens > 0:
207
+ try:
208
+ args = json.loads(sanitized + "}" * opens)
209
+ except json.JSONDecodeError:
210
+ args = {"_parse_error": f"Malformed JSON after sanitize: {sanitized[:100]}..."}
211
+ else:
212
+ args = {"_parse_error": f"Malformed JSON: {raw[:100]}..."}
186
213
 
187
214
  tool_calls.append(
188
215
  ParsedToolCall(
@@ -388,30 +388,17 @@ class Bash(
388
388
 
389
389
  returncode = proc.returncode or 0
390
390
 
391
- # Mechanical loop-breaker.
392
- # Tier 1 (3rd identical call): collapse body to short notice.
393
- # Tier 2 (5th identical call): raise ToolError. Notice-in-
394
- # tool-result was being ignored 75/75 times by Gemma 4
395
- # (session 20260414_003629 had 99 bash calls, 75 were NOTICE
396
- # re-runs). ToolError goes through the error-handling path
397
- # and the model visibly reacts to those.
391
+ # Mechanical loop-breaker (ADVISORY ONLY — never raise
392
+ # ToolError; see feedback_no_tool_errors_for_loop_detection.md).
393
+ # 3rd+ identical call: collapse body to short notice so the
394
+ # model sees "this ran already with same output" without
395
+ # getting refused into a block-loop.
398
396
  state = self.state.__dict__.setdefault("_bash_history", {})
399
397
  combined = stdout + "\n---STDERR---\n" + stderr
400
398
  out_hash = hash((combined, returncode))
401
399
  entry = state.get(args.command)
402
400
  if entry and entry["hash"] == out_hash:
403
401
  entry["count"] += 1
404
- if entry["count"] >= 5:
405
- raise ToolError(
406
- f"REFUSED: `{args.command[:80]}` has run "
407
- f"{entry['count']} times with IDENTICAL output "
408
- f"(rc={returncode}). Re-running will NOT change "
409
- f"anything. You MUST do something DIFFERENT: "
410
- f"edit source files, write tests, read a DIFFERENT "
411
- f"file, or move on. This exact command is blocked "
412
- f"until you take a different action. Last stdout "
413
- f"(first 300): {stdout[:300]!r}"
414
- )
415
402
  if entry["count"] >= 3:
416
403
  notice = (
417
404
  f"[NOTICE: this is the #{entry['count']} identical "
@@ -392,44 +392,19 @@ class WriteFile(
392
392
  ) -> AsyncGenerator[ToolStreamEvent | WriteFileResult, None]:
393
393
  file_path, file_existed, content_bytes = self._prepare_and_validate_path(args)
394
394
 
395
- # Path-write thrash gate (catches write_file search_replace ping-pong).
396
- # Counts CUMULATIVE writes to a path regardless of content. Identical-
397
- # content dedup misses this case because an intervening search_replace
398
- # mutates the file between writes, so each write_file sees "different"
399
- # content even though the model is rewriting the same broken version.
400
- # Real bug: minivc session wrote commands/__init__.py 11 times — every
401
- # write was clobbering the prior search_replace fix. Threshold 5 is
402
- # generous; legitimate work writes a file 1–2x.
395
+ # Path-write thrash counter (just counts; advisory only). Per
396
+ # feedback_no_tool_errors_for_loop_detection.md: loop detection
397
+ # in tools must be advisory, never raise ToolError — hard blocks
398
+ # cause their own loops on long tasks.
403
399
  path_writes = self.state.__dict__.setdefault("_path_writes", {})
404
400
  path_key = str(file_path)
405
401
  path_writes[path_key] = path_writes.get(path_key, 0) + 1
406
402
  path_n = path_writes[path_key]
407
- if path_n >= 5:
408
- raise ToolError(
409
- f"BLOCKED: write_file({file_path.name}) has been called "
410
- f"{path_n} times this session on the same path. This is "
411
- f"a thrash loop — likely write_file overwriting prior "
412
- f"search_replace fixes, or repeated full rewrites instead "
413
- f"of targeted edits. Refused. Switch tactic: "
414
- f"(1) read_file({file_path.name}) to see CURRENT disk state, "
415
- f"(2) use search_replace for surgical fixes, "
416
- f"(3) move to a DIFFERENT file in your plan and come back later. "
417
- f"Do NOT call write_file on this path again until you have "
418
- f"made progress elsewhere."
419
- )
420
403
 
421
404
  # Skip if file already has identical content (prevents write loops).
422
- #
423
- # Three-tier escalation first call is a friendly advisory, second
424
- # adds concrete state, third is a HARD BLOCK via ToolError. Every
425
- # advisory signal in drydock (dedup content, system note nudge,
426
- # missing-import warning, user-typed STOP interrupt) is ignored by
427
- # Gemma 4 on write loops — confirmed by 3 of 5 failures in the
428
- # April 2026 user-pain suite run. The hard block is narrow: it only
429
- # fires on pure no-op writes (file exists AND content matches disk)
430
- # after 3 identical attempts. Legitimate retries (different content,
431
- # different path, or after the model successfully wrote a DIFFERENT
432
- # file) are never blocked.
405
+ # ADVISORY ONLY — must never raise ToolError. See
406
+ # feedback_no_tool_errors_for_loop_detection.md: hard blocks cause
407
+ # their own loops on long tasks.
433
408
  if file_existed:
434
409
  try:
435
410
  existing = file_path.read_text(encoding="utf-8")
@@ -439,28 +414,6 @@ class WriteFile(
439
414
  state[key] = state.get(key, 0) + 1
440
415
  repeat_n = state[key]
441
416
 
442
- # Tier 3: hard block. 3rd identical no-op write → ToolError.
443
- if repeat_n >= 3:
444
- try:
445
- siblings = sorted(
446
- p.name for p in file_path.parent.iterdir()
447
- if p.is_file() and not p.name.startswith("__pycache__")
448
- )
449
- sibling_str = ", ".join(siblings) if siblings else "(none)"
450
- except Exception:
451
- sibling_str = "(unknown)"
452
- raise ToolError(
453
- f"BLOCKED: write_file({file_path.name}) has been called "
454
- f"{repeat_n} times with IDENTICAL content that already "
455
- f"matches the file on disk. This is a no-op loop. "
456
- f"Files in {file_path.parent.name}/: {sibling_str}. "
457
- f"Do something DIFFERENT — write a different file from "
458
- f"your plan, or run bash with `python3 -m "
459
- f"{file_path.parent.name} --help` to verify the package. "
460
- f"This exact write_file call is refused."
461
- )
462
-
463
- # Tier 2: escalated advisory with directory listing.
464
417
  msg = "File already has this exact content (no-op). "
465
418
  if repeat_n >= 2:
466
419
  try:
@@ -472,16 +425,13 @@ class WriteFile(
472
425
  msg += (
473
426
  f"You've written this exact file {repeat_n} times. "
474
427
  f"Files currently in {file_path.parent.name}/: "
475
- f"{sibling_str}. STOP writing this file. "
476
- f"Either write a DIFFERENT file from your plan, "
477
- f"or run `bash` with `python3 -m {file_path.parent.name} --help` "
478
- f"to verify the package works. "
479
- f"ONE MORE identical write to this path will be blocked."
428
+ f"{sibling_str}. Move on write a DIFFERENT file "
429
+ f"from your plan, or run `bash` with `python3 -m "
430
+ f"{file_path.parent.name} --help` to verify."
480
431
  )
481
432
  except Exception:
482
433
  msg += "Move to the NEXT file in your plan."
483
434
  else:
484
- # Tier 1: first duplicate — friendly advisory.
485
435
  msg += "Move to the NEXT file in your plan."
486
436
 
487
437
  yield WriteFileResult(
@@ -491,8 +441,6 @@ class WriteFile(
491
441
  content=msg,
492
442
  )
493
443
  return
494
- except ToolError:
495
- raise
496
444
  except Exception:
497
445
  pass
498
446
 
@@ -511,10 +459,9 @@ class WriteFile(
511
459
  import ast
512
460
  tree = ast.parse(args.content)
513
461
  except SyntaxError as e:
514
- # Track consecutive syntax-error writes per file. Gemma 4
515
- # thrasheseach retry has DIFFERENT (still broken) content,
516
- # so identical-content dedup never fires. After 3 in a row on
517
- # the same path, escalate to ToolError forcing a tactic change.
462
+ # Track consecutive syntax-error writes per file. ADVISORY
463
+ # ONLYmust not raise ToolError. See
464
+ # feedback_no_tool_errors_for_loop_detection.md.
518
465
  thrash = self.state.__dict__.setdefault("_syntax_thrash", {})
519
466
  key = str(file_path)
520
467
  thrash[key] = thrash.get(key, 0) + 1
@@ -525,21 +472,17 @@ class WriteFile(
525
472
  f"\n Fix this before moving to the next file."
526
473
  )
527
474
  if thrash_n >= 3:
528
- raise ToolError(
529
- f"BLOCKED: write_file({file_path.name}) has produced "
530
- f"{thrash_n} consecutive syntax errors on this file. "
531
- f"Current error: line {e.lineno}: {e.msg}. "
532
- f"Rewriting the whole file with broken syntax again is "
533
- f"refused. Switch tactic: "
534
- f"(1) read_file({file_path.name}) to see current state, "
535
- f"(2) use search_replace for targeted fixes, or "
536
- f"(3) write a DIFFERENT file from your plan and come "
537
- f"back to this one. This exact write is rejected."
475
+ syntax_warning += (
476
+ f"\n [{thrash_n}th consecutive syntax error on this "
477
+ f"file. Switch tactic: read_file() to see current "
478
+ f"state, then use search_replace for surgical fixes, "
479
+ f"or write a DIFFERENT file and come back later.]"
538
480
  )
539
481
  elif thrash_n == 2:
540
482
  syntax_warning += (
541
- f"\n [2nd syntax error on this file. ONE MORE will be "
542
- f"blocked switch to search_replace or read the file first.]"
483
+ f"\n [2nd syntax error on this file consider "
484
+ f"read_file + search_replace instead of another full "
485
+ f"rewrite.]"
543
486
  )
544
487
  else:
545
488
  # Reset thrash counter on a successful parse.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.6.81"
3
+ version = "2.6.82"
4
4
  description = "Local-first CLI coding agent — tested with Gemma 4 26B via vLLM"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -1 +0,0 @@
1
- 1344655
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