drydock-cli 2.10.7__tar.gz → 2.10.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/PKG-INFO +2 -2
  2. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/agent_loop.py +16 -1
  3. drydock_cli-2.10.8/drydock/data/cookbook/tbench_domains/mcmc_stan.md +188 -0
  4. drydock_cli-2.10.8/drydock/data/cookbook/tbench_domains/raman_fitting.md +190 -0
  5. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/pyproject.toml +2 -2
  6. drydock_cli-2.10.8/tests/test_auto_retrieve_wrapper_strip.py +85 -0
  7. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/.gitignore +0 -0
  8. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/LICENSE +0 -0
  9. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/NOTICE +0 -0
  10. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/README.md +0 -0
  11. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/distribution/zed/LICENSE +0 -0
  12. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/docs/README.md +0 -0
  13. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/__init__.py +0 -0
  14. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/__main__.py +0 -0
  15. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/__init__.py +0 -0
  16. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/acp_agent_loop.py +0 -0
  17. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/acp_logger.py +0 -0
  18. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/entrypoint.py +0 -0
  19. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/__init__.py +0 -0
  20. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/base.py +0 -0
  21. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/builtins/bash.py +0 -0
  22. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/builtins/read_file.py +0 -0
  23. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/builtins/search_replace.py +0 -0
  24. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/builtins/todo.py +0 -0
  25. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/builtins/write_file.py +0 -0
  26. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/tools/session_update.py +0 -0
  27. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/acp/utils.py +0 -0
  28. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/__init__.py +0 -0
  29. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/detectors.py +0 -0
  30. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/detectors_proposed.py +0 -0
  31. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/history.py +0 -0
  32. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/interventions.py +0 -0
  33. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/llm_analyzer.py +0 -0
  34. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/metrics.py +0 -0
  35. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/opus_escalator.py +0 -0
  36. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/persistence.py +0 -0
  37. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/policy.py +0 -0
  38. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/proposer.py +0 -0
  39. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/stager.py +0 -0
  40. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/task_classifier.py +0 -0
  41. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/tuning.py +0 -0
  42. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/validator.py +0 -0
  43. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/admiral/worker.py +0 -0
  44. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/__init__.py +0 -0
  45. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/autocompletion/__init__.py +0 -0
  46. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/autocompletion/base.py +0 -0
  47. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/autocompletion/path_completion.py +0 -0
  48. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/autocompletion/slash_command.py +0 -0
  49. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/cli.py +0 -0
  50. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/clipboard.py +0 -0
  51. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/commands.py +0 -0
  52. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/entrypoint.py +0 -0
  53. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/fix_windows_path.py +0 -0
  54. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/history_manager.py +0 -0
  55. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
  56. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
  57. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
  58. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/terminal_setup.py +0 -0
  59. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/__init__.py +0 -0
  60. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
  61. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/app.py +0 -0
  62. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/app.tcss +0 -0
  63. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/external_editor.py +0 -0
  64. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
  65. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
  66. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
  67. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
  68. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
  69. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
  70. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
  71. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
  72. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
  73. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
  74. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
  75. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
  76. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
  77. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
  78. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
  79. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
  80. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
  81. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
  82. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
  83. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/compact.py +0 -0
  84. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
  85. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
  86. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
  87. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/loading.py +0 -0
  88. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/messages.py +0 -0
  89. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
  90. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
  91. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
  92. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
  93. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
  94. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
  95. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
  96. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
  97. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
  98. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/tools.py +0 -0
  99. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
  100. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
  101. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/windowing/history.py +0 -0
  102. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
  103. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/textual_ui/windowing/state.py +0 -0
  104. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/__init__.py +0 -0
  105. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
  106. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
  107. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
  108. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
  109. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
  110. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/update.py +0 -0
  111. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/cli/update_notifier/whats_new.py +0 -0
  112. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/__init__.py +0 -0
  113. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/agents/__init__.py +0 -0
  114. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/agents/manager.py +0 -0
  115. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/agents/models.py +0 -0
  116. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/auth/__init__.py +0 -0
  117. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/auth/crypto.py +0 -0
  118. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/auth/github.py +0 -0
  119. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/auto_solve.py +0 -0
  120. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/__init__.py +0 -0
  121. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/completers.py +0 -0
  122. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
  123. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
  124. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
  125. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/file_indexer/store.py +0 -0
  126. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
  127. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/fuzzy.py +0 -0
  128. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/path_prompt.py +0 -0
  129. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
  130. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/build_orchestrator.py +0 -0
  131. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/checkpoint.py +0 -0
  132. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/__init__.py +0 -0
  133. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/__main__.py +0 -0
  134. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/classifier.py +0 -0
  135. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/dispatcher.py +0 -0
  136. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/rules.py +0 -0
  137. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/classifier/signal.py +0 -0
  138. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/__init__.py +0 -0
  139. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/_dotenv.py +0 -0
  140. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/_settings.py +0 -0
  141. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/doctor.py +0 -0
  142. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/harness_files/__init__.py +0 -0
  143. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/harness_files/_harness_manager.py +0 -0
  144. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/harness_files/_paths.py +0 -0
  145. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/local_detect.py +0 -0
  146. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/config/migrate.py +0 -0
  147. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/constraint_extract.py +0 -0
  148. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/constraint_hint.py +0 -0
  149. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/consultant.py +0 -0
  150. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/context_recovery.py +0 -0
  151. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/drydock_states.py +0 -0
  152. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/goal.py +0 -0
  153. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/hooks.py +0 -0
  154. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/__init__.py +0 -0
  155. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/anthropic.py +0 -0
  156. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/base.py +0 -0
  157. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/factory.py +0 -0
  158. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/generic.py +0 -0
  159. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/mistral.py +0 -0
  160. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
  161. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/backend/vertex.py +0 -0
  162. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/exceptions.py +0 -0
  163. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/format.py +0 -0
  164. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/grammar/__init__.py +0 -0
  165. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/grammar/_llamacpp_converter.py +0 -0
  166. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/grammar/policy.py +0 -0
  167. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/grammar/policy_union.py +0 -0
  168. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/message_utils.py +0 -0
  169. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/llm/types.py +0 -0
  170. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/logger.py +0 -0
  171. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/middleware.py +0 -0
  172. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/output_formatters.py +0 -0
  173. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/paths/__init__.py +0 -0
  174. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/paths/_drydock_home.py +0 -0
  175. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/paths/_local_config_walk.py +0 -0
  176. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/paths/conventions.py +0 -0
  177. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/plan_session.py +0 -0
  178. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/plugins.py +0 -0
  179. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/programmatic.py +0 -0
  180. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/__init__.py +0 -0
  181. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/builder.md +0 -0
  182. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/cli.md +0 -0
  183. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/compact.md +0 -0
  184. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/dangerous_directory.md +0 -0
  185. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/diagnostic.md +0 -0
  186. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/explore.md +0 -0
  187. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/gemma4.md +0 -0
  188. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/gemma4_math.md +0 -0
  189. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/gemma4_slim.md +0 -0
  190. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/planner.md +0 -0
  191. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/project_context.md +0 -0
  192. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/prompts/tests.md +0 -0
  193. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/proxy_setup.py +0 -0
  194. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/agent_memory.py +0 -0
  195. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/checkpoints.py +0 -0
  196. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/session_loader.py +0 -0
  197. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/session_logger.py +0 -0
  198. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/session_migration.py +0 -0
  199. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session/state_file.py +0 -0
  200. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/session_checker.py +0 -0
  201. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/skills/__init__.py +0 -0
  202. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/skills/manager.py +0 -0
  203. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/skills/models.py +0 -0
  204. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/skills/parser.py +0 -0
  205. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/slug.py +0 -0
  206. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/spec_check.py +0 -0
  207. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/steering_hook.py +0 -0
  208. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/system_prompt.py +0 -0
  209. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/telemetry/__init__.py +0 -0
  210. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/telemetry/send.py +0 -0
  211. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/teleport/errors.py +0 -0
  212. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/teleport/git.py +0 -0
  213. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/teleport/nuage.py +0 -0
  214. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/teleport/teleport.py +0 -0
  215. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/teleport/types.py +0 -0
  216. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/base.py +0 -0
  217. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/_task_manager.py +0 -0
  218. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/algebra_tool.py +0 -0
  219. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/ask_user_question.py +0 -0
  220. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/bash.py +0 -0
  221. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/chemistry_tool.py +0 -0
  222. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/count_tool.py +0 -0
  223. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/cron.py +0 -0
  224. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
  225. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/glob_tool.py +0 -0
  226. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/grep.py +0 -0
  227. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/invoke_skill.py +0 -0
  228. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/linear_algebra_tool.py +0 -0
  229. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/logic_tool.py +0 -0
  230. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/lsp.py +0 -0
  231. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/math_tool.py +0 -0
  232. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/mcp_resources.py +0 -0
  233. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/mechanical_rename.py +0 -0
  234. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/memory_tool.py +0 -0
  235. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/notebook_edit.py +0 -0
  236. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/number_theory_tool.py +0 -0
  237. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/powershell.py +0 -0
  238. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prolog_tool.py +0 -0
  239. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
  240. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
  241. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/bash.md +0 -0
  242. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/cron.md +0 -0
  243. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/glob.md +0 -0
  244. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/grep.md +0 -0
  245. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
  246. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
  247. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
  248. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
  249. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
  250. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
  251. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
  252. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
  253. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
  254. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/task.md +0 -0
  255. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
  256. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/todo.md +0 -0
  257. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
  258. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
  259. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
  260. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
  261. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
  262. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/read_file.py +0 -0
  263. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/retrieve.py +0 -0
  264. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/search_replace.py +0 -0
  265. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/set_tool.py +0 -0
  266. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/solve_tool.py +0 -0
  267. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/stats_tool.py +0 -0
  268. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/task.py +0 -0
  269. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/todo.py +0 -0
  270. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/tool_search.py +0 -0
  271. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/units_tool.py +0 -0
  272. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/verify_tool.py +0 -0
  273. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/webfetch.py +0 -0
  274. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/websearch.py +0 -0
  275. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/worktree.py +0 -0
  276. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/builtins/write_file.py +0 -0
  277. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/injection_guard.py +0 -0
  278. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/manager.py +0 -0
  279. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/mcp/__init__.py +0 -0
  280. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/mcp/registry.py +0 -0
  281. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/mcp/tools.py +0 -0
  282. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/mcp_sampling.py +0 -0
  283. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/ui.py +0 -0
  284. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/tools/utils.py +0 -0
  285. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/trusted_folders.py +0 -0
  286. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/types.py +0 -0
  287. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/core/utils.py +0 -0
  288. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/__init__.py +0 -0
  289. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/__main__.py +0 -0
  290. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/gap_detector.py +0 -0
  291. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/ingest.py +0 -0
  292. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/item.py +0 -0
  293. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/queue.py +0 -0
  294. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/curiosity/surprise.py +0 -0
  295. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/python/global_rename.md +0 -0
  296. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/biopython_dna.md +0 -0
  297. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/dense_eigenvalue.md +0 -0
  298. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/elf_extraction_js.md +0 -0
  299. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/feal_cryptanalysis.md +0 -0
  300. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/llm_batching_scheduler.md +0 -0
  301. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/mips_isa.md +0 -0
  302. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/mobilesam_cell_seg.md +0 -0
  303. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/mteb_retrieve.md +0 -0
  304. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/path_tracing.md +0 -0
  305. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/regex_chess.md +0 -0
  306. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/vim_macros.md +0 -0
  307. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/data/cookbook/tbench_domains/xss_filter.md +0 -0
  308. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/__init__.py +0 -0
  309. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/__main__.py +0 -0
  310. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/code_indexer.py +0 -0
  311. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/retriever.py +0 -0
  312. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/storage.py +0 -0
  313. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/graphrag/text_indexer.py +0 -0
  314. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/__init__.py +0 -0
  315. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/base.py +0 -0
  316. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/onboarding.tcss +0 -0
  317. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/screens/__init__.py +0 -0
  318. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/screens/api_key.py +0 -0
  319. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/screens/choice.py +0 -0
  320. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/screens/local_model.py +0 -0
  321. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/onboarding/screens/welcome.py +0 -0
  322. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
  323. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
  324. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/__init__.py +0 -0
  325. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/api-design/SKILL.md +0 -0
  326. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/audit-tests/SKILL.md +0 -0
  327. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/batch/SKILL.md +0 -0
  328. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/checklist/SKILL.md +0 -0
  329. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/commit-code/SKILL.md +0 -0
  330. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/constraint-reasoning/SKILL.md +0 -0
  331. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/context-summary/SKILL.md +0 -0
  332. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/create-presentation/SKILL.md +0 -0
  333. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/deep-research/SKILL.md +0 -0
  334. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/deploy/SKILL.md +0 -0
  335. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/diff-review/SKILL.md +0 -0
  336. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/doc-gen/SKILL.md +0 -0
  337. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/explain-code/SKILL.md +0 -0
  338. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/explore-code/SKILL.md +0 -0
  339. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/fix-issue/SKILL.md +0 -0
  340. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/git-ops/SKILL.md +0 -0
  341. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/init-project/SKILL.md +0 -0
  342. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/investigate/SKILL.md +0 -0
  343. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/logic/SKILL.md +0 -0
  344. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/logic/assets/cheat_sheet_full.txt +0 -0
  345. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/loop/SKILL.md +0 -0
  346. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/migrate/SKILL.md +0 -0
  347. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/perf-analyze/SKILL.md +0 -0
  348. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/plan-impl/SKILL.md +0 -0
  349. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/pr-review/SKILL.md +0 -0
  350. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/prove/SKILL.md +0 -0
  351. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/refactor/SKILL.md +0 -0
  352. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/regex-help/SKILL.md +0 -0
  353. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/review/SKILL.md +0 -0
  354. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/security-review/SKILL.md +0 -0
  355. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/ship/SKILL.md +0 -0
  356. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/simplify/SKILL.md +0 -0
  357. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/strong-tests/SKILL.md +0 -0
  358. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/skills/test-verify/SKILL.md +0 -0
  359. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/__init__.py +0 -0
  360. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/__main__.py +0 -0
  361. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/applier.py +0 -0
  362. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/config.py +0 -0
  363. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/registry.py +0 -0
  364. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sandbox.py +0 -0
  365. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sidecar/__init__.py +0 -0
  366. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sidecar/header_parser.py +0 -0
  367. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sidecar/hooks.py +0 -0
  368. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sidecar/loader.py +0 -0
  369. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/sidecar/server.py +0 -0
  370. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/train/__init__.py +0 -0
  371. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/train/capture.py +0 -0
  372. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/train/compute_vector.py +0 -0
  373. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/train/extract_pairs.py +0 -0
  374. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/train/scan_sessions.py +0 -0
  375. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/steering/vectors.py +0 -0
  376. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/drydock/whats_new.md +0 -0
  377. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/install_tests/README.md +0 -0
  378. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/install_tests/publish/README.md +0 -0
  379. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/install_tests/windows/README.md +0 -0
  380. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/scripts/README.md +0 -0
  381. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/scripts/_archived_eval_harness/README.md +0 -0
  382. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/scripts/llm/README.md +0 -0
  383. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/__init__.py +0 -0
  384. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/conftest.py +0 -0
  385. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_acp.py +0 -0
  386. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_agent_thought.py +0 -0
  387. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_bash.py +0 -0
  388. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_compact_session_updates.py +0 -0
  389. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_content.py +0 -0
  390. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_initialize.py +0 -0
  391. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_list_sessions.py +0 -0
  392. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_load_session.py +0 -0
  393. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_multi_session.py +0 -0
  394. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_new_session.py +0 -0
  395. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_proxy_setup_acp.py +0 -0
  396. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_read_file.py +0 -0
  397. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_search_replace.py +0 -0
  398. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_set_config_option.py +0 -0
  399. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_set_mode.py +0 -0
  400. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_set_model.py +0 -0
  401. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_tool_call_session_update.py +0 -0
  402. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_utils.py +0 -0
  403. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/acp/test_write_file.py +0 -0
  404. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/conftest.py +0 -0
  405. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_file_indexer.py +0 -0
  406. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_fuzzy.py +0 -0
  407. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
  408. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_path_completer_recursive.py +0 -0
  409. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_path_completion_controller.py +0 -0
  410. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
  411. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_slash_command_controller.py +0 -0
  412. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
  413. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/__init__.py +0 -0
  414. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/data/__init__.py +0 -0
  415. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/data/fireworks.py +0 -0
  416. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/data/mistral.py +0 -0
  417. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/test_anthropic_adapter.py +0 -0
  418. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/test_backend.py +0 -0
  419. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/test_generic_adapter_sanitize.py +0 -0
  420. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/test_reasoning_adapter.py +0 -0
  421. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
  422. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
  423. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
  424. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
  425. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_bell_notifications.py +0 -0
  426. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_braille_renderer.py +0 -0
  427. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_clipboard.py +0 -0
  428. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_commands.py +0 -0
  429. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_copy_shortcuts.py +0 -0
  430. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_external_editor.py +0 -0
  431. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_no_markup_static.py +0 -0
  432. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_question_app.py +0 -0
  433. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_spinner.py +0 -0
  434. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_switching_mode.py +0 -0
  435. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_ui_clipboard_notifications.py +0 -0
  436. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
  437. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_ui_session_resume.py +0 -0
  438. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/test_ui_skill_dispatch.py +0 -0
  439. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/textual_ui/__init__.py +0 -0
  440. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/cli/textual_ui/test_session_picker.py +0 -0
  441. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/conftest.py +0 -0
  442. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_agents.py +0 -0
  443. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_auth_crypto.py +0 -0
  444. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_auth_github.py +0 -0
  445. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_config_load_dotenv.py +0 -0
  446. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_config_paths.py +0 -0
  447. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_config_resolution.py +0 -0
  448. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_file_logging.py +0 -0
  449. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_plan_session.py +0 -0
  450. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_proxy_setup.py +0 -0
  451. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_slug.py +0 -0
  452. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_telemetry_send.py +0 -0
  453. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_teleport_git.py +0 -0
  454. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_teleport_nuage.py +0 -0
  455. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_teleport_service.py +0 -0
  456. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_trusted_folders.py +0 -0
  457. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/core/test_utils.py +0 -0
  458. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/common.py +0 -0
  459. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/conftest.py +0 -0
  460. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/mock_server.py +0 -0
  461. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/test_cli_tui_onboarding.py +0 -0
  462. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/test_cli_tui_streaming.py +0 -0
  463. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
  464. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/fixtures/doc_qa_system_prd.md +0 -0
  465. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/mock/__init__.py +0 -0
  466. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/mock/mock_backend_factory.py +0 -0
  467. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/mock/mock_entrypoint.py +0 -0
  468. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/mock/utils.py +0 -0
  469. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/onboarding/test_run_onboarding.py +0 -0
  470. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/onboarding/test_ui_onboarding.py +0 -0
  471. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/session/test_session_loader.py +0 -0
  472. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/session/test_session_logger.py +0 -0
  473. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/session/test_session_migration.py +0 -0
  474. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/skills/conftest.py +0 -0
  475. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/skills/test_manager.py +0 -0
  476. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/skills/test_models.py +0 -0
  477. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/skills/test_parser.py +0 -0
  478. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
  479. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
  480. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
  481. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
  482. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
  483. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
  484. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
  485. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
  486. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
  487. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
  488. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
  489. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
  490. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
  491. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
  492. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
  493. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
  494. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
  495. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
  496. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
  497. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
  498. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
  499. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
  500. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
  501. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
  502. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
  503. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
  504. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
  505. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
  506. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
  507. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
  508. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
  509. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
  510. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
  511. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
  512. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
  513. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
  514. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
  515. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
  516. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
  517. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
  518. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
  519. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
  520. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
  521. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
  522. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
  523. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
  524. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
  525. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
  526. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
  527. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
  528. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
  529. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
  530. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
  531. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
  532. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
  533. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
  534. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
  535. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
  536. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
  537. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
  538. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/base_snapshot_test_app.py +0 -0
  539. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/conftest.py +0 -0
  540. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/snap_compare.py +0 -0
  541. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
  542. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
  543. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
  544. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
  545. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
  546. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
  547. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
  548. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
  549. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
  550. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
  551. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
  552. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
  553. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
  554. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
  555. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/stress/__init__.py +0 -0
  556. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/stress/test_io_thrash.py +0 -0
  557. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/stubs/fake_backend.py +0 -0
  558. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/stubs/fake_client.py +0 -0
  559. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/stubs/fake_tool.py +0 -0
  560. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral.py +0 -0
  561. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
  562. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_intervention_outcome.py +0 -0
  563. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_phase3.py +0 -0
  564. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_proposed.py +0 -0
  565. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_session_id.py +0 -0
  566. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_admiral_struggle_dedup.py +0 -0
  567. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_auto_compact.py +0 -0
  568. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_backend.py +0 -0
  569. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_observer_streaming.py +0 -0
  570. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_stats.py +0 -0
  571. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_tasks.py +0 -0
  572. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agent_tool_call.py +0 -0
  573. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_agents.py +0 -0
  574. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_algebra_tool.py +0 -0
  575. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_api_error_recovery.py +0 -0
  576. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_approval_modal_stray_keys.py +0 -0
  577. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_auto_retrieve_cookbook_bypass.py +0 -0
  578. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_auto_retrieve_soft_nudge.py +0 -0
  579. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_auto_solve.py +0 -0
  580. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_build.py +0 -0
  581. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_debug.py +0 -0
  582. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_multiagent.py +0 -0
  583. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_prd.py +0 -0
  584. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_prd_extended.py +0 -0
  585. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_tools.py +0 -0
  586. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_bank_update.py +0 -0
  587. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_broken_tool_isolation.py +0 -0
  588. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_build_projects.py +0 -0
  589. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_checkpoint.py +0 -0
  590. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_chemistry_tool.py +0 -0
  591. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_classifier.py +0 -0
  592. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_cli_programmatic_preload.py +0 -0
  593. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_config_migration.py +0 -0
  594. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_constraint_extract.py +0 -0
  595. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_constraint_hint.py +0 -0
  596. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_context_recovery.py +0 -0
  597. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_count_tool.py +0 -0
  598. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_curiosity.py +0 -0
  599. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_current_bugs.py +0 -0
  600. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_dispatch_report.py +0 -0
  601. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_dispatcher.py +0 -0
  602. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_drydock_regression.py +0 -0
  603. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_drydock_tasks.py +0 -0
  604. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_fake_tool_call_paren_syntax.py +0 -0
  605. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_full_regression.py +0 -0
  606. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_gemma4_anti_loop_migration.py +0 -0
  607. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_gemma4_tool_filter.py +0 -0
  608. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_goal.py +0 -0
  609. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_grammar.py +0 -0
  610. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_graphrag.py +0 -0
  611. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_graphrag_pdf_ingest.py +0 -0
  612. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_graphrag_worked_examples.py +0 -0
  613. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_hallucinated_tool_suppression.py +0 -0
  614. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_history_manager.py +0 -0
  615. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_hle_aggregate.py +0 -0
  616. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_integration.py +0 -0
  617. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_issue_fixes.py +0 -0
  618. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_linear_algebra_tool.py +0 -0
  619. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_local_detect.py +0 -0
  620. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_local_detect_fallback.py +0 -0
  621. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_logic_tool.py +0 -0
  622. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_loop_detection.py +0 -0
  623. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_loop_regressions_2026_06_06.py +0 -0
  624. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_math_docs_lazy_injection.py +0 -0
  625. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_math_tool.py +0 -0
  626. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_mcp_settings.py +0 -0
  627. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_mcp_stdio_command_normalization.py +0 -0
  628. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_mechanical_rename_tool.py +0 -0
  629. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_mechanical_rename_type_extraction.py +0 -0
  630. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_memory_tool.py +0 -0
  631. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_message_id.py +0 -0
  632. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_message_merging.py +0 -0
  633. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_middleware.py +0 -0
  634. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_multi_agent.py +0 -0
  635. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_number_theory_tool.py +0 -0
  636. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_prolog_tool.py +0 -0
  637. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_read_file_not_found_listing.py +0 -0
  638. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_read_file_notebook_slim.py +0 -0
  639. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_real_failures.py +0 -0
  640. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_real_issues.py +0 -0
  641. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_real_workflow.py +0 -0
  642. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_reasoning_content.py +0 -0
  643. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_rejudge_hle.py +0 -0
  644. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_retrieval_consumer.py +0 -0
  645. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_retrieve_project_detection.py +0 -0
  646. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_retrieve_tool.py +0 -0
  647. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_safe_parse_tool_args.py +0 -0
  648. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_search_replace_args_not_truncated.py +0 -0
  649. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_search_replace_syntax_rollback.py +0 -0
  650. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_session_log_event.py +0 -0
  651. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_session_publish_on_resume.py +0 -0
  652. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_set_tool.py +0 -0
  653. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_smoke.py +0 -0
  654. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_solve_tool.py +0 -0
  655. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_specialist_math_tools_hidden.py +0 -0
  656. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_stats_tool.py +0 -0
  657. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering.py +0 -0
  658. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_capture.py +0 -0
  659. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_compute_vector.py +0 -0
  660. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_extract_pairs.py +0 -0
  661. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_hook.py +0 -0
  662. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_sidecar_chat_inputs.py +0 -0
  663. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_steering_sidecar_hooks.py +0 -0
  664. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_system_prompt.py +0 -0
  665. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_tagged_text.py +0 -0
  666. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_task_complete_nudge.py +0 -0
  667. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_tool_args.py +0 -0
  668. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_tool_call_loops_regression_suite.py +0 -0
  669. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_tool_stop_injected_scope.py +0 -0
  670. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_truncate_args_valid_json.py +0 -0
  671. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_truncated_arg_path_hint.py +0 -0
  672. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_truncated_search_replace_escalation.py +0 -0
  673. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_truncated_write_escalation.py +0 -0
  674. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_ui_external_editor.py +0 -0
  675. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_ui_input_history.py +0 -0
  676. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_units_tool.py +0 -0
  677. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_user_issues.py +0 -0
  678. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_validation_error_scrub.py +0 -0
  679. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_verify_tool.py +0 -0
  680. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_wall_of_text_rescue.py +0 -0
  681. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_workloads.py +0 -0
  682. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/test_write_file_missing_path.py +0 -0
  683. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/testbank_helpers.py +0 -0
  684. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_ask_user_question.py +0 -0
  685. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash.py +0 -0
  686. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_binary_grep_hint.py +0 -0
  687. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_consec_empty_search.py +0 -0
  688. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
  689. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
  690. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_error_loop_breaker.py +0 -0
  691. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
  692. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
  693. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
  694. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
  695. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_exit_plan_mode.py +0 -0
  696. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_grep.py +0 -0
  697. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
  698. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_invoke_context.py +0 -0
  699. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_manager_gemma_derived_models.py +0 -0
  700. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_manager_get_tool_config.py +0 -0
  701. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_mcp.py +0 -0
  702. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_mcp_sampling.py +0 -0
  703. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_pre_rename_hook.py +0 -0
  704. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
  705. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_read_file_dedup_reembed.py +0 -0
  706. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_read_file_directory.py +0 -0
  707. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_read_file_limit_truncation.py +0 -0
  708. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_append_fallback.py +0 -0
  709. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_dir_path.py +0 -0
  710. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_empty_content.py +0 -0
  711. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_file_not_found.py +0 -0
  712. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
  713. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_hard_stop.py +0 -0
  714. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_malformed_block.py +0 -0
  715. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
  716. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_placeholder.py +0 -0
  717. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
  718. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_task.py +0 -0
  719. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_ui_bash_execution.py +0 -0
  720. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_webfetch.py +0 -0
  721. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_websearch.py +0 -0
  722. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
  723. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_write_file_missing_main_module.py +0 -0
  724. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_write_file_missing_path_hint.py +0 -0
  725. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/tools/test_write_file_multifile_rename.py +0 -0
  726. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
  727. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
  728. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_do_update.py +0 -0
  729. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
  730. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_github_update_gateway.py +0 -0
  731. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
  732. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_ui_update_notification.py +0 -0
  733. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_update_use_case.py +0 -0
  734. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/tests/update_notifier/test_whats_new.py +0 -0
  735. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/uv.lock +0 -0
  736. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/web/README.md +0 -0
  737. {drydock_cli-2.10.7 → drydock_cli-2.10.8}/worked_examples/README.md +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: drydock-cli
3
- Version: 2.10.7
4
- Summary: Local-first CLI coding agent tested with Gemma 4 26B via llama.cpp
3
+ Version: 2.10.8
4
+ Summary: Local-first TUI coding agent for Gemma 4 + llama.cpp, with GraphRAG retrieval and a curated cookbook of domain recipes.
5
5
  Project-URL: Homepage, https://github.com/fbobe321/drydock
6
6
  Project-URL: Repository, https://github.com/fbobe321/drydock
7
7
  Project-URL: Issues, https://github.com/fbobe321/drydock/issues
@@ -7255,9 +7255,24 @@ class AgentLoop:
7255
7255
  except ValueError:
7256
7256
  _bypass_thresh = 25.0
7257
7257
  # Cheap probe — short query, just enough to read the top score.
7258
+ #
7259
+ # 2026-06-09: strip the harness wrapper from the probe query.
7260
+ # tbench / harbor prompts open with ~600 chars of "WRITE-FIRST
7261
+ # RULE / Process to follow" boilerplate followed by
7262
+ # "----- Task: -----" then the actual task. Using the raw
7263
+ # message made global_rename.md (which contains "tool call",
7264
+ # "rename", "process") score 51.4 — beating the FEAL-specific
7265
+ # cookbook — on a FEAL trial, so the injection was pure noise
7266
+ # that caused an empty model response and 43s session exit.
7258
7267
  try:
7259
7268
  from drydock.graphrag import Index as _Probe
7260
- _probe_query = (user_msg or "").strip()[:300]
7269
+ _raw_for_probe = user_msg or ""
7270
+ _task_marker = _raw_for_probe.find("----- Task: -----")
7271
+ if _task_marker >= 0:
7272
+ _raw_for_probe = _raw_for_probe[
7273
+ _task_marker + len("----- Task: -----"):
7274
+ ]
7275
+ _probe_query = _raw_for_probe.strip()[:300]
7261
7276
  if _probe_query:
7262
7277
  _env_db = os.environ.get("DRYDOCK_GRAPHRAG_DB")
7263
7278
  _home_db = str(Path.home() / ".drydock" / "graphrag.sqlite")
@@ -0,0 +1,188 @@
1
+ # MCMC sampling with Stan (RStan / PyStan)
2
+
3
+ Used by: `mcmc-sampling-stan`, `rstan-to-pystan`. Task asks for a
4
+ Bayesian hierarchical model fit via MCMC sampling, usually with a
5
+ specific model file (`.stan`) and a specific package (RStan or
6
+ PyStan/CmdStanPy). Output: posterior means written to plaintext
7
+ files.
8
+
9
+ Currently flaky-pass (2/6 = 33% for mcmc-sampling-stan).
10
+
11
+ ## Stan model file structure
12
+
13
+ A Stan model has 3-4 standard blocks:
14
+
15
+ ```stan
16
+ data {
17
+ int<lower=0> N; // n observations
18
+ vector[N] y; // observed outcomes
19
+ }
20
+ parameters {
21
+ real alpha;
22
+ real<lower=0> sigma;
23
+ }
24
+ model {
25
+ alpha ~ normal(0, 10); // priors
26
+ sigma ~ exponential(1);
27
+ y ~ normal(alpha, sigma); // likelihood
28
+ }
29
+ ```
30
+
31
+ The file is human-readable and can be inspected with `cat` if the
32
+ task provides it.
33
+
34
+ ## The R + RStan path (preferred when task asks for R)
35
+
36
+ ```r
37
+ library(rstan)
38
+ options(mc.cores = parallel::detectCores())
39
+ rstan_options(auto_write = TRUE)
40
+
41
+ # Build the data list from CSV / pre-computed numbers
42
+ data_list <- list(
43
+ N = nrow(my_df),
44
+ y = my_df$y,
45
+ x = my_df$x
46
+ )
47
+
48
+ # Fit. iter=2000 + warmup=1000 + chains=4 is the canonical setting.
49
+ fit <- stan(
50
+ file = "/app/model.stan",
51
+ data = data_list,
52
+ iter = 2000, warmup = 1000, chains = 4, seed = 42
53
+ )
54
+
55
+ # Extract posterior summaries
56
+ post <- extract(fit)
57
+ alpha_mean <- mean(post$alpha)
58
+ beta_mean <- mean(post$beta)
59
+
60
+ # Task usually expects single-number output files:
61
+ writeLines(sprintf("%.6f", alpha_mean), "/app/posterior_alpha_mean.txt")
62
+ writeLines(sprintf("%.6f", beta_mean), "/app/posterior_beta_mean.txt")
63
+ ```
64
+
65
+ ## The Python + CmdStanPy path (preferred when task asks for Python)
66
+
67
+ PyStan 3 dropped Windows support and has many install issues;
68
+ **CmdStanPy is the better choice** for tbench. It calls the CmdStan
69
+ binary directly:
70
+
71
+ ```python
72
+ import cmdstanpy
73
+ # CmdStan must be installed; on first run it downloads + builds itself
74
+ cmdstanpy.install_cmdstan(progress=False)
75
+
76
+ model = cmdstanpy.CmdStanModel(stan_file="/app/model.stan")
77
+
78
+ fit = model.sample(
79
+ data={"N": len(y), "y": y.tolist(), "x": x.tolist()},
80
+ iter_sampling=1000,
81
+ iter_warmup=1000,
82
+ chains=4,
83
+ seed=42,
84
+ show_progress=False,
85
+ )
86
+
87
+ post = fit.stan_variables() # dict: param name → np.ndarray
88
+ import numpy as np
89
+ alpha_mean = float(np.mean(post["alpha"]))
90
+ beta_mean = float(np.mean(post["beta"]))
91
+
92
+ with open("/app/posterior_alpha_mean.txt", "w") as f:
93
+ f.write(f"{alpha_mean:.6f}\n")
94
+ with open("/app/posterior_beta_mean.txt", "w") as f:
95
+ f.write(f"{beta_mean:.6f}\n")
96
+ ```
97
+
98
+ ## Common task shape: hierarchical model
99
+
100
+ Two-level groups (e.g., students within schools), random
101
+ intercepts/slopes:
102
+
103
+ ```stan
104
+ data {
105
+ int<lower=0> N; // total observations
106
+ int<lower=0> J; // number of groups
107
+ array[N] int<lower=1,upper=J> group;
108
+ vector[N] y;
109
+ vector[N] x;
110
+ }
111
+ parameters {
112
+ real alpha; // grand intercept
113
+ real beta; // grand slope
114
+ real<lower=0> tau_a; // group intercept SD
115
+ vector[J] a_offset; // standardized per-group intercept
116
+ real<lower=0> sigma;
117
+ }
118
+ transformed parameters {
119
+ vector[J] a = alpha + tau_a * a_offset; // non-centered param
120
+ }
121
+ model {
122
+ alpha ~ normal(0, 10);
123
+ beta ~ normal(0, 10);
124
+ tau_a ~ exponential(1);
125
+ a_offset ~ normal(0, 1);
126
+ sigma ~ exponential(1);
127
+ y ~ normal(a[group] + beta * x, sigma);
128
+ }
129
+ ```
130
+
131
+ **Non-centered parameterization** (the `a_offset → a` trick) is
132
+ critical for hierarchical models with small per-group counts. Without
133
+ it, MCMC mixing is terrible and means are unreliable.
134
+
135
+ ## Pitfalls that cost passes
136
+
137
+ 1. **Wrong chain/iter settings** — too-few iters (100) gives noisy
138
+ posteriors; the verifier compares to a reference run with 4000+
139
+ samples. Use 2000+ samples per chain, 4 chains.
140
+ 2. **Forgot warmup** — first 1000 samples are burn-in. Defaults
141
+ handle this, but if you override iter without setting warmup,
142
+ you lose half your good samples.
143
+ 3. **Stan compiler errors** — Stan compiles to C++. Compile errors
144
+ show as cryptic syntax messages. Check `print(fit.diagnose())`
145
+ after `model.sample()`.
146
+ 4. **Divergent transitions** — symptom of bad parameterization
147
+ (e.g., centered hierarchical model with small groups). Stan warns;
148
+ the verifier ignores them but the resulting posterior is biased.
149
+ 5. **Wrong output format** — task might want JSON, single-number
150
+ plaintext, or per-line param=value. Read carefully.
151
+ 6. **R vs Python mismatch** — if task says "use RStan", a CmdStanPy
152
+ solution won't pass even with identical posteriors.
153
+ 7. **Group indexing 0 vs 1** — Stan is 1-indexed. If you pass
154
+ Python 0-indexed group labels, the model crashes on access.
155
+ 8. **Data list keys** — Stan's `data` block declares variable names
156
+ that must match the data dict keys exactly. A typo silently
157
+ doesn't pass that variable.
158
+
159
+ ## Verifying the fit
160
+
161
+ ```python
162
+ print(fit.diagnose()) # Stan's own check — divergent transitions, R-hat, etc.
163
+ print(fit.summary()) # Per-param mean, sd, R-hat, ESS
164
+ # R-hat near 1.0 (within 0.01) means chains converged
165
+ # ESS > 100 per chain means enough effective samples
166
+ ```
167
+
168
+ R-hat > 1.05 or ESS < 100 → fit is bad; results may not match the
169
+ reference. Increase chains or iter to fix.
170
+
171
+ ## Install-time gotchas
172
+
173
+ For Python:
174
+ ```bash
175
+ pip install cmdstanpy
176
+ python -c "import cmdstanpy; cmdstanpy.install_cmdstan(progress=False)"
177
+ ```
178
+
179
+ For R:
180
+ ```bash
181
+ R -e 'install.packages("rstan", repos="https://cloud.r-project.org")'
182
+ # OR (preferred since rstan 2.32+):
183
+ R -e 'install.packages("cmdstanr", repos = c("https://stan-dev.r-universe.dev"))'
184
+ R -e 'cmdstanr::install_cmdstan()'
185
+ ```
186
+
187
+ Install can take 5-10 minutes; PyStan 3 in particular sometimes
188
+ fails with cython linker errors — fall back to CmdStanPy.
@@ -0,0 +1,190 @@
1
+ # Raman spectrum peak fitting — graphene G + 2D Lorentzians
2
+
3
+ Used by: `raman-fitting`. Task ships a spectrum file (Raman shift
4
+ vs. intensity) from a graphene sample and asks for Lorentzian fit
5
+ parameters of the **G peak** (~1580 cm⁻¹) and the **2D peak**
6
+ (~2700 cm⁻¹). Output is JSON: per-peak `{x0, gamma, amplitude,
7
+ offset}`.
8
+
9
+ ## Lorentzian convention to use
10
+
11
+ The verifier expects the standard four-parameter Lorentzian:
12
+
13
+ ```
14
+ L(x; x0, γ, A, offset) = A * γ² / ((x - x0)² + γ²) + offset
15
+ ```
16
+
17
+ Where:
18
+ - `x0` is the peak center (cm⁻¹)
19
+ - `γ` (gamma) is the HALF-WIDTH at half-maximum (HWHM), NOT FWHM
20
+ - `A` is the peak height above offset
21
+ - `offset` is the baseline level
22
+
23
+ > **Warning**: scipy's `lorentzian` / `voigt_profile` use a different
24
+ > parameterization (FWHM, normalized to area=1). Don't use those —
25
+ > implement the formula above explicitly. Mis-parameterizing γ as
26
+ > FWHM gives a value 2× too large; the verifier rejects.
27
+
28
+ ## Loading the spectrum file
29
+
30
+ Common formats seen in tbench:
31
+ - Two-column CSV/TSV (`raman_shift, intensity`)
32
+ - A .npy file with shape (N, 2) or (2, N)
33
+ - A .txt file with possibly a header line
34
+
35
+ ```python
36
+ import numpy as np
37
+ from pathlib import Path
38
+
39
+ def load_spectrum(path):
40
+ """Return (x, y) numpy arrays. Tries CSV, TSV, npy in order."""
41
+ p = Path(path)
42
+ if p.suffix == ".npy":
43
+ arr = np.load(p)
44
+ if arr.shape[0] == 2:
45
+ return arr[0], arr[1]
46
+ return arr[:, 0], arr[:, 1]
47
+ # Plain text — strip header lines, try common delimiters
48
+ for delim in (",", "\t", None): # None = any whitespace
49
+ try:
50
+ arr = np.loadtxt(p, delimiter=delim, comments="#")
51
+ if arr.ndim == 2 and arr.shape[1] == 2:
52
+ return arr[:, 0], arr[:, 1]
53
+ except Exception:
54
+ continue
55
+ raise ValueError(f"could not parse {path}")
56
+ ```
57
+
58
+ ## Identifying which peak is which
59
+
60
+ Graphene Raman bands are at well-known positions. Use these as
61
+ identifier ranges, NOT initial parameter guesses:
62
+
63
+ | Band | x0 range (cm⁻¹) | γ typical |
64
+ |------|----------------|-----------|
65
+ | G | 1560-1605 | 5-20 |
66
+ | 2D | 2630-2750 | 25-60 |
67
+ | D | 1320-1370 | 10-30 |
68
+
69
+ (D-band is defect-related; ignore unless the task asks for it.)
70
+
71
+ ## Initial-parameter strategy (critical)
72
+
73
+ Curve-fit converges only when you seed near the truth. Compute
74
+ initial guesses from the data, don't hardcode:
75
+
76
+ ```python
77
+ def initial_guess(x, y, x_low, x_high):
78
+ """In the window [x_low, x_high], use the max-y point as x0 guess,
79
+ the data-min as offset, and the height as amplitude. Default gamma
80
+ to 10 cm⁻¹ which works for most G peaks; refine via curve_fit."""
81
+ mask = (x >= x_low) & (x <= x_high)
82
+ if not mask.any():
83
+ return None
84
+ xs, ys = x[mask], y[mask]
85
+ idx_peak = np.argmax(ys)
86
+ x0 = float(xs[idx_peak])
87
+ offset = float(np.median(ys)) # local baseline
88
+ amplitude = float(ys[idx_peak] - offset)
89
+ gamma = 10.0
90
+ return x0, gamma, amplitude, offset
91
+ ```
92
+
93
+ ## The actual fit
94
+
95
+ ```python
96
+ from scipy.optimize import curve_fit
97
+
98
+ def lorentzian(x, x0, gamma, amplitude, offset):
99
+ return amplitude * gamma**2 / ((x - x0)**2 + gamma**2) + offset
100
+
101
+ def fit_peak(x, y, x_low, x_high):
102
+ """Fit a Lorentzian to the spectrum in the window [x_low, x_high].
103
+ Returns dict matching the verifier's JSON schema."""
104
+ p0 = initial_guess(x, y, x_low, x_high)
105
+ if p0 is None:
106
+ return None
107
+ mask = (x >= x_low) & (x <= x_high)
108
+ xs, ys = x[mask], y[mask]
109
+ # Bounds keep gamma > 0 and amplitude > 0 so the optimizer can't
110
+ # flip the peak upside-down.
111
+ bounds = (
112
+ [x_low, 0.5, 0.0, -np.inf], # lower
113
+ [x_high, 200.0, np.inf, np.inf], # upper
114
+ )
115
+ popt, _ = curve_fit(
116
+ lorentzian, xs, ys, p0=p0, bounds=bounds, maxfev=10_000
117
+ )
118
+ x0, gamma, amplitude, offset = popt
119
+ return {
120
+ "x0": float(x0),
121
+ "gamma": float(gamma),
122
+ "amplitude": float(amplitude),
123
+ "offset": float(offset),
124
+ }
125
+ ```
126
+
127
+ ## End-to-end skeleton
128
+
129
+ ```python
130
+ import json
131
+ import numpy as np
132
+ from scipy.optimize import curve_fit
133
+
134
+ x, y = load_spectrum("/app/spectrum.txt") # or whatever the input path is
135
+
136
+ G_fit = fit_peak(x, y, 1500, 1650)
137
+ TD_fit = fit_peak(x, y, 2600, 2800)
138
+
139
+ out = {"G": G_fit, "2D": TD_fit}
140
+ with open("/app/results.json", "w") as f:
141
+ json.dump(out, f, indent=2)
142
+ ```
143
+
144
+ ## Pitfalls that cost the pass
145
+
146
+ 1. **FWHM vs HWHM** — verifier wants HWHM. Halve any FWHM result.
147
+ 2. **Wrong peak ordering** — task expects keys `"G"` and `"2D"`,
148
+ not `"D"` or `"G+2D"`. Don't accidentally return the D-band as G
149
+ (D is below G in cm⁻¹).
150
+ 3. **Forgetting the offset** — fitting `A*γ²/((x-x0)²+γ²)` without
151
+ `+offset` makes the amplitude absorb the baseline. Verifier
152
+ checks all 4 params per peak.
153
+ 4. **Maxfev too low** — default `maxfev=800` sometimes runs out on
154
+ wide search windows. `maxfev=10_000` is safe.
155
+ 5. **Unbounded fit** — without bounds, curve_fit can find γ<0
156
+ (mathematically identical peak but verifier rejects negative γ).
157
+ 6. **JSON nan/inf** — if the fit fails, `curve_fit` may return nan.
158
+ Wrap with try/except and emit a sensible fallback or re-raise.
159
+ 7. **Window too narrow** — if `[1500, 1650]` doesn't capture the
160
+ G-peak shoulder, the offset estimate is wrong. Widen by ±20-50.
161
+ 8. **Output type** — JSON requires `float`, not `numpy.float64`.
162
+ Cast explicitly with `float(...)`.
163
+
164
+ ## Verification
165
+
166
+ ```python
167
+ # Quick sanity check before writing JSON:
168
+ print(f"G: x0={G_fit['x0']:.1f} γ={G_fit['gamma']:.1f} A={G_fit['amplitude']:.1f}")
169
+ print(f"2D: x0={TD_fit['x0']:.1f} γ={TD_fit['gamma']:.1f} A={TD_fit['amplitude']:.1f}")
170
+ # Expect: G x0≈1580±10, γ≈10±5; 2D x0≈2700±20, γ≈40±15
171
+ ```
172
+
173
+ If γ comes out >100 cm⁻¹, the fit converged to a wrong solution
174
+ (usually picking up two peaks). Tighten the window.
175
+
176
+ If γ comes out <1, the fit captured a noise spike. Widen the
177
+ window or smooth the data:
178
+
179
+ ```python
180
+ from scipy.signal import savgol_filter
181
+ y_smooth = savgol_filter(y, window_length=5, polyorder=2)
182
+ ```
183
+
184
+ ## Common task shape variants
185
+
186
+ The data file might be: `Spectrum.txt`, `data.csv`, `raman.npy`,
187
+ or similar. The task instruction states the exact filename — read
188
+ carefully. Some variants ship multiple spectra in one file and
189
+ ask for the average; others ship intensity-only and require you
190
+ to construct the x-axis from a metadata header.
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "drydock-cli"
3
- version = "2.10.7"
4
- description = "Local-first CLI coding agent tested with Gemma 4 26B via llama.cpp"
3
+ version = "2.10.8"
4
+ description = "Local-first TUI coding agent for Gemma 4 + llama.cpp, with GraphRAG retrieval and a curated cookbook of domain recipes."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  license = { text = "Apache-2.0" }
@@ -0,0 +1,85 @@
1
+ """Verify the AUTO-RETRIEVE bypass probe strips the harness wrapper
2
+ before computing the cookbook score.
3
+
4
+ Bug observed 2026-06-09: a FEAL trial in the v2.10.7 batch exited
5
+ at 43s with reward=0 because:
6
+ 1. AUTO-RETRIEVE bypass probed the raw user prompt
7
+ 2. Raw prompt is ~600 chars of harness wrapper ("WRITE-FIRST
8
+ RULE", "Process to follow", etc.) BEFORE the actual task
9
+ 3. Wrapper boilerplate dominated TF-IDF — global_rename.md
10
+ scored 51.4 on "tool call" / "rename" / "process" matches
11
+ 4. Synthetic injection delivered global_rename.md content (pure
12
+ noise for FEAL), model returned empty response, session ended
13
+
14
+ Fix: strip everything up to and including "----- Task: -----" before
15
+ the probe. The actual task text (where FEAL appears) now drives the
16
+ TF-IDF score.
17
+ """
18
+ from __future__ import annotations
19
+
20
+
21
+ def test_strip_finds_task_marker():
22
+ """The Task marker is what we anchor on."""
23
+ raw = "Wrapper text\n----- Task: -----\nReal task content"
24
+ idx = raw.find("----- Task: -----")
25
+ assert idx >= 0
26
+ stripped = raw[idx + len("----- Task: -----"):]
27
+ assert "Wrapper text" not in stripped
28
+ assert "Real task content" in stripped
29
+
30
+
31
+ def test_probe_score_lifts_with_strip_for_feal_prompt():
32
+ """End-to-end: stripping the wrapper makes FEAL-cookbook win on a
33
+ FEAL prompt where the raw wrapper made random cookbook win."""
34
+ try:
35
+ from drydock.graphrag import Index
36
+ except ImportError:
37
+ import pytest
38
+ pytest.skip("graphrag not available in this env")
39
+
40
+ from pathlib import Path
41
+ db = Path.home() / ".drydock" / "graphrag.sqlite"
42
+ if not db.is_file():
43
+ import pytest
44
+ pytest.skip("no home graphrag DB in this env")
45
+
46
+ raw = (
47
+ "This task has multiple steps. Process to follow:\n"
48
+ " - Start with a tool call NOW.\n"
49
+ " - WRITE-FIRST RULE within your first 5 tool calls.\n"
50
+ "----- Task: -----\n"
51
+ "Implement a FEAL-4 differential cryptanalysis attack to recover "
52
+ "the round subkeys. Use chosen plaintexts with differential "
53
+ "0x80800000."
54
+ )
55
+
56
+ idx = Index(str(db))
57
+
58
+ # Raw probe (the BUG)
59
+ raw_q = raw.strip()[:300]
60
+ raw_r = idx.retrieve(raw_q, symbol_limit=0, text_limit=1)
61
+ raw_top = raw_r.text[0] if raw_r.text else None
62
+ raw_score = getattr(raw_top, 'score', 0.0) if raw_top else 0.0
63
+ raw_file = (getattr(raw_top, 'file', '') or '').split('/')[-1]
64
+
65
+ # Stripped probe (the FIX)
66
+ marker = raw.find("----- Task: -----")
67
+ stripped = raw[marker + len("----- Task: -----"):]
68
+ strip_q = stripped.strip()[:300]
69
+ strip_r = idx.retrieve(strip_q, symbol_limit=0, text_limit=1)
70
+ strip_top = strip_r.text[0] if strip_r.text else None
71
+ strip_score = getattr(strip_top, 'score', 0.0) if strip_top else 0.0
72
+ strip_file = (getattr(strip_top, 'file', '') or '').split('/')[-1]
73
+
74
+ # The stripped query must score the FEAL cookbook HIGHEST. The raw
75
+ # probe may have happened to score a different (incidental) file
76
+ # higher — that's the bug being fixed.
77
+ assert "feal" in strip_file.lower(), (
78
+ f"after strip, top file is {strip_file!r} (score {strip_score:.1f}); "
79
+ f"expected feal_cryptanalysis.md"
80
+ )
81
+ # And the stripped probe must exceed the 25.0 bypass threshold so
82
+ # the file-task SKIP gets bypassed and the cookbook actually injects.
83
+ assert strip_score >= 25.0, (
84
+ f"stripped score {strip_score:.1f} below the 25.0 bypass threshold"
85
+ )
File without changes
File without changes
File without changes
File without changes