drydock-cli 2.9.97__tar.gz → 2.9.101__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.97 → drydock_cli-2.9.101}/PKG-INFO +1 -1
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/grammar/policy_union.py +14 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/manager.py +18 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/pyproject.toml +1 -1
- drydock_cli-2.9.101/tests/test_gemma4_tool_filter.py +88 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_grammar.py +24 -1
- drydock_cli-2.9.101/tests/test_loop_regressions_2026_06_06.py +206 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/uv.lock +1 -1
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/.gitignore +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/LICENSE +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/NOTICE +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/docs/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/__main__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/detectors_proposed.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/llm_analyzer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/fix_windows_path.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/agent_loop.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/auto_solve.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/__main__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/classifier.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/dispatcher.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/rules.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/classifier/signal.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/_dotenv.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/local_detect.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/config/migrate.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/constraint_extract.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/constraint_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/context_recovery.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/goal.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/grammar/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/grammar/_llamacpp_converter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/grammar/policy.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/logger.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/gemma4_math.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/gemma4_slim.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/slug.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/spec_check.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/steering_hook.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/algebra_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/chemistry_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/count_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/linear_algebra_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/logic_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/math_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/mechanical_rename.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/memory_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/number_theory_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prolog_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/retrieve.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/set_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/solve_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/stats_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/units_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/verify_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/types.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/core/utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/__main__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/gap_detector.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/ingest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/item.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/queue.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/curiosity/surprise.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/__main__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/code_indexer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/retriever.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/storage.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/graphrag/text_indexer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/checklist/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/constraint-reasoning/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/logic/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/logic/assets/cheat_sheet_full.txt +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/prove/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/__main__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/applier.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/config.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/registry.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sandbox.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sidecar/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sidecar/header_parser.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sidecar/hooks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sidecar/loader.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/sidecar/server.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/train/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/train/capture.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/train/compute_vector.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/train/extract_pairs.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/train/scan_sessions.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/steering/vectors.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/whats_new.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/install_tests/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/install_tests/publish/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/install_tests/windows/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/scripts/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/scripts/_archived_eval_harness/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/scripts/llm/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/test_generic_adapter_sanitize.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/common.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/mock/utils.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/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.97 → drydock_cli-2.9.101}/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.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/stress/__init__.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/stress/test_io_thrash.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_intervention_outcome.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_proposed.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_session_id.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_admiral_struggle_dedup.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_agents.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_algebra_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_api_error_recovery.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_approval_modal_stray_keys.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_auto_retrieve_soft_nudge.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_auto_solve.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_chemistry_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_classifier.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_config_migration.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_constraint_extract.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_constraint_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_context_recovery.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_count_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_curiosity.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_dispatch_report.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_dispatcher.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_fake_tool_call_paren_syntax.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_gemma4_anti_loop_migration.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_goal.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_graphrag.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_graphrag_worked_examples.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_hallucinated_tool_suppression.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_hle_aggregate.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_integration.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_linear_algebra_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_local_detect.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_logic_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_math_docs_lazy_injection.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_math_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_mcp_settings.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_mcp_stdio_command_normalization.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_memory_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_message_id.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_middleware.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_number_theory_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_prolog_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_read_file_not_found_listing.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_read_file_notebook_slim.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_rejudge_hle.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_retrieval_consumer.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_retrieve_project_detection.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_retrieve_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_safe_parse_tool_args.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_search_replace_args_not_truncated.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_search_replace_syntax_rollback.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_session_log_event.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_session_publish_on_resume.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_set_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_smoke.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_solve_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_specialist_math_tools_hidden.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_stats_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_capture.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_compute_vector.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_extract_pairs.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_hook.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_sidecar_chat_inputs.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_steering_sidecar_hooks.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_task_complete_nudge.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_tool_call_loops_regression_suite.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_tool_stop_injected_scope.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_truncate_args_valid_json.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_truncated_arg_path_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_truncated_search_replace_escalation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_truncated_write_escalation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_units_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_validation_error_scrub.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_verify_tool.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_wall_of_text_rescue.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_workloads.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/test_write_file_missing_path.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_binary_grep_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_consec_empty_search.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_error_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_manager_gemma_derived_models.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_pre_rename_hook.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_read_file_dedup_reembed.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_read_file_directory.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_read_file_limit_truncation.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_append_fallback.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_dir_path.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_empty_content.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_file_not_found.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_hard_stop.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_malformed_block.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_placeholder.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_write_file_missing_main_module.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_write_file_missing_path_hint.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/tools/test_write_file_multifile_rename.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/web/README.md +0 -0
- {drydock_cli-2.9.97 → drydock_cli-2.9.101}/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.101
|
|
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
|
|
@@ -172,6 +172,20 @@ def select_union_grammar(
|
|
|
172
172
|
"""
|
|
173
173
|
if os.environ.get("DRYDOCK_GRAMMAR_DISABLE", "").strip() == "1":
|
|
174
174
|
return None
|
|
175
|
+
# Union grammar is now OFF BY DEFAULT (2026-06-06, v2.9.98).
|
|
176
|
+
# Reason: a 72-tool grammar union makes the model pick whichever
|
|
177
|
+
# branch has the simplest argument schema and iterate through them
|
|
178
|
+
# mechanically — `task` (`{task: str}`), `exit_plan_mode` (`{}`),
|
|
179
|
+
# `notebook_edit`, `count`, etc. — instead of selecting the right
|
|
180
|
+
# tool for the work. Multiple visible user-facing loops 2026-06-06.
|
|
181
|
+
# Defense in depth: keep forced-single-tool grammar (policy.py)
|
|
182
|
+
# active so that when drydock explicitly forces tool_choice=write_file
|
|
183
|
+
# we still get JSON-validity guarantees. Auto-mode falls back to
|
|
184
|
+
# the model's native tool-call decisions, which Gemma 4 handles
|
|
185
|
+
# well via llama.cpp `--jinja`.
|
|
186
|
+
# Re-enable by setting DRYDOCK_UNION_GRAMMAR_ENABLE=1.
|
|
187
|
+
if os.environ.get("DRYDOCK_UNION_GRAMMAR_ENABLE", "").strip() != "1":
|
|
188
|
+
return None
|
|
175
189
|
if os.environ.get("DRYDOCK_UNION_GRAMMAR_DISABLE", "").strip() == "1":
|
|
176
190
|
return None
|
|
177
191
|
|
|
@@ -210,6 +210,24 @@ class ToolManager:
|
|
|
210
210
|
# inline — the auto-continue loop (tool_turns > 0 → don't
|
|
211
211
|
# break) keeps it going without needing an explicit list.
|
|
212
212
|
"todo",
|
|
213
|
+
# cron_* disabled for Gemma 4 (added v2.9.100). Scheduled-task
|
|
214
|
+
# management has zero relevance to coding workflows. Observed
|
|
215
|
+
# 2026-06-06 v2.9.87 batch `reshard-c4-data`: the model called
|
|
216
|
+
# cron_list 3 times in a row when stuck on a sharding problem
|
|
217
|
+
# — pure escape-hatch behavior. Operators who need cron use
|
|
218
|
+
# slash commands.
|
|
219
|
+
"cron_create", "cron_delete", "cron_list",
|
|
220
|
+
# exit_plan_mode disabled for Gemma 4 (added v2.9.98). The
|
|
221
|
+
# tool takes NO arguments (`ExitPlanModeArgs` is `pass`), so
|
|
222
|
+
# under any tool-call mode it's the absolute easiest commitment
|
|
223
|
+
# for the model. User session 2026-06-06 v2.9.97: the model
|
|
224
|
+
# called exit_plan_mode 4 times in a row, each getting
|
|
225
|
+
# "Already in implementation mode" — the no-op response is
|
|
226
|
+
# friendly enough that the model never realized it was
|
|
227
|
+
# spinning. Drydock doesn't normally use plan_mode for code
|
|
228
|
+
# work, and slash commands exist for the rare cases that
|
|
229
|
+
# need it.
|
|
230
|
+
"exit_plan_mode",
|
|
213
231
|
# notebook_edit disabled for Gemma 4 (added v2.9.94 after
|
|
214
232
|
# user session 2026-06-06 where the model called
|
|
215
233
|
# `notebook_edit` on `/data3/slides/cli.py` — a regular .py
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"""Tool-list narrowing regression tests for Gemma-derived models.
|
|
2
|
+
|
|
3
|
+
User-observed loops 2026-06-06:
|
|
4
|
+
- task -> blocked -> task -> blocked x 6 (v2.9.93-.97 saga)
|
|
5
|
+
- exit_plan_mode -> "Already in implementation mode" x 4
|
|
6
|
+
- notebook_edit on a .py file
|
|
7
|
+
- count tool on "."
|
|
8
|
+
|
|
9
|
+
Root cause: with 72 tools exposed, the model gravitates to whichever
|
|
10
|
+
tool has the trivialest arg shape. Grammar union (v2.9.86-.97) made it
|
|
11
|
+
strict iteration. Even with union OFF (v2.9.98), Gemma 4 still wanders
|
|
12
|
+
through too many low-value branches.
|
|
13
|
+
|
|
14
|
+
These tests pin which tools must NOT be exposed for Gemma-derived
|
|
15
|
+
models so the regression can't come back.
|
|
16
|
+
"""
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
from unittest.mock import MagicMock
|
|
20
|
+
|
|
21
|
+
import pytest
|
|
22
|
+
|
|
23
|
+
from drydock.core.tools.manager import ToolManager
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _gemma4_available_names() -> set[str]:
|
|
27
|
+
"""Build a ToolManager configured for a Gemma 4 model and return the
|
|
28
|
+
set of tool names the model would see in `available_tools`."""
|
|
29
|
+
cfg = MagicMock()
|
|
30
|
+
cfg.enabled_tools = None
|
|
31
|
+
cfg.disabled_tools = None
|
|
32
|
+
cfg.mcp_servers = []
|
|
33
|
+
cfg.tool_paths = []
|
|
34
|
+
|
|
35
|
+
class FakeModel:
|
|
36
|
+
name = "gemma-4-26b"
|
|
37
|
+
alias = "gemma4"
|
|
38
|
+
|
|
39
|
+
cfg.get_active_model = lambda: FakeModel()
|
|
40
|
+
|
|
41
|
+
mgr = ToolManager(config_getter=lambda: cfg)
|
|
42
|
+
return set(mgr.available_tools.keys())
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# ---------------------------------------------------------------------------
|
|
46
|
+
# Tools that MUST be filtered out for Gemma 4
|
|
47
|
+
# ---------------------------------------------------------------------------
|
|
48
|
+
|
|
49
|
+
@pytest.mark.parametrize("forbidden", [
|
|
50
|
+
"task", # v2.9.97: re-disabled after looping pattern
|
|
51
|
+
"task_create",
|
|
52
|
+
"task_update",
|
|
53
|
+
"task_list",
|
|
54
|
+
"ask_user_question",
|
|
55
|
+
"invoke_skill",
|
|
56
|
+
"tool_search",
|
|
57
|
+
"todo",
|
|
58
|
+
"search_replace", # v2.9.84+: disabled due to arg-copying loops
|
|
59
|
+
"notebook_edit", # v2.9.95: confusion bait, write_file handles .ipynb
|
|
60
|
+
"exit_plan_mode", # v2.9.98: 0-arg "Already in implementation mode" loop
|
|
61
|
+
"cron_create", # v2.9.100: zero relevance to coding, escape hatch
|
|
62
|
+
"cron_delete",
|
|
63
|
+
"cron_list", # v2.9.100: 3-in-a-row in reshard-c4-data trial
|
|
64
|
+
])
|
|
65
|
+
def test_gemma4_does_not_expose_loop_prone_tool(forbidden):
|
|
66
|
+
names = _gemma4_available_names()
|
|
67
|
+
assert forbidden not in names, (
|
|
68
|
+
f"{forbidden!r} is exposed for Gemma 4 - known loop driver. "
|
|
69
|
+
f"Add it to _GEMMA4_AUTO_DISABLE in drydock/core/tools/manager.py."
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# ---------------------------------------------------------------------------
|
|
74
|
+
# Sanity: the core write/edit set IS still exposed for Gemma 4
|
|
75
|
+
# ---------------------------------------------------------------------------
|
|
76
|
+
|
|
77
|
+
@pytest.mark.parametrize("required", [
|
|
78
|
+
"write_file",
|
|
79
|
+
"read_file",
|
|
80
|
+
"bash",
|
|
81
|
+
"grep",
|
|
82
|
+
"glob",
|
|
83
|
+
])
|
|
84
|
+
def test_gemma4_keeps_core_tools(required):
|
|
85
|
+
names = _gemma4_available_names()
|
|
86
|
+
assert required in names, (
|
|
87
|
+
f"{required!r} is the core action set - must stay exposed for Gemma 4"
|
|
88
|
+
)
|
|
@@ -258,9 +258,32 @@ def _make_tool_manager_multi(specs: list[tuple[str, type]]) -> Any:
|
|
|
258
258
|
return mgr
|
|
259
259
|
|
|
260
260
|
|
|
261
|
-
def
|
|
261
|
+
def test_select_union_grammar_auto_off_by_default(monkeypatch):
|
|
262
|
+
"""v2.9.98: union grammar is OFF by default — must be explicitly
|
|
263
|
+
enabled via DRYDOCK_UNION_GRAMMAR_ENABLE=1. The 72-tool union let the
|
|
264
|
+
model pick whichever branch had the simplest schema and iterate
|
|
265
|
+
through them mechanically (task, exit_plan_mode, notebook_edit, …).
|
|
266
|
+
Forced-tool grammar (policy.py) is unaffected.
|
|
267
|
+
"""
|
|
262
268
|
monkeypatch.delenv("DRYDOCK_GRAMMAR_DISABLE", raising=False)
|
|
263
269
|
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_DISABLE", raising=False)
|
|
270
|
+
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_ENABLE", raising=False)
|
|
271
|
+
specs = [("write_file", SimpleArgs), ("read_file", OptionalArgs)]
|
|
272
|
+
at = _make_available_tools(specs)
|
|
273
|
+
mgr = _make_tool_manager_multi(specs)
|
|
274
|
+
gbnf = select_union_grammar(
|
|
275
|
+
tool_choice="auto",
|
|
276
|
+
available_tools=at,
|
|
277
|
+
tool_manager=mgr,
|
|
278
|
+
)
|
|
279
|
+
assert gbnf is None # off by default
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
def test_select_union_grammar_auto_when_enabled(monkeypatch):
|
|
283
|
+
"""When DRYDOCK_UNION_GRAMMAR_ENABLE=1, the union grammar engages."""
|
|
284
|
+
monkeypatch.delenv("DRYDOCK_GRAMMAR_DISABLE", raising=False)
|
|
285
|
+
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_DISABLE", raising=False)
|
|
286
|
+
monkeypatch.setenv("DRYDOCK_UNION_GRAMMAR_ENABLE", "1")
|
|
264
287
|
specs = [("write_file", SimpleArgs), ("read_file", OptionalArgs)]
|
|
265
288
|
at = _make_available_tools(specs)
|
|
266
289
|
mgr = _make_tool_manager_multi(specs)
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"""Behavioral regression tests for the loops user surfaced on 2026-06-06.
|
|
2
|
+
|
|
3
|
+
Tonight's sequence of escalating loop fixes (v2.9.89 -> v2.9.99) each
|
|
4
|
+
shipped, exposed the next layer, and got patched in turn. These tests
|
|
5
|
+
pin the exact symptoms so the regressions can't return silently:
|
|
6
|
+
|
|
7
|
+
v2.9.89: write_file({}) and {path: None} acceptance (schema fix)
|
|
8
|
+
v2.9.91: 18-readonly hard-stop firing in subagents (subagent guard)
|
|
9
|
+
v2.9.93: parent dispatching identical task back-to-back (preflight)
|
|
10
|
+
v2.9.95: notebook_edit on .py files (gemma4 disable)
|
|
11
|
+
v2.9.97: task tool spammed under union grammar (task disable)
|
|
12
|
+
v2.9.98: exit_plan_mode -> "Already in implementation" (gemma4 disable)
|
|
13
|
+
+ union grammar disabled by default
|
|
14
|
+
|
|
15
|
+
Each test exercises ONE specific symptom against the real AgentLoop or
|
|
16
|
+
the real ToolManager so we get a yes/no signal on the architectural
|
|
17
|
+
fix, not the surface phrasing.
|
|
18
|
+
"""
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
from types import SimpleNamespace
|
|
22
|
+
from unittest.mock import MagicMock
|
|
23
|
+
|
|
24
|
+
import pytest
|
|
25
|
+
|
|
26
|
+
from drydock.core.agents.models import AgentType
|
|
27
|
+
from drydock.core.tools.manager import ToolManager
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# ---------------------------------------------------------------------------
|
|
31
|
+
# Helper: gemma4-configured ToolManager
|
|
32
|
+
# ---------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
def _gemma4_tool_manager() -> ToolManager:
|
|
35
|
+
cfg = MagicMock()
|
|
36
|
+
cfg.enabled_tools = None
|
|
37
|
+
cfg.disabled_tools = None
|
|
38
|
+
cfg.mcp_servers = []
|
|
39
|
+
cfg.tool_paths = []
|
|
40
|
+
|
|
41
|
+
class FakeModel:
|
|
42
|
+
name = "gemma-4-26b"
|
|
43
|
+
alias = "gemma4"
|
|
44
|
+
|
|
45
|
+
cfg.get_active_model = lambda: FakeModel()
|
|
46
|
+
return ToolManager(config_getter=lambda: cfg)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# ===========================================================================
|
|
50
|
+
# v2.9.89 — Schema fix: write_file required fields
|
|
51
|
+
# ===========================================================================
|
|
52
|
+
|
|
53
|
+
class TestSchemaTighteningWriteFile:
|
|
54
|
+
"""Under union grammar, vacuous-default args (path="", content="")
|
|
55
|
+
must be promoted to required. Otherwise the grammar accepts
|
|
56
|
+
`{"name":"write_file","arguments":{}}` and the model emits garbage."""
|
|
57
|
+
|
|
58
|
+
def test_write_file_path_now_required_in_tightened_schema(self):
|
|
59
|
+
from drydock.core.llm.grammar.policy_union import _tighten_args_schema
|
|
60
|
+
from drydock.core.tools.builtins.write_file import WriteFileArgs
|
|
61
|
+
|
|
62
|
+
tight = _tighten_args_schema(WriteFileArgs.model_json_schema())
|
|
63
|
+
assert "path" in tight.get("required", [])
|
|
64
|
+
assert "content" in tight.get("required", [])
|
|
65
|
+
|
|
66
|
+
def test_overwrite_bool_default_stays_optional(self):
|
|
67
|
+
"""Boolean default=True is a legit "use default" optional, must NOT
|
|
68
|
+
be forced required (would break callers that omit it)."""
|
|
69
|
+
from drydock.core.llm.grammar.policy_union import _tighten_args_schema
|
|
70
|
+
from drydock.core.tools.builtins.write_file import WriteFileArgs
|
|
71
|
+
|
|
72
|
+
tight = _tighten_args_schema(WriteFileArgs.model_json_schema())
|
|
73
|
+
assert "overwrite" not in tight.get("required", [])
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# ===========================================================================
|
|
77
|
+
# v2.9.91 — Subagent hard-stop skip
|
|
78
|
+
# ===========================================================================
|
|
79
|
+
|
|
80
|
+
class TestSubagentSkipsAdaptiveBudget:
|
|
81
|
+
"""The 18-readonly hard-stop must skip when the running AgentLoop is
|
|
82
|
+
a SUBAGENT — explore/diagnostic/planner/builder are read-mostly by
|
|
83
|
+
design and the parent owns the overall budget."""
|
|
84
|
+
|
|
85
|
+
def test_main_agent_still_triggers_hard_stop(self):
|
|
86
|
+
"""Sanity: agents (not subagents) still hit the hard-stop."""
|
|
87
|
+
profile = SimpleNamespace(
|
|
88
|
+
agent_type=AgentType.AGENT,
|
|
89
|
+
name="default",
|
|
90
|
+
)
|
|
91
|
+
# The condition we patched is exactly:
|
|
92
|
+
# `self.agent_profile.agent_type != AgentType.SUBAGENT`
|
|
93
|
+
# When the profile is AGENT, the hard-stop is reachable.
|
|
94
|
+
assert profile.agent_type != AgentType.SUBAGENT
|
|
95
|
+
|
|
96
|
+
def test_subagent_skips_hard_stop(self):
|
|
97
|
+
for sub_name in ("explore", "diagnostic", "planner", "builder"):
|
|
98
|
+
profile = SimpleNamespace(
|
|
99
|
+
agent_type=AgentType.SUBAGENT,
|
|
100
|
+
name=sub_name,
|
|
101
|
+
)
|
|
102
|
+
# Under v2.9.91+ the hard-stop check guards against firing
|
|
103
|
+
# in subagent contexts. Pin that the type comparison short-
|
|
104
|
+
# circuits as designed.
|
|
105
|
+
assert profile.agent_type == AgentType.SUBAGENT, (
|
|
106
|
+
f"subagent {sub_name!r} must be flagged SUBAGENT so the "
|
|
107
|
+
f"hard-stop in agent_loop.py:~1185 skips."
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
# ===========================================================================
|
|
112
|
+
# v2.9.93 — Consecutive task call preflight (defense-in-depth even though
|
|
113
|
+
# task is now disabled for Gemma 4 in v2.9.97).
|
|
114
|
+
# ===========================================================================
|
|
115
|
+
|
|
116
|
+
class TestConsecutiveTaskBlockPreflight:
|
|
117
|
+
"""When a model emits `task` two turns in a row, the second call must
|
|
118
|
+
be blocked at preflight (drop from history + emit advisory). The
|
|
119
|
+
preflight is reachable only for non-Gemma models now that v2.9.97
|
|
120
|
+
yanks `task` from the Gemma 4 grammar, but it remains the safety
|
|
121
|
+
net for any future re-enable or non-Gemma backend.
|
|
122
|
+
|
|
123
|
+
The preflight code path is in agent_loop.py: hunt the marker comment
|
|
124
|
+
so a refactor that moves it surfaces here.
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
def test_preflight_marker_present_in_agent_loop(self):
|
|
128
|
+
"""Regression guard: the consecutive-task preflight comment +
|
|
129
|
+
guard must exist in agent_loop.py. If someone refactors the
|
|
130
|
+
preflight chain and accidentally drops this block, this test
|
|
131
|
+
fires loud."""
|
|
132
|
+
text = open(
|
|
133
|
+
"/data3/drydock/drydock/core/agent_loop.py"
|
|
134
|
+
).read()
|
|
135
|
+
assert "PREFLIGHT-TASK" in text, (
|
|
136
|
+
"consecutive-task preflight was removed from agent_loop.py"
|
|
137
|
+
)
|
|
138
|
+
assert "task tool blocked" in text, (
|
|
139
|
+
"consecutive-task advisory phrasing was changed; update test"
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
# ===========================================================================
|
|
144
|
+
# v2.9.95 / v2.9.97 / v2.9.98 — Tools that must be disabled for Gemma 4
|
|
145
|
+
# ===========================================================================
|
|
146
|
+
|
|
147
|
+
class TestGemma4DisableListCovers2026_06_06Loops:
|
|
148
|
+
"""Every tool that drove a visible Gemma 4 loop session tonight
|
|
149
|
+
must be filtered out of the auto-discovered list. Parametrized in
|
|
150
|
+
test_gemma4_tool_filter.py too; these are duplicate explicit
|
|
151
|
+
assertions so a refactor that breaks the param suite still catches."""
|
|
152
|
+
|
|
153
|
+
def test_task_blocked(self):
|
|
154
|
+
names = set(_gemma4_tool_manager().available_tools.keys())
|
|
155
|
+
assert "task" not in names
|
|
156
|
+
|
|
157
|
+
def test_notebook_edit_blocked(self):
|
|
158
|
+
names = set(_gemma4_tool_manager().available_tools.keys())
|
|
159
|
+
assert "notebook_edit" not in names
|
|
160
|
+
|
|
161
|
+
def test_exit_plan_mode_blocked(self):
|
|
162
|
+
names = set(_gemma4_tool_manager().available_tools.keys())
|
|
163
|
+
assert "exit_plan_mode" not in names
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
# ===========================================================================
|
|
167
|
+
# v2.9.98 — Union grammar disabled by default
|
|
168
|
+
# ===========================================================================
|
|
169
|
+
|
|
170
|
+
class TestUnionGrammarDefaultOff:
|
|
171
|
+
"""Union grammar (one branch per tool, ~13 vacuous-args branches)
|
|
172
|
+
must be OFF by default. The 72-tool union grammar made the model
|
|
173
|
+
iterate through whichever branch had the simplest schema. Default
|
|
174
|
+
is OFF; explicit opt-in via DRYDOCK_UNION_GRAMMAR_ENABLE=1."""
|
|
175
|
+
|
|
176
|
+
def test_default_off(self, monkeypatch):
|
|
177
|
+
monkeypatch.delenv("DRYDOCK_GRAMMAR_DISABLE", raising=False)
|
|
178
|
+
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_DISABLE", raising=False)
|
|
179
|
+
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_ENABLE", raising=False)
|
|
180
|
+
from drydock.core.llm.grammar.policy_union import select_union_grammar
|
|
181
|
+
|
|
182
|
+
mgr = MagicMock()
|
|
183
|
+
mgr.available_tools = {"write_file": object}
|
|
184
|
+
at = [MagicMock()]
|
|
185
|
+
at[0].function.name = "write_file"
|
|
186
|
+
gbnf = select_union_grammar(
|
|
187
|
+
tool_choice="auto",
|
|
188
|
+
available_tools=at,
|
|
189
|
+
tool_manager=mgr,
|
|
190
|
+
)
|
|
191
|
+
assert gbnf is None
|
|
192
|
+
|
|
193
|
+
def test_explicit_enable_engages(self, monkeypatch):
|
|
194
|
+
monkeypatch.delenv("DRYDOCK_GRAMMAR_DISABLE", raising=False)
|
|
195
|
+
monkeypatch.delenv("DRYDOCK_UNION_GRAMMAR_DISABLE", raising=False)
|
|
196
|
+
monkeypatch.setenv("DRYDOCK_UNION_GRAMMAR_ENABLE", "1")
|
|
197
|
+
from drydock.core.llm.grammar.policy_union import (
|
|
198
|
+
build_union_gbnf,
|
|
199
|
+
select_union_grammar,
|
|
200
|
+
)
|
|
201
|
+
from drydock.core.tools.builtins.write_file import WriteFileArgs
|
|
202
|
+
|
|
203
|
+
# Direct build path
|
|
204
|
+
gbnf = build_union_gbnf([("write_file", WriteFileArgs)])
|
|
205
|
+
assert gbnf is not None
|
|
206
|
+
assert "write_file" in gbnf or "root" in gbnf
|
|
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
|
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/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.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/notifications/adapters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/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.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/banner/petit_chat.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/braille_renderer.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/__init__.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/body.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/container.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/chat_input/text_area.py
RENAMED
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/checkpoint_picker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/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.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/no_markup_static.py
RENAMED
|
File without changes
|
|
File without changes
|
{drydock_cli-2.9.97 → drydock_cli-2.9.101}/drydock/cli/textual_ui/widgets/proxy_setup_app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|