drydock-cli 2.8.23__tar.gz → 2.8.24__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.8.24/.auto_release.lock +1 -0
- drydock_cli-2.8.24/DRYDOCK.md +149 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/PKG-INFO +1 -1
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/SOVEREIGN_PRD.md +131 -39
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/agent_loop.py +138 -4
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/pyproject.toml +1 -1
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/hle_eval.py +17 -1
- drydock_cli-2.8.24/scripts/tool_usage_report.py +148 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_cli_programmatic_preload.py +2 -2
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_local_detect.py +8 -4
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_loop_detection.py +80 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/uv.lock +3 -1
- drydock_cli-2.8.23/.auto_release.lock +0 -1
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.gitignore +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.python-version +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.typos.toml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.vscode/extensions.json +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.vscode/launch.json +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/.vscode/settings.json +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/AGENTS.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/Admiral.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/CHANGELOG.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/CLAUDE.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/DEEP_NOIR_PRD.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/DEPLOYMENT.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/HLE_PRD.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/JETSON_BENCH.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/LICENSE +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/MODEL_SHORTCOMINGS.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/NOTICE +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/TRIAGE_v1.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/action.yml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results1.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results13.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results14.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results15.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results16.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results17.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results18.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results19.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results2.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results20.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results3.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results4.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results5.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results6.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results7.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results8.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results9.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/baseline_history/results_evolved_v1.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/acp-setup.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/BASELINE_412.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/Drydock_rebrand.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/OVERNIGHT_PROGRESS.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/OVERNIGHT_REPORT_2026_04_13.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/PERF_SWEEP_PLAN.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/PRD.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/drydock_terms.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/archive/resume.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/__main__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/detectors_proposed.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/llm_analyzer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/fix_windows_path.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/__main__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/classifier.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/dispatcher.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/rules.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/classifier/signal.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/_dotenv.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/local_detect.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/config/migrate.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/context_recovery.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/logger.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/slug.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/steering_hook.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/count_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/math_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/memory_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/retrieve.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/retrieve.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/verify_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/types.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/core/utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/__main__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/gap_detector.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/item.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/queue.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/curiosity/surprise.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/__main__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/code_indexer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/retriever.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/storage.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/graphrag/text_indexer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/__main__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/applier.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/config.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/registry.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sandbox.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sidecar/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sidecar/header_parser.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sidecar/hooks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sidecar/loader.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/sidecar/server.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/train/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/train/capture.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/train/compute_vector.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/train/extract_pairs.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/steering/vectors.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock/whats_new.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/drydock-acp.spec +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/flake.lock +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/flake.nix +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/outlook_draft_assistant.tar.gz +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/config_base.toml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/config_best.toml +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/domain_spec.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/experimenter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/kernel.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/mini_prd.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/mini_prompts.txt +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/proposer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/research/results.tsv +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/admiral_probe.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/auto_test_loop.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/monitor_test_battery.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/overnight_agents_test.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/test_bank.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/test_full.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/test_smoke.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/archive/tui_test.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/audit_sampler.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/auto_generate_tests.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/auto_release.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/autonomous_review.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/autonomous_review_prompt.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/backfill_hle_curiosity.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/backup.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/bench_inference.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/bump_version.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/classify_pulse.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/consume_retrieval_queue.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/curiosity_idle_cycle.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/fetch_arxiv_abstracts.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/gen_2000_prompts.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/hle_eval_seed.jsonl +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/llm_balancer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/notify_release.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/perf_baseline_when_idle.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/perf_sweep.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/poll_issues.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/queue_top.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/ralph_loop.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/research_babysitter.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/shakedown.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/shakedown_interactive.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/shakedown_suite.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/shakedown_variance.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/start_steering_sidecar.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_babysitter.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_prompts_50.txt +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_prompts_realuser.txt +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_prompts_tool_agent.txt +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_shakedown.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_telegram_status.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/stress_watcher.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/telegram_bot.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/scripts/vllm_failover.sh +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/test_generic_adapter_sanitize.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/conftest.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_circuit_breaker_count_escalation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_circuit_breaker_readonly_threshold.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/common.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/mock/__init__.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/mock/utils.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/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.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_hallucinated_tool_filter.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_intervention_outcome.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_proposed.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_session_id.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_admiral_struggle_dedup.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_agents.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_classifier.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_config_migration.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_context_recovery.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_count_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_curiosity.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_dispatcher.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_fake_tool_call_paren_syntax.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_graphrag.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_graphrag_worked_examples.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_hallucinated_tool_suppression.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_hle_typing.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_integration.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_math_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_mcp_settings.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_memory_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_message_id.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_middleware.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_read_file_not_found_listing.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_retrieval_consumer.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_retrieve_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_search_replace_args_not_truncated.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_smoke.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering_capture.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering_compute_vector.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering_extract_pairs.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering_hook.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_steering_sidecar_hooks.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_task_complete_nudge.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_truncate_args_valid_json.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_truncated_arg_path_hint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_truncated_search_replace_escalation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_truncated_write_escalation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_verify_tool.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_wall_of_text_rescue.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_workloads.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/test_write_file_missing_path.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_binary_grep_hint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_consec_empty_search.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_echo_escape_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_empty_search_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_error_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_exact_cmd_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_heredoc_confirmation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_kill_exit1_annotation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_bash_python_c_syntaxerr_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_hallucinated_retrieval_redirect.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_manager_gemma_derived_models.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_read_file_dedup_alternating_offset.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_read_file_dedup_reembed.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_read_file_directory.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_read_file_limit_truncation.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_append_fallback.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_dir_path.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_empty_content.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_file_not_found.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_first_failure_hint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_hard_stop.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_malformed_block.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_no_op_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_placeholder.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_search_replace_refused_loop_breaker.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_write_file_dedup_missing_imports.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/tools/test_write_file_missing_path_hint.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/trip_log.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/worked_examples/README.md +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/worked_examples/cli_subcommand_dispatch.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/worked_examples/lookup.json +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/worked_examples/sql_parser.py +0 -0
- {drydock_cli-2.8.23 → drydock_cli-2.8.24}/worked_examples/tree_walking_interpreter.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1049525
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# DRYDOCK.md — harness instructions
|
|
2
|
+
|
|
3
|
+
Auto-loaded into the system prompt when DryDock runs in this directory.
|
|
4
|
+
Equivalent of `CLAUDE.md` for Claude Code: the per-project instructions
|
|
5
|
+
file the model reads on every session. Keep it short — every byte here
|
|
6
|
+
costs context budget on every turn.
|
|
7
|
+
|
|
8
|
+
## What DryDock is
|
|
9
|
+
|
|
10
|
+
A local-first CLI coding agent with a TUI. Talks to any
|
|
11
|
+
OpenAI-compatible local model server (vLLM, llama.cpp, Ollama,
|
|
12
|
+
LM Studio). Production target: Gemma 4 26B-A4B-it on a 2-GPU
|
|
13
|
+
workstation. The agent loop, classifier, Curiosity Layer, GraphRAG
|
|
14
|
+
hook, Admiral supervisor, and tool plugins all live in `drydock/core/`.
|
|
15
|
+
|
|
16
|
+
The harness is the product. When something goes wrong, fix the
|
|
17
|
+
harness — don't work around it in a script.
|
|
18
|
+
|
|
19
|
+
## Four core principles (your default posture)
|
|
20
|
+
|
|
21
|
+
1. Don't assume. Don't hide confusion. Surface tradeoffs.
|
|
22
|
+
2. Minimum code that solves the problem. Nothing speculative.
|
|
23
|
+
3. Touch only what you must. Clean up only your own mess.
|
|
24
|
+
4. Define success criteria. Loop until verified.
|
|
25
|
+
|
|
26
|
+
## Tool inventory — when to use each
|
|
27
|
+
|
|
28
|
+
**Always-available reads:** `read_file`, `glob`, `grep`, `retrieve` (GraphRAG),
|
|
29
|
+
`web_search`, `web_fetch`. Auto-approved.
|
|
30
|
+
|
|
31
|
+
**Writes (gate-able):** `write_file`, `search_replace`, `bash`, `notebook_edit`.
|
|
32
|
+
|
|
33
|
+
**Direct built-ins for transformer weaknesses (USE THESE — don't compute in your head):**
|
|
34
|
+
|
|
35
|
+
- `math(expression="...")` — exact arithmetic via Python stdlib (`math.factorial(20)`,
|
|
36
|
+
`math.comb(50, 5)`, `Fraction(1,3) + Fraction(1,6)`,
|
|
37
|
+
`statistics.mean([...])`). USE for any non-trivial number.
|
|
38
|
+
- `count(pattern="...", text=... OR path=..., mode=...)` — exact substring /
|
|
39
|
+
regex / lines / words / chars / bytes counter. USE instead of estimating
|
|
40
|
+
"how many".
|
|
41
|
+
- `memory(op="save"|"recall"|"list_keys"|"forget"|"stats", ...)` — persistent
|
|
42
|
+
cross-session notes at `~/.drydock/agent_memory/notes.jsonl`. SAVE
|
|
43
|
+
per-project patterns and decisions; RECALL them next session.
|
|
44
|
+
- `verify(criterion="...", command="...", expect="...", expect_mode=...)` —
|
|
45
|
+
programmatic success check after a change. Operationalizes principle #4
|
|
46
|
+
("Loop until verified").
|
|
47
|
+
|
|
48
|
+
**Curiosity Layer (PRD §5.7) — your default posture is "investigate, then assert":**
|
|
49
|
+
|
|
50
|
+
- If the user message names an unfamiliar entity (paper, library, API,
|
|
51
|
+
identifier), your FIRST tool call is `retrieve(query="<the term>")`.
|
|
52
|
+
Not text. Not web_search. Retrieve.
|
|
53
|
+
- "I think it's X" is not an answer when retrieve costs one tool call.
|
|
54
|
+
- When retrieved evidence contradicts what you were about to say,
|
|
55
|
+
prefer the evidence and say so. Don't quietly drop the contradiction.
|
|
56
|
+
|
|
57
|
+
**Subagent delegation:** Only for genuinely large tasks (9+ files, multiple
|
|
58
|
+
subdirs). For 1-8 files BUILD INLINE — wasted delegation costs 60-90s of
|
|
59
|
+
extra context loading.
|
|
60
|
+
|
|
61
|
+
## Critical constraints
|
|
62
|
+
|
|
63
|
+
- **Loop detection is advisory.** It NEVER stops you — only nudges and
|
|
64
|
+
prunes duplicate calls. The only hard stop is `MAX_TOOL_TURNS = 200`.
|
|
65
|
+
- **No `--no-verify` git commits, no `pkill drydock`** (kills the user's TUI).
|
|
66
|
+
- **TUI only.** Headless mode was removed deliberately. All testing
|
|
67
|
+
goes through the real TUI via `pexpect` (see `scripts/shakedown.py`).
|
|
68
|
+
- **Don't `git push` from this repo** — local and origin diverge by design;
|
|
69
|
+
`auto_release.sh` rebuilds and pushes every 6h. Direct edits to
|
|
70
|
+
`site-packages/` get overwritten at the next cron tick.
|
|
71
|
+
- **Match exact CLI specs in PRDs.** Every subcommand listed must have a
|
|
72
|
+
working handler — not just argparse registration.
|
|
73
|
+
- **Stub classes are forbidden.** Never write
|
|
74
|
+
`class X: def method(self): pass` inline to silence ModuleNotFoundError.
|
|
75
|
+
Write the real class in its own file and import it.
|
|
76
|
+
- **`--help` is not a test.** A package that `--help`s successfully can
|
|
77
|
+
have broken imports in every other module. Real test = a
|
|
78
|
+
`functional_tests.sh` that exercises actual feature commands and
|
|
79
|
+
checks real outputs.
|
|
80
|
+
|
|
81
|
+
## File map (only the load-bearing pieces)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
drydock/
|
|
85
|
+
├── core/
|
|
86
|
+
│ ├── agent_loop.py ← THE main loop. Loop detection, message
|
|
87
|
+
│ │ ordering, Curiosity hooks, MTP dispatch
|
|
88
|
+
│ ├── system_prompt.py ← Loads DRYDOCK.md + gemma4.md/cli.md
|
|
89
|
+
│ ├── tools/
|
|
90
|
+
│ │ ├── manager.py ← Tool auto-discovery (any non-_ .py here
|
|
91
|
+
│ │ │ is picked up)
|
|
92
|
+
│ │ └── builtins/ ← read_file, write_file, grep, glob, bash,
|
|
93
|
+
│ │ retrieve, math, count, memory, verify, ...
|
|
94
|
+
│ ├── classifier/ ← Failure → 5-bucket dispatch (harness /
|
|
95
|
+
│ │ retrieval / steering / model_prior /
|
|
96
|
+
│ │ ambiguous_input)
|
|
97
|
+
│ └── prompts/
|
|
98
|
+
│ ├── gemma4.md ← Compact (50 lines) prompt for Gemma 4
|
|
99
|
+
│ └── cli.md ← Full prompt for stronger models
|
|
100
|
+
├── curiosity/ ← SOVEREIGN_PRD §5.7 — gap_detector,
|
|
101
|
+
│ surprise scorer, JSONL queue, CLI
|
|
102
|
+
├── graphrag/ ← AST symbol indexer + TF-IDF retriever
|
|
103
|
+
├── steering/ ← Deep Noir vector framework (scaffolding)
|
|
104
|
+
└── cli/textual_ui/app.py ← TUI app + slash commands
|
|
105
|
+
|
|
106
|
+
scripts/
|
|
107
|
+
├── auto_release.sh ← Cron 0,6,12,18 CDT — bumps version, builds
|
|
108
|
+
│ wheel, twine upload, GitHub push
|
|
109
|
+
├── deploy_to_github.sh ← Cron 04:00 CDT — full test gate then sync
|
|
110
|
+
├── autonomous_review.sh ← Cron */30 — Claude Code drains classifier
|
|
111
|
+
│ + curiosity queues, ships fixes
|
|
112
|
+
├── shakedown.py ← The honest test harness (drives real TUI)
|
|
113
|
+
└── bench_inference.py ← Throughput benchmark vs localhost:8000
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Workflows
|
|
117
|
+
|
|
118
|
+
**Building from a PRD:**
|
|
119
|
+
|
|
120
|
+
1. Read the spec.
|
|
121
|
+
2. `write_file` each file. Start with `__init__.py` and `__main__.py`.
|
|
122
|
+
3. Verify package imports: `bash` → `python3 -m <pkg> --help`.
|
|
123
|
+
4. Run a real test: `bash` → exercise actual subcommands; check outputs
|
|
124
|
+
match the PRD's examples.
|
|
125
|
+
5. If the PRD has a `functional_tests.sh`, run THAT — not just `--help`.
|
|
126
|
+
|
|
127
|
+
**Fixing a bug:**
|
|
128
|
+
|
|
129
|
+
1. `grep` for the symbol mentioned.
|
|
130
|
+
2. `read_file` the source.
|
|
131
|
+
3. `search_replace` minimal change.
|
|
132
|
+
4. `verify(criterion="...", command="pytest ...", expect_mode="exit_code", expect="0")`.
|
|
133
|
+
|
|
134
|
+
**Adding a feature to drydock itself (in this repo):**
|
|
135
|
+
|
|
136
|
+
1. `git status` first — never destroy uncommitted work.
|
|
137
|
+
2. Make the change, run the relevant test file (`pytest tests/test_X.py -q`).
|
|
138
|
+
3. Commit; let `auto_release.sh` (next 6h tick) ship to PyPI + GitHub.
|
|
139
|
+
4. Don't `git push` — see Constraints.
|
|
140
|
+
|
|
141
|
+
## When you stop
|
|
142
|
+
|
|
143
|
+
A turn ends when:
|
|
144
|
+
|
|
145
|
+
- TODO mode (multi-step request like "build the package"): every item done.
|
|
146
|
+
- SIMPLE mode (single ask): exactly that, then stop. Don't invent
|
|
147
|
+
follow-up work the user didn't ask for.
|
|
148
|
+
|
|
149
|
+
NEVER ask "would you like me to proceed". Just do it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.24
|
|
4
4
|
Summary: Local-first CLI coding agent — tested with Gemma 4 26B via vLLM
|
|
5
5
|
Project-URL: Homepage, https://github.com/fbobe321/drydock
|
|
6
6
|
Project-URL: Repository, https://github.com/fbobe321/drydock
|
|
@@ -480,49 +480,141 @@ without waiting on consumer infrastructure.
|
|
|
480
480
|
mode), so every eval run produces ≥10 learning signals
|
|
481
481
|
- ✅ 26 unit tests in `tests/test_curiosity.py` added to the deploy gate
|
|
482
482
|
|
|
483
|
-
### Tier 2 — consumer side + forcing function — *
|
|
483
|
+
### Tier 2 — consumer side + forcing function — *shipped 2026-05-12 (v2.8.20–22)*
|
|
484
484
|
|
|
485
485
|
The prompt rule alone gets the model to retrieve more, but Gemma 4 will
|
|
486
|
-
still default to prior under context pressure
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
486
|
+
still default to prior under context pressure. Tier 2 closes that gap
|
|
487
|
+
and starts shipping fixes from the queue.
|
|
488
|
+
|
|
489
|
+
- ✅ `agent_loop.py` curiosity gap-logging hook — every user message
|
|
490
|
+
runs through `detect_gaps`; each candidate term is enqueued as an
|
|
491
|
+
`UNKNOWN_TERM` item (gated by `DRYDOCK_CURIOSITY=1`, default on)
|
|
492
|
+
- ✅ `_maybe_log_surprise` in `_handle_tool_response` — fires on tool
|
|
493
|
+
failures, scores against the most recent assistant assertion, queues
|
|
494
|
+
`EVIDENCE_CONFLICT` items above the 0.6 threshold. Catches
|
|
495
|
+
confident-but-wrong claims without operator priming.
|
|
496
|
+
- ✅ Auto-prefetch retrieve hook (`_auto_prefetch_retrieve`) flipped
|
|
497
|
+
to **default ON** (was env-gated off). Synthetic `retrieve` tool
|
|
498
|
+
call injected before the first LLM turn whenever the GraphRAG corpus
|
|
499
|
+
has good hits. Forces evidence into the window — the §5.7
|
|
500
|
+
acceptance #1 forcing function. Opt out: `DRYDOCK_AUTO_RETRIEVE=0`.
|
|
501
|
+
- ✅ `autonomous_review.sh` curiosity consumer — step 2b in
|
|
502
|
+
`scripts/autonomous_review_prompt.md` drains the top item per tick,
|
|
503
|
+
acts on it, marks consumed, prefixes commit with
|
|
504
|
+
`addresses curiosity:<id>:`.
|
|
505
|
+
- ✅ `python -m drydock.curiosity {top,stats,consume,reset}` CLI.
|
|
506
|
+
- ✅ `/curiosity` slash command for in-TUI inspection.
|
|
507
|
+
- ✅ HLE backfill script — 82 historical HLE_FAILURE items ingested
|
|
508
|
+
from prior runs so the queue has signal even before fresh runs.
|
|
509
|
+
|
|
510
|
+
### Tier 3a — operator-visible scaffolding — *shipped 2026-05-12 (v2.8.22)*
|
|
511
|
+
|
|
512
|
+
- ✅ `scripts/curiosity_idle_cycle.sh` — bounded exploration worker
|
|
513
|
+
(cron-suggested hourly). Idle-gated (no TUI / no HLE / no
|
|
514
|
+
autonomous_review), daily-capped at 12 cycles, pause sentinel.
|
|
515
|
+
Appends hypotheses to `curiosity_log.md`; no model calls.
|
|
516
|
+
- ▢ Wire the idle-cycle script into cron — operator decision; script
|
|
517
|
+
is checked in and ready.
|
|
518
|
+
|
|
519
|
+
### Tier 3b — model-shape work — *blocked / future*
|
|
512
520
|
|
|
513
521
|
- ▢ Deep Noir "exploration" mode vector candidate — train from
|
|
514
|
-
curiosity-log traces
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
522
|
+
curiosity-log traces. Blocked on real Deep Noir vectors landing in
|
|
523
|
+
`drydock.steering`.
|
|
524
|
+
- ▢ Frustration / surprise detection across the full session — pattern:
|
|
525
|
+
when the operator repeatedly redirects on the same topic, treat it
|
|
526
|
+
as a high-confidence curiosity signal even if no individual turn
|
|
527
|
+
tripped the per-turn detectors.
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## 5.8 Direct built-in tools for transformer weaknesses — shipped 2026-05-12 (v2.8.22–23)
|
|
532
|
+
|
|
533
|
+
Per the transformer-weakness map (Babich, "What coding can fix"):
|
|
534
|
+
arithmetic, counting, persistent memory, and reliability/verification
|
|
535
|
+
are well-solved by classical code wrapped as agent tools. We ship them
|
|
536
|
+
as direct built-ins (NOT MCP — per Babich, "MCP is Dead", MCP servers
|
|
537
|
+
burn ~20K tokens of context per call, which is a real cost on a
|
|
538
|
+
131K-context local model).
|
|
539
|
+
|
|
540
|
+
| Tool | Closes | Status |
|
|
541
|
+
| ---- | ------ | ------ |
|
|
542
|
+
| `math(expression="...")` | Arithmetic, factorials, primes, statistics, exact fractions via Python stdlib (math/statistics/Fraction/Decimal) sandbox | ✅ shipped, 37 tests |
|
|
543
|
+
| `count(pattern, text/path, mode)` | "How many X" estimation — substring/regex/lines/words/chars/bytes | ✅ shipped, 23 tests |
|
|
544
|
+
| `memory(op, key, value)` | Long-term cross-session memory at `~/.drydock/agent_memory/notes.jsonl` (save / recall / list_keys / forget / stats) | ✅ shipped, 22 tests |
|
|
545
|
+
| `verify(criterion, command, expect, expect_mode)` | Operationalizes "Loop until verified" — runs a check, returns pass/fail (contains/regex/equals/exit_code/file_exists/file_contains) | ✅ shipped, 24 tests |
|
|
546
|
+
|
|
547
|
+
Anti-pattern explicitly forbidden: NEVER convert these into MCP
|
|
548
|
+
servers later. The whole point is one direct built-in per closed
|
|
549
|
+
weakness. MCP integration remains available for users who want to
|
|
550
|
+
connect external services, just not for capabilities the harness
|
|
551
|
+
should own.
|
|
552
|
+
|
|
553
|
+
## 5.9 Project-instructions auto-create (DRYDOCK.md)
|
|
554
|
+
|
|
555
|
+
Per CLAUDE.md / AGENTS.md convention: every fresh project session
|
|
556
|
+
should land a per-project instructions file the model reads on every
|
|
557
|
+
turn. Best practices: lean (every byte costs context budget), language-
|
|
558
|
+
detected, with TODO stubs the user fills in.
|
|
559
|
+
|
|
560
|
+
- ✅ `_ensure_drydock_md()` in `agent_loop.py` — runs once on first
|
|
561
|
+
session. Detects language from manifest (pyproject / package.json /
|
|
562
|
+
Cargo.toml / go.mod / Gemfile / pom.xml / build.gradle), writes a
|
|
563
|
+
~2.8 KB starter with: project overview (auto-detected stack +
|
|
564
|
+
TODO purpose), tool inventory by purpose (especially the new
|
|
565
|
+
math/count/memory/verify built-ins the model otherwise overlooks),
|
|
566
|
+
4 core principles, Curiosity behavior, TODO stubs for Coding
|
|
567
|
+
Standards / Workflow / External References. 10 unit tests.
|
|
568
|
+
- ✅ `/data3/drydock/DRYDOCK.md` — hand-written canonical for drydock
|
|
569
|
+
itself, loaded when running drydock from this source tree.
|
|
570
|
+
|
|
571
|
+
## 5.10 Inference throughput (Multi-Token Prediction investigation)
|
|
572
|
+
|
|
573
|
+
Investigation 2026-05-12 — outcome: **blocked on llama.cpp upstream**.
|
|
574
|
+
|
|
575
|
+
- ✅ Baseline measured: **64.1 tok/s** on `gemma-4-26B-A4B-it-UD-Q3_K_M`
|
|
576
|
+
via llama.cpp 9115 on 2× RTX 4060 Ti, single-GPU `-ngl 99`,
|
|
577
|
+
`-c 32768`, `-ctk q8_0 -ctv q8_0`.
|
|
578
|
+
- ✅ `scripts/bench_inference.py` — 5-prompt × N-token throughput
|
|
579
|
+
bench against localhost:8000 for any future MTP / quant / serving
|
|
580
|
+
comparison.
|
|
581
|
+
- ✅ Trained drafter checkpoints downloaded to `/data3/Models/`
|
|
582
|
+
(AtomicChat + Radamanthys community quants of the
|
|
583
|
+
`gemma-4-26B-A4B-it-assistant` model). **Blocked**: both use custom
|
|
584
|
+
archs `gemma4_assistant` / `gemma4_mtp` that llama.cpp 9115 doesn't
|
|
585
|
+
recognize. Files ready for when upstream lands the arch.
|
|
586
|
+
- ✅ Built-in ngram-* speculative decoding tested
|
|
587
|
+
(`--spec-type ngram-simple|ngram-cache|ngram-mod`) — 0% measured
|
|
588
|
+
speedup on either mixed prompts or code-heavy prompts. The lookup
|
|
589
|
+
overhead cancels saved forward passes for this 26B MoE shape on
|
|
590
|
+
TP=2.
|
|
591
|
+
- ▢ vLLM with MTP — untested. The article (Pawel, 2026-05-10) claims
|
|
592
|
+
day-one vLLM support. Switching back to the `start_gemma4.sh` vLLM
|
|
593
|
+
path with the bf16 assistant Transformers checkpoint (not GGUF) is
|
|
594
|
+
the next thing to try.
|
|
595
|
+
- ▢ Quant upgrade Q3_K_M → Q4_K_M — Q4 file downloaded
|
|
596
|
+
(`gemma-4-26B-A4B-it-UD-Q4_K_M.gguf`, 15.78 GiB), pending validation
|
|
597
|
+
that it doesn't reintroduce the hallucinated-tool / write-loop
|
|
598
|
+
failure modes that Q3_K_M was originally selected to suppress.
|
|
599
|
+
Higher quants (Q5_K_M, Q6_K) require tensor split via `-sm row`.
|
|
600
|
+
|
|
601
|
+
## 5.11 Bug-report template + dependency audit
|
|
602
|
+
|
|
603
|
+
Operator-visibility plumbing landed alongside the §5.7 work:
|
|
604
|
+
|
|
605
|
+
- ✅ `.github/ISSUE_TEMPLATE/bug-report.yml` overhaul — pre-flight
|
|
606
|
+
checklist, expanded component dropdown (CLI/TUI / ACP / MCP /
|
|
607
|
+
GraphRAG / Curiosity / Auto-release / Install), required Model +
|
|
608
|
+
provider field (the #1 missing-info gap on prior bugs), separate
|
|
609
|
+
OS+Python+install field, expected-vs-actual section, logs section
|
|
610
|
+
pointed at correct paths.
|
|
611
|
+
- ✅ `.github/ISSUE_TEMPLATE/config.yml` — removed broken upstream
|
|
612
|
+
links (mistralai/mistral-vibe Discussions, old Mistral docs URL,
|
|
613
|
+
outdated Discord).
|
|
614
|
+
- ✅ Dependency audit — `requests` removed (0 imports anywhere; `httpx`
|
|
615
|
+
is the actual HTTP client); `pexpect` moved runtime → dev (only used
|
|
616
|
+
by harness scripts that don't ship in the wheel). End-user install
|
|
617
|
+
drops ~1.8 MB. All other suspicious entries verified used.
|
|
526
618
|
|
|
527
619
|
---
|
|
528
620
|
|
|
@@ -417,6 +417,12 @@ class AgentLoop:
|
|
|
417
417
|
# without it the model loops on ls/bash instead of using subagents.
|
|
418
418
|
if self.stats.steps <= 1:
|
|
419
419
|
self._ensure_agents_md()
|
|
420
|
+
# Skip DRYDOCK.md auto-create under pytest so tmp_path-based
|
|
421
|
+
# tests don't get unexpected files appearing in their fixture
|
|
422
|
+
# dirs. Unit tests for the auto-create function call it
|
|
423
|
+
# directly (bypassing this gate).
|
|
424
|
+
if "PYTEST_CURRENT_TEST" not in os.environ:
|
|
425
|
+
self._ensure_drydock_md()
|
|
420
426
|
|
|
421
427
|
# Load project state for cross-session context
|
|
422
428
|
try:
|
|
@@ -747,12 +753,21 @@ class AgentLoop:
|
|
|
747
753
|
# as a system note BEFORE the first LLM call. Zero behavior change
|
|
748
754
|
# when the index has nothing relevant; pure lift when it does.
|
|
749
755
|
#
|
|
756
|
+
# Disable both hooks under pytest. They'd otherwise inject noise
|
|
757
|
+
# into the agent's message stream — a synthetic retrieve tool call
|
|
758
|
+
# for auto-retrieve, and queue writes for curiosity — which breaks
|
|
759
|
+
# tests that pin the exact event order or count messages.
|
|
760
|
+
# Set DRYDOCK_AUTO_RETRIEVE=1 / DRYDOCK_CURIOSITY=1 explicitly in a
|
|
761
|
+
# test if you want to exercise them.
|
|
762
|
+
_under_pytest = "PYTEST_CURRENT_TEST" in os.environ
|
|
763
|
+
|
|
750
764
|
# SOVEREIGN_PRD §5.7 acceptance #1: "retrieve called on ≥80% of HLE
|
|
751
|
-
# questions before any content token". Default ON
|
|
752
|
-
# prefetch is a no-op when no GraphRAG db exists (early return),
|
|
765
|
+
# questions before any content token". Default ON in production —
|
|
766
|
+
# the prefetch is a no-op when no GraphRAG db exists (early return),
|
|
753
767
|
# so users without a corpus are unaffected. Opt out with
|
|
754
768
|
# DRYDOCK_AUTO_RETRIEVE=0.
|
|
755
|
-
|
|
769
|
+
_auto_retrieve_default = "0" if _under_pytest else "1"
|
|
770
|
+
if os.environ.get("DRYDOCK_AUTO_RETRIEVE", _auto_retrieve_default).strip().lower() not in ("0", "false", "no"):
|
|
756
771
|
logger.warning("[AUTO-RETRIEVE] hook entry, query=%r", (user_msg or "")[:80])
|
|
757
772
|
try:
|
|
758
773
|
self._auto_prefetch_retrieve(user_msg)
|
|
@@ -764,7 +779,9 @@ class AgentLoop:
|
|
|
764
779
|
# the user message and enqueue UNKNOWN_TERM curiosity items. The
|
|
765
780
|
# queue is dedup'd by fingerprint over 7 days so the same recurring
|
|
766
781
|
# term doesn't flood it. Disabled by setting DRYDOCK_CURIOSITY=0.
|
|
767
|
-
|
|
782
|
+
# Off by default under pytest (see auto-retrieve note above).
|
|
783
|
+
_curiosity_default = "0" if _under_pytest else "1"
|
|
784
|
+
if os.environ.get("DRYDOCK_CURIOSITY", _curiosity_default).strip().lower() not in ("0", "false", "no"):
|
|
768
785
|
try:
|
|
769
786
|
self._log_curiosity_gaps(user_msg)
|
|
770
787
|
except Exception as _e:
|
|
@@ -3584,6 +3601,123 @@ class AgentLoop:
|
|
|
3584
3601
|
if parts:
|
|
3585
3602
|
self._inject_system_note("\n".join(parts))
|
|
3586
3603
|
|
|
3604
|
+
def _ensure_drydock_md(self) -> None:
|
|
3605
|
+
"""Auto-create DRYDOCK.md in the project root if absent.
|
|
3606
|
+
|
|
3607
|
+
This file is the drydock equivalent of CLAUDE.md / AGENTS.md: a
|
|
3608
|
+
per-project instructions file the model loads on every session
|
|
3609
|
+
(see system_prompt._load_project_instructions, 16 KB cap).
|
|
3610
|
+
|
|
3611
|
+
We write a LEAN starter (~2 KB) telling the model what tools the
|
|
3612
|
+
harness ships with and a few stub sections the user can fill in
|
|
3613
|
+
for project-specific guidance. The point is to give the agent
|
|
3614
|
+
signal about its own capabilities — especially the math / count /
|
|
3615
|
+
memory / verify built-ins it might otherwise overlook — without
|
|
3616
|
+
burning context budget on every turn.
|
|
3617
|
+
|
|
3618
|
+
Best practices baked in:
|
|
3619
|
+
- Detect the language from manifest files (pyproject / package.json /
|
|
3620
|
+
Cargo.toml / go.mod) so the overview line is meaningful.
|
|
3621
|
+
- Tool inventory is one bullet line per category, not a treatise.
|
|
3622
|
+
- Stub sections (Coding Standards, Workflow) marked TODO so the
|
|
3623
|
+
user knows where to add their own rules.
|
|
3624
|
+
"""
|
|
3625
|
+
cwd = Path.cwd()
|
|
3626
|
+
if (cwd / "DRYDOCK.md").exists() or (cwd / "drydock.md").exists():
|
|
3627
|
+
return
|
|
3628
|
+
|
|
3629
|
+
# Detect language from manifest presence — single short line.
|
|
3630
|
+
lang = "Unknown stack"
|
|
3631
|
+
for marker, name in (
|
|
3632
|
+
("pyproject.toml", "Python"),
|
|
3633
|
+
("setup.py", "Python"),
|
|
3634
|
+
("requirements.txt", "Python"),
|
|
3635
|
+
("package.json", "JavaScript / TypeScript"),
|
|
3636
|
+
("Cargo.toml", "Rust"),
|
|
3637
|
+
("go.mod", "Go"),
|
|
3638
|
+
("Gemfile", "Ruby"),
|
|
3639
|
+
("pom.xml", "Java (Maven)"),
|
|
3640
|
+
("build.gradle", "Java/Kotlin (Gradle)"),
|
|
3641
|
+
):
|
|
3642
|
+
if (cwd / marker).exists():
|
|
3643
|
+
lang = name
|
|
3644
|
+
break
|
|
3645
|
+
|
|
3646
|
+
try:
|
|
3647
|
+
(cwd / "DRYDOCK.md").write_text(
|
|
3648
|
+
f"""# DRYDOCK.md — project instructions for the agent
|
|
3649
|
+
|
|
3650
|
+
Auto-loaded into the system prompt every session (16 KB cap). Keep it
|
|
3651
|
+
lean — every byte costs context budget on every turn. Edit freely; this
|
|
3652
|
+
is a living document.
|
|
3653
|
+
|
|
3654
|
+
## Project overview
|
|
3655
|
+
|
|
3656
|
+
- **Stack:** {lang} _(detected from manifest)_
|
|
3657
|
+
- **Purpose:** _(TODO: one sentence on what this project does)_
|
|
3658
|
+
- **Entry point:** _(TODO: e.g., `python -m mypkg`, `npm start`, `cargo run`)_
|
|
3659
|
+
|
|
3660
|
+
## What the harness can do for you
|
|
3661
|
+
|
|
3662
|
+
DryDock ships these direct built-in tools (one entry each in the model's
|
|
3663
|
+
tool list — no MCP overhead):
|
|
3664
|
+
|
|
3665
|
+
- **Reads / search:** `read_file`, `glob`, `grep`, `retrieve` (GraphRAG
|
|
3666
|
+
semantic search if the project is indexed), `web_search`, `web_fetch`.
|
|
3667
|
+
- **Writes:** `write_file`, `search_replace` (preferred for edits),
|
|
3668
|
+
`bash`, `notebook_edit`.
|
|
3669
|
+
- **Exact computation (don't compute in your head):**
|
|
3670
|
+
- `math(expression="...")` — sandboxed Python: `math.factorial(20)`,
|
|
3671
|
+
`Fraction(1,3)+Fraction(1,6)`, `statistics.mean([...])`.
|
|
3672
|
+
- `count(pattern="...", text=... OR path=..., mode=...)` —
|
|
3673
|
+
substring / regex / lines / words / chars / bytes.
|
|
3674
|
+
- **Persistent memory across sessions:** `memory(op="save"|"recall"|...)`
|
|
3675
|
+
— store and recall key/value notes at `~/.drydock/agent_memory/`.
|
|
3676
|
+
- **Verify before claiming done:**
|
|
3677
|
+
`verify(criterion="...", command="...", expect="...", expect_mode="contains")`
|
|
3678
|
+
— runs a check, returns pass/fail. Operationalizes "Loop until
|
|
3679
|
+
verified."
|
|
3680
|
+
- **Delegation:** `task(agent="builder"|"explore"|"diagnostic"|"planner",
|
|
3681
|
+
task="...")` — only for genuinely large work (9+ files); inline for
|
|
3682
|
+
smaller.
|
|
3683
|
+
|
|
3684
|
+
## Behavioral rules (defaults)
|
|
3685
|
+
|
|
3686
|
+
1. Don't assume. Don't hide confusion. Surface tradeoffs.
|
|
3687
|
+
2. Minimum code that solves the problem. Nothing speculative.
|
|
3688
|
+
3. Touch only what you must. Clean up only your own mess.
|
|
3689
|
+
4. Define success criteria. Loop until verified (call `verify`).
|
|
3690
|
+
|
|
3691
|
+
When you see an unfamiliar named entity (paper title, library, API,
|
|
3692
|
+
identifier), your FIRST tool call is `retrieve(query="<the term>")` —
|
|
3693
|
+
not text, not web_search. Investigate before asserting (Curiosity Layer
|
|
3694
|
+
default).
|
|
3695
|
+
|
|
3696
|
+
## Coding standards
|
|
3697
|
+
|
|
3698
|
+
- _(TODO: e.g., "prefer named exports", "tabs not spaces", "no `any` in
|
|
3699
|
+
TypeScript", "snake_case for Python", language-specific rules here)_
|
|
3700
|
+
|
|
3701
|
+
## Workflow
|
|
3702
|
+
|
|
3703
|
+
- **Build:** _(TODO: e.g., `npm run build`, `cargo build --release`)_
|
|
3704
|
+
- **Test:** _(TODO: e.g., `pytest -q`, `npm test`, `cargo test`)_
|
|
3705
|
+
- **Run:** _(TODO: e.g., `python -m mypkg`, `npm start`)_
|
|
3706
|
+
- **Format/lint:** _(TODO: e.g., `ruff check . && ruff format .`)_
|
|
3707
|
+
|
|
3708
|
+
## External references
|
|
3709
|
+
|
|
3710
|
+
- _(TODO: link to the project README, design docs, style guide if any)_
|
|
3711
|
+
|
|
3712
|
+
---
|
|
3713
|
+
_Auto-generated by drydock on first session in this directory. Customize
|
|
3714
|
+
or replace freely; future sessions will respect your edits._
|
|
3715
|
+
"""
|
|
3716
|
+
)
|
|
3717
|
+
logger.info("Auto-created DRYDOCK.md in %s", cwd)
|
|
3718
|
+
except (OSError, PermissionError):
|
|
3719
|
+
pass # Non-critical — read-only filesystem
|
|
3720
|
+
|
|
3587
3721
|
def _ensure_agents_md(self) -> None:
|
|
3588
3722
|
"""Auto-create AGENTS.md if no project instructions file exists.
|
|
3589
3723
|
|
|
@@ -394,10 +394,19 @@ def main() -> int:
|
|
|
394
394
|
ap.add_argument("--seed", type=int, default=42)
|
|
395
395
|
ap.add_argument("--resume", type=Path,
|
|
396
396
|
help="resume from existing run dir (skip already-done IDs)")
|
|
397
|
+
ap.add_argument(
|
|
398
|
+
"--category", default="",
|
|
399
|
+
help=(
|
|
400
|
+
"Filter to questions in this HLE category (case-insensitive "
|
|
401
|
+
"substring match against q['category']). Examples: 'math', "
|
|
402
|
+
"'chemistry', 'physics'. Use this to measure tool-impact on a "
|
|
403
|
+
"specific axis."
|
|
404
|
+
),
|
|
405
|
+
)
|
|
397
406
|
args = ap.parse_args()
|
|
398
407
|
|
|
399
408
|
print(f"[hle_eval] source={args.source} limit={args.limit} "
|
|
400
|
-
f"shuffle={args.shuffle}")
|
|
409
|
+
f"shuffle={args.shuffle} category={args.category or '(any)'}")
|
|
401
410
|
|
|
402
411
|
if args.source == "seed":
|
|
403
412
|
questions = load_seed()
|
|
@@ -405,6 +414,13 @@ def main() -> int:
|
|
|
405
414
|
questions = load_hle()
|
|
406
415
|
|
|
407
416
|
print(f"[hle_eval] loaded {len(questions)} questions")
|
|
417
|
+
|
|
418
|
+
if args.category:
|
|
419
|
+
cat = args.category.lower().strip()
|
|
420
|
+
before = len(questions)
|
|
421
|
+
questions = [q for q in questions if cat in (q.get("category", "") or "").lower()]
|
|
422
|
+
print(f"[hle_eval] category filter '{args.category}': {before} → {len(questions)} questions")
|
|
423
|
+
|
|
408
424
|
if args.shuffle:
|
|
409
425
|
random.Random(args.seed).shuffle(questions)
|
|
410
426
|
questions = questions[: args.limit]
|