drydock-cli 2.9.52__tar.gz → 2.9.55__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.
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/PKG-INFO +1 -1
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/llm_analyzer.py +7 -2
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/agent_loop.py +68 -5
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/bash.py +26 -7
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/gap_detector.py +59 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/pyproject.toml +1 -1
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_curiosity.py +34 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/uv.lock +1 -1
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/.gitignore +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/LICENSE +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/NOTICE +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/docs/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/__main__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/detectors_proposed.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/fix_windows_path.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/auto_solve.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/__main__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/classifier.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/dispatcher.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/rules.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/classifier/signal.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/_dotenv.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/local_detect.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/config/migrate.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/constraint_extract.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/constraint_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/context_recovery.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/goal.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/logger.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/gemma4_math.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/gemma4_slim.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/slug.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/spec_check.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/steering_hook.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/algebra_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/chemistry_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/count_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/linear_algebra_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/logic_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/math_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/mechanical_rename.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/memory_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/number_theory_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prolog_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/retrieve.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/set_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/solve_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/stats_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/units_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/verify_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/types.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/core/utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/__main__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/ingest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/item.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/queue.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/curiosity/surprise.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/__main__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/code_indexer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/retriever.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/storage.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/graphrag/text_indexer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/checklist/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/constraint-reasoning/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/logic/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/logic/assets/cheat_sheet_full.txt +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/prove/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/__main__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/applier.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/config.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/registry.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sandbox.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sidecar/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sidecar/header_parser.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sidecar/hooks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sidecar/loader.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/sidecar/server.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/train/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/train/capture.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/train/compute_vector.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/train/extract_pairs.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/train/scan_sessions.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/steering/vectors.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/whats_new.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/install_tests/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/install_tests/publish/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/install_tests/windows/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/scripts/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/scripts/_archived_eval_harness/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/scripts/llm/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/test_generic_adapter_sanitize.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/common.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/mock/utils.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_intervention_outcome.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_proposed.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_session_id.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_admiral_struggle_dedup.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_agents.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_algebra_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_api_error_recovery.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_approval_modal_stray_keys.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_auto_retrieve_soft_nudge.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_auto_solve.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_chemistry_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_classifier.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_config_migration.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_constraint_extract.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_constraint_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_context_recovery.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_count_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_dispatch_report.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_dispatcher.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_fake_tool_call_paren_syntax.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_gemma4_anti_loop_migration.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_goal.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_graphrag.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_graphrag_worked_examples.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_hallucinated_tool_suppression.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_hle_aggregate.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_integration.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_linear_algebra_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_local_detect.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_logic_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_math_docs_lazy_injection.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_math_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_mcp_settings.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_mcp_stdio_command_normalization.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_memory_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_message_id.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_middleware.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_number_theory_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_prolog_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_read_file_not_found_listing.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_read_file_notebook_slim.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_rejudge_hle.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_retrieval_consumer.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_retrieve_project_detection.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_retrieve_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_safe_parse_tool_args.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_search_replace_args_not_truncated.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_search_replace_syntax_rollback.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_session_log_event.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_session_publish_on_resume.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_set_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_smoke.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_solve_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_specialist_math_tools_hidden.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_stats_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_capture.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_compute_vector.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_extract_pairs.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_hook.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_sidecar_chat_inputs.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_steering_sidecar_hooks.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_task_complete_nudge.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_tool_call_loops_regression_suite.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_tool_stop_injected_scope.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_truncate_args_valid_json.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_truncated_arg_path_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_truncated_search_replace_escalation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_truncated_write_escalation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_units_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_validation_error_scrub.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_verify_tool.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_wall_of_text_rescue.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_workloads.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/test_write_file_missing_path.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_binary_grep_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_consec_empty_search.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_error_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_manager_gemma_derived_models.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_pre_rename_hook.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_read_file_dedup_reembed.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_read_file_directory.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_read_file_limit_truncation.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_append_fallback.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_dir_path.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_empty_content.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_file_not_found.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_hard_stop.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_malformed_block.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_placeholder.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_write_file_missing_main_module.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_write_file_missing_path_hint.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/tools/test_write_file_multifile_rename.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/web/README.md +0 -0
- {drydock_cli-2.9.52 → drydock_cli-2.9.55}/worked_examples/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.55
|
|
4
4
|
Summary: Local-first CLI coding agent — tested with Gemma 4 26B via llama.cpp
|
|
5
5
|
Project-URL: Homepage, https://github.com/fbobe321/drydock
|
|
6
6
|
Project-URL: Repository, https://github.com/fbobe321/drydock
|
|
@@ -143,8 +143,13 @@ async def analyze(agent_loop: AgentLoop, finding: Finding) -> str | None:
|
|
|
143
143
|
# Strip reasoning tokens that some models leak.
|
|
144
144
|
if text.startswith("STUMPED"):
|
|
145
145
|
return None
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
# The expected format is `DIRECTIVE [Bx,Cy]: <text>` — the colon comes
|
|
147
|
+
# after the bracket group, not immediately after "DIRECTIVE". A plain
|
|
148
|
+
# `"DIRECTIVE:" in text` check fails for this format, so use a regex.
|
|
149
|
+
import re as _re
|
|
150
|
+
m = _re.search(r"DIRECTIVE(?:\s*\[[^\]]*\])?\s*:(.*)", text, _re.DOTALL)
|
|
151
|
+
if m:
|
|
152
|
+
proposal = m.group(1).strip()
|
|
148
153
|
# Take only the first line/paragraph — discard chain-of-thought.
|
|
149
154
|
proposal = proposal.split("\n\n")[0].strip()
|
|
150
155
|
return proposal or None
|
|
@@ -1636,12 +1636,50 @@ class AgentLoop:
|
|
|
1636
1636
|
# produced the answer file. Detect that explicitly and
|
|
1637
1637
|
# inject a much stronger, write-forcing nudge.
|
|
1638
1638
|
writes_so_far = 0
|
|
1639
|
+
written_paths: set[str] = set()
|
|
1639
1640
|
for msg in self.messages:
|
|
1640
1641
|
for tc in (msg.tool_calls or []):
|
|
1641
1642
|
fn = (tc.function.name if tc.function else "")
|
|
1642
1643
|
if fn in ("write_file", "search_replace"):
|
|
1643
1644
|
writes_so_far += 1
|
|
1645
|
+
# Extract path from arguments JSON (best-effort)
|
|
1646
|
+
try:
|
|
1647
|
+
import json as _json
|
|
1648
|
+
args = _json.loads(
|
|
1649
|
+
(tc.function.arguments or "{}")
|
|
1650
|
+
if tc.function else "{}"
|
|
1651
|
+
)
|
|
1652
|
+
p = args.get("path") or args.get("file_path")
|
|
1653
|
+
if isinstance(p, str) and p:
|
|
1654
|
+
written_paths.add(p)
|
|
1655
|
+
except Exception:
|
|
1656
|
+
pass
|
|
1644
1657
|
zero_writes = writes_so_far == 0
|
|
1658
|
+
|
|
1659
|
+
# Fix A (2026-06-04): extract paths the TASK asks for and
|
|
1660
|
+
# check if model wrote to them. Targets the chess-best-move
|
|
1661
|
+
# pattern: task says "write /app/move.txt", model writes 9
|
|
1662
|
+
# other files (analyze.py, solver.py, ...) but never the
|
|
1663
|
+
# one path the verifier checks. /app/move.txt = missing.
|
|
1664
|
+
expected_paths: list[str] = []
|
|
1665
|
+
if len(self.messages) >= 2:
|
|
1666
|
+
# First user message holds the task (after system).
|
|
1667
|
+
task_text = (self.messages[1].content or "")
|
|
1668
|
+
import re as _re
|
|
1669
|
+
# Match /app/<file>, /tmp/<file>, /root/<file>, /data/<file>
|
|
1670
|
+
# with a recognizable extension or no extension but a
|
|
1671
|
+
# bare filename. Cap to first 10 to avoid silly noise.
|
|
1672
|
+
pat = _re.compile(
|
|
1673
|
+
r"/(?:app|tmp|root|home/[^/\s]+|data|opt|var/[^/\s]+)/"
|
|
1674
|
+
r"[\w./_-]+\."
|
|
1675
|
+
r"(?:txt|csv|json|jsonl|sql|toml|yaml|yml|md|py|sh|"
|
|
1676
|
+
r"html|xml|tsv|cbl|R|c|h|cpp|js|ts|go|rs|java|"
|
|
1677
|
+
r"png|jpg|svg|pdf|gz|zip|tar|log|conf|cfg|ini|key|"
|
|
1678
|
+
r"pem|crt|cert|env|out|dat|bin)"
|
|
1679
|
+
)
|
|
1680
|
+
expected_paths = list(dict.fromkeys(pat.findall(task_text)))[:10]
|
|
1681
|
+
missing_expected = [p for p in expected_paths if p not in written_paths]
|
|
1682
|
+
has_expected_misses = bool(expected_paths and missing_expected)
|
|
1645
1683
|
# Cap raised 5 → 10 nudges per session. Removed tool_turns
|
|
1646
1684
|
# gate entirely — the 2026-06-03 v2948 batch showed that
|
|
1647
1685
|
# most "engaged but failed" trials (bucket D, 26/50 fails)
|
|
@@ -1664,6 +1702,14 @@ class AgentLoop:
|
|
|
1664
1702
|
if is_programmatic and nudges < 10 and not last_verify_passed:
|
|
1665
1703
|
self._premature_exit_nudges = nudges + 1
|
|
1666
1704
|
if zero_writes:
|
|
1705
|
+
paths_hint = ""
|
|
1706
|
+
if expected_paths:
|
|
1707
|
+
paths_hint = (
|
|
1708
|
+
f" The task explicitly names these output "
|
|
1709
|
+
f"paths: {', '.join(expected_paths[:3])}"
|
|
1710
|
+
f"{'…' if len(expected_paths) > 3 else ''}. "
|
|
1711
|
+
f"Write to ONE of those now."
|
|
1712
|
+
)
|
|
1667
1713
|
note = (
|
|
1668
1714
|
f"⚠ PREMATURE EXIT BLOCK #{nudges + 1}/10. "
|
|
1669
1715
|
"You have made ZERO write_file or search_replace "
|
|
@@ -1671,11 +1717,28 @@ class AgentLoop:
|
|
|
1671
1717
|
"modifying, or producing output file(s). Reading "
|
|
1672
1718
|
"and running bash diagnostics is NOT progress — "
|
|
1673
1719
|
"the verifier checks files on disk, not your "
|
|
1674
|
-
"understanding. Emit a write_file
|
|
1675
|
-
"
|
|
1676
|
-
"
|
|
1677
|
-
|
|
1678
|
-
|
|
1720
|
+
f"understanding.{paths_hint} Emit a write_file "
|
|
1721
|
+
"call NOW with your best attempt. A wrong file "
|
|
1722
|
+
"beats no file."
|
|
1723
|
+
)
|
|
1724
|
+
elif has_expected_misses:
|
|
1725
|
+
# Fix A: model wrote files but NOT the ones the task
|
|
1726
|
+
# asked for. Highest-leverage residual failure from
|
|
1727
|
+
# 2026-06-04 v2951 liftgate batch — chess-best-move
|
|
1728
|
+
# had 9 writes but never wrote /app/move.txt.
|
|
1729
|
+
note = (
|
|
1730
|
+
f"⚠ PREMATURE EXIT BLOCK #{nudges + 1}/10. "
|
|
1731
|
+
f"You wrote {writes_so_far} files but NONE of "
|
|
1732
|
+
f"them is the path the task asked for: "
|
|
1733
|
+
f"{', '.join(missing_expected[:3])}"
|
|
1734
|
+
f"{'…' if len(missing_expected) > 3 else ''}. "
|
|
1735
|
+
f"The verifier checks THAT exact path. Stop "
|
|
1736
|
+
f"writing helper code — write the literal "
|
|
1737
|
+
f"answer file to {missing_expected[0]} NOW. "
|
|
1738
|
+
f"If you have not solved the task, write your "
|
|
1739
|
+
f"best guess there anyway: a wrong file beats "
|
|
1740
|
+
f"no file, and partial-credit verifiers reward "
|
|
1741
|
+
f"format correctness even when content is off."
|
|
1679
1742
|
)
|
|
1680
1743
|
else:
|
|
1681
1744
|
note = (
|
|
@@ -1005,17 +1005,36 @@ class Bash(
|
|
|
1005
1005
|
timeout_state[args.command] = count
|
|
1006
1006
|
if count == 1:
|
|
1007
1007
|
hint = (
|
|
1008
|
-
"The command was killed.
|
|
1009
|
-
"
|
|
1010
|
-
"
|
|
1008
|
+
"The command was killed. DO NOT retry the same "
|
|
1009
|
+
"command. Recovery options by command type:\n"
|
|
1010
|
+
" • SERVER / long-running process: background with "
|
|
1011
|
+
"`command &` and use `ps`/`ss -tlnp` to confirm it "
|
|
1012
|
+
"started.\n"
|
|
1013
|
+
" • LARGE DOWNLOAD / git clone / pip install: re-run "
|
|
1014
|
+
"with smaller scope first (e.g. `git clone --depth=1`, "
|
|
1015
|
+
"`pip install` only the immediate deps you need), or "
|
|
1016
|
+
"background with `nohup ... > /tmp/out.log 2>&1 &` "
|
|
1017
|
+
"and poll the log.\n"
|
|
1018
|
+
" • BUILD / compile: split into stages (configure → "
|
|
1019
|
+
"make a single target → test), and check intermediate "
|
|
1020
|
+
"artifacts. `make -j1` to avoid parallel build noise.\n"
|
|
1021
|
+
" • SEARCH / find / grep recursive: narrow with "
|
|
1022
|
+
"`--max-depth`, specific path, or `--include='*.py'`.\n"
|
|
1023
|
+
" • DATA processing: process a small slice first "
|
|
1024
|
+
"(`head -c 10M file | ...`), verify shape, then scale.\n"
|
|
1025
|
+
"Whatever the cause: change the COMMAND before "
|
|
1026
|
+
"running again. Retrying as-is will time out again."
|
|
1011
1027
|
)
|
|
1012
1028
|
else:
|
|
1013
1029
|
hint = (
|
|
1014
1030
|
f"[TIMEOUT #{count}] You have timed out {count}x on "
|
|
1015
|
-
f"this
|
|
1016
|
-
f"
|
|
1017
|
-
f"
|
|
1018
|
-
f"
|
|
1031
|
+
f"this EXACT command. Retrying it produces the same "
|
|
1032
|
+
f"result. STOP. Either change the command shape "
|
|
1033
|
+
f"(smaller scope, background with `&`, narrower "
|
|
1034
|
+
f"filter) OR move on to a different approach. The "
|
|
1035
|
+
f"verifier doesn't care about this specific command — "
|
|
1036
|
+
f"it cares about your output files. Write a "
|
|
1037
|
+
f"best-attempt answer file and exit this rabbit hole."
|
|
1019
1038
|
)
|
|
1020
1039
|
yield BashResult(
|
|
1021
1040
|
command=args.command,
|
|
@@ -34,6 +34,11 @@ _STOPWORDS: frozenset[str] = frozenset({
|
|
|
34
34
|
# Common imperative openers for drydock tasks.
|
|
35
35
|
"Build", "Fix", "Add", "Remove", "Update", "Refactor", "Test",
|
|
36
36
|
"Run", "Check", "Review", "Show", "List", "Explain", "Find", "Look",
|
|
37
|
+
# Sentence-starting verbs that appear after periods in numbered lists
|
|
38
|
+
# ("scratch.Step 1", "fail.Step 2") — dotted-identifier regex treats
|
|
39
|
+
# these as module.attr but they're sentence boundaries.
|
|
40
|
+
"Step", "Stop", "Start", "Read", "Write", "Open", "Use", "See",
|
|
41
|
+
"Try", "Note", "Save", "Load", "Copy", "Move", "Call", "Pass",
|
|
37
42
|
# HLE/exam prose openers — flagged in 2026-05-14 queue audit
|
|
38
43
|
# because they always lead a Title-Case phrase ("Consider the X").
|
|
39
44
|
"Consider", "Suppose", "Given", "Let", "Define", "Compute",
|
|
@@ -85,6 +90,19 @@ _TEMPLATE_NOISE: frozenset[str] = frozenset(
|
|
|
85
90
|
"CI", "CD", "PR", "MR", "WIP",
|
|
86
91
|
"SSH", "SSL", "TLS", "JWT", "OAUTH", "SAML",
|
|
87
92
|
"CPU", "GPU", "RAM", "SSD", "HDD", "NFS",
|
|
93
|
+
# Date/time format placeholders — appear in PRD prompts as template
|
|
94
|
+
# strings, never a meaningful GraphRAG ingest target.
|
|
95
|
+
"YYYY", "YY", "MM", "DD", "HH", "SS", "UTC", "GMT",
|
|
96
|
+
# Open-source license / protocol names — always known in coding context
|
|
97
|
+
"APACHE", "APACHE2", "MIT", "BSD", "GPL", "LGPL", "MPL", "ISC",
|
|
98
|
+
# Generic status/signal words that match _RE_ACRONYM but carry no
|
|
99
|
+
# knowledge gap — 2026-06-04 queue audit top false positives.
|
|
100
|
+
"ERROR", "WARNING", "INFO", "DEBUG", "CRITICAL", "FATAL",
|
|
101
|
+
"TRACE", "VERBOSE", "NOTICE",
|
|
102
|
+
"STATUS", "STATE", "MODE", "TYPE", "KIND", "FLAG", "OPTION",
|
|
103
|
+
"FINDINGS", "PATTERNS", "REGEXES", "FIELDS", "METHODS",
|
|
104
|
+
"VERSION", "NAME", "PATH", "DATA", "OUTPUT", "INPUT",
|
|
105
|
+
"CONFIG", "SCHEMA", "FORMAT", "TEMPLATE", "LAYOUT",
|
|
88
106
|
}
|
|
89
107
|
)
|
|
90
108
|
|
|
@@ -125,9 +143,50 @@ def _is_template_noise(candidate: str) -> bool:
|
|
|
125
143
|
".py", ".md", ".txt", ".csv", ".json", ".yaml", ".yml",
|
|
126
144
|
".toml", ".log", ".html", ".xml", ".sql", ".sh", ".rs",
|
|
127
145
|
".go", ".ts", ".js", ".jsx", ".tsx", ".css", ".scss",
|
|
146
|
+
".bak", ".tmp", ".lock", ".pid", ".gz", ".zip", ".tar",
|
|
128
147
|
)
|
|
129
148
|
if "/" not in norm and any(norm.endswith(ext) for ext in _CODE_EXTS):
|
|
130
149
|
return True
|
|
150
|
+
# Dotted identifier where the post-dot component is a common English
|
|
151
|
+
# word → sentence boundary artifact ("scratch.Step", "fail.Stop").
|
|
152
|
+
if "." in norm:
|
|
153
|
+
parts = norm.split(".")
|
|
154
|
+
_sw_lower = {w.lower() for w in _STOPWORDS}
|
|
155
|
+
if any(p in _sw_lower for p in parts[1:]):
|
|
156
|
+
return True
|
|
157
|
+
# LaTeX math expressions — false positives from HLE/academic prompts.
|
|
158
|
+
# A term starting with $ or a LaTeX command backslash is math notation,
|
|
159
|
+
# not a GraphRAG-retrievable identifier.
|
|
160
|
+
if norm.startswith("$") or norm.startswith("\\"):
|
|
161
|
+
return True
|
|
162
|
+
# Pure numeric/punctuation strings — quoted answer-choice values like
|
|
163
|
+
# "33,1" or "0.5" from HLE prompts; never a meaningful ingest target.
|
|
164
|
+
if re.match(r"^[\d\s,./\-+%()]+$", norm):
|
|
165
|
+
return True
|
|
166
|
+
# Python dunder attributes (__all__, __init__.__all__, etc.) are always
|
|
167
|
+
# known in a coding context — never a GraphRAG gap.
|
|
168
|
+
if "__" in norm:
|
|
169
|
+
return True
|
|
170
|
+
# Test file / function names (test_cli, test_routes) are project artifacts
|
|
171
|
+
# produced by the agent, not external knowledge worth retrieving.
|
|
172
|
+
if norm.startswith("test_") or norm.startswith("tests_"):
|
|
173
|
+
return True
|
|
174
|
+
# Type-conversion function names (to_int, to_roman, to_snake_case) —
|
|
175
|
+
# generic utility patterns, not external library gaps.
|
|
176
|
+
if norm.startswith("to_"):
|
|
177
|
+
return True
|
|
178
|
+
# All-lowercase multi-word phrases (e.g. "buy milk", "sample logs") —
|
|
179
|
+
# quoted prose from task prompts, not identifiers worth retrieving.
|
|
180
|
+
# Only filter if the *original* candidate is already lowercase — Title Case
|
|
181
|
+
# phrases like "Attention Is All You Need" must still be detected.
|
|
182
|
+
orig = candidate.strip(" :.,;")
|
|
183
|
+
if " " in norm and orig == orig.lower() and re.match(r"^[a-z][a-z0-9 _-]+$", norm):
|
|
184
|
+
return True
|
|
185
|
+
# Date format strings like "YYYY-MM", "YYYY-MM-DD", "/DD/YYYY" — these
|
|
186
|
+
# are template tokens that contain YYYY/MM/DD components (now in
|
|
187
|
+
# TEMPLATE_NOISE) separated by punctuation but the combined string isn't.
|
|
188
|
+
if re.match(r"^[/\-]?(?:yyyy|mm|dd|hh|ss)(?:[/\-](?:yyyy|mm|dd|hh|ss))+$", norm):
|
|
189
|
+
return True
|
|
131
190
|
return False
|
|
132
191
|
|
|
133
192
|
# Acronyms shorter than this are too noisy to chase ("ID", "OK", "OS").
|
|
@@ -112,6 +112,40 @@ class TestGapDetector:
|
|
|
112
112
|
for noise in ("Consider", "Suppose", "Consider the"):
|
|
113
113
|
assert noise not in gaps, f"detected noise: {noise!r} in {gaps}"
|
|
114
114
|
|
|
115
|
+
def test_drops_sentence_boundary_dotted_idents(self):
|
|
116
|
+
"""Numbered-step prompts produce 'scratch.Step', 'fail.Step', etc.
|
|
117
|
+
when the gap-detector sees period+uppercase-word at a sentence
|
|
118
|
+
boundary. These must not be queued as unknown terms (2026-06-04
|
|
119
|
+
curiosity queue filled with 9988 junk entries from one session)."""
|
|
120
|
+
text = (
|
|
121
|
+
"DO NOT scaffold from scratch.Step 1: cd here and run pytest -q."
|
|
122
|
+
" You'll see 24 tests pass and 3 fail.Step 2: Read the output."
|
|
123
|
+
)
|
|
124
|
+
gaps = detect_gaps(text)
|
|
125
|
+
for noise in ("scratch.Step", "fail.Step", "green.Stop"):
|
|
126
|
+
assert noise not in gaps, f"detected noise: {noise!r} in {gaps}"
|
|
127
|
+
# Real dotted identifiers (module.attr) must still be detected.
|
|
128
|
+
real = detect_gaps("Use sklearn.metrics.f1_score here.")
|
|
129
|
+
assert any("sklearn" in g for g in real), real
|
|
130
|
+
|
|
131
|
+
def test_drops_to_x_converter_names(self):
|
|
132
|
+
"""to_int, to_roman, to_snake_case etc. are project-defined converters,
|
|
133
|
+
not external library gaps. The to_ prefix alone is sufficient."""
|
|
134
|
+
for term in ("to_int", "to_roman", "to_str", "to_bool", "to_snake_case"):
|
|
135
|
+
gaps = detect_gaps(f"Implement `{term}` function.")
|
|
136
|
+
assert term not in gaps, f"to_X converter leaked into gaps: {term!r} in {gaps}"
|
|
137
|
+
|
|
138
|
+
def test_drops_lowercase_prose_phrases(self):
|
|
139
|
+
"""Quoted lowercase multi-word phrases like 'buy milk' or 'sample logs'
|
|
140
|
+
are prose noise from task prompts, not retrievable identifiers."""
|
|
141
|
+
for phrase in ("buy milk", "sample logs", "backend disk"):
|
|
142
|
+
gaps = detect_gaps(f'Remember to "{phrase}" today.')
|
|
143
|
+
assert phrase not in gaps, f"prose phrase leaked into gaps: {phrase!r} in {gaps}"
|
|
144
|
+
# Real snake_case identifiers with spaces should still be detected
|
|
145
|
+
# via the snake_case pattern (no space version).
|
|
146
|
+
real = detect_gaps("Call backend_memory.flush() to clear.")
|
|
147
|
+
assert any("backend_memory" in g for g in real), real
|
|
148
|
+
|
|
115
149
|
def test_keeps_real_terms_amid_hle_noise(self):
|
|
116
150
|
"""Validates the fix isn't over-broad: real entity names must
|
|
117
151
|
survive alongside the boilerplate."""
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py
RENAMED
|
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
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/notifications/ports/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/banner/petit_chat.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/braille_renderer.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/container.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/chat_input/text_area.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/checkpoint_picker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/context_progress.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/no_markup_static.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/widgets/teleport_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/textual_ui/windowing/history_windowing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.52 → drydock_cli-2.9.55}/drydock/cli/update_notifier/ports/update_gateway.py
RENAMED
|
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
|