drydock-cli 2.7.40__tar.gz → 2.7.42__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 (745) hide show
  1. drydock_cli-2.7.42/.auto_release.lock +1 -0
  2. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/PKG-INFO +1 -1
  3. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/app.py +1 -0
  4. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/agent_loop.py +10 -1
  5. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/bash.py +7 -4
  6. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/write_file.py +30 -32
  7. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/pyproject.toml +1 -1
  8. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_exact_cmd_loop_breaker.py +17 -0
  9. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_heredoc_confirmation.py +24 -0
  10. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/trip_log.md +148 -0
  11. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/uv.lock +1 -1
  12. drydock_cli-2.7.40/.auto_release.lock +0 -1
  13. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.claude/scheduled_tasks.lock +0 -0
  14. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/CODEOWNERS +0 -0
  15. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  16. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  17. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/workflows/build-and-upload.yml +0 -0
  19. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/workflows/ci.yml +0 -0
  20. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/workflows/issue-labeler.yml +0 -0
  21. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.github/workflows/release.yml +0 -0
  22. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.gitignore +0 -0
  23. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.perf_baseline_done +0 -0
  24. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.pre-commit-config.yaml +0 -0
  25. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.python-version +0 -0
  26. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.typos.toml +0 -0
  27. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.vscode/extensions.json +0 -0
  28. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.vscode/launch.json +0 -0
  29. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/.vscode/settings.json +0 -0
  30. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/AGENTS.md +0 -0
  31. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/Admiral.md +0 -0
  32. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/BASELINE_412.md +0 -0
  33. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/CHANGELOG.md +0 -0
  34. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/CLAUDE.md +0 -0
  35. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/CONTRIBUTING.md +0 -0
  36. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/DEPLOYMENT.md +0 -0
  37. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/Drydock_rebrand.md +0 -0
  38. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/HLE_PRD.md +0 -0
  39. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/JETSON_BENCH.md +0 -0
  40. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/LICENSE +0 -0
  41. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/MODEL_SHORTCOMINGS.md +0 -0
  42. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/NOTICE +0 -0
  43. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/OVERNIGHT_PROGRESS.md +0 -0
  44. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/OVERNIGHT_REPORT_2026_04_13.md +0 -0
  45. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/PERF_SWEEP_PLAN.md +0 -0
  46. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/PRD.md +0 -0
  47. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/README.md +0 -0
  48. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/SOVEREIGN_PRD.md +0 -0
  49. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/TRIAGE_v1.md +0 -0
  50. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/action.yml +0 -0
  51. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/README.md +0 -0
  52. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results1.tsv +0 -0
  53. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results13.tsv +0 -0
  54. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results14.tsv +0 -0
  55. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results15.tsv +0 -0
  56. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results16.tsv +0 -0
  57. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results17.tsv +0 -0
  58. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results18.tsv +0 -0
  59. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results19.tsv +0 -0
  60. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results2.tsv +0 -0
  61. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results20.tsv +0 -0
  62. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results3.tsv +0 -0
  63. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results4.tsv +0 -0
  64. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results5.tsv +0 -0
  65. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results6.tsv +0 -0
  66. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results7.tsv +0 -0
  67. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results8.tsv +0 -0
  68. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results9.tsv +0 -0
  69. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/baseline_history/results_evolved_v1.tsv +0 -0
  70. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/distribution/zed/LICENSE +0 -0
  71. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/distribution/zed/extension.toml +0 -0
  72. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/distribution/zed/icons/mistral_vibe.svg +0 -0
  73. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/docs/README.md +0 -0
  74. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/docs/acp-setup.md +0 -0
  75. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/docs/proxy-setup.md +0 -0
  76. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/__init__.py +0 -0
  77. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/__init__.py +0 -0
  78. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/acp_agent_loop.py +0 -0
  79. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/acp_logger.py +0 -0
  80. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/entrypoint.py +0 -0
  81. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/__init__.py +0 -0
  82. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/base.py +0 -0
  83. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/builtins/bash.py +0 -0
  84. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/builtins/read_file.py +0 -0
  85. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/builtins/search_replace.py +0 -0
  86. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/builtins/todo.py +0 -0
  87. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/builtins/write_file.py +0 -0
  88. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/tools/session_update.py +0 -0
  89. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/acp/utils.py +0 -0
  90. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/__init__.py +0 -0
  91. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/detectors.py +0 -0
  92. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/detectors_proposed.py +0 -0
  93. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/history.py +0 -0
  94. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/interventions.py +0 -0
  95. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/llm_analyzer.py +0 -0
  96. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/metrics.py +0 -0
  97. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/opus_escalator.py +0 -0
  98. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/persistence.py +0 -0
  99. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/policy.py +0 -0
  100. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/proposer.py +0 -0
  101. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/stager.py +0 -0
  102. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/task_classifier.py +0 -0
  103. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/tuning.py +0 -0
  104. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/validator.py +0 -0
  105. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/admiral/worker.py +0 -0
  106. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/__init__.py +0 -0
  107. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/autocompletion/__init__.py +0 -0
  108. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/autocompletion/base.py +0 -0
  109. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/autocompletion/path_completion.py +0 -0
  110. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/autocompletion/slash_command.py +0 -0
  111. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/cli.py +0 -0
  112. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/clipboard.py +0 -0
  113. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/commands.py +0 -0
  114. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/entrypoint.py +0 -0
  115. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/history_manager.py +0 -0
  116. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  117. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  118. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  119. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/terminal_setup.py +0 -0
  120. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/__init__.py +0 -0
  121. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  122. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/app.tcss +0 -0
  123. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/external_editor.py +0 -0
  124. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  125. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  126. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  127. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  128. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  129. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  130. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  131. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  132. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  133. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  134. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  135. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  136. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  137. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  138. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  139. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  140. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  141. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  142. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
  143. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  144. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  145. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  146. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  147. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  148. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  149. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  150. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  151. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  152. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  153. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  154. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  155. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  156. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  157. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  158. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  159. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  160. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  161. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/windowing/history.py +0 -0
  162. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  163. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/textual_ui/windowing/state.py +0 -0
  164. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/__init__.py +0 -0
  165. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  166. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  167. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  168. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  169. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  170. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/update.py +0 -0
  171. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/cli/update_notifier/whats_new.py +0 -0
  172. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/__init__.py +0 -0
  173. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/agents/__init__.py +0 -0
  174. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/agents/manager.py +0 -0
  175. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/agents/models.py +0 -0
  176. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/auth/__init__.py +0 -0
  177. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/auth/crypto.py +0 -0
  178. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/auth/github.py +0 -0
  179. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/__init__.py +0 -0
  180. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/completers.py +0 -0
  181. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  182. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  183. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  184. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  185. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  186. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/fuzzy.py +0 -0
  187. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/path_prompt.py +0 -0
  188. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  189. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/build_orchestrator.py +0 -0
  190. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/checkpoint.py +0 -0
  191. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/__init__.py +0 -0
  192. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/__main__.py +0 -0
  193. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/classifier.py +0 -0
  194. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/dispatcher.py +0 -0
  195. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/rules.py +0 -0
  196. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/classifier/signal.py +0 -0
  197. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/__init__.py +0 -0
  198. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/_settings.py +0 -0
  199. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/doctor.py +0 -0
  200. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/harness_files/__init__.py +0 -0
  201. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  202. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/harness_files/_paths.py +0 -0
  203. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/config/local_detect.py +0 -0
  204. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/consultant.py +0 -0
  205. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/context_recovery.py +0 -0
  206. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/drydock_states.py +0 -0
  207. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/hooks.py +0 -0
  208. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/__init__.py +0 -0
  209. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/anthropic.py +0 -0
  210. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/base.py +0 -0
  211. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/factory.py +0 -0
  212. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/generic.py +0 -0
  213. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/mistral.py +0 -0
  214. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  215. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/backend/vertex.py +0 -0
  216. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/exceptions.py +0 -0
  217. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/format.py +0 -0
  218. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/message_utils.py +0 -0
  219. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/llm/types.py +0 -0
  220. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/logger.py +0 -0
  221. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/middleware.py +0 -0
  222. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/output_formatters.py +0 -0
  223. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/paths/__init__.py +0 -0
  224. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/paths/_drydock_home.py +0 -0
  225. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/paths/_local_config_walk.py +0 -0
  226. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/paths/conventions.py +0 -0
  227. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/plan_session.py +0 -0
  228. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/plugins.py +0 -0
  229. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/programmatic.py +0 -0
  230. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/__init__.py +0 -0
  231. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/builder.md +0 -0
  232. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/cli.md +0 -0
  233. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/compact.md +0 -0
  234. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/dangerous_directory.md +0 -0
  235. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/diagnostic.md +0 -0
  236. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/explore.md +0 -0
  237. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/gemma4.md +0 -0
  238. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/planner.md +0 -0
  239. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/project_context.md +0 -0
  240. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/prompts/tests.md +0 -0
  241. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/proxy_setup.py +0 -0
  242. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/agent_memory.py +0 -0
  243. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/checkpoints.py +0 -0
  244. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/session_loader.py +0 -0
  245. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/session_logger.py +0 -0
  246. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/session_migration.py +0 -0
  247. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session/state_file.py +0 -0
  248. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/session_checker.py +0 -0
  249. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/skills/__init__.py +0 -0
  250. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/skills/manager.py +0 -0
  251. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/skills/models.py +0 -0
  252. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/skills/parser.py +0 -0
  253. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/slug.py +0 -0
  254. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/steering_hook.py +0 -0
  255. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/system_prompt.py +0 -0
  256. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/telemetry/__init__.py +0 -0
  257. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/telemetry/send.py +0 -0
  258. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/teleport/errors.py +0 -0
  259. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/teleport/git.py +0 -0
  260. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/teleport/nuage.py +0 -0
  261. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/teleport/teleport.py +0 -0
  262. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/teleport/types.py +0 -0
  263. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/base.py +0 -0
  264. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/_task_manager.py +0 -0
  265. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  266. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/cron.py +0 -0
  267. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  268. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/glob_tool.py +0 -0
  269. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/grep.py +0 -0
  270. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  271. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/lsp.py +0 -0
  272. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  273. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  274. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/powershell.py +0 -0
  275. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  276. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  277. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  278. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  279. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  280. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  281. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  282. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  283. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  284. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  285. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  286. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  287. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
  288. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  289. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  290. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/task.md +0 -0
  291. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  292. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  293. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  294. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  295. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  296. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  297. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  298. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/read_file.py +0 -0
  299. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/retrieve.py +0 -0
  300. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/search_replace.py +0 -0
  301. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/task.py +0 -0
  302. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/todo.py +0 -0
  303. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/tool_search.py +0 -0
  304. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/webfetch.py +0 -0
  305. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/websearch.py +0 -0
  306. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/builtins/worktree.py +0 -0
  307. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/injection_guard.py +0 -0
  308. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/manager.py +0 -0
  309. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/mcp/__init__.py +0 -0
  310. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/mcp/registry.py +0 -0
  311. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/mcp/tools.py +0 -0
  312. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/mcp_sampling.py +0 -0
  313. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/ui.py +0 -0
  314. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/tools/utils.py +0 -0
  315. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/trusted_folders.py +0 -0
  316. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/types.py +0 -0
  317. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/core/utils.py +0 -0
  318. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/__init__.py +0 -0
  319. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/__main__.py +0 -0
  320. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/code_indexer.py +0 -0
  321. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/retriever.py +0 -0
  322. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/storage.py +0 -0
  323. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/graphrag/text_indexer.py +0 -0
  324. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/__init__.py +0 -0
  325. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/base.py +0 -0
  326. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/onboarding.tcss +0 -0
  327. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/screens/__init__.py +0 -0
  328. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/screens/api_key.py +0 -0
  329. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/screens/choice.py +0 -0
  330. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/screens/local_model.py +0 -0
  331. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/onboarding/screens/welcome.py +0 -0
  332. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  333. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  334. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/__init__.py +0 -0
  335. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/api-design/SKILL.md +0 -0
  336. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/audit-tests/SKILL.md +0 -0
  337. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/batch/SKILL.md +0 -0
  338. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/commit-code/SKILL.md +0 -0
  339. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/context-summary/SKILL.md +0 -0
  340. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/create-presentation/SKILL.md +0 -0
  341. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/deep-research/SKILL.md +0 -0
  342. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/deploy/SKILL.md +0 -0
  343. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/diff-review/SKILL.md +0 -0
  344. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/doc-gen/SKILL.md +0 -0
  345. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/explain-code/SKILL.md +0 -0
  346. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/explore-code/SKILL.md +0 -0
  347. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/fix-issue/SKILL.md +0 -0
  348. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/git-ops/SKILL.md +0 -0
  349. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/init-project/SKILL.md +0 -0
  350. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/investigate/SKILL.md +0 -0
  351. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/loop/SKILL.md +0 -0
  352. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/migrate/SKILL.md +0 -0
  353. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/perf-analyze/SKILL.md +0 -0
  354. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/plan-impl/SKILL.md +0 -0
  355. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/pr-review/SKILL.md +0 -0
  356. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/refactor/SKILL.md +0 -0
  357. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/regex-help/SKILL.md +0 -0
  358. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/review/SKILL.md +0 -0
  359. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/security-review/SKILL.md +0 -0
  360. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/ship/SKILL.md +0 -0
  361. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/simplify/SKILL.md +0 -0
  362. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/strong-tests/SKILL.md +0 -0
  363. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/skills/test-verify/SKILL.md +0 -0
  364. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/__init__.py +0 -0
  365. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/__main__.py +0 -0
  366. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/applier.py +0 -0
  367. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/config.py +0 -0
  368. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/registry.py +0 -0
  369. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/sandbox.py +0 -0
  370. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/steering/vectors.py +0 -0
  371. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock/whats_new.md +0 -0
  372. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock-acp.spec +0 -0
  373. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/drydock_terms.md +0 -0
  374. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/flake.lock +0 -0
  375. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/flake.nix +0 -0
  376. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/nohup.out +0 -0
  377. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777672181.json +0 -0
  378. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777672218.json +0 -0
  379. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777672322.json +0 -0
  380. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777732278.json +0 -0
  381. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777811293.json +0 -0
  382. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/perf_results/baseline_1777811401.json +0 -0
  383. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/README.md +0 -0
  384. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/config_base.toml +0 -0
  385. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/config_best.toml +0 -0
  386. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/domain_spec.md +0 -0
  387. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/experimenter.py +0 -0
  388. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/kernel.py +0 -0
  389. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/mini_prd.md +0 -0
  390. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/mini_prompts.txt +0 -0
  391. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/proposer.py +0 -0
  392. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/research/results.tsv +0 -0
  393. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/resume.md +0 -0
  394. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/README.md +0 -0
  395. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/admiral_probe.py +0 -0
  396. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/audit_sampler.py +0 -0
  397. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/auto_generate_tests.py +0 -0
  398. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/auto_release.sh +0 -0
  399. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/auto_test_loop.sh +0 -0
  400. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/autonomous_review.sh +0 -0
  401. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/autonomous_review_prompt.md +0 -0
  402. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/backup.sh +0 -0
  403. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/bump_version.py +0 -0
  404. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/classify_pulse.sh +0 -0
  405. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/comprehensive_loop.py +0 -0
  406. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/consume_retrieval_queue.py +0 -0
  407. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/deploy_to_github.sh +0 -0
  408. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/discover_cli_tools.sh +0 -0
  409. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/evolve_tests.py +0 -0
  410. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/gen_2000_prompts.py +0 -0
  411. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/hle_eval.py +0 -0
  412. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/hle_eval_seed.jsonl +0 -0
  413. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/install.sh +0 -0
  414. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/llm_balancer.py +0 -0
  415. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/mega_loop.py +0 -0
  416. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/meta_ralph_loop.py +0 -0
  417. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/monitor_swebench.sh +0 -0
  418. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/monitor_test_battery.sh +0 -0
  419. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/notify_release.py +0 -0
  420. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/oss_task_harness.py +0 -0
  421. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/overnight_agents_test.sh +0 -0
  422. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/perf_baseline_when_idle.sh +0 -0
  423. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/perf_sweep.py +0 -0
  424. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/poll_issues.sh +0 -0
  425. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/port_task.py +0 -0
  426. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/prepare_release.py +0 -0
  427. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/publish_to_pypi.sh +0 -0
  428. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/queue_top.py +0 -0
  429. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/ralph_loop.py +0 -0
  430. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/research_babysitter.sh +0 -0
  431. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/session_loop_audit.py +0 -0
  432. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/shakedown.py +0 -0
  433. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/shakedown_interactive.py +0 -0
  434. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/shakedown_regression.sh +0 -0
  435. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/shakedown_suite.sh +0 -0
  436. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/shakedown_variance.sh +0 -0
  437. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_babysitter.sh +0 -0
  438. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_prompts_50.txt +0 -0
  439. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_prompts_realuser.txt +0 -0
  440. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_prompts_tool_agent.txt +0 -0
  441. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
  442. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_shakedown.py +0 -0
  443. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_telegram_status.py +0 -0
  444. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/stress_watcher.py +0 -0
  445. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/telegram_bot.py +0 -0
  446. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/test_bank.sh +0 -0
  447. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/test_full.sh +0 -0
  448. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/test_smoke.sh +0 -0
  449. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/test_tui_path.py +0 -0
  450. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/tui_test.py +0 -0
  451. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/scripts/vllm_failover.sh +0 -0
  452. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/test/project/dummy +0 -0
  453. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/__init__.py +0 -0
  454. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/conftest.py +0 -0
  455. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_acp.py +0 -0
  456. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_agent_thought.py +0 -0
  457. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_bash.py +0 -0
  458. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_compact_session_updates.py +0 -0
  459. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_content.py +0 -0
  460. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_initialize.py +0 -0
  461. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_list_sessions.py +0 -0
  462. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_load_session.py +0 -0
  463. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_multi_session.py +0 -0
  464. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_new_session.py +0 -0
  465. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_proxy_setup_acp.py +0 -0
  466. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_read_file.py +0 -0
  467. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_search_replace.py +0 -0
  468. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_set_config_option.py +0 -0
  469. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_set_mode.py +0 -0
  470. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_set_model.py +0 -0
  471. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_tool_call_session_update.py +0 -0
  472. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_utils.py +0 -0
  473. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/acp/test_write_file.py +0 -0
  474. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_file_indexer.py +0 -0
  475. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_fuzzy.py +0 -0
  476. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  477. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  478. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_path_completion_controller.py +0 -0
  479. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  480. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_slash_command_controller.py +0 -0
  481. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  482. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/__init__.py +0 -0
  483. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/data/__init__.py +0 -0
  484. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/data/fireworks.py +0 -0
  485. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/data/mistral.py +0 -0
  486. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/test_anthropic_adapter.py +0 -0
  487. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/test_backend.py +0 -0
  488. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/test_generic_adapter_sanitize.py +0 -0
  489. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/test_reasoning_adapter.py +0 -0
  490. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  491. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  492. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  493. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  494. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_bell_notifications.py +0 -0
  495. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_braille_renderer.py +0 -0
  496. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_clipboard.py +0 -0
  497. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_commands.py +0 -0
  498. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_copy_shortcuts.py +0 -0
  499. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_external_editor.py +0 -0
  500. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_no_markup_static.py +0 -0
  501. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_question_app.py +0 -0
  502. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_spinner.py +0 -0
  503. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_switching_mode.py +0 -0
  504. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  505. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  506. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_ui_session_resume.py +0 -0
  507. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/test_ui_skill_dispatch.py +0 -0
  508. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/textual_ui/__init__.py +0 -0
  509. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/cli/textual_ui/test_session_picker.py +0 -0
  510. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/conftest.py +0 -0
  511. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_agents.py +0 -0
  512. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_auth_crypto.py +0 -0
  513. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_auth_github.py +0 -0
  514. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
  515. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
  516. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_config_load_dotenv.py +0 -0
  517. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_config_paths.py +0 -0
  518. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_config_resolution.py +0 -0
  519. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_file_logging.py +0 -0
  520. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_plan_session.py +0 -0
  521. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_proxy_setup.py +0 -0
  522. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_slug.py +0 -0
  523. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_telemetry_send.py +0 -0
  524. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_teleport_git.py +0 -0
  525. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_teleport_nuage.py +0 -0
  526. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_teleport_service.py +0 -0
  527. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_trusted_folders.py +0 -0
  528. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/core/test_utils.py +0 -0
  529. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/common.py +0 -0
  530. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/conftest.py +0 -0
  531. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/mock_server.py +0 -0
  532. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  533. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/test_cli_tui_streaming.py +0 -0
  534. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  535. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/fixtures/doc_qa_system_prd.md +0 -0
  536. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/mock/__init__.py +0 -0
  537. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/mock/mock_backend_factory.py +0 -0
  538. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/mock/mock_entrypoint.py +0 -0
  539. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/mock/utils.py +0 -0
  540. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/onboarding/test_run_onboarding.py +0 -0
  541. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/onboarding/test_ui_onboarding.py +0 -0
  542. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/session/test_session_loader.py +0 -0
  543. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/session/test_session_logger.py +0 -0
  544. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/session/test_session_migration.py +0 -0
  545. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/skills/conftest.py +0 -0
  546. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/skills/test_manager.py +0 -0
  547. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/skills/test_models.py +0 -0
  548. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/skills/test_parser.py +0 -0
  549. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  550. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  551. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  552. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  553. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  554. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  555. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  556. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  557. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  558. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  559. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  560. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  561. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  562. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  563. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  564. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  565. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  566. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  567. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  568. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  569. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  570. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  571. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  572. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  573. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  574. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  575. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  576. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  577. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  578. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  579. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  580. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  581. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  582. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  583. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  584. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  585. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  586. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  587. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  588. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  589. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  590. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  591. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  592. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  593. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  594. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  595. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  596. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  597. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  598. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  599. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  600. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  601. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  602. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  603. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  604. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  605. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  606. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  607. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  608. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  609. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/base_snapshot_test_app.py +0 -0
  610. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/conftest.py +0 -0
  611. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/snap_compare.py +0 -0
  612. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  613. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  614. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  615. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  616. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  617. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  618. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  619. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  620. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  621. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  622. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  623. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  624. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  625. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  626. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/stubs/fake_backend.py +0 -0
  627. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/stubs/fake_client.py +0 -0
  628. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/stubs/fake_tool.py +0 -0
  629. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_admiral.py +0 -0
  630. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_admiral_phase3.py +0 -0
  631. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_admiral_proposed.py +0 -0
  632. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_admiral_struggle_dedup.py +0 -0
  633. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_auto_compact.py +0 -0
  634. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_backend.py +0 -0
  635. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_observer_streaming.py +0 -0
  636. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_stats.py +0 -0
  637. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_tasks.py +0 -0
  638. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agent_tool_call.py +0 -0
  639. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_agents.py +0 -0
  640. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_build.py +0 -0
  641. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_debug.py +0 -0
  642. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_multiagent.py +0 -0
  643. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_prd.py +0 -0
  644. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_prd_extended.py +0 -0
  645. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_tools.py +0 -0
  646. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_bank_update.py +0 -0
  647. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_build_projects.py +0 -0
  648. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_checkpoint.py +0 -0
  649. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_classifier.py +0 -0
  650. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_cli_programmatic_preload.py +0 -0
  651. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_context_recovery.py +0 -0
  652. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_current_bugs.py +0 -0
  653. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_dispatcher.py +0 -0
  654. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_drydock_regression.py +0 -0
  655. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_drydock_tasks.py +0 -0
  656. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_fake_tool_call_paren_syntax.py +0 -0
  657. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_full_regression.py +0 -0
  658. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_graphrag.py +0 -0
  659. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_hallucinated_tool_suppression.py +0 -0
  660. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_history_manager.py +0 -0
  661. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_integration.py +0 -0
  662. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_issue_fixes.py +0 -0
  663. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_local_detect.py +0 -0
  664. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_loop_detection.py +0 -0
  665. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_message_id.py +0 -0
  666. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_message_merging.py +0 -0
  667. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_middleware.py +0 -0
  668. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_multi_agent.py +0 -0
  669. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_read_file_not_found_listing.py +0 -0
  670. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_real_failures.py +0 -0
  671. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_real_issues.py +0 -0
  672. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_real_workflow.py +0 -0
  673. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_reasoning_content.py +0 -0
  674. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_retrieval_consumer.py +0 -0
  675. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_retrieve_tool.py +0 -0
  676. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_search_replace_args_not_truncated.py +0 -0
  677. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_smoke.py +0 -0
  678. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_steering.py +0 -0
  679. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_steering_hook.py +0 -0
  680. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_system_prompt.py +0 -0
  681. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_tagged_text.py +0 -0
  682. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_task_complete_nudge.py +0 -0
  683. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_tool_args.py +0 -0
  684. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_truncate_args_valid_json.py +0 -0
  685. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_truncated_arg_path_hint.py +0 -0
  686. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_truncated_search_replace_escalation.py +0 -0
  687. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_truncated_write_escalation.py +0 -0
  688. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_ui_external_editor.py +0 -0
  689. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_ui_input_history.py +0 -0
  690. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_user_issues.py +0 -0
  691. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_wall_of_text_rescue.py +0 -0
  692. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_workloads.py +0 -0
  693. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/test_write_file_missing_path.py +0 -0
  694. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/testbank_helpers.py +0 -0
  695. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_ask_user_question.py +0 -0
  696. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash.py +0 -0
  697. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_binary_grep_hint.py +0 -0
  698. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_consec_empty_search.py +0 -0
  699. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
  700. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
  701. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_error_loop_breaker.py +0 -0
  702. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
  703. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
  704. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_exit_plan_mode.py +0 -0
  705. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_grep.py +0 -0
  706. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
  707. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_invoke_context.py +0 -0
  708. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_manager_gemma_derived_models.py +0 -0
  709. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_manager_get_tool_config.py +0 -0
  710. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_mcp.py +0 -0
  711. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_mcp_sampling.py +0 -0
  712. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
  713. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_read_file_dedup_reembed.py +0 -0
  714. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_read_file_directory.py +0 -0
  715. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_read_file_limit_truncation.py +0 -0
  716. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_append_fallback.py +0 -0
  717. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_dir_path.py +0 -0
  718. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_empty_content.py +0 -0
  719. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_file_not_found.py +0 -0
  720. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
  721. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_hard_stop.py +0 -0
  722. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_malformed_block.py +0 -0
  723. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
  724. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_placeholder.py +0 -0
  725. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
  726. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_task.py +0 -0
  727. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_ui_bash_execution.py +0 -0
  728. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_webfetch.py +0 -0
  729. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_websearch.py +0 -0
  730. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
  731. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/tools/test_write_file_missing_path_hint.py +0 -0
  732. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  733. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  734. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_do_update.py +0 -0
  735. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  736. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_github_update_gateway.py +0 -0
  737. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  738. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_ui_update_notification.py +0 -0
  739. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_update_use_case.py +0 -0
  740. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/tests/update_notifier/test_whats_new.py +0 -0
  741. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/worked_examples/README.md +0 -0
  742. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/worked_examples/cli_subcommand_dispatch.py +0 -0
  743. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/worked_examples/lookup.json +0 -0
  744. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/worked_examples/sql_parser.py +0 -0
  745. {drydock_cli-2.7.40 → drydock_cli-2.7.42}/worked_examples/tree_walking_interpreter.py +0 -0
@@ -0,0 +1 @@
1
+ 2897827
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.7.40
3
+ Version: 2.7.42
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
@@ -847,6 +847,7 @@ class DrydockApp(App): # noqa: PLR0904
847
847
  await self.event_handler.finalize_streaming()
848
848
  await self._refresh_windowing_from_history()
849
849
  self._terminal_notifier.notify(NotificationContext.COMPLETE)
850
+ self.call_after_refresh(self._focus_current_bottom_app)
850
851
 
851
852
  # Process queued messages from user input during agent execution
852
853
  if hasattr(self, "_pending_messages") and self._pending_messages:
@@ -995,7 +995,16 @@ class AgentLoop:
995
995
 
996
996
  # Empty response — try to recover inline.
997
997
  if _stall_attempt >= MAX_STALL_RETRIES:
998
- _dbg(f"[STALL-DEBUG] max retries ({MAX_STALL_RETRIES}) exhausted; leaving empty")
998
+ _dbg(f"[STALL-DEBUG] max retries ({MAX_STALL_RETRIES}) exhausted; injecting fallback")
999
+ # Replace the silent empty message with visible text so the
1000
+ # harness and the user both see a clean end-of-turn rather
1001
+ # than a frozen TUI waiting for content that never arrives.
1002
+ last_message.content = (
1003
+ "[Drydock: model returned an empty response after "
1004
+ f"{MAX_STALL_RETRIES} retries. Please rephrase your "
1005
+ "request or use /clear to reset context.]"
1006
+ )
1007
+ yield AssistantEvent(content=last_message.content)
999
1008
  break
1000
1009
  prev_role = self.messages[-2].role if len(self.messages) >= 2 else None
1001
1010
  if prev_role not in (Role.tool, Role.user):
@@ -636,11 +636,14 @@ class Bash(
636
636
  # command text is run 5+ times regardless of output or exit code.
637
637
  # Catches benchmark/timeit/import-check loops where each run has
638
638
  # varying output (timings, object ids) that defeats the hash check.
639
- # Excludes commands that write files (heredoc, redirect, sed -i)
640
- # since those legitimately run the same form multiple times.
639
+ # Excludes redirect/heredoc writes since those legitimately append
640
+ # the same content in loops. Does NOT exclude `sed -i`: when the
641
+ # sed pattern is wrong (e.g. escape mismatch) it exits 0 but makes
642
+ # no change, so the model loops forever — the repetition check
643
+ # must fire to break it (harness:bash:escape_loop pattern).
641
644
  _is_write_cmd = bool(
642
645
  __import__("re").search(
643
- r"(>|>>|\bsed\s+-i\b|\btee\b|\bcat\s+<<|\bprintf\b.*>)",
646
+ r"(>|>>|\btee\b|\bcat\s+<<|\bprintf\b.*>)",
644
647
  args.command,
645
648
  )
646
649
  )
@@ -700,7 +703,7 @@ class Bash(
700
703
  # "EDIT SOURCE CODE" confuses it — give a targeted hint.
701
704
  import re as _re
702
705
  _is_heredoc_write = bool(_re.search(
703
- r"cat\s+<<\s*['\"]?EOF['\"]?\s+>", args.command
706
+ r"cat\s+<<\s*['\"]?[A-Za-z_]+['\"]?\s+>+", args.command
704
707
  ))
705
708
  # Detect ls/grep/find search that returned empty output.
706
709
  # The model runs `ls -F | grep "test_cli"` repeatedly when
@@ -470,39 +470,37 @@ class WriteFile(
470
470
 
471
471
  body = "File already has this exact content (no-op). "
472
472
  if repeat_n >= 2:
473
- try:
474
- siblings = sorted(
475
- p.name for p in file_path.parent.iterdir()
476
- if p.is_file() and not p.name.startswith("__pycache__")
477
- )
478
- sibling_str = ", ".join(siblings) if siblings else "(none)"
479
- body += (
480
- f"You've written this exact file {repeat_n} times. "
481
- f"Files currently in {file_path.parent.name}/: "
482
- f"{sibling_str}. Move on — write a DIFFERENT file "
483
- f"from your plan, or run `bash` with `python3 -m "
484
- f"{file_path.parent.name} --help` to verify."
485
- )
486
- # Also surface missing imports so the model knows
487
- # which file to write next instead of re-looping.
488
- if file_path.suffix == ".py":
489
- try:
490
- import ast as _ast
491
- _tree = _ast.parse(args.content)
492
- missing = _check_missing_sibling_imports(
493
- _tree, file_path
473
+ body += f"You've written this exact file {repeat_n} times. "
474
+ try:
475
+ siblings = sorted(
476
+ p.name for p in file_path.parent.iterdir()
477
+ if p.is_file() and not p.name.startswith("__pycache__")
478
+ )
479
+ sibling_str = ", ".join(siblings) if siblings else "(none)"
480
+ body += (
481
+ f"Files currently in {file_path.parent.name}/: "
482
+ f"{sibling_str}. Move on — write a DIFFERENT file "
483
+ f"from your plan, or run `bash` with `python3 -m "
484
+ f"{file_path.parent.name} --help` to verify."
485
+ )
486
+ # Surface missing imports so the model knows which file
487
+ # to write next instead of re-looping.
488
+ if file_path.suffix == ".py":
489
+ try:
490
+ import ast as _ast
491
+ _tree = _ast.parse(args.content)
492
+ missing = _check_missing_sibling_imports(
493
+ _tree, file_path
494
+ )
495
+ if missing:
496
+ body += (
497
+ f" This file imports modules that don't "
498
+ f"exist yet: {sorted(missing)}. "
499
+ f"Write those files next."
494
500
  )
495
- if missing:
496
- body += (
497
- f" This file imports modules that don't "
498
- f"exist yet: {sorted(missing)}. "
499
- f"Write those files next."
500
- )
501
- except Exception:
502
- pass
503
- except Exception:
504
- body += "Move to the NEXT file in your plan."
505
- else:
501
+ except Exception:
502
+ pass
503
+ except Exception:
506
504
  body += "Move to the NEXT file in your plan."
507
505
  msg = f"<system-reminder>\n{body}\n</system-reminder>"
508
506
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.7.40"
3
+ version = "2.7.42"
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"
@@ -57,3 +57,20 @@ async def test_distinct_commands_no_breaker(bash, tmp_path):
57
57
  for i in range(6):
58
58
  result = await collect_result(bash.run(BashArgs(command=f"echo cmd_{i}")))
59
59
  assert "LOOP-BREAKER" not in result.stdout
60
+
61
+
62
+ @pytest.mark.asyncio
63
+ async def test_sed_i_escape_loop_triggers_breaker(bash, tmp_path):
64
+ """sed -i with exact same command fires the loop-breaker (harness:bash:escape_loop).
65
+
66
+ When the sed pattern is malformed (e.g. escape mismatch), sed exits 0 but
67
+ makes no change. The model retries the same command indefinitely. The loop-
68
+ breaker must fire because sed -i is no longer exempt from the repetition check.
69
+ """
70
+ target = tmp_path / "demo.py"
71
+ target.write_text('print("n")\n')
72
+ # Exact same sed -i command repeated 5 times (same escaping mistake each time)
73
+ cmd = f"sed -i 's/print(\"n/print(\"\\\\n/g' {target}"
74
+ for _ in range(5):
75
+ result = await collect_result(bash.run(BashArgs(command=cmd)))
76
+ assert "LOOP-BREAKER" in result.stdout
@@ -74,3 +74,27 @@ async def test_non_heredoc_command_unaffected(bash):
74
74
  cmd = "true"
75
75
  result = await collect_result(bash.run(BashArgs(command=cmd)))
76
76
  assert "File written" not in result.stdout
77
+
78
+
79
+ @pytest.mark.asyncio
80
+ async def test_heredoc_loop_breaker_non_eof_delimiter(bash, tmp_path):
81
+ """Loop-breaker targets heredoc message for non-EOF delimiters (CONTENT, PYTHON, etc).
82
+
83
+ Before fix: regex only matched 'EOF'; non-EOF delimiters fell through to the
84
+ generic 'EDIT SOURCE CODE' message, which confused the model.
85
+ After fix: any alpha delimiter triggers the targeted heredoc hint.
86
+ """
87
+ target = tmp_path / "plugin.py"
88
+ cmd = f"cat <<CONTENT > {target}\nprint('hello')\nCONTENT"
89
+
90
+ # Run 3 times to trigger the hash-based loop breaker
91
+ for _ in range(3):
92
+ result = await collect_result(bash.run(BashArgs(command=cmd)))
93
+
94
+ # The 3rd run must produce the heredoc-targeted notice, not the generic one
95
+ assert "cat command" in result.stdout or "re-run this cat" in result.stdout, (
96
+ "Expected heredoc-targeted loop notice, got: " + result.stdout[:200]
97
+ )
98
+ assert "EDIT SOURCE CODE" not in result.stdout, (
99
+ "Got generic loop notice instead of heredoc-targeted one"
100
+ )
@@ -3,6 +3,44 @@
3
3
  Autonomous Claude Code review ticks while the user is away. Each tick appended
4
4
  chronologically. Cron-driven every 30 min from `/data3/drydock/scripts/autonomous_review.sh`.
5
5
 
6
+ ## 2026-05-05 06:38 UTC tick
7
+ - Stress: 323/1658 (PID 2755890 alive, 12h28m elapsed); done=268, skip=53 (16%); at [323] with fresh RECYCLE (new TUI PID 2883300); babysitter log confirms steady progress from 273→322 since 04:00 UTC
8
+ - vLLM 400s: 0; gemma4 Docker healthy; llm_balancer healthy on :8001 (PID 2462362)
9
+ - GH issues: 0 open
10
+ - Dispatch queue: harness=34,575 (all top patterns addressed in last 24h — thinking_stall 16ed417, bash_generic 6587ce5, bash_escape ee8936e, heredoc_loop f717435, dedup 74a5ae3, search_replace:not_found 444a, identical_blocks 6ad01df, tool_error_raised 9bdd8a3); retrieval=74 (all already ingested — 0 new this tick)
11
+ - Admiral last 30 min: empty_after_tool:bash/write_file/web_search interventions firing; these are admiral-level behavior nudges (model summarizing instead of continuing), distinct from thinking_stall (fully empty response). Thinking_stall fix ships in v2.7.41 (deployed 06:00 UTC). Post-fix admiral intervention rate not yet measurable this tick.
12
+ - Action this tick: no fix committed — all dispatch queue patterns addressed; retrieval fully drained; system healthy.
13
+
14
+ ## 2026-05-05 05:15 UTC tick
15
+ - Stress: 287/1658 (PID 2755890 alive, 10h57m elapsed); SKIP rate 16% (47/287), clustering after RECYCLE-TUI events (new TUI not ready in time); write rate 36% (75/204 non-skip) vs 44% old run at same range — modest regression, not clearly a bug
16
+ - vLLM 400s: 0; gemma4 Docker healthy; llm_balancer healthy on :8001
17
+ - GH issues: 0 open
18
+ - Dispatch queue: harness=33741 (recent active: thinking_stall=16x, loop:bash_generic=4x); retrieval=74 (0 newly actionable — all already ingested)
19
+ - Action this tick: no fix committed — both active dispatch patterns addressed by commits within last 24h (16ed417 thinking_stall fallback, f717435 heredoc loop-breaker, ee8936e bash sed-i). Investigated write rate regression (44%→36%): not conclusive as a bug — early prompts are single-function utility requests that the model often answers without writing files. Investigated SKIP clusters: caused by TUI startup lag after RECYCLE-TUI; would require harness-side timing changes (prohibited by CLAUDE.md). System healthy, no action needed. retrieval-drain: 0 new projects.
20
+
21
+ ## 2026-05-05 02:10 UTC tick
22
+ - Stress: 213/1658 (PID 2755890 alive, 8h27m elapsed); 43 SKIPs (20%); write rate 29% (43/147 non-skip) vs 53% historical for same prompt window — degraded due to thinking_stall not yet in installed version
23
+ - vLLM 400s: 0; gemma4 Docker healthy (up 10 days); llm_balancer PID 2462362 on :8001 healthy (1 model); admiral_probe PID 4075121 alive since Apr 27 (worker restarts every 7-10 min are normal per bootstrap log)
24
+ - GH issues: 0 open
25
+ - Dispatch queue: harness=32275 (last 6h: thinking_stall=2921, search_replace:not_found_loop=288, bash_generic=256, heredoc_loop=36, hallucinated_name=36, write_file:dedup=36); retrieval=74 (0 newly actionable — all already ingested)
26
+ - Action this tick: no fix committed — all active patterns addressed by unreleased commits (16ed417 thinking_stall fallback, ee8936e bash sed-i escape loop); those are 2 commits ahead of v2.7.40 and ship at next auto-release (~05 UTC). High SKIP rate (20%) directly caused by thinking_stall fix not yet installed. Investigated admiral restarts: not a crash — internal AdmiralWorker thread, main process stable. retrieval-drain: 0 new projects.
27
+
28
+ ## 2026-05-05 00:30 UTC tick
29
+ - Stress: 148/1658 (PID 2755890 alive, 6h57m elapsed; previous run completed ~1640/1658 at 17:00 UTC before babysitter relaunched fresh run at 18:00 UTC)
30
+ - Write rate: 32% (last 92 prompts); low but consistent with prior ticks on early prompts — simple utility tasks in stress list
31
+ - vLLM 400s: 0; gemma4 Docker healthy (up 10 days); llm_balancer healthy on :8001
32
+ - GH issues: 0 open
33
+ - Dispatch queue: harness=31388 total (recent 500: thinking_stall=415, search_replace:not_found_loop=40, bash_generic=30, hallucinated_name=5, bash:heredoc_loop=5, write_file:dedup=5); retrieval=74 (0 actionable — all already ingested)
34
+ - Action this tick: no fix committed — thinking_stall (415 fires, mostly empty_after_tool:ralph_repo_index) is already handled by stall nudge + retrieval hallucination redirect in format.py; not_found_loop addressed by 444e4a5; bash_generic by 6587ce5; all patterns have prior-commit coverage. retrieval-drain: 0 new projects. System healthy.
35
+
36
+ ## 2026-05-04 23:30 UTC tick
37
+ - Stress: 123/1658 (PID 2755890 alive, 5h57m elapsed; new run log /tmp/stress_2000_1777915991.log; 32 SKIPs / 123 done)
38
+ - Write rate: 36% (last 74 prompts); 41 write-bearing / 90 attempted — comparable to prior ticks; 0-write sessions are correctly the model running already-existing plugins, not a regression
39
+ - vLLM 400s: 0; llm_balancer PID 2462362 on :8001 healthy; gemma4 Docker healthy
40
+ - GH issues: 0 open
41
+ - Dispatch queue: harness=30,800 total (recent 200: thinking_stall=166, search_replace:not_found_loop=16, bash_generic=12, hallucinated_name=2, write_file:dedup=2); retrieval=74 (all 74 already ingested — consume_retrieval_queue returned 0 actionable)
42
+ - Action this tick: no fix committed — dispatch patterns for not_found_loop and bash_generic addressed in prior commits (444e4a5, 6587ce5); thinking_stall (166 fires) confirmed already handled by inline 3-retry stall mechanism; stall debug log shows model is actively making tool calls (not truly stalling); session analysis shows 0-write sessions are model correctly running existing plugins; retrieval-drain: 0 new projects. System healthy.
43
+
6
44
  ## 2026-05-04 22:00 UTC tick
7
45
  - Stress: 90/1658 (PID 2755890 alive, TUI active PID 2790960; 20 SKIPs / 70 done in run so far)
8
46
  - Write rate: 35% (last 57 prompts with write data; low expected — current prompts are simple utility functions: pad, wrap, indent, hash)
@@ -1730,6 +1768,15 @@ restarted, cron self-match bug fixed in this same session).
1730
1768
  - retrieval-drain: 0 projects ingested (all current within 7-day window)
1731
1769
  - Action this tick: no fix committed — all dispatch patterns addressed; system healthy; elevated skip rate is a harness-timing artifact of long sessions (dict_set_nested: 45 msgs/14 writes), not a drydock bug. Monitoring.
1732
1770
 
1771
+ ## 2026-05-04 23:04 UTC tick
1772
+ - Stress: 116/1658 (PID 2755890, 5h30m elapsed); skip rate ~25% (29 SKIPs in 116 prompts); write rate 37% last 70 prompts
1773
+ - vLLM 400s: 0; llm_balancer healthy (PID 2462362, :8001); gemma4 Docker healthy
1774
+ - Admiral last 30 min: skip-cluster 12/33 at 22:42 UTC + retry-spike 103% at 22:35 UTC; 14 TUI recycles since run start; latest intervention at 23:00 UTC (thinking_stall/empty_after_tool:bash on dict_to_list). All interventions handled by existing inline retry logic.
1775
+ - GH issues: 0 open
1776
+ - Dispatch queue: harness=30,508 (thinking_stall=12,933 top; loop:bash_generic=9,698; tool:hallucinated_name=3,981; search_replace:not_found_loop=2,840 — all addressed in recent commits); retrieval=74 (0 new ingestions — all within 7-day window); steering=0
1777
+ - retrieval-drain: 0 projects ingested (all current)
1778
+ - Action this tick: no fix committed — all dispatch patterns verified against source (thinking_stall: MAX_STALL_RETRIES=3 inline retry at agent_loop.py:971; hallucinated_name: _IGNORE_TOOLS in llm/format.py:350 includes ralph_repo_index; search_replace:not_found_loop: file-head embed on first failure). Session showed legitimate plugin builds (toml_dump, ini_parse). Elevated skip rate is harness-timing vs. long model sessions (45+ msgs/14 writes), not a new drydock bug.
1779
+
1733
1780
  ## 2026-05-04 22:30 UTC tick
1734
1781
  - Stress: 96/1658 new run (PID 2755890, 4h27m elapsed); previous run PID 2219727 completed 1442/1656 — babysitter auto-launched new run at 18:00 UTC
1735
1782
  - Write rate: 32% (last 50 prompts — low, run just started; previous run peaked at 74%)
@@ -1738,3 +1785,104 @@ restarted, cron self-match bug fixed in this same session).
1738
1785
  - Dispatch queue: harness=29926 (dominated by thinking_stall=12459, loop:bash_generic=9656, tool:hallucinated_name=3975 — all addressed); retrieval=74 (0 new ingestions); steering=0
1739
1786
  - Admiral alerts: raw-markdown-leakage 28% at 20:50 UTC + retry-spike 53-67% at 20:58/21:32 UTC — TUI input layer choking on prompt acceptance; 18 recycles in 96 prompts (25% skip rate vs 12% in previous completed run). Admiral self-recovered via TUI recycles. No new actionable drydock bug found; all dispatch patterns have existing fixes. Commit 5d6463e (messages.py regex + gemma4.md prompt additions) shipped this tick via auto_release v2.7.39.
1740
1787
  - Action this tick: no fix committed — all queued patterns already addressed; monitoring elevated skip rate
1788
+
1789
+ ## 2026-05-05 00:05 UTC tick
1790
+ - Stress: 143/1658 (PID 2755890, 6h30m elapsed, new run started ~18:33 UTC May 4); skip rate 22% (32 SKIPs in 143 prompts); write rate 32% last 91 prompts
1791
+ - vLLM 400s: 0; llm_balancer healthy (PID 2462362, :8001, up 33h); gemma4 Docker healthy
1792
+ - GH issues: 0 open
1793
+ - Dispatch queue: harness=31094 (thinking_stall=13417 top; loop:bash_generic=9734; tool:hallucinated_name=3987; search_replace:not_found_loop=2888; bash:escape_loop=170); retrieval=74 (0 new ingestions — all within 7-day window); steering=0
1794
+ - retrieval-drain: 0 projects ingested (all current within 7-day window)
1795
+ - Action this tick: committed fix ee8936e — sed -i was excluded from the exact-command repetition loop-breaker (_is_write_cmd regex) so when a sed pattern mismatch caused exit-0 no-op, the model looped indefinitely; removing sed -i from the exemption means the 5th identical sed -i run now returns LOOP-BREAKER (addresses pattern harness:bash:escape_loop, 170 fires). 5 regression tests pass. auto_release will ship at 06:00 UTC.
1796
+
1797
+ ## 2026-05-05 01:30 UTC tick
1798
+ - Stress: 680/1658 (41%), PID 2755890, running 7h27m
1799
+ - Write rate: 32% last 100 prompts (API REST/GraphQL sequence naturally 0-write; variance normal)
1800
+ - Admiral last 30 min: 5 fires (empty_after_tool events)
1801
+ - vLLM 400s: 0
1802
+ - GH issues: 0 open
1803
+ - Dispatch queue: harness=31679 total (2939 in last 6h), retrieval=0 actionable, steering=n/a
1804
+ - Retrieval drain: 0 projects ingested (all already ingested recently)
1805
+ - Action this tick: committed fix(agent_loop): emit fallback text when stall retries exhausted (addresses pattern harness:thinking_stall). Stall debug log showed 17,895 exhausted-retry cases vs 18,539 retry #1 attempts — the #1 dispatch queue pattern. Fix replaces silent empty message with visible "[Drydock: model returned empty response after 3 retries]" text so TUI ends the turn cleanly instead of freezing. Auto-release will ship at next 0/6/12/18 UTC tick.
1806
+
1807
+ ## 2026-05-05 01:33 UTC tick
1808
+ - Stress: 181/1658 (new run after prior run reached ~680+ and reset; PID 2755890, 7h57m total uptime); write rate 32% last 50 prompts (early utility-task prompts are naturally low-write); 36+ consecutive SKIP cluster at prompt 143-181 during ip/network prompt section, harness self-recovered via FORCE-RESET
1809
+ - vLLM 400s: 0; llm_balancer PID 2462362 healthy; gemma4 Docker healthy
1810
+ - GH issues: 0 open
1811
+ - Dispatch queue: harness=31974 total (thinking_stall=14140, bash_generic=9792, tool:hallucinated_name=3996, search_replace:not_found_loop=2960, bash:heredoc_loop=691, bash:escape_loop=170); retrieval=74 (0 actionable, all within 7-day re-ingest window)
1812
+ - retrieval-drain: 0 projects ingested (all current)
1813
+ - Recent commits in last 24h: 16ed417 (thinking_stall fallback text — largest queue pattern), ee8936e (sed -i escape loop), 444a5 (search_replace not_found embed), 6587ce5 (bash_generic loop-breaker) — all top dispatch patterns now have source-level fixes
1814
+ - Action this tick: no fix committed — all major dispatch patterns addressed by commits in last 24h; harness progressing normally; 0 vLLM 400s; no new hallucinated tool names beyond existing _IGNORE_TOOLS list
1815
+
1816
+ ## 2026-05-05 02:30 UTC tick
1817
+ - Stress: 229/1658 (PID 2755890, ~9h elapsed, run started ~17:33 UTC May 4); SKIP cluster at 226-227 followed by FORCE-RESET; recovered at 228; currently processing prompt 229
1818
+ - Write rate: 33% last 100 prompts (expected — early-run utility-function prompts rarely need file writes)
1819
+ - Admiral last 30 min: transient SKIP cluster + FORCE-RESET at prompts 226-227 (TUI input timing); harness self-recovered; no active interventions
1820
+ - vLLM 400s: 0; llm_balancer PID 2462362 healthy on :8001; gemma4 Docker healthy
1821
+ - GH issues: 0 open
1822
+ - Dispatch queue: harness=32,578 (thinking_stall=14,630, loop:bash_generic=9,840, tool:hallucinated_name=4,002, search_replace:not_found_loop=3,008, bash:heredoc_loop=697, bash:escape_loop=170, write_file:dedup=160 — all addressed by existing handlers); retrieval=74 (0 actionable — all within 7-day re-ingest window)
1823
+ - 2 commits ahead of v2.7.40 (16ed417: thinking_stall fallback text; ee8936e: sed -i escape loop fix) — will auto-release as v2.7.41 at 06:00 UTC
1824
+ - retrieval-drain: 0 projects ingested (all current)
1825
+ - Action this tick: no fix committed — all dispatch patterns verified against source; system healthy and progressing normally
1826
+
1827
+ ## 2026-05-05 03:04 UTC tick
1828
+ - Stress: 241/1658 in new run (log 1777915991, PID 2755890, 9h27m elapsed). Old PID 3713698 dead; babysitter respawned a fresh run. Write rate: 73% last 20 prompts. Skip rate: 17% (41/241).
1829
+ - vLLM 400s: 0
1830
+ - GH issues: 0 open
1831
+ - Dispatch queue: harness=32880 entries (top patterns: thinking_stall=162, bash_generic=16, search_replace:not_found_loop=16 — all addressed by commits in last 24h); retrieval=74 entries (all already ingested, 0 actionable); steering=none
1832
+ - Action this tick: committed fix(write_file): show dir listing on first dedup, not just 2nd+ (addresses pattern harness:write_file:dedup_attempted). On first identical-content write the model now gets the full sibling directory listing immediately instead of after a second loop. harness:tool:hallucinated_name (ralph_repo_index) confirmed already handled via _IGNORE_TOOLS in format.py — not actionable. Retrieval drain: 0 projects ingested (all up to date).
1833
+
1834
+ ## 2026-05-05 03:34 UTC tick
1835
+ - Stress: 680/1658 (41% done, ~10h remaining at current pace)
1836
+ - Write rate: 32% last 100 prompts (lower due to short API: gRPC/WebSocket/JSON-RPC prompts returning text answers, not code)
1837
+ - Admiral last 30 min: source=opus sessions active; interventions for empty_after_tool and search_replace retry
1838
+ - vLLM 400s: 0
1839
+ - GH issues: 0 open
1840
+ - Dispatch queue: harness=33175 entries (top recent: thinking_stall=400/500, bash_generic=42/500, search_replace:not_found_loop=40/500 — all addressed by commits in last 24h); retrieval=74 (0 actionable, all already ingested)
1841
+ - Action this tick: no new bugs found. All top dispatch patterns addressed by recent commits (16ed417 thinking_stall, 444e4a5 search_replace:not_found_loop, 6587ce5 bash_generic, 74a5ae3 write_file dedup). Consecutive SKIP run at 677-679 self-recovered at 680 — transient busy-TUI after 21-msg/7-write prompt 676. bash:loop:bash_generic only fires for "ls -lS | head -n 20" (28x), addressed by existing loop-breaker at 5 runs. No actionable new issues — healthy tick.
1842
+
1843
+ ## 2026-05-05 04:30 UTC tick
1844
+ - Stress: 273/1658 (fresh run, PID 2755890, log /tmp/stress_2000_1777915991.log)
1845
+ - Write rate: 39% last 100 prompts (run is new; ~50 early SKIPs from startup turbulence, tapering off by prompt ~250)
1846
+ - Admiral last 30 min: n/a (not checked directly)
1847
+ - vLLM 400s: 0
1848
+ - GH issues: 0 open
1849
+ - Dispatch queue: harness=33461, retrieval=74 (all ingested recently, nothing new), steering=not present
1850
+ - Action this tick: committed fix for harness:bash:heredoc_loop — broadened heredoc loop-breaker regex from EOF-only to any alpha delimiter (CONTENT, PYTHON, HEREDOC, etc.); 6 tests pass. retrieval-drain: 0 projects ingested (all already current).
1851
+
1852
+ ## 2026-05-05 05:04 UTC tick
1853
+ - Stress: 305/1658 (18% done; fresh run PID 2755890 started May 4 13:00 UTC; log /tmp/stress_2000_1777915991.log)
1854
+ - Write rate: 37% (82/219 prompts with writes; lower baseline expected — early prompts are simple one-liner tool requests like "sha1 hash", "abs" that return text, not files)
1855
+ - vLLM 400s: 0
1856
+ - GH issues: 0 open (gh returned no output)
1857
+ - Dispatch queue: harness=34023 total (top last-24h patterns: thinking_stall=11560, loop:bash_generic=3535, search_replace:not_found_loop=1518, tool:hallucinated_name=420 — ALL addressed by commits in last 24h); retrieval=74 (0 actionable, all already ingested recently); steering=none
1858
+ - All key ports healthy: 8000 (vLLM/gemma4), 8001 (llm_balancer PID 2462362), 8878 (admiral PID 4075121)
1859
+ - Stall debug log confirms stall-retry working correctly (all attempt=0, breaking on has_tool_calls=True — no spurious stalls)
1860
+ - Action this tick: no new actionable bugs found. All major dispatch patterns covered by v2.7.41 commits. retrieval-drain: 0 projects ingested (all current). No fix committed — healthy tick.
1861
+
1862
+ ## 2026-05-05 06:00 UTC tick
1863
+ - Stress: 315/1658 (fresh run, harness PID 2755890, ~12h elapsed on current run)
1864
+ - Write rate: 41% overall (50% for last 50 prompts); down from 74% in previous run but early bootstrap prompts (1-7) caused 10 SKIPs skewing the rate
1865
+ - Admiral: all key ports healthy (8000 vLLM, 8001 llm_balancer PID 2462362, 8878 admiral PID 4075121)
1866
+ - vLLM 400s: 0 in last 30 min
1867
+ - GH issues: 0 open
1868
+ - Dispatch queue: harness=34299 (top patterns thinking_stall/bash_generic/search_replace:not_found_loop/hallucinated_name — all addressed by v2.7.41 commits); retrieval=74 (0 actionable, all current); steering=none
1869
+ - SKIP rate ~19% (59 SKIPs in 315 prompts); SKIPs cluster on short single-word prompts after TUI returns from long builds; FORCE-RESET (ESC+/clear) unsticks for a few prompts then recurs — likely pre-existing TUI input-focus issue, not a regression from recent commits
1870
+ - retrieval-drain: 0 projects ingested (all already current)
1871
+ - Action this tick: no new actionable drydock bugs found. All dispatch patterns covered by recent commits. No fix committed — monitoring SKIP pattern for harness:tui:input_not_accepted signal.
1872
+
1873
+ ## 2026-05-05 07:00 UTC tick
1874
+ - Stress: 327/1658 (20% done, PID 2755890, ~13h elapsed on current run)
1875
+ - Write rate: 43% last 100 prompts (down from 74% in prior run; write rate is metric-valid — these prompts add CLI flags to an already-built package, many complete in 2 msgs with no writes)
1876
+ - vLLM 400s: 0
1877
+ - GH issues: 0 open
1878
+ - Dispatch queue: harness=34857 total (top today: thinking_stall=3124, loop:bash_generic=276, search_replace:not_found_loop=320, tool:hallucinated_name=61 — all addressed by v2.7.41 commits); retrieval=74 (0 actionable, all current)
1879
+ - Action this tick: committed fix(tui): restore input focus after agent turn completes. The finally block in _run_agent_task() never called _focus_current_bottom_app() — after _refresh_windowing_from_history() remounted message widgets, keyboard focus could shift away from the chat input. Root cause of the ~19% SKIP rate (harness SKIPs when TUI doesn't accept typed prompts). Fix: one-line call_after_refresh(_focus_current_bottom_app) after the windowing refresh. Ships at next auto-release (12:00 UTC) as v2.7.42.
1880
+
1881
+ ## 2026-05-05 07:02 UTC tick
1882
+ - Stress: 333/1658 (harness PID 2755890, elapsed 13h29m, alive)
1883
+ - Write rate: 54% last 50 prompts (CLI-flag prompts; many complete with 0 writes — expected)
1884
+ - Admiral last 30 min: ~14 interventions in last 200 log lines
1885
+ - vLLM 400s: 0
1886
+ - GH issues: 0 open
1887
+ - Dispatch queue: harness=35137 total (13,444 in last 24h, top: thinking_stall=16686, loop:bash_generic=10022, tool:hallucinated_name=4053, search_replace:not_found_loop=3224 — all addressed by recent commits); retrieval=74 (0 actionable)
1888
+ - Action this tick: no new bugs found. All top dispatch patterns have been addressed by v2.7.41 commits (focus fix, stall fallback, bash heredoc, dedup listing, search_replace not-found). Stress skip rate is 18.6% cumulative but the input focus fix (68342fc) deployed at midnight CDT 2h ago — too soon to assess impact. Harness self-healing via FORCE-RESET+RECYCLE; currently retrying prompt 333. No action taken.
@@ -326,7 +326,7 @@ wheels = [
326
326
 
327
327
  [[package]]
328
328
  name = "drydock-cli"
329
- version = "2.7.39"
329
+ version = "2.7.40"
330
330
  source = { editable = "." }
331
331
  dependencies = [
332
332
  { name = "agent-client-protocol" },
@@ -1 +0,0 @@
1
- 2806441
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes